# HG changeset patch # User duke # Date 1499276717 -7200 # Node ID 1db850cae005dc39dd8345e82e7b766f5b04e3db # Parent a7c5ef3bb9d416ea29ffc3772b8f3168fd81d20f# Parent 0aa63c4bc7cef7d3389a6064046184eaccc84d25 Merge diff -r a7c5ef3bb9d4 -r 1db850cae005 .hgtags-top-repo --- a/.hgtags-top-repo Wed Jun 18 10:08:47 2014 -0700 +++ b/.hgtags-top-repo Wed Jul 05 19:45:17 2017 +0200 @@ -260,3 +260,4 @@ b114474fb25af4e73cb7219f7c04bd8994da03a5 jdk9-b15 cf22a728521f91a4692b433d39d730a0a1b23155 jdk9-b16 24152ee0ee1abef54a8bab04c099261dba7bcca5 jdk9-b17 +65abab59f783fcf02ff8e133431c252f9e5f07d5 jdk9-b18 diff -r a7c5ef3bb9d4 -r 1db850cae005 corba/.hgtags --- a/corba/.hgtags Wed Jun 18 10:08:47 2014 -0700 +++ b/corba/.hgtags Wed Jul 05 19:45:17 2017 +0200 @@ -260,3 +260,4 @@ e54022d0dd92106fff7f7fe670010cd7e6517ee3 jdk9-b15 422ef9d29d84f571453f015c4cb8713c3af70ee4 jdk9-b16 4c75c2ca7cf3e0618315879acf17f42c8fcd0c09 jdk9-b17 +77565aaaa2bb814e94817e92d680168052a25395 jdk9-b18 diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/.hgtags --- a/hotspot/.hgtags Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/.hgtags Wed Jul 05 19:45:17 2017 +0200 @@ -420,3 +420,4 @@ 170f6d733d7aec062f743a6b8c1cce940a7a984a jdk9-b15 b14e7c0b7d3ec04127f565cda1d84122e205680c jdk9-b16 14b656df31c2cb09c505921061e79977823de71a jdk9-b17 +871fd128548480095e0dc3fc34c422666baeec75 jdk9-b18 diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/make/bsd/makefiles/universal.gmk --- a/hotspot/make/bsd/makefiles/universal.gmk Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/make/bsd/makefiles/universal.gmk Wed Jul 05 19:45:17 2017 +0200 @@ -74,19 +74,21 @@ # Replace arch specific binaries with universal binaries +# Do not touch jre/lib/{client,server}/libjsig.$(LIBRARY_SUFFIX) +# That symbolic link belongs to the 'jdk' build. export_universal: $(RM) -r $(EXPORT_PATH)/jre/lib/{i386,amd64} $(RM) -r $(JDK_IMAGE_DIR)/jre/lib/{i386,amd64} - $(RM) $(JDK_IMAGE_DIR)/jre/lib/{client,server}/libjsig.$(LIBRARY_SUFFIX) ($(CD) $(EXPORT_PATH) && \ $(TAR) -cf - *) | \ ($(CD) $(JDK_IMAGE_DIR) && $(TAR) -xpf -) # Overlay universal binaries +# Do not touch jre/lib/{client,server}/libjsig.$(LIBRARY_SUFFIX) +# That symbolic link belongs to the 'jdk' build. copy_universal: $(RM) -r $(JDK_IMAGE_DIR)$(COPY_SUBDIR)/jre/lib/{i386,amd64} - $(RM) $(JDK_IMAGE_DIR)$(COPY_SUBDIR)/jre/lib/{client,server}/libjsig.$(LIBRARY_SUFFIX) ($(CD) $(EXPORT_PATH)$(COPY_SUBDIR) && \ $(TAR) -cf - *) | \ ($(CD) $(JDK_IMAGE_DIR)$(COPY_SUBDIR) && $(TAR) -xpf -) diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/classfile/classFileParser.cpp --- a/hotspot/src/share/vm/classfile/classFileParser.cpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/classfile/classFileParser.cpp Wed Jul 05 19:45:17 2017 +0200 @@ -4359,9 +4359,15 @@ Method* m = k->lookup_method(vmSymbols::finalize_method_name(), vmSymbols::void_method_signature()); if (m != NULL && !m->is_empty_method()) { - f = true; + f = true; } - assert(f == k->has_finalizer(), "inconsistent has_finalizer"); + + // Spec doesn't prevent agent from redefinition of empty finalizer. + // Despite the fact that it's generally bad idea and redefined finalizer + // will not work as expected we shouldn't abort vm in this case + if (!k->has_redefined_this_or_super()) { + assert(f == k->has_finalizer(), "inconsistent has_finalizer"); + } #endif // Check if this klass supports the java.lang.Cloneable interface diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/classfile/javaClasses.hpp --- a/hotspot/src/share/vm/classfile/javaClasses.hpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/classfile/javaClasses.hpp Wed Jul 05 19:45:17 2017 +0200 @@ -1181,7 +1181,7 @@ static oop target( oop site) { return site->obj_field( _target_offset); } static void set_target( oop site, oop target) { site->obj_field_put( _target_offset, target); } - static volatile oop target_volatile(oop site) { return site->obj_field_volatile( _target_offset); } + static volatile oop target_volatile(oop site) { return oop((oopDesc *)(site->obj_field_volatile(_target_offset))); } static void set_target_volatile(oop site, oop target) { site->obj_field_put_volatile(_target_offset, target); } // Testers diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp --- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp Wed Jul 05 19:45:17 2017 +0200 @@ -311,8 +311,7 @@ _cmsGen->refs_discovery_is_mt(), // mt discovery (int) MAX2(ConcGCThreads, ParallelGCThreads), // mt discovery degree _cmsGen->refs_discovery_is_atomic(), // discovery is not atomic - &_is_alive_closure, // closure for liveness info - false); // next field updates do not need write barrier + &_is_alive_closure); // closure for liveness info // Initialize the _ref_processor field of CMSGen _cmsGen->set_ref_processor(_ref_processor); diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/gc_implementation/g1/concurrentMark.cpp diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/gc_implementation/g1/concurrentMark.hpp diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp --- a/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp Wed Jul 05 19:45:17 2017 +0200 @@ -2246,12 +2246,9 @@ // degree of mt discovery false, // Reference discovery is not atomic - &_is_alive_closure_cm, + &_is_alive_closure_cm); // is alive closure // (for efficiency/performance) - true); - // Setting next fields of discovered - // lists requires a barrier. // STW ref processor _ref_processor_stw = @@ -2266,12 +2263,9 @@ // degree of mt discovery true, // Reference discovery is atomic - &_is_alive_closure_stw, + &_is_alive_closure_stw); // is alive closure // (for efficiency/performance) - false); - // Setting next fields of discovered - // lists does not require a barrier. } size_t G1CollectedHeap::capacity() const { diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp --- a/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/gc_implementation/parNew/parNewGeneration.cpp Wed Jul 05 19:45:17 2017 +0200 @@ -1636,8 +1636,7 @@ refs_discovery_is_mt(), // mt discovery (int) ParallelGCThreads, // mt discovery degree refs_discovery_is_atomic(), // atomic_discovery - NULL, // is_alive_non_header - false); // write barrier for next field updates + NULL); // is_alive_non_header } } diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp Wed Jul 05 19:45:17 2017 +0200 @@ -854,8 +854,7 @@ true, // mt discovery (int) ParallelGCThreads, // mt discovery degree true, // atomic_discovery - &_is_alive_closure, // non-header is alive closure - false); // write barrier for next field updates + &_is_alive_closure); // non-header is alive closure _counters = new CollectorCounters("PSParallelCompact", 1); // Initialize static fields in ParCompactionManager. diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp --- a/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp Wed Jul 05 19:45:17 2017 +0200 @@ -864,8 +864,7 @@ true, // mt discovery (int) ParallelGCThreads, // mt discovery degree true, // atomic_discovery - NULL, // header provides liveness info - false); // next field updates do not need write barrier + NULL); // header provides liveness info // Cache the cardtable BarrierSet* bs = Universe::heap()->barrier_set(); diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/memory/allocation.cpp --- a/hotspot/src/share/vm/memory/allocation.cpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/memory/allocation.cpp Wed Jul 05 19:45:17 2017 +0200 @@ -563,6 +563,7 @@ _chunk = new (alloc_failmode, len) Chunk(len); if (_chunk == NULL) { + _chunk = k; // restore the previous value of _chunk return NULL; } if (k) k->set_next(_chunk); // Append new chunk to end of linked list diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/memory/metaspace.cpp --- a/hotspot/src/share/vm/memory/metaspace.cpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/memory/metaspace.cpp Wed Jul 05 19:45:17 2017 +0200 @@ -1423,6 +1423,17 @@ return (size_t)Atomic::add_ptr(-(intptr_t)v, &_capacity_until_GC); } +void MetaspaceGC::initialize() { + // Set the high-water mark to MaxMetapaceSize during VM initializaton since + // we can't do a GC during initialization. + _capacity_until_GC = MaxMetaspaceSize; +} + +void MetaspaceGC::post_initialize() { + // Reset the high-water mark once the VM initialization is done. + _capacity_until_GC = MAX2(MetaspaceAux::committed_bytes(), MetaspaceSize); +} + bool MetaspaceGC::can_expand(size_t word_size, bool is_class) { // Check if the compressed class space is full. if (is_class && Metaspace::using_class_space()) { @@ -1443,21 +1454,13 @@ size_t MetaspaceGC::allowed_expansion() { size_t committed_bytes = MetaspaceAux::committed_bytes(); + size_t capacity_until_gc = capacity_until_GC(); + + assert(capacity_until_gc >= committed_bytes, + err_msg("capacity_until_gc: " SIZE_FORMAT " < committed_bytes: " SIZE_FORMAT, + capacity_until_gc, committed_bytes)); size_t left_until_max = MaxMetaspaceSize - committed_bytes; - - // Always grant expansion if we are initiating the JVM, - // or if the GC_locker is preventing GCs. - if (!is_init_completed() || GC_locker::is_active_and_needs_gc()) { - return left_until_max / BytesPerWord; - } - - size_t capacity_until_gc = capacity_until_GC(); - - if (capacity_until_gc <= committed_bytes) { - return 0; - } - size_t left_until_GC = capacity_until_gc - committed_bytes; size_t left_to_commit = MIN2(left_until_GC, left_until_max); @@ -1469,7 +1472,15 @@ uint current_shrink_factor = _shrink_factor; _shrink_factor = 0; - const size_t used_after_gc = MetaspaceAux::capacity_bytes(); + // Using committed_bytes() for used_after_gc is an overestimation, since the + // chunk free lists are included in committed_bytes() and the memory in an + // un-fragmented chunk free list is available for future allocations. + // However, if the chunk free lists becomes fragmented, then the memory may + // not be available for future allocations and the memory is therefore "in use". + // Including the chunk free lists in the definition of "in use" is therefore + // necessary. Not including the chunk free lists can cause capacity_until_GC to + // shrink below committed_bytes() and this has caused serious bugs in the past. + const size_t used_after_gc = MetaspaceAux::committed_bytes(); const size_t capacity_until_GC = MetaspaceGC::capacity_until_GC(); const double minimum_free_percentage = MinMetaspaceFreeRatio / 100.0; @@ -3094,6 +3105,8 @@ } void Metaspace::global_initialize() { + MetaspaceGC::initialize(); + // Initialize the alignment for shared spaces. int max_alignment = os::vm_allocation_granularity(); size_t cds_total = 0; @@ -3201,10 +3214,13 @@ } } - MetaspaceGC::initialize(); _tracer = new MetaspaceTracer(); } +void Metaspace::post_initialize() { + MetaspaceGC::post_initialize(); +} + Metachunk* Metaspace::get_initialization_chunk(MetadataType mdtype, size_t chunk_word_size, size_t chunk_bunch) { diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/memory/metaspace.hpp --- a/hotspot/src/share/vm/memory/metaspace.hpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/memory/metaspace.hpp Wed Jul 05 19:45:17 2017 +0200 @@ -208,6 +208,7 @@ static void ergo_initialize(); static void global_initialize(); + static void post_initialize(); static size_t first_chunk_word_size() { return _first_chunk_word_size; } static size_t first_class_chunk_word_size() { return _first_class_chunk_word_size; } @@ -398,7 +399,8 @@ public: - static void initialize() { _capacity_until_GC = MetaspaceSize; } + static void initialize(); + static void post_initialize(); static size_t capacity_until_GC(); static size_t inc_capacity_until_GC(size_t v); diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/memory/referenceProcessor.cpp --- a/hotspot/src/share/vm/memory/referenceProcessor.cpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/memory/referenceProcessor.cpp Wed Jul 05 19:45:17 2017 +0200 @@ -96,12 +96,10 @@ bool mt_discovery, uint mt_discovery_degree, bool atomic_discovery, - BoolObjectClosure* is_alive_non_header, - bool discovered_list_needs_post_barrier) : + BoolObjectClosure* is_alive_non_header) : _discovering_refs(false), _enqueuing_is_done(false), _is_alive_non_header(is_alive_non_header), - _discovered_list_needs_post_barrier(discovered_list_needs_post_barrier), _processing_is_mt(mt_processing), _next_id(0) { @@ -340,10 +338,18 @@ // (java.lang.ref.Reference.discovered), self-loop their "next" field // thus distinguishing them from active References, then // prepend them to the pending list. + // + // The Java threads will see the Reference objects linked together through + // the discovered field. Instead of trying to do the write barrier updates + // in all places in the reference processor where we manipulate the discovered + // field we make sure to do the barrier here where we anyway iterate through + // all linked Reference objects. Note that it is important to not dirty any + // cards during reference processing since this will cause card table + // verification to fail for G1. + // // BKWRD COMPATIBILITY NOTE: For older JDKs (prior to the fix for 4956777), // the "next" field is used to chain the pending list, not the discovered // field. - if (TraceReferenceGC && PrintGCDetails) { gclog_or_tty->print_cr("ReferenceProcessor::enqueue_discovered_reflist list " INTPTR_FORMAT, (address)refs_list.head()); @@ -365,15 +371,15 @@ assert(java_lang_ref_Reference::next(obj) == NULL, "Reference not active; should not be discovered"); // Self-loop next, so as to make Ref not active. - // Post-barrier not needed when looping to self. java_lang_ref_Reference::set_next_raw(obj, obj); - if (next_d == obj) { // obj is last + if (next_d != obj) { + oopDesc::bs()->write_ref_field(java_lang_ref_Reference::discovered_addr(obj), next_d); + } else { + // This is the last object. // Swap refs_list into pending_list_addr and // set obj's discovered to what we read from pending_list_addr. oop old = oopDesc::atomic_exchange_oop(refs_list.head(), pending_list_addr); - // Need post-barrier on pending_list_addr above; - // see special post-barrier code at the end of - // enqueue_discovered_reflists() further below. + // Need post-barrier on pending_list_addr. See enqueue_discovered_ref_helper() above. java_lang_ref_Reference::set_discovered_raw(obj, old); // old may be NULL oopDesc::bs()->write_ref_field(java_lang_ref_Reference::discovered_addr(obj), old); } @@ -496,20 +502,15 @@ // pre-barrier here because we know the Reference has already been found/marked, // that's how it ended up in the discovered list in the first place. oop_store_raw(_prev_next, new_next); - if (_discovered_list_needs_post_barrier && _prev_next != _refs_list.adr_head()) { - // Needs post-barrier and this is not the list head (which is not on the heap) - oopDesc::bs()->write_ref_field(_prev_next, new_next); - } NOT_PRODUCT(_removed++); _refs_list.dec_length(1); } // Make the Reference object active again. void DiscoveredListIterator::make_active() { - // For G1 we don't want to use set_next - it - // will dirty the card for the next field of - // the reference object and will fail - // CT verification. + // The pre barrier for G1 is probably just needed for the old + // reference processing behavior. Should we guard this with + // ReferenceProcessor::pending_list_uses_discovered_field() ? if (UseG1GC) { HeapWord* next_addr = java_lang_ref_Reference::next_addr(_ref); if (UseCompressedOops) { @@ -517,10 +518,8 @@ } else { oopDesc::bs()->write_ref_field_pre((oop*)next_addr, NULL); } - java_lang_ref_Reference::set_next_raw(_ref, NULL); - } else { - java_lang_ref_Reference::set_next(_ref, NULL); } + java_lang_ref_Reference::set_next_raw(_ref, NULL); } void DiscoveredListIterator::clear_referent() { @@ -546,7 +545,7 @@ OopClosure* keep_alive, VoidClosure* complete_gc) { assert(policy != NULL, "Must have a non-NULL policy"); - DiscoveredListIterator iter(refs_list, keep_alive, is_alive, _discovered_list_needs_post_barrier); + DiscoveredListIterator iter(refs_list, keep_alive, is_alive); // Decide which softly reachable refs should be kept alive. while (iter.has_next()) { iter.load_ptrs(DEBUG_ONLY(!discovery_is_atomic() /* allow_null_referent */)); @@ -586,7 +585,7 @@ BoolObjectClosure* is_alive, OopClosure* keep_alive) { assert(discovery_is_atomic(), "Error"); - DiscoveredListIterator iter(refs_list, keep_alive, is_alive, _discovered_list_needs_post_barrier); + DiscoveredListIterator iter(refs_list, keep_alive, is_alive); while (iter.has_next()) { iter.load_ptrs(DEBUG_ONLY(false /* allow_null_referent */)); DEBUG_ONLY(oop next = java_lang_ref_Reference::next(iter.obj());) @@ -623,7 +622,7 @@ OopClosure* keep_alive, VoidClosure* complete_gc) { assert(!discovery_is_atomic(), "Error"); - DiscoveredListIterator iter(refs_list, keep_alive, is_alive, _discovered_list_needs_post_barrier); + DiscoveredListIterator iter(refs_list, keep_alive, is_alive); while (iter.has_next()) { iter.load_ptrs(DEBUG_ONLY(true /* allow_null_referent */)); HeapWord* next_addr = java_lang_ref_Reference::next_addr(iter.obj()); @@ -666,7 +665,7 @@ OopClosure* keep_alive, VoidClosure* complete_gc) { ResourceMark rm; - DiscoveredListIterator iter(refs_list, keep_alive, is_alive, _discovered_list_needs_post_barrier); + DiscoveredListIterator iter(refs_list, keep_alive, is_alive); while (iter.has_next()) { iter.update_discovered(); iter.load_ptrs(DEBUG_ONLY(false /* allow_null_referent */)); @@ -782,13 +781,6 @@ bool _clear_referent; }; -void ReferenceProcessor::set_discovered(oop ref, oop value) { - java_lang_ref_Reference::set_discovered_raw(ref, value); - if (_discovered_list_needs_post_barrier) { - oopDesc::bs()->write_ref_field(java_lang_ref_Reference::discovered_addr(ref), value); - } -} - // Balances reference queues. // Move entries from all queues[0, 1, ..., _max_num_q-1] to // queues[0, 1, ..., _num_q-1] because only the first _num_q @@ -846,9 +838,9 @@ // Add the chain to the to list. if (ref_lists[to_idx].head() == NULL) { // to list is empty. Make a loop at the end. - set_discovered(move_tail, move_tail); + java_lang_ref_Reference::set_discovered_raw(move_tail, move_tail); } else { - set_discovered(move_tail, ref_lists[to_idx].head()); + java_lang_ref_Reference::set_discovered_raw(move_tail, ref_lists[to_idx].head()); } ref_lists[to_idx].set_head(move_head); ref_lists[to_idx].inc_length(refs_to_move); @@ -982,7 +974,7 @@ void ReferenceProcessor::clean_up_discovered_reflist(DiscoveredList& refs_list) { assert(!discovery_is_atomic(), "Else why call this method?"); - DiscoveredListIterator iter(refs_list, NULL, NULL, _discovered_list_needs_post_barrier); + DiscoveredListIterator iter(refs_list, NULL, NULL); while (iter.has_next()) { iter.load_ptrs(DEBUG_ONLY(true /* allow_null_referent */)); oop next = java_lang_ref_Reference::next(iter.obj()); @@ -1071,16 +1063,6 @@ // The last ref must have its discovered field pointing to itself. oop next_discovered = (current_head != NULL) ? current_head : obj; - // Note: In the case of G1, this specific pre-barrier is strictly - // not necessary because the only case we are interested in - // here is when *discovered_addr is NULL (see the CAS further below), - // so this will expand to nothing. As a result, we have manually - // elided this out for G1, but left in the test for some future - // collector that might have need for a pre-barrier here, e.g.:- - // oopDesc::bs()->write_ref_field_pre((oop* or narrowOop*)discovered_addr, next_discovered); - assert(!_discovered_list_needs_post_barrier || UseG1GC, - "Need to check non-G1 collector: " - "may need a pre-write-barrier for CAS from NULL below"); oop retest = oopDesc::atomic_compare_exchange_oop(next_discovered, discovered_addr, NULL); if (retest == NULL) { @@ -1089,9 +1071,6 @@ // is necessary. refs_list.set_head(obj); refs_list.inc_length(1); - if (_discovered_list_needs_post_barrier) { - oopDesc::bs()->write_ref_field((void*)discovered_addr, next_discovered); - } if (TraceReferenceGC) { gclog_or_tty->print_cr("Discovered reference (mt) (" INTPTR_FORMAT ": %s)", @@ -1242,24 +1221,14 @@ if (_discovery_is_mt) { add_to_discovered_list_mt(*list, obj, discovered_addr); } else { - // If "_discovered_list_needs_post_barrier", we do write barriers when - // updating the discovered reference list. Otherwise, we do a raw store - // here: the field will be visited later when processing the discovered - // references. + // We do a raw store here: the field will be visited later when processing + // the discovered references. oop current_head = list->head(); // The last ref must have its discovered field pointing to itself. oop next_discovered = (current_head != NULL) ? current_head : obj; - // As in the case further above, since we are over-writing a NULL - // pre-value, we can safely elide the pre-barrier here for the case of G1. - // e.g.:- oopDesc::bs()->write_ref_field_pre((oop* or narrowOop*)discovered_addr, next_discovered); assert(discovered == NULL, "control point invariant"); - assert(!_discovered_list_needs_post_barrier || UseG1GC, - "For non-G1 collector, may need a pre-write-barrier for CAS from NULL below"); oop_store_raw(discovered_addr, next_discovered); - if (_discovered_list_needs_post_barrier) { - oopDesc::bs()->write_ref_field((void*)discovered_addr, next_discovered); - } list->set_head(obj); list->inc_length(1); @@ -1353,7 +1322,7 @@ OopClosure* keep_alive, VoidClosure* complete_gc, YieldClosure* yield) { - DiscoveredListIterator iter(refs_list, keep_alive, is_alive, _discovered_list_needs_post_barrier); + DiscoveredListIterator iter(refs_list, keep_alive, is_alive); while (iter.has_next()) { iter.load_ptrs(DEBUG_ONLY(true /* allow_null_referent */)); oop obj = iter.obj(); diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/memory/referenceProcessor.hpp --- a/hotspot/src/share/vm/memory/referenceProcessor.hpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/memory/referenceProcessor.hpp Wed Jul 05 19:45:17 2017 +0200 @@ -99,7 +99,6 @@ oop _referent; OopClosure* _keep_alive; BoolObjectClosure* _is_alive; - bool _discovered_list_needs_post_barrier; DEBUG_ONLY( oop _first_seen; // cyclic linked list check @@ -113,8 +112,7 @@ public: inline DiscoveredListIterator(DiscoveredList& refs_list, OopClosure* keep_alive, - BoolObjectClosure* is_alive, - bool discovered_list_needs_post_barrier = false): + BoolObjectClosure* is_alive): _refs_list(refs_list), _prev_next(refs_list.adr_head()), _prev(NULL), @@ -128,8 +126,7 @@ #endif _next(NULL), _keep_alive(keep_alive), - _is_alive(is_alive), - _discovered_list_needs_post_barrier(discovered_list_needs_post_barrier) + _is_alive(is_alive) { } // End Of List. @@ -230,14 +227,6 @@ // other collectors in configuration bool _discovery_is_mt; // true if reference discovery is MT. - // If true, setting "next" field of a discovered refs list requires - // write post barrier. (Must be true if used in a collector in which - // elements of a discovered list may be moved during discovery: for - // example, a collector like Garbage-First that moves objects during a - // long-term concurrent marking phase that does weak reference - // discovery.) - bool _discovered_list_needs_post_barrier; - bool _enqueuing_is_done; // true if all weak references enqueued bool _processing_is_mt; // true during phases when // reference processing is MT. @@ -382,11 +371,6 @@ void enqueue_discovered_reflists(HeapWord* pending_list_addr, AbstractRefProcTaskExecutor* task_executor); protected: - // Set the 'discovered' field of the given reference to - // the given value - emitting post barriers depending upon - // the value of _discovered_list_needs_post_barrier. - void set_discovered(oop ref, oop value); - // "Preclean" the given discovered reference list // by removing references with strongly reachable referents. // Currently used in support of CMS only. @@ -427,8 +411,7 @@ bool mt_processing = false, uint mt_processing_degree = 1, bool mt_discovery = false, uint mt_discovery_degree = 1, bool atomic_discovery = true, - BoolObjectClosure* is_alive_non_header = NULL, - bool discovered_list_needs_post_barrier = false); + BoolObjectClosure* is_alive_non_header = NULL); // RefDiscoveryPolicy values enum DiscoveryPolicy { diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/oops/instanceKlass.cpp --- a/hotspot/src/share/vm/oops/instanceKlass.cpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/oops/instanceKlass.cpp Wed Jul 05 19:45:17 2017 +0200 @@ -1501,6 +1501,21 @@ return NULL; } +#ifdef ASSERT +// search through class hierarchy and return true if this class or +// one of the superclasses was redefined +bool InstanceKlass::has_redefined_this_or_super() const { + const InstanceKlass* klass = this; + while (klass != NULL) { + if (klass->has_been_redefined()) { + return true; + } + klass = InstanceKlass::cast(klass->super()); + } + return false; +} +#endif + // lookup a method in the default methods list then in all transitive interfaces // Do NOT return private or static methods Method* InstanceKlass::lookup_method_in_ordered_interfaces(Symbol* name, diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/oops/instanceKlass.hpp --- a/hotspot/src/share/vm/oops/instanceKlass.hpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/oops/instanceKlass.hpp Wed Jul 05 19:45:17 2017 +0200 @@ -754,6 +754,11 @@ bool implements_interface(Klass* k) const; bool is_same_or_direct_interface(Klass* k) const; +#ifdef ASSERT + // check whether this class or one of its superclasses was redefined + bool has_redefined_this_or_super() const; +#endif + // Access to the implementor of an interface. Klass* implementor() const { @@ -811,8 +816,8 @@ // Casting from Klass* static InstanceKlass* cast(Klass* k) { - assert(k->is_klass(), "must be"); - assert(k->oop_is_instance(), "cast to InstanceKlass"); + assert(k == NULL || k->is_klass(), "must be"); + assert(k == NULL || k->oop_is_instance(), "cast to InstanceKlass"); return (InstanceKlass*) k; } diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/oops/oopsHierarchy.hpp --- a/hotspot/src/share/vm/oops/oopsHierarchy.hpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/oops/oopsHierarchy.hpp Wed Jul 05 19:45:17 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -112,9 +112,7 @@ // Assignment oop& operator=(const oop& o) { _o = o.obj(); return *this; } -#ifndef SOLARIS volatile oop& operator=(const oop& o) volatile { _o = o.obj(); return *this; } -#endif volatile oop& operator=(const volatile oop& o) volatile { _o = o.obj(); return *this; } // Explict user conversions @@ -123,11 +121,10 @@ operator void* () const volatile { return (void *)obj(); } #endif operator HeapWord* () const { return (HeapWord*)obj(); } - operator oopDesc* () const { return obj(); } + operator oopDesc* () const volatile { return obj(); } operator intptr_t* () const { return (intptr_t*)obj(); } operator PromotedObject* () const { return (PromotedObject*)obj(); } operator markOop () const { return markOop(obj()); } - operator address () const { return (address)obj(); } // from javaCalls.cpp @@ -161,11 +158,10 @@ oop::operator=(o); \ return *this; \ } \ - NOT_SOLARIS( \ volatile type##Oop& operator=(const type##Oop& o) volatile { \ (void)const_cast(oop::operator=(o)); \ return *this; \ - }) \ + } \ volatile type##Oop& operator=(const volatile type##Oop& o) volatile {\ (void)const_cast(oop::operator=(o)); \ return *this; \ diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/runtime/java.cpp diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/runtime/mutexLocker.cpp --- a/hotspot/src/share/vm/runtime/mutexLocker.cpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/runtime/mutexLocker.cpp Wed Jul 05 19:45:17 2017 +0200 @@ -280,10 +280,10 @@ #ifdef INCLUDE_TRACE def(JfrMsg_lock , Monitor, leaf, true); - def(JfrBuffer_lock , Mutex, nonleaf+1, true); - def(JfrThreadGroups_lock , Mutex, nonleaf+1, true); - def(JfrStream_lock , Mutex, nonleaf+2, true); - def(JfrStacktrace_lock , Mutex, special, true ); + def(JfrBuffer_lock , Mutex, leaf, true); + def(JfrThreadGroups_lock , Mutex, leaf, true); + def(JfrStream_lock , Mutex, nonleaf, true); + def(JfrStacktrace_lock , Mutex, special, true); #endif } diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/runtime/objectMonitor.cpp --- a/hotspot/src/share/vm/runtime/objectMonitor.cpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/runtime/objectMonitor.cpp Wed Jul 05 19:45:17 2017 +0200 @@ -385,6 +385,15 @@ jt->java_suspend_self(); } Self->set_current_pending_monitor(NULL); + + // We cleared the pending monitor info since we've just gotten past + // the enter-check-for-suspend dance and we now own the monitor free + // and clear, i.e., it is no longer pending. The ThreadBlockInVM + // destructor can go to a safepoint at the end of this block. If we + // do a thread dump during that safepoint, then this thread will show + // as having "-locked" the monitor, but the OS and java.lang.Thread + // states will still report that the thread is blocked trying to + // acquire it. } Atomic::dec_ptr(&_count); diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/runtime/thread.cpp --- a/hotspot/src/share/vm/runtime/thread.cpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/runtime/thread.cpp Wed Jul 05 19:45:17 2017 +0200 @@ -1434,7 +1434,7 @@ _in_deopt_handler = 0; _doing_unsafe_access = false; _stack_guard_state = stack_guard_unused; - (void)const_cast(_exception_oop = NULL); + (void)const_cast(_exception_oop = oop(NULL)); _exception_pc = 0; _exception_handler_pc = 0; _is_method_handle_return = 0; @@ -3543,6 +3543,8 @@ // debug stuff, that does not work until all basic classes have been initialized. set_init_completed(); + Metaspace::post_initialize(); + HOTSPOT_VM_INIT_END(); // record VM initialization completion time diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/runtime/vframe.cpp --- a/hotspot/src/share/vm/runtime/vframe.cpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/runtime/vframe.cpp Wed Jul 05 19:45:17 2017 +0200 @@ -199,6 +199,7 @@ continue; } if (monitor->owner() != NULL) { + // the monitor is associated with an object, i.e., it is locked // First, assume we have the monitor locked. If we haven't found an // owned monitor before and this is the first frame, then we need to @@ -209,7 +210,11 @@ if (!found_first_monitor && frame_count == 0) { markOop mark = monitor->owner()->mark(); if (mark->has_monitor() && - mark->monitor() == thread()->current_pending_monitor()) { + ( // we have marked ourself as pending on this monitor + mark->monitor() == thread()->current_pending_monitor() || + // we are not the owner of this monitor + !mark->monitor()->is_entered(thread()) + )) { lock_state = "waiting to lock"; } } diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/services/attachListener.cpp --- a/hotspot/src/share/vm/services/attachListener.cpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/services/attachListener.cpp Wed Jul 05 19:45:17 2017 +0200 @@ -162,10 +162,7 @@ java_lang_Throwable::print(PENDING_EXCEPTION, out); out->cr(); CLEAR_PENDING_EXCEPTION; - // The exception has been printed on the output stream - // If the JVM returns JNI_ERR, the attachAPI throws a generic I/O - // exception and the content of the output stream is not processed. - // By returning JNI_OK, the exception will be displayed on the client side + return JNI_ERR; } return JNI_OK; } diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/services/memoryManager.cpp --- a/hotspot/src/share/vm/services/memoryManager.cpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/services/memoryManager.cpp Wed Jul 05 19:45:17 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 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,7 +39,7 @@ MemoryManager::MemoryManager() { _num_pools = 0; - (void)const_cast(_memory_mgr_obj = NULL); + (void)const_cast(_memory_mgr_obj = instanceOop(NULL)); } void MemoryManager::add_pool(MemoryPool* pool) { diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/services/memoryPool.cpp --- a/hotspot/src/share/vm/services/memoryPool.cpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/services/memoryPool.cpp Wed Jul 05 19:45:17 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 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,7 @@ _name = name; _initial_size = init_size; _max_size = max_size; - (void)const_cast(_memory_pool_obj = NULL); + (void)const_cast(_memory_pool_obj = instanceOop(NULL)); _available_for_allocation = true; _num_managers = 0; _type = type; diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/src/share/vm/utilities/debug.cpp --- a/hotspot/src/share/vm/utilities/debug.cpp Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/src/share/vm/utilities/debug.cpp Wed Jul 05 19:45:17 2017 +0200 @@ -263,13 +263,11 @@ void report_out_of_shared_space(SharedSpaceType shared_space) { static const char* name[] = { - "native memory for metadata", "shared read only space", "shared read write space", "shared miscellaneous data space" }; static const char* flag[] = { - "Metaspace", "SharedReadOnlySize", "SharedReadWriteSize", "SharedMiscDataSize" diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/TEST.groups --- a/hotspot/test/TEST.groups Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/test/TEST.groups Wed Jul 05 19:45:17 2017 +0200 @@ -81,6 +81,7 @@ runtime/NMT/ThreadedVirtualAllocTestType.java \ runtime/NMT/VirtualAllocTestType.java \ runtime/RedefineObject/TestRedefineObject.java \ + runtime/Thread/TestThreadDumpMonitorContention.java \ runtime/XCheckJniJsig/XCheckJSig.java \ serviceability/attach/AttachWithStalePidFile.java \ serviceability/jvmti/8036666/GetObjectLockCount.java \ diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/gc/arguments/TestParallelHeapSizeFlags.java --- a/hotspot/test/gc/arguments/TestParallelHeapSizeFlags.java Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/test/gc/arguments/TestParallelHeapSizeFlags.java Wed Jul 05 19:45:17 2017 +0200 @@ -22,6 +22,7 @@ */ /* + * @ignore 8027915 * @test TestParallelHeapSizeFlags * @key gc * @bug 8006088 diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/gc/arguments/TestUseCompressedOopsErgo.java --- a/hotspot/test/gc/arguments/TestUseCompressedOopsErgo.java Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/test/gc/arguments/TestUseCompressedOopsErgo.java Wed Jul 05 19:45:17 2017 +0200 @@ -22,6 +22,7 @@ */ /* + * @ignore 8025645 * @test TestUseCompressedOopsErgo * @key gc * @bug 8010722 diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/gc/g1/TestHumongousShrinkHeap.java --- a/hotspot/test/gc/g1/TestHumongousShrinkHeap.java Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/test/gc/g1/TestHumongousShrinkHeap.java Wed Jul 05 19:45:17 2017 +0200 @@ -22,6 +22,7 @@ */ /** + * @ignore 8041506, 8041946, 8042051 * @test TestHumongousShrinkHeap * @bug 8036025 * @summary Verify that heap shrinks after GC in the presence of fragmentation due to humongous objects diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/gc/g1/TestStringDeduplicationMemoryUsage.java --- a/hotspot/test/gc/g1/TestStringDeduplicationMemoryUsage.java Wed Jun 18 10:08:47 2014 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +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. - */ - -/* - * @test TestStringDeduplicationMemoryUsage - * @summary Test string deduplication memory usage - * @bug 8029075 - * @key gc - * @library /testlibrary - */ - -public class TestStringDeduplicationMemoryUsage { - public static void main(String[] args) throws Exception { - TestStringDeduplicationTools.testMemoryUsage(); - } -} diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/gc/g1/TestStringDeduplicationTools.java --- a/hotspot/test/gc/g1/TestStringDeduplicationTools.java Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/test/gc/g1/TestStringDeduplicationTools.java Wed Jul 05 19:45:17 2017 +0200 @@ -294,55 +294,6 @@ } } - private static class MemoryUsageTest { - public static void main(String[] args) { - System.out.println("Begin: MemoryUsageTest"); - - final boolean useStringDeduplication = Boolean.parseBoolean(args[0]); - final int numberOfStrings = LargeNumberOfStrings; - final int numberOfUniqueStrings = 1; - - ArrayList list = createStrings(numberOfStrings, numberOfUniqueStrings); - forceDeduplication(DefaultAgeThreshold, FullGC); - - if (useStringDeduplication) { - verifyStrings(list, numberOfUniqueStrings); - } - - System.gc(); - - System.out.println("Heap Memory Usage: " + ManagementFactory.getMemoryMXBean().getHeapMemoryUsage().getUsed()); - System.out.println("Array Header Size: " + unsafe.ARRAY_CHAR_BASE_OFFSET); - - System.out.println("End: MemoryUsageTest"); - } - - public static OutputAnalyzer run(boolean useStringDeduplication) throws Exception { - String[] extraArgs = new String[0]; - - if (useStringDeduplication) { - extraArgs = new String[] { - "-XX:+UseStringDeduplication", - "-XX:+PrintStringDeduplicationStatistics", - "-XX:StringDeduplicationAgeThreshold=" + DefaultAgeThreshold - }; - } - - String[] defaultArgs = new String[] { - "-XX:+PrintGC", - "-XX:+PrintGCDetails", - MemoryUsageTest.class.getName(), - "" + useStringDeduplication - }; - - ArrayList args = new ArrayList(); - args.addAll(Arrays.asList(extraArgs)); - args.addAll(Arrays.asList(defaultArgs)); - - return runTest(args.toArray(new String[args.size()])); - } - } - /* * Tests */ @@ -480,44 +431,4 @@ OutputAnalyzer output = InternedTest.run(); output.shouldHaveExitValue(0); } - - public static void testMemoryUsage() throws Exception { - // Test that memory usage is reduced after deduplication - OutputAnalyzer output; - final String heapMemoryUsagePattern = "Heap Memory Usage: (\\d+)"; - final String arrayHeaderSizePattern = "Array Header Size: (\\d+)"; - - // Run without deduplication - output = MemoryUsageTest.run(false); - output.shouldHaveExitValue(0); - final long heapMemoryUsageWithoutDedup = Long.parseLong(output.firstMatch(heapMemoryUsagePattern, 1)); - final long arrayHeaderSizeWithoutDedup = Long.parseLong(output.firstMatch(arrayHeaderSizePattern, 1)); - - // Run with deduplication - output = MemoryUsageTest.run(true); - output.shouldHaveExitValue(0); - final long heapMemoryUsageWithDedup = Long.parseLong(output.firstMatch(heapMemoryUsagePattern, 1)); - final long arrayHeaderSizeWithDedup = Long.parseLong(output.firstMatch(arrayHeaderSizePattern, 1)); - - // Sanity check to make sure one instance isn't using compressed class pointers and the other not - if (arrayHeaderSizeWithoutDedup != arrayHeaderSizeWithDedup) { - throw new Exception("Unexpected difference between array header sizes"); - } - - // Calculate expected memory usage with deduplication enabled. This calculation does - // not take alignment and padding into account, so it's a conservative estimate. - final long sizeOfChar = unsafe.ARRAY_CHAR_INDEX_SCALE; - final long sizeOfCharArray = StringLength * sizeOfChar + arrayHeaderSizeWithoutDedup; - final long bytesSaved = (LargeNumberOfStrings - 1) * sizeOfCharArray; - final long heapMemoryUsageWithDedupExpected = heapMemoryUsageWithoutDedup - bytesSaved; - - System.out.println("Memory usage summary:"); - System.out.println(" heapMemoryUsageWithoutDedup: " + heapMemoryUsageWithoutDedup); - System.out.println(" heapMemoryUsageWithDedup: " + heapMemoryUsageWithDedup); - System.out.println(" heapMemoryUsageWithDedupExpected: " + heapMemoryUsageWithDedupExpected); - - if (heapMemoryUsageWithDedup > heapMemoryUsageWithDedupExpected) { - throw new Exception("Unexpected memory usage, heapMemoryUsageWithDedup should be less or equal to heapMemoryUsageWithDedupExpected"); - } - } } diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/gc/metaspace/TestMetaspaceInitialization.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/test/gc/metaspace/TestMetaspaceInitialization.java Wed Jul 05 19:45:17 2017 +0200 @@ -0,0 +1,48 @@ +/* + * 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.util.ArrayList; + +/* @test TestMetaspaceInitialization + * @bug 8042933 + * @summary Tests to initialize metaspace with a very low MetaspaceSize + * @library /testlibrary + * @run main/othervm -XX:MetaspaceSize=2m TestMetaspaceInitialization + */ +public class TestMetaspaceInitialization { + private class Internal { + public int x; + public Internal(int x) { + this.x = x; + } + } + + private void test() { + ArrayList l = new ArrayList<>(); + l.add(new Internal(17)); + } + + public static void main(String[] args) { + new TestMetaspaceInitialization().test(); + } +} diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/gc/parallelScavenge/TestDynShrinkHeap.java --- a/hotspot/test/gc/parallelScavenge/TestDynShrinkHeap.java Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/test/gc/parallelScavenge/TestDynShrinkHeap.java Wed Jul 05 19:45:17 2017 +0200 @@ -22,6 +22,7 @@ */ /** + * @ignore 8042051 * @test TestDynShrinkHeap * @bug 8016479 * @summary Verify that the heap shrinks after full GC according to the current values of the Min/MaxHeapFreeRatio flags diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/runtime/CommandLine/TestHexArguments.java --- a/hotspot/test/runtime/CommandLine/TestHexArguments.java Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/test/runtime/CommandLine/TestHexArguments.java Wed Jul 05 19:45:17 2017 +0200 @@ -35,14 +35,14 @@ public class TestHexArguments { public static void main(String args[]) throws Exception { String[] javaArgs = {"-XX:SharedBaseAddress=0x1D000000", "-version"}; - ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(true, javaArgs); + ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(javaArgs); OutputAnalyzer output = new OutputAnalyzer(pb.start()); output.shouldNotContain("Could not create the Java Virtual Machine"); output.shouldHaveExitValue(0); String[] javaArgs1 = {"-XX:SharedBaseAddress=1D000000", "-version"}; - pb = ProcessTools.createJavaProcessBuilder(true, javaArgs1); + pb = ProcessTools.createJavaProcessBuilder(javaArgs1); output = new OutputAnalyzer(pb.start()); output.shouldContain("Could not create the Java Virtual Machine"); } diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/runtime/RedefineFinalizer/RedefineFinalizer.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/test/runtime/RedefineFinalizer/RedefineFinalizer.java Wed Jul 05 19:45:17 2017 +0200 @@ -0,0 +1,64 @@ +/* + * 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 6904403 + * @summary Don't assert if we redefine finalize method + * @library /testlibrary + * @build RedefineClassHelper + * @run main RedefineClassHelper + * @run main/othervm -javaagent:redefineagent.jar RedefineFinalizer + */ + +/* + * Regression test for hitting: + * + * assert(f == k->has_finalizer()) failed: inconsistent has_finalizer + * + * when redefining finalizer method + */ +public class RedefineFinalizer { + + public static String newB = + "class RedefineFinalizer$B {" + + " protected void finalize() { " + + " System.out.println(\"Finalizer called\");" + + " }" + + "}"; + + public static void main(String[] args) throws Exception { + RedefineClassHelper.redefineClass(B.class, newB); + + A a = new A(); + } + + static class A extends B { + } + + static class B { + protected void finalize() { + // should be empty + } + } +} diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/runtime/SharedArchiveFile/LimitSharedSizes.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/test/runtime/SharedArchiveFile/LimitSharedSizes.java Wed Jul 05 19:45:17 2017 +0200 @@ -0,0 +1,93 @@ +/* + * 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. + */ + +/* @ignore JDK-8043896 + * @test LimitSharedSizes + * @summary Test handling of limits on shared space size + * @library /testlibrary + * @run main LimitSharedSizes + */ + +import com.oracle.java.testlibrary.*; + +public class LimitSharedSizes { + private static class SharedSizeTestData { + public String optionName; + public String optionValue; + public String expectedErrorMsg; + + public SharedSizeTestData(String name, String value, String msg) { + optionName = name; + optionValue = value; + expectedErrorMsg = msg; + } + } + + private static final SharedSizeTestData[] testTable = { + // values in this part of the test table should cause failure + // (shared space sizes are deliberately too small) + new SharedSizeTestData("-XX:SharedReadOnlySize", "4M", "read only"), + new SharedSizeTestData("-XX:SharedReadWriteSize","4M", "read write"), + + // Known issue, JDK-8038422 (assert() on Windows) + // new SharedSizeTestData("-XX:SharedMiscDataSize", "500k", "miscellaneous data"), + + // This will cause a VM crash; commenting out for now; see bug JDK-8038268 + // @ignore JDK-8038268 + // new SharedSizeTestData("-XX:SharedMiscCodeSize", "20k", "miscellaneous code"), + + // these values are larger than default ones, but should + // be acceptable and not cause failure + new SharedSizeTestData("-XX:SharedReadOnlySize", "20M", null), + new SharedSizeTestData("-XX:SharedReadWriteSize", "20M", null), + new SharedSizeTestData("-XX:SharedMiscDataSize", "20M", null), + new SharedSizeTestData("-XX:SharedMiscCodeSize", "20M", null) + }; + + public static void main(String[] args) throws Exception { + String fileName = "test.jsa"; + + for (SharedSizeTestData td : testTable) { + String option = td.optionName + "=" + td.optionValue; + System.out.println("testing option <" + option + ">"); + + ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( + "-XX:+UnlockDiagnosticVMOptions", + "-XX:SharedArchiveFile=./" + fileName, + option, + "-Xshare:dump"); + + OutputAnalyzer output = new OutputAnalyzer(pb.start()); + + if (td.expectedErrorMsg != null) { + output.shouldContain("The shared " + td.expectedErrorMsg + + " space is not large enough"); + + output.shouldHaveExitValue(2); + } else { + output.shouldNotContain("space is not large enough"); + output.shouldHaveExitValue(0); + } + } + } +} diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/runtime/SharedArchiveFile/SharedBaseAddress.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/test/runtime/SharedArchiveFile/SharedBaseAddress.java Wed Jul 05 19:45:17 2017 +0200 @@ -0,0 +1,77 @@ +/* + * 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 SharedBaseAddress + * @summary Test variety of values for SharedBaseAddress, making sure + * VM handles normal values as well as edge values w/o a crash. + * @library /testlibrary + * @run main SharedBaseAddress + */ + +import com.oracle.java.testlibrary.*; + +public class SharedBaseAddress { + + // shared base address test table + private static final String[] testTable = { + "1g", "8g", "64g","512g", "4t", + "32t", "128t", "0", + "1", "64k", "64M" + }; + + public static void main(String[] args) throws Exception { + // Known issue on Solaris-Sparc + // @ignore JDK-8044600 + if (Platform.isSolaris() && Platform.isSparc()) + return; + + for (String testEntry : testTable) { + System.out.println("sharedBaseAddress = " + testEntry); + + ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( + "-XX:+UnlockDiagnosticVMOptions", + "-XX:SharedArchiveFile=test.jsa", + "-XX:SharedBaseAddress=" + testEntry, + "-Xshare:dump"); + + OutputAnalyzer output = new OutputAnalyzer(pb.start()); + + output.shouldContain("Loading classes to share"); + + try { + pb = ProcessTools.createJavaProcessBuilder( + "-XX:+UnlockDiagnosticVMOptions", + "-XX:SharedArchiveFile=test.jsa", + "-Xshare:on", + "-version"); + output = new OutputAnalyzer(pb.start()); + output.shouldContain("sharing"); + output.shouldHaveExitValue(0); + } catch (RuntimeException e) { + output.shouldContain("Unable to use shared archive"); + output.shouldHaveExitValue(1); + } + } + } +} diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/runtime/SharedArchiveFile/SpaceUtilizationCheck.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/test/runtime/SharedArchiveFile/SpaceUtilizationCheck.java Wed Jul 05 19:45:17 2017 +0200 @@ -0,0 +1,96 @@ +/* + * 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 SpaceUtilizationCheck + * @summary Check if the space utilization for shared spaces is adequate + * @library /testlibrary + * @run main SpaceUtilizationCheck + */ + +import com.oracle.java.testlibrary.*; + +import java.util.regex.Pattern; +import java.util.regex.Matcher; +import java.util.ArrayList; +import java.lang.Integer; + +public class SpaceUtilizationCheck { + // Minimum allowed utilization value (percent) + // The goal is to have this number to be 50% for RO and RW regions + // Once that feature is implemented, increase the MIN_UTILIZATION to 50 + private static final int MIN_UTILIZATION = 30; + + // Only RO and RW regions are considered for this check, since they + // currently account for the bulk of the shared space + private static final int NUMBER_OF_CHECKED_SHARED_REGIONS = 2; + + public static void main(String[] args) throws Exception { + ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( + "-XX:+UnlockDiagnosticVMOptions", + "-XX:SharedArchiveFile=./test.jsa", + "-Xshare:dump"); + + OutputAnalyzer output = new OutputAnalyzer(pb.start()); + String stdout = output.getStdout(); + ArrayList utilization = findUtilization(stdout); + + if (utilization.size() != NUMBER_OF_CHECKED_SHARED_REGIONS ) + throw new RuntimeException("The output format of sharing summary has changed"); + + for(String str : utilization) { + int value = Integer.parseInt(str); + if (value < MIN_UTILIZATION) { + System.out.println(stdout); + throw new RuntimeException("Utilization for one of the regions" + + "is below a threshold of " + MIN_UTILIZATION + "%"); + } + } + } + + public static ArrayList findUtilization(String input) { + ArrayList regions = filterRegionsOfInterest(input.split("\n")); + return filterByPattern(filterByPattern(regions, "bytes \\[.*% used\\]"), "\\d+"); + } + + private static ArrayList filterByPattern(Iterable input, String pattern) { + ArrayList result = new ArrayList(); + for (String str : input) { + Matcher matcher = Pattern.compile(pattern).matcher(str); + if (matcher.find()) { + result.add(matcher.group()); + } + } + return result; + } + + private static ArrayList filterRegionsOfInterest(String[] inputLines) { + ArrayList result = new ArrayList(); + for (String str : inputLines) { + if (str.contains("ro space:") || str.contains("rw space:")) { + result.add(str); + } + } + return result; + } +} diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/runtime/Thread/TestThreadDumpMonitorContention.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/test/runtime/Thread/TestThreadDumpMonitorContention.java Wed Jul 05 19:45:17 2017 +0200 @@ -0,0 +1,405 @@ +/* + * 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 8036823 + * @summary Creates two threads contending for the same lock and checks + * whether jstack reports "locked" by more than one thread. + * + * @library /testlibrary + * @run main/othervm TestThreadDumpMonitorContention + */ + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.lang.management.ManagementFactory; +import java.lang.management.RuntimeMXBean; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import com.oracle.java.testlibrary.*; + +public class TestThreadDumpMonitorContention { + // jstack tends to be closely bound to the VM that we are running + // so use getTestJDKTool() instead of getCompileJDKTool() or even + // getJDKTool() which can fall back to "compile.jdk". + final static String JSTACK = JDKToolFinder.getTestJDKTool("jstack"); + final static String PID = getPid(); + + // looking for header lines with these patterns: + // "ContendingThread-1" #19 prio=5 os_prio=64 tid=0x000000000079c000 nid=0x23 runnable [0xffff80ffb8b87000] + // "ContendingThread-2" #21 prio=5 os_prio=64 tid=0x0000000000780000 nid=0x2f waiting for monitor entry [0xfffffd7fc1111000] + final static Pattern HEADER_PREFIX_PATTERN = Pattern.compile( + "^\"ContendingThread-.*"); + final static Pattern HEADER_WAITING_PATTERN = Pattern.compile( + "^\"ContendingThread-.* waiting for monitor entry .*"); + final static Pattern HEADER_RUNNABLE_PATTERN = Pattern.compile( + "^\"ContendingThread-.* runnable .*"); + + // looking for thread state lines with these patterns: + // java.lang.Thread.State: RUNNABLE + // java.lang.Thread.State: BLOCKED (on object monitor) + final static Pattern THREAD_STATE_PREFIX_PATTERN = Pattern.compile( + " *java\\.lang\\.Thread\\.State: .*"); + final static Pattern THREAD_STATE_BLOCKED_PATTERN = Pattern.compile( + " *java\\.lang\\.Thread\\.State: BLOCKED \\(on object monitor\\)"); + final static Pattern THREAD_STATE_RUNNABLE_PATTERN = Pattern.compile( + " *java\\.lang\\.Thread\\.State: RUNNABLE"); + + // looking for duplicates of this pattern: + // - locked <0x000000076ac59e20> (a TestThreadDumpMonitorContention$1) + final static Pattern LOCK_PATTERN = Pattern.compile( + ".* locked \\<.*\\(a TestThreadDumpMonitorContention.*"); + + // sanity checking header and thread state lines associated + // with this pattern: + // - waiting to lock <0x000000076ac59e20> (a TestThreadDumpMonitorContention$1) + final static Pattern WAITING_PATTERN = Pattern.compile( + ".* waiting to lock \\<.*\\(a TestThreadDumpMonitorContention.*"); + + volatile static boolean done = false; + + static int error_cnt = 0; + static String header_line = null; + static boolean have_header_line = false; + static boolean have_thread_state_line = false; + static int match_cnt = 0; + static String[] match_list = new String[2]; + static int n_samples = 15; + static String thread_state_line = null; + static boolean verbose = false; + + public static void main(String[] args) throws Exception { + if (args.length != 0) { + int arg_i = 0; + if (args[arg_i].equals("-v")) { + verbose = true; + arg_i++; + } + + try { + n_samples = Integer.parseInt(args[arg_i]); + } catch (NumberFormatException nfe) { + System.err.println(nfe); + usage(); + } + } + + Runnable runnable = new Runnable() { + public void run() { + while (!done) { + synchronized (this) { } + } + } + }; + Thread[] thread_list = new Thread[2]; + thread_list[0] = new Thread(runnable, "ContendingThread-1"); + thread_list[1] = new Thread(runnable, "ContendingThread-2"); + thread_list[0].start(); + thread_list[1].start(); + + doSamples(); + + done = true; + + thread_list[0].join(); + thread_list[1].join(); + + if (error_cnt == 0) { + System.out.println("Test PASSED."); + } else { + System.out.println("Test FAILED."); + throw new AssertionError("error_cnt=" + error_cnt); + } + } + + // Reached a blank line which is the end of the + // stack trace without matching either LOCK_PATTERN + // or WAITING_PATTERN. Rare, but it's not an error. + // + // Example: + // "ContendingThread-1" #21 prio=5 os_prio=64 tid=0x00000000007b9000 nid=0x2f runnable [0xfffffd7fc1111000] + // java.lang.Thread.State: RUNNABLE + // at TestThreadDumpMonitorContention$1.run(TestThreadDumpMonitorContention.java:67) + // at java.lang.Thread.run(Thread.java:745) + // + static boolean checkBlankLine(String line) { + if (line.length() == 0) { + have_header_line = false; + have_thread_state_line = false; + return true; + } + + return false; + } + + // Process the locked line here if we found one. + // + // Example 1: + // "ContendingThread-1" #21 prio=5 os_prio=64 tid=0x00000000007b9000 nid=0x2f runnable [0xfffffd7fc1111000] + // java.lang.Thread.State: RUNNABLE + // at TestThreadDumpMonitorContention$1.run(TestThreadDumpMonitorContention.java:67) + // - locked <0xfffffd7e6a2912f8> (a TestThreadDumpMonitorContention$1) + // at java.lang.Thread.run(Thread.java:745) + // + // Example 2: + // "ContendingThread-1" #21 prio=5 os_prio=64 tid=0x00000000007b9000 nid=0x2f waiting for monitor entry [0xfffffd7fc1111000] + // java.lang.Thread.State: BLOCKED (on object monitor) + // at TestThreadDumpMonitorContention$1.run(TestThreadDumpMonitorContention.java:67) + // - locked <0xfffffd7e6a2912f8> (a TestThreadDumpMonitorContention$1) + // at java.lang.Thread.run(Thread.java:745) + // + static boolean checkLockedLine(String line) { + Matcher matcher = LOCK_PATTERN.matcher(line); + if (matcher.matches()) { + if (verbose) { + System.out.println("locked_line='" + line + "'"); + } + match_list[match_cnt] = new String(line); + match_cnt++; + + matcher = HEADER_RUNNABLE_PATTERN.matcher(header_line); + if (!matcher.matches()) { + // It's strange, but a locked line can also + // match the HEADER_WAITING_PATTERN. + matcher = HEADER_WAITING_PATTERN.matcher(header_line); + if (!matcher.matches()) { + System.err.println(); + System.err.println("ERROR: header line does " + + "not match runnable or waiting patterns."); + System.err.println("ERROR: header_line='" + + header_line + "'"); + System.err.println("ERROR: locked_line='" + line + "'"); + error_cnt++; + } + } + + matcher = THREAD_STATE_RUNNABLE_PATTERN.matcher(thread_state_line); + if (!matcher.matches()) { + // It's strange, but a locked line can also + // match the THREAD_STATE_BLOCKED_PATTERN. + matcher = THREAD_STATE_BLOCKED_PATTERN.matcher( + thread_state_line); + if (!matcher.matches()) { + System.err.println(); + System.err.println("ERROR: thread state line does not " + + "match runnable or waiting patterns."); + System.err.println("ERROR: " + "thread_state_line='" + + thread_state_line + "'"); + System.err.println("ERROR: locked_line='" + line + "'"); + error_cnt++; + } + } + + // Have everything we need from this thread stack + // that matches the LOCK_PATTERN. + have_header_line = false; + have_thread_state_line = false; + return true; + } + + return false; + } + + // Process the waiting line here if we found one. + // + // Example: + // "ContendingThread-2" #22 prio=5 os_prio=64 tid=0x00000000007b9800 nid=0x30 waiting for monitor entry [0xfffffd7fc1010000] + // java.lang.Thread.State: BLOCKED (on object monitor) + // at TestThreadDumpMonitorContention$1.run(TestThreadDumpMonitorContention.java:67) + // - waiting to lock <0xfffffd7e6a2912f8> (a TestThreadDumpMonitorContention$1) + // at java.lang.Thread.run(Thread.java:745) + // + static boolean checkWaitingLine(String line) { + Matcher matcher = WAITING_PATTERN.matcher(line); + if (matcher.matches()) { + if (verbose) { + System.out.println("waiting_line='" + line + "'"); + } + + matcher = HEADER_WAITING_PATTERN.matcher(header_line); + if (!matcher.matches()) { + System.err.println(); + System.err.println("ERROR: header line does " + + "not match a waiting pattern."); + System.err.println("ERROR: header_line='" + header_line + "'"); + System.err.println("ERROR: waiting_line='" + line + "'"); + error_cnt++; + } + + matcher = THREAD_STATE_BLOCKED_PATTERN.matcher(thread_state_line); + if (!matcher.matches()) { + System.err.println(); + System.err.println("ERROR: thread state line " + + "does not match a waiting pattern."); + System.err.println("ERROR: thread_state_line='" + + thread_state_line + "'"); + System.err.println("ERROR: waiting_line='" + line + "'"); + error_cnt++; + } + + // Have everything we need from this thread stack + // that matches the WAITING_PATTERN. + have_header_line = false; + have_thread_state_line = false; + return true; + } + + return false; + } + + static void doSamples() throws Exception { + for (int count = 0; count < n_samples; count++) { + match_cnt = 0; + // verbose mode or an error has a lot of output so add more space + if (verbose || error_cnt > 0) System.out.println(); + System.out.println("Sample #" + count); + + // We don't use the ProcessTools, OutputBuffer or + // OutputAnalyzer classes from the testlibrary because + // we have a complicated multi-line parse to perform + // on a narrow subset of the JSTACK output. + // + // - we only care about stack traces that match + // HEADER_PREFIX_PATTERN; only two should match + // - we care about at most three lines from each stack trace + // - if both stack traces match LOCKED_PATTERN, then that's + // a failure and we report it + // - for a stack trace that matches LOCKED_PATTERN, we verify: + // - the header line matches HEADER_RUNNABLE_PATTERN + // or HEADER_WAITING_PATTERN + // - the thread state line matches THREAD_STATE_BLOCKED_PATTERN + // or THREAD_STATE_RUNNABLE_PATTERN + // - we report any mismatches as failures + // - for a stack trace that matches WAITING_PATTERN, we verify: + // - the header line matches HEADER_WAITING_PATTERN + // - the thread state line matches THREAD_STATE_BLOCKED_PATTERN + // - we report any mismatches as failures + // - the stack traces that match HEADER_PREFIX_PATTERN may + // not match either LOCKED_PATTERN or WAITING_PATTERN + // because we might observe the thread outside of + // monitor operations; this is not considered a failure + // + // When we do observe LOCKED_PATTERN or WAITING_PATTERN, + // then we are checking the header and thread state patterns + // that occurred earlier in the current stack trace that + // matched HEADER_PREFIX_PATTERN. We don't use data from + // stack traces that don't match HEADER_PREFIX_PATTERN and + // we don't mix data between the two stack traces that do + // match HEADER_PREFIX_PATTERN. + // + Process process = new ProcessBuilder(JSTACK, PID) + .redirectErrorStream(true).start(); + + BufferedReader reader = new BufferedReader(new InputStreamReader( + process.getInputStream())); + String line; + while ((line = reader.readLine()) != null) { + Matcher matcher = null; + + // process the header line here + if (!have_header_line) { + matcher = HEADER_PREFIX_PATTERN.matcher(line); + if (matcher.matches()) { + if (verbose) { + System.out.println(); + System.out.println("header='" + line + "'"); + } + header_line = new String(line); + have_header_line = true; + continue; + } + continue; // skip until have a header line + } + + // process the thread state line here + if (!have_thread_state_line) { + matcher = THREAD_STATE_PREFIX_PATTERN.matcher(line); + if (matcher.matches()) { + if (verbose) { + System.out.println("thread_state='" + line + "'"); + } + thread_state_line = new String(line); + have_thread_state_line = true; + continue; + } + continue; // skip until we have a thread state line + } + + // process the locked line here if we find one + if (checkLockedLine(line)) { + continue; + } + + // process the waiting line here if we find one + if (checkWaitingLine(line)) { + continue; + } + + // process the blank line here if we find one + if (checkBlankLine(line)) { + continue; + } + } + process.waitFor(); + + if (match_cnt == 2) { + if (match_list[0].equals(match_list[1])) { + System.err.println(); + System.err.println("ERROR: matching lock lines:"); + System.err.println("ERROR: line[0]'" + match_list[0] + "'"); + System.err.println("ERROR: line[1]'" + match_list[1] + "'"); + error_cnt++; + } + } + + // slight delay between jstack launches + Thread.sleep(500); + } + } + + // This helper relies on RuntimeMXBean.getName() returning a string + // that looks like this: 5436@mt-haku + // + // The testlibrary has tryFindJvmPid(), but that uses a separate + // process which is much more expensive for finding out your own PID. + // + static String getPid() { + RuntimeMXBean runtimebean = ManagementFactory.getRuntimeMXBean(); + String vmname = runtimebean.getName(); + int i = vmname.indexOf('@'); + if (i != -1) { + vmname = vmname.substring(0, i); + } + return vmname; + } + + static void usage() { + System.err.println("Usage: " + + "java TestThreadDumpMonitorContention [-v] [n_samples]"); + System.exit(1); + } +} diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/serviceability/ParserTest.java --- a/hotspot/test/serviceability/ParserTest.java Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/test/serviceability/ParserTest.java Wed Jul 05 19:45:17 2017 +0200 @@ -22,10 +22,10 @@ */ /* - * @test ParserTest + * @test * @summary Test that the diagnostic command arguemnt parser works * @library /testlibrary /testlibrary/whitebox - * @build ParserTest + * @build ClassFileInstaller sun.hotspot.WhiteBox sun.hotspot.parser.* * @run main ClassFileInstaller sun.hotspot.WhiteBox * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI ParserTest */ diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/serviceability/attach/AttachWithStalePidFile.java --- a/hotspot/test/serviceability/attach/AttachWithStalePidFile.java Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/test/serviceability/attach/AttachWithStalePidFile.java Wed Jul 05 19:45:17 2017 +0200 @@ -27,7 +27,7 @@ * @key regression * @summary Regression test for attach issue where stale pid files in /tmp lead to connection issues * @library /testlibrary - * @compile AttachWithStalePidFileTarget.java + * @build com.oracle.java.testlibrary.* AttachWithStalePidFileTarget * @run main AttachWithStalePidFile */ diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/serviceability/dcmd/DynLibDcmdTest.java --- a/hotspot/test/serviceability/dcmd/DynLibDcmdTest.java Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/test/serviceability/dcmd/DynLibDcmdTest.java Wed Jul 05 19:45:17 2017 +0200 @@ -29,7 +29,7 @@ * @test * @summary Test of VM.dynlib diagnostic command via MBean * @library /testlibrary - * @compile DcmdUtil.java + * @build com.oracle.java.testlibrary.* DcmdUtil * @run main DynLibDcmdTest */ diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/serviceability/jvmti/GetObjectSizeOverflow.java --- a/hotspot/test/serviceability/jvmti/GetObjectSizeOverflow.java Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/test/serviceability/jvmti/GetObjectSizeOverflow.java Wed Jul 05 19:45:17 2017 +0200 @@ -29,7 +29,7 @@ * @test * @bug 8027230 * @library /testlibrary - * @build GetObjectSizeOverflowAgent + * @build ClassFileInstaller com.oracle.java.testlibrary.* GetObjectSizeOverflowAgent * @run main ClassFileInstaller GetObjectSizeOverflowAgent * @run main GetObjectSizeOverflow */ diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/serviceability/jvmti/TestRedefineWithUnresolvedClass.java --- a/hotspot/test/serviceability/jvmti/TestRedefineWithUnresolvedClass.java Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/test/serviceability/jvmti/TestRedefineWithUnresolvedClass.java Wed Jul 05 19:45:17 2017 +0200 @@ -26,7 +26,7 @@ * @summary Redefine a class with an UnresolvedClass reference in the constant pool. * @bug 8035150 * @library /testlibrary - * @build UnresolvedClassAgent com.oracle.java.testlibrary.ProcessTools com.oracle.java.testlibrary.OutputAnalyzer + * @build com.oracle.java.testlibrary.* UnresolvedClassAgent * @run main TestRedefineWithUnresolvedClass */ diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/serviceability/sa/jmap-hashcode/Test8028623.java --- a/hotspot/test/serviceability/sa/jmap-hashcode/Test8028623.java Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/test/serviceability/sa/jmap-hashcode/Test8028623.java Wed Jul 05 19:45:17 2017 +0200 @@ -26,6 +26,7 @@ * @bug 8028623 * @summary Test hashing of extended characters in Serviceability Agent. * @library /testlibrary + * @build com.oracle.java.testlibrary.* * @compile -encoding utf8 Test8028623.java * @run main Test8028623 */ diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/serviceability/sa/jmap-hprof/JMapHProfLargeHeapTest.java --- a/hotspot/test/serviceability/sa/jmap-hprof/JMapHProfLargeHeapTest.java Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/test/serviceability/sa/jmap-hprof/JMapHProfLargeHeapTest.java Wed Jul 05 19:45:17 2017 +0200 @@ -44,7 +44,7 @@ * @key regression * @summary Regression test for hprof export issue due to large heaps (>2G) * @library /testlibrary - * @compile JMapHProfLargeHeapProc.java + * @build com.oracle.java.testlibrary.* JMapHProfLargeHeapProc * @run main JMapHProfLargeHeapTest */ diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/testlibrary/RedefineClassHelper.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/test/testlibrary/RedefineClassHelper.java Wed Jul 05 19:45:17 2017 +0200 @@ -0,0 +1,79 @@ +/* + * 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.io.PrintWriter; +import java.lang.instrument.*; +import com.oracle.java.testlibrary.*; + +/* + * Helper class to write tests that redefine classes. + * When main method is run, it will create a redefineagent.jar that can be used + * with the -javaagent option to support redefining classes in jtreg tests. + * + * See sample test in test/testlibrary_tests/RedefineClassTest.java + */ +public class RedefineClassHelper { + + public static Instrumentation instrumentation; + public static void premain(String agentArgs, Instrumentation inst) { + instrumentation = inst; + } + + /** + * Redefine a class + * + * @param clazz Class to redefine + * @param javacode String with the new java code for the class to be redefined + */ + public static void redefineClass(Class clazz, String javacode) throws Exception { + byte[] bytecode = InMemoryJavaCompiler.compile(clazz.getName(), javacode); + redefineClass(clazz, bytecode); + } + + /** + * Redefine a class + * + * @param clazz Class to redefine + * @param bytecode byte[] with the new class + */ + public static void redefineClass(Class clazz, byte[] bytecode) throws Exception { + instrumentation.redefineClasses(new ClassDefinition(clazz, bytecode)); + } + + /** + * Main method to be invoked before test to create the redefineagent.jar + */ + public static void main(String[] args) throws Exception { + ClassFileInstaller.main("RedefineClassHelper"); + + PrintWriter pw = new PrintWriter("MANIFEST.MF"); + pw.println("Premain-Class: RedefineClassHelper"); + pw.println("Can-Redefine-Classes: true"); + pw.close(); + + sun.tools.jar.Main jarTool = new sun.tools.jar.Main(System.out, System.err, "jar"); + if (!jarTool.run(new String[] { "-cmf", "MANIFEST.MF", "redefineagent.jar", "RedefineClassHelper.class" })) { + throw new Exception("jar operation failed"); + } + } +} diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/testlibrary/ctw/test/ClassesDirTest.java --- a/hotspot/test/testlibrary/ctw/test/ClassesDirTest.java Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/test/testlibrary/ctw/test/ClassesDirTest.java Wed Jul 05 19:45:17 2017 +0200 @@ -22,10 +22,10 @@ */ /* - * @test ClassesDirTest + * @test * @bug 8012447 * @library /testlibrary /testlibrary/whitebox /testlibrary/ctw/src - * @build sun.hotspot.tools.ctw.CompileTheWorld sun.hotspot.WhiteBox ClassesDirTest Foo Bar + * @build ClassFileInstaller sun.hotspot.tools.ctw.CompileTheWorld sun.hotspot.WhiteBox Foo Bar * @run main ClassFileInstaller sun.hotspot.WhiteBox Foo Bar * @run main ClassesDirTest prepare * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Dsun.hotspot.tools.ctw.logfile=ctw.log sun.hotspot.tools.ctw.CompileTheWorld classes diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/testlibrary/ctw/test/ClassesListTest.java --- a/hotspot/test/testlibrary/ctw/test/ClassesListTest.java Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/test/testlibrary/ctw/test/ClassesListTest.java Wed Jul 05 19:45:17 2017 +0200 @@ -22,10 +22,10 @@ */ /* - * @test ClassesListTest + * @test * @bug 8012447 * @library /testlibrary /testlibrary/whitebox /testlibrary/ctw/src - * @build sun.hotspot.tools.ctw.CompileTheWorld sun.hotspot.WhiteBox ClassesListTest Foo Bar + * @build ClassFileInstaller sun.hotspot.tools.ctw.CompileTheWorld sun.hotspot.WhiteBox Foo Bar * @run main ClassFileInstaller sun.hotspot.WhiteBox Foo Bar * @run main ClassesListTest prepare * @run main/othervm/timeout=600 -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Dsun.hotspot.tools.ctw.logfile=ctw.log sun.hotspot.tools.ctw.CompileTheWorld classes.lst diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/testlibrary/ctw/test/JarDirTest.java --- a/hotspot/test/testlibrary/ctw/test/JarDirTest.java Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/test/testlibrary/ctw/test/JarDirTest.java Wed Jul 05 19:45:17 2017 +0200 @@ -22,10 +22,10 @@ */ /* - * @test JarDirTest + * @test * @bug 8012447 * @library /testlibrary /testlibrary/whitebox /testlibrary/ctw/src - * @build sun.hotspot.tools.ctw.CompileTheWorld sun.hotspot.WhiteBox JarDirTest Foo Bar + * @build ClassFileInstaller com.oracle.java.testlibrary.* sun.hotspot.tools.ctw.CompileTheWorld sun.hotspot.WhiteBox Foo Bar * @run main ClassFileInstaller sun.hotspot.WhiteBox Foo Bar * @run main JarDirTest prepare * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Dsun.hotspot.tools.ctw.logfile=ctw.log sun.hotspot.tools.ctw.CompileTheWorld jars/* diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/testlibrary/ctw/test/JarsTest.java --- a/hotspot/test/testlibrary/ctw/test/JarsTest.java Wed Jun 18 10:08:47 2014 -0700 +++ b/hotspot/test/testlibrary/ctw/test/JarsTest.java Wed Jul 05 19:45:17 2017 +0200 @@ -22,10 +22,10 @@ */ /* - * @test JarsTest + * @test * @bug 8012447 * @library /testlibrary /testlibrary/whitebox /testlibrary/ctw/src - * @build sun.hotspot.tools.ctw.CompileTheWorld sun.hotspot.WhiteBox JarsTest Foo Bar + * @build ClassFileInstaller com.oracle.java.testlibrary.* sun.hotspot.tools.ctw.CompileTheWorld sun.hotspot.WhiteBox Foo Bar * @run main ClassFileInstaller sun.hotspot.WhiteBox Foo Bar * @run main JarsTest prepare * @run main/othervm -Xbootclasspath/a:. -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Dsun.hotspot.tools.ctw.logfile=ctw.log sun.hotspot.tools.ctw.CompileTheWorld foo.jar bar.jar diff -r a7c5ef3bb9d4 -r 1db850cae005 hotspot/test/testlibrary_tests/RedefineClassTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/hotspot/test/testlibrary_tests/RedefineClassTest.java Wed Jul 05 19:45:17 2017 +0200 @@ -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 + * @library /testlibrary + * @summary Proof of concept test for RedefineClassHelper + * @build RedefineClassHelper + * @run main RedefineClassHelper + * @run main/othervm -javaagent:redefineagent.jar RedefineClassTest + */ + +import static com.oracle.java.testlibrary.Asserts.*; +import com.oracle.java.testlibrary.*; + +/* + * Proof of concept test for the test utility class RedefineClassHelper + */ +public class RedefineClassTest { + + public static String newClass = "class RedefineClassTest$A { public int Method() { return 2; } }"; + public static void main(String[] args) throws Exception { + A a = new A(); + assertTrue(a.Method() == 1); + RedefineClassHelper.redefineClass(A.class, newClass); + assertTrue(a.Method() == 2); + } + + static class A { + public int Method() { + return 1; + } + } +} diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/.hgtags --- a/jdk/.hgtags Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/.hgtags Wed Jul 05 19:45:17 2017 +0200 @@ -260,3 +260,4 @@ 4537360f09fe23ab339ee588747b657feb12d0c8 jdk9-b15 ab7d2c565b0de5bee1361d282d4029371327fc9e jdk9-b16 fd8e675f141b9bdb2f46d1ae8251f4ee3a895d64 jdk9-b17 +6ad17b31f0d30593392b1e8695b9709dbbd7fb70 jdk9-b18 diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/aix/native/java/net/aix_close.c --- a/jdk/src/aix/native/java/net/aix_close.c Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/aix/native/java/net/aix_close.c Wed Jul 05 19:45:17 2017 +0200 @@ -370,7 +370,57 @@ } int NET_Connect(int s, struct sockaddr *addr, int addrlen) { - BLOCKING_IO_RETURN_INT( s, connect(s, addr, addrlen) ); + int crc = -1, prc = -1; + threadEntry_t self; + fdEntry_t* fdEntry = getFdEntry(s); + + if (fdEntry == NULL) { + errno = EBADF; + return -1; + } + + /* On AIX, when the system call connect() is interrupted, the connection + * is not aborted and it will be established asynchronously by the kernel. + * Hence, no need to restart connect() when EINTR is received + */ + startOp(fdEntry, &self); + crc = connect(s, addr, addrlen); + endOp(fdEntry, &self); + + if (crc == -1 && errno == EINTR) { + struct pollfd s_pollfd; + int sockopt_arg = 0; + socklen_t len; + + s_pollfd.fd = s; + s_pollfd.events = POLLOUT | POLLERR; + + /* poll the file descriptor */ + do { + startOp(fdEntry, &self); + prc = poll(&s_pollfd, 1, -1); + endOp(fdEntry, &self); + } while (prc == -1 && errno == EINTR); + + if (prc < 0) + return prc; + + len = sizeof(sockopt_arg); + + /* Check whether the connection has been established */ + if (getsockopt(s, SOL_SOCKET, SO_ERROR, &sockopt_arg, &len) == -1) + return -1; + + if (sockopt_arg != 0 ) { + errno = sockopt_arg; + return -1; + } + } else { + return crc; + } + + /* At this point, fd is connected. Set successful return code */ + return 0; } int NET_Poll(struct pollfd *ufds, unsigned int nfds, int timeout) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/macosx/classes/sun/lwawt/macosx/LWCToolkit.java --- a/jdk/src/macosx/classes/sun/lwawt/macosx/LWCToolkit.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/macosx/classes/sun/lwawt/macosx/LWCToolkit.java Wed Jul 05 19:45:17 2017 +0200 @@ -523,7 +523,7 @@ * that is used for menu shortcuts on this toolkit. * @see java.awt.MenuBar * @see java.awt.MenuShortcut - * @since JDK1.1 + * @since 1.1 */ @Override public int getMenuShortcutKeyMask() { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java --- a/jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/com/sun/java/util/jar/pack/ConstantPool.java Wed Jul 05 19:45:17 2017 +0200 @@ -839,7 +839,7 @@ return parts; } - /** @since JDK 7, JSR 292 */ + /** @since 1.7, JSR 292 */ public static class MethodHandleEntry extends Entry { final int refKind; @@ -889,7 +889,7 @@ } } - /** @since JDK 7, JSR 292 */ + /** @since 1.7, JSR 292 */ public static class MethodTypeEntry extends Entry { final SignatureEntry typeRef; @@ -924,7 +924,7 @@ } } - /** @since JDK 7, JSR 292 */ + /** @since 1.7, JSR 292 */ public static class InvokeDynamicEntry extends Entry { final BootstrapMethodEntry bssRef; @@ -977,7 +977,7 @@ } } - /** @since JDK 7, JSR 292 */ + /** @since 1.7, JSR 292 */ public static class BootstrapMethodEntry extends Entry { final MethodHandleEntry bsmRef; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/com/sun/java/util/jar/pack/package.html --- a/jdk/src/share/classes/com/sun/java/util/jar/pack/package.html Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/com/sun/java/util/jar/pack/package.html Wed Jul 05 19:45:17 2017 +0200 @@ -97,7 +97,7 @@
  • -@since JDK1.5.0
  • +@since 1.5
    diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/com/sun/jmx/mbeanserver/Introspector.java --- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/Introspector.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/Introspector.java Wed Jul 05 19:45:17 2017 +0200 @@ -562,7 +562,7 @@ } if (readMethod != null) { ReflectUtil.checkPackageAccess(readMethod.getDeclaringClass()); - return MethodUtil.invoke(readMethod, complex, new Class[0]); + return MethodUtil.invoke(readMethod, complex, new Class[0]); } throw new AttributeNotFoundException( diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java --- a/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/com/sun/jmx/mbeanserver/MBeanInstantiator.java Wed Jul 05 19:45:17 2017 +0200 @@ -757,7 +757,7 @@ } } - private static void ensureClassAccess(Class clazz) + private static void ensureClassAccess(Class clazz) throws IllegalAccessException { int mod = clazz.getModifiers(); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java --- a/jdk/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/com/sun/jmx/remote/internal/ClientNotifForwarder.java Wed Jul 05 19:45:17 2017 +0200 @@ -58,7 +58,7 @@ private final AccessControlContext acc; - public ClientNotifForwarder(Map env) { + public ClientNotifForwarder(Map env) { this(null, env); } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java --- a/jdk/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/com/sun/jmx/remote/security/MBeanServerFileAccessController.java Wed Jul 05 19:45:17 2017 +0200 @@ -310,10 +310,10 @@ } }); if (s == null) return; /* security has not been enabled */ - final Set principals = s.getPrincipals(); + final Set principals = s.getPrincipals(); String newPropertyValue = null; - for (Iterator i = principals.iterator(); i.hasNext(); ) { - final Principal p = (Principal) i.next(); + for (Iterator i = principals.iterator(); i.hasNext(); ) { + final Principal p = i.next(); Access access = accessMap.get(p.getName()); if (access != null) { boolean ok; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpRequestTree.java --- a/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpRequestTree.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/com/sun/jmx/snmp/agent/SnmpRequestTree.java Wed Jul 05 19:45:17 2017 +0200 @@ -535,7 +535,7 @@ // Save old vectors SnmpOid[] olde = entryoids; - Vector[] oldl = entrylists; + Vector[] oldl = entrylists; boolean[] oldn = isentrynew; SnmpVarBind[] oldr = rowstatus; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/com/sun/management/DiagnosticCommandMBean.java --- a/jdk/src/share/classes/com/sun/management/DiagnosticCommandMBean.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/com/sun/management/DiagnosticCommandMBean.java Wed Jul 05 19:45:17 2017 +0200 @@ -212,7 +212,7 @@ * {@linkplain javax.management.Notification#getUserData() userData} that * is the new {@code MBeanInfo}. * - * @since 8 + * @since 1.8 */ public interface DiagnosticCommandMBean extends DynamicMBean { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java --- a/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/com/sun/rowset/CachedRowSetImpl.java Wed Jul 05 19:45:17 2017 +0200 @@ -7697,7 +7697,7 @@ * @param columnIndex the first column is 1, the second is 2, ... * @return a SQLXML object that maps an SQL XML value * @throws SQLException if a database access error occurs - * @since 6.0 + * @since 1.6 */ public SQLXML getSQLXML(int columnIndex) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("cachedrowsetimpl.opnotysupp").toString()); @@ -7723,7 +7723,7 @@ * @return the column value if the value is a SQL NULL the * value returned is null * @throws SQLException if a database access error occurs - * @since 6.0 + * @since 1.6 */ public RowId getRowId(int columnIndex) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("cachedrowsetimpl.opnotysupp").toString()); @@ -7738,7 +7738,7 @@ * @return the column value if the value is a SQL NULL the * value returned is null * @throws SQLException if a database access error occurs - * @since 6.0 + * @since 1.6 */ public RowId getRowId(String columnName) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("cachedrowsetimpl.opnotysupp").toString()); @@ -7754,7 +7754,7 @@ * @param columnIndex the first column is 1, the second 2, ... * @param x the column value * @throws SQLException if a database access occurs - * @since 6.0 + * @since 1.6 */ public void updateRowId(int columnIndex, RowId x) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("cachedrowsetimpl.opnotysupp").toString()); @@ -7770,7 +7770,7 @@ * @param columnName the name of the column * @param x the column value * @throws SQLException if a database access occurs - * @since 6.0 + * @since 1.6 */ public void updateRowId(String columnName, RowId x) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("cachedrowsetimpl.opnotysupp").toString()); @@ -7780,7 +7780,7 @@ * Retrieves the holdability of this ResultSet object * @return either ResultSet.HOLD_CURSORS_OVER_COMMIT or ResultSet.CLOSE_CURSORS_AT_COMMIT * @throws SQLException if a database error occurs - * @since 6.0 + * @since 1.6 */ public int getHoldability() throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("cachedrowsetimpl.opnotysupp").toString()); @@ -7791,7 +7791,7 @@ * method close has been called on it, or if it is automatically closed. * @return true if this ResultSet object is closed; false if it is still open * @throws SQLException if a database access error occurs - * @since 6.0 + * @since 1.6 */ public boolean isClosed() throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("cachedrowsetimpl.opnotysupp").toString()); @@ -7803,7 +7803,7 @@ * @param columnIndex the first column is 1, the second 2, ... * @param nString the value for the column to be updated * @throws SQLException if a database access error occurs - * @since 6.0 + * @since 1.6 */ public void updateNString(int columnIndex, String nString) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("cachedrowsetimpl.opnotysupp").toString()); @@ -7815,7 +7815,7 @@ * @param columnName name of the Column * @param nString the value for the column to be updated * @throws SQLException if a database access error occurs - * @since 6.0 + * @since 1.6 */ public void updateNString(String columnName, String nString) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("cachedrowsetimpl.opnotysupp").toString()); @@ -7828,7 +7828,7 @@ * @param columnIndex the first column is 1, the second 2, ... * @param nClob the value for the column to be updated * @throws SQLException if a database access error occurs - * @since 6.0 + * @since 1.6 */ public void updateNClob(int columnIndex, NClob nClob) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("cachedrowsetimpl.opnotysupp").toString()); @@ -7840,7 +7840,7 @@ * @param columnName name of the column * @param nClob the value for the column to be updated * @throws SQLException if a database access error occurs - * @since 6.0 + * @since 1.6 */ public void updateNClob(String columnName, NClob nClob) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("cachedrowsetimpl.opnotysupp").toString()); @@ -7855,7 +7855,7 @@ * @return a NClob object representing the SQL * NCLOB value in the specified column * @exception SQLException if a database access error occurs - * @since 6.0 + * @since 1.6 */ public NClob getNClob(int i) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("cachedrowsetimpl.opnotysupp").toString()); @@ -7871,7 +7871,7 @@ * @return a NClob object representing the SQL NCLOB * value in the specified column * @exception SQLException if a database access error occurs - * @since 6.0 + * @since 1.6 */ public NClob getNClob(String colName) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("cachedrowsetimpl.opnotysupp").toString()); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/com/sun/rowset/JdbcRowSetImpl.java --- a/jdk/src/share/classes/com/sun/rowset/JdbcRowSetImpl.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/com/sun/rowset/JdbcRowSetImpl.java Wed Jul 05 19:45:17 2017 +0200 @@ -4505,7 +4505,7 @@ * @param columnIndex the first column is 1, the second is 2, ... * @return a SQLXML object that maps an SQL XML value * @throws SQLException if a database access error occurs - * @since 6.0 + * @since 1.6 */ public SQLXML getSQLXML(int columnIndex) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("jdbcrowsetimpl.featnotsupp").toString()); @@ -4531,7 +4531,7 @@ * @return the column value if the value is a SQL NULL the * value returned is null * @throws SQLException if a database access error occurs - * @since 6.0 + * @since 1.6 */ public RowId getRowId(int columnIndex) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("jdbcrowsetimpl.featnotsupp").toString()); @@ -4546,7 +4546,7 @@ * @return the column value if the value is a SQL NULL the * value returned is null * @throws SQLException if a database access error occurs - * @since 6.0 + * @since 1.6 */ public RowId getRowId(String columnName) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("jdbcrowsetimpl.featnotsupp").toString()); @@ -4562,7 +4562,7 @@ * @param columnIndex the first column is 1, the second 2, ... * @param x the column value * @throws SQLException if a database access occurs - * @since 6.0 + * @since 1.6 */ public void updateRowId(int columnIndex, RowId x) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("jdbcrowsetimpl.featnotsupp").toString()); @@ -4578,7 +4578,7 @@ * @param columnName the name of the column * @param x the column value * @throws SQLException if a database access occurs - * @since 6.0 + * @since 1.6 */ public void updateRowId(String columnName, RowId x) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("jdbcrowsetimpl.featnotsupp").toString()); @@ -4588,7 +4588,7 @@ * Retrieves the holdability of this ResultSet object * @return either ResultSet.HOLD_CURSORS_OVER_COMMIT or ResultSet.CLOSE_CURSORS_AT_COMMIT * @throws SQLException if a database error occurs - * @since 6.0 + * @since 1.6 */ public int getHoldability() throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("jdbcrowsetimpl.featnotsupp").toString()); @@ -4599,7 +4599,7 @@ * method close has been called on it, or if it is automatically closed. * @return true if this ResultSet object is closed; false if it is still open * @throws SQLException if a database access error occurs - * @since 6.0 + * @since 1.6 */ public boolean isClosed() throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("jdbcrowsetimpl.featnotsupp").toString()); @@ -4611,7 +4611,7 @@ * @param columnIndex the first column is 1, the second 2, ... * @param nString the value for the column to be updated * @throws SQLException if a database access error occurs - * @since 6.0 + * @since 1.6 */ public void updateNString(int columnIndex, String nString) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("jdbcrowsetimpl.featnotsupp").toString()); @@ -4623,7 +4623,7 @@ * @param columnName name of the Column * @param nString the value for the column to be updated * @throws SQLException if a database access error occurs - * @since 6.0 + * @since 1.6 */ public void updateNString(String columnName, String nString) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("jdbcrowsetimpl.featnotsupp").toString()); @@ -4636,7 +4636,7 @@ * @param columnIndex the first column is 1, the second 2, ... * @param nClob the value for the column to be updated * @throws SQLException if a database access error occurs - * @since 6.0 + * @since 1.6 */ public void updateNClob(int columnIndex, NClob nClob) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("jdbcrowsetimpl.featnotsupp").toString()); @@ -4648,7 +4648,7 @@ * @param columnName name of the column * @param nClob the value for the column to be updated * @throws SQLException if a database access error occurs - * @since 6.0 + * @since 1.6 */ public void updateNClob(String columnName, NClob nClob) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("jdbcrowsetimpl.featnotsupp").toString()); @@ -4663,7 +4663,7 @@ * @return a NClob object representing the SQL * NCLOB value in the specified column * @exception SQLException if a database access error occurs - * @since 6.0 + * @since 1.6 */ public NClob getNClob(int i) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("jdbcrowsetimpl.featnotsupp").toString()); @@ -4679,7 +4679,7 @@ * @return a NClob object representing the SQL NCLOB * value in the specified column * @exception SQLException if a database access error occurs - * @since 6.0 + * @since 1.6 */ public NClob getNClob(String colName) throws SQLException { throw new SQLFeatureNotSupportedException(resBundle.handleGetObject("jdbcrowsetimpl.featnotsupp").toString()); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/com/sun/tools/attach/VirtualMachine.java --- a/jdk/src/share/classes/com/sun/tools/attach/VirtualMachine.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/com/sun/tools/attach/VirtualMachine.java Wed Jul 05 19:45:17 2017 +0200 @@ -76,16 +76,10 @@ * // attach to target VM * VirtualMachine vm = VirtualMachine.attach("2177"); * - * // get system properties in target VM - * Properties props = vm.getSystemProperties(); - * - * // construct path to management agent - * String home = props.getProperty("java.home"); - * String agent = home + File.separator + "lib" + File.separator - * + "management-agent.jar"; - * - * // load agent into target VM - * vm.loadAgent(agent, "com.sun.management.jmxremote.port=5000"); + * // start management agent + * Properties props = new Properties(); + * props.put("com.sun.management.jmxremote.port", "5000"); + * vm.startManagementAgent(props); * * // detach * vm.detach(); @@ -93,9 +87,9 @@ * * *

    In this example we attach to a Java virtual machine that is identified by - * the process identifier 2177. The system properties from the target - * VM are then used to construct the path to a management agent which is then - * loaded into the target VM. Once loaded the client detaches from the target VM.

    + * the process identifier 2177. Then the JMX management agent is + * started in the target process using the supplied arguments. Finally, the + * client detaches from the target VM.

    * *

    A VirtualMachine is safe for use by multiple concurrent threads.

    * @@ -611,6 +605,68 @@ public abstract Properties getAgentProperties() throws IOException; /** + * Starts the JMX management agent in the target virtual machine. + * + *

    The configuration properties are the same as those specified on + * the command line when starting the JMX management agent. In the same + * way as on the command line, you need to specify at least the + * {@code com.sun.management.jmxremote.port} property. + * + *

    See the online documentation for + * Monitoring and Management Using JMX Technology for further details. + * + * @param agentProperties + * A Properties object containing the configuration properties + * for the agent. + * + * @throws AttachOperationFailedException + * If the target virtual machine is unable to complete the + * attach operation. A more specific error message will be + * given by {@link AttachOperationFailedException#getMessage()}. + * + * @throws IOException + * If an I/O error occurs, a communication error for example, + * that cannot be identified as an error to indicate that the + * operation failed in the target VM. + * + * @throws IllegalArgumentException + * If keys or values in agentProperties are invalid. + * + * @throws NullPointerException + * If agentProperties is null. + * + * @since 1.9 + */ + public abstract void startManagementAgent(Properties agentProperties) throws IOException; + + /** + * Starts the local JMX management agent in the target virtual machine. + * + *

    See the online documentation for + * Monitoring and Management Using JMX Technology for further details. + * + * @return The String representation of the local connector's service address. + * The value can be parsed by the + * {@link javax.management.remote.JMXServiceURL#JMXServiceURL(String)} + * constructor. + * + * @throws AttachOperationFailedException + * If the target virtual machine is unable to complete the + * attach operation. A more specific error message will be + * given by {@link AttachOperationFailedException#getMessage()}. + * + * @throws IOException + * If an I/O error occurs, a communication error for example, + * that cannot be identified as an error to indicate that the + * operation failed in the target VM. + * + * @since 1.9 + */ + public abstract String startLocalManagementAgent() throws IOException; + + /** * Returns a hash-code value for this VirtualMachine. The hash * code is based upon the VirtualMachine's components, and satifies * the general contract of the {@link java.lang.Object#hashCode() diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/applet/Applet.java --- a/jdk/src/share/classes/java/applet/Applet.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/applet/Applet.java Wed Jul 05 19:45:17 2017 +0200 @@ -45,7 +45,7 @@ * * @author Arthur van Hoff * @author Chris Warth - * @since JDK1.0 + * @since 1.0 */ public class Applet extends Panel { @@ -375,7 +375,7 @@ * * @return the locale of the applet; if no locale has * been set, the default locale is returned. - * @since JDK1.1 + * @since 1.1 */ public Locale getLocale() { Locale locale = super.getLocale(); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/applet/AppletContext.java --- a/jdk/src/share/classes/java/applet/AppletContext.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/applet/AppletContext.java Wed Jul 05 19:45:17 2017 +0200 @@ -43,7 +43,7 @@ * information about its environment. * * @author Arthur van Hoff - * @since JDK1.0 + * @since 1.0 */ public interface AppletContext { /** diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/applet/AppletStub.java --- a/jdk/src/share/classes/java/applet/AppletStub.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/applet/AppletStub.java Wed Jul 05 19:45:17 2017 +0200 @@ -35,7 +35,7 @@ * * @author Arthur van Hoff * @see java.applet.Applet#setStub(java.applet.AppletStub) - * @since JDK1.0 + * @since 1.0 */ public interface AppletStub { /** diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/applet/AudioClip.java --- a/jdk/src/share/classes/java/applet/AudioClip.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/applet/AudioClip.java Wed Jul 05 19:45:17 2017 +0200 @@ -32,7 +32,7 @@ * together to produce a composite. * * @author Arthur van Hoff - * @since JDK1.0 + * @since 1.0 */ public interface AudioClip { /** diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/applet/package.html --- a/jdk/src/share/classes/java/applet/package.html Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/applet/package.html Wed Jul 05 19:45:17 2017 +0200 @@ -55,6 +55,6 @@ --> -@since JDK1.0 +@since 1.0 diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/AWTError.java --- a/jdk/src/share/classes/java/awt/AWTError.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/AWTError.java Wed Jul 05 19:45:17 2017 +0200 @@ -41,7 +41,7 @@ * Constructs an instance of AWTError with the specified * detail message. * @param msg the detail message. - * @since JDK1.0 + * @since 1.0 */ public AWTError(String msg) { super(msg); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/AWTException.java --- a/jdk/src/share/classes/java/awt/AWTException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/AWTException.java Wed Jul 05 19:45:17 2017 +0200 @@ -43,7 +43,7 @@ * instance of String that describes this particular * exception. * @param msg the detail message - * @since JDK1.0 + * @since 1.0 */ public AWTException(String msg) { super(msg); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/BorderLayout.java --- a/jdk/src/share/classes/java/awt/BorderLayout.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/BorderLayout.java Wed Jul 05 19:45:17 2017 +0200 @@ -119,7 +119,7 @@ * @author Arthur van Hoff * @see java.awt.Container#add(String, Component) * @see java.awt.ComponentOrientation - * @since JDK1.0 + * @since 1.0 */ public class BorderLayout implements LayoutManager2, java.io.Serializable { @@ -367,7 +367,7 @@ /** * Returns the horizontal gap between components. - * @since JDK1.1 + * @since 1.1 */ public int getHgap() { return hgap; @@ -376,7 +376,7 @@ /** * Sets the horizontal gap between components. * @param hgap the horizontal gap between components - * @since JDK1.1 + * @since 1.1 */ public void setHgap(int hgap) { this.hgap = hgap; @@ -384,7 +384,7 @@ /** * Returns the vertical gap between components. - * @since JDK1.1 + * @since 1.1 */ public int getVgap() { return vgap; @@ -393,7 +393,7 @@ /** * Sets the vertical gap between components. * @param vgap the vertical gap between components - * @since JDK1.1 + * @since 1.1 */ public void setVgap(int vgap) { this.vgap = vgap; @@ -415,7 +415,7 @@ * @see java.awt.Container#add(java.awt.Component, java.lang.Object) * @exception IllegalArgumentException if the constraint object is not * a string, or if it not one of the five specified constants. - * @since JDK1.1 + * @since 1.1 */ public void addLayoutComponent(Component comp, Object constraints) { synchronized (comp.getTreeLock()) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/Button.java --- a/jdk/src/share/classes/java/awt/Button.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/Button.java Wed Jul 05 19:45:17 2017 +0200 @@ -82,7 +82,7 @@ * @see java.awt.event.ActionListener * @see java.awt.Component#processMouseEvent * @see java.awt.Component#addMouseListener - * @since JDK1.0 + * @since 1.0 */ public class Button extends Component implements Accessible { @@ -228,7 +228,7 @@ * If the string is null then the action command * is set to match the label of the button. * @see java.awt.event.ActionEvent - * @since JDK1.1 + * @since 1.1 */ public void setActionCommand(String command) { actionCommand = command; @@ -255,7 +255,7 @@ * @see #removeActionListener * @see #getActionListeners * @see java.awt.event.ActionListener - * @since JDK1.1 + * @since 1.1 */ public synchronized void addActionListener(ActionListener l) { if (l == null) { @@ -277,7 +277,7 @@ * @see #addActionListener * @see #getActionListeners * @see java.awt.event.ActionListener - * @since JDK1.1 + * @since 1.1 */ public synchronized void removeActionListener(ActionListener l) { if (l == null) { @@ -370,7 +370,7 @@ * @param e the event * @see java.awt.event.ActionEvent * @see java.awt.Button#processActionEvent - * @since JDK1.1 + * @since 1.1 */ protected void processEvent(AWTEvent e) { if (e instanceof ActionEvent) { @@ -401,7 +401,7 @@ * @see java.awt.event.ActionListener * @see java.awt.Button#addActionListener * @see java.awt.Component#enableEvents - * @since JDK1.1 + * @since 1.1 */ protected void processActionEvent(ActionEvent e) { ActionListener listener = actionListener; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/Canvas.java --- a/jdk/src/share/classes/java/awt/Canvas.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/Canvas.java Wed Jul 05 19:45:17 2017 +0200 @@ -39,7 +39,7 @@ * in order to perform custom graphics on the canvas. * * @author Sami Shaio - * @since JDK1.0 + * @since 1.0 */ public class Canvas extends Component implements Accessible { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/CardLayout.java --- a/jdk/src/share/classes/java/awt/CardLayout.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/CardLayout.java Wed Jul 05 19:45:17 2017 +0200 @@ -53,7 +53,7 @@ * * @author Arthur van Hoff * @see java.awt.Container - * @since JDK1.0 + * @since 1.0 */ public class CardLayout implements LayoutManager2, @@ -148,7 +148,7 @@ * @return the horizontal gap between components. * @see java.awt.CardLayout#setHgap(int) * @see java.awt.CardLayout#getVgap() - * @since JDK1.1 + * @since 1.1 */ public int getHgap() { return hgap; @@ -159,7 +159,7 @@ * @param hgap the horizontal gap between components. * @see java.awt.CardLayout#getHgap() * @see java.awt.CardLayout#setVgap(int) - * @since JDK1.1 + * @since 1.1 */ public void setHgap(int hgap) { this.hgap = hgap; @@ -180,7 +180,7 @@ * @param vgap the vertical gap between components. * @see java.awt.CardLayout#getVgap() * @see java.awt.CardLayout#setHgap(int) - * @since JDK1.1 + * @since 1.1 */ public void setVgap(int vgap) { this.vgap = vgap; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/Checkbox.java --- a/jdk/src/share/classes/java/awt/Checkbox.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/Checkbox.java Wed Jul 05 19:45:17 2017 +0200 @@ -71,7 +71,7 @@ * @author Sami Shaio * @see java.awt.GridLayout * @see java.awt.CheckboxGroup - * @since JDK1.0 + * @since 1.0 */ public class Checkbox extends Component implements ItemSelectable, Accessible { @@ -190,7 +190,7 @@ * GraphicsEnvironment.isHeadless * returns true * @see java.awt.GraphicsEnvironment#isHeadless - * @since JDK1.1 + * @since 1.1 */ public Checkbox(String label, boolean state, CheckboxGroup group) throws HeadlessException { @@ -216,7 +216,7 @@ * GraphicsEnvironment.isHeadless * returns true * @see java.awt.GraphicsEnvironment#isHeadless - * @since JDK1.1 + * @since 1.1 */ public Checkbox(String label, CheckboxGroup group, boolean state) throws HeadlessException { @@ -424,7 +424,7 @@ * @see #setState * @see java.awt.event.ItemEvent * @see java.awt.event.ItemListener - * @since JDK1.1 + * @since 1.1 */ public synchronized void addItemListener(ItemListener l) { if (l == null) { @@ -446,7 +446,7 @@ * @see #getItemListeners * @see java.awt.event.ItemEvent * @see java.awt.event.ItemListener - * @since JDK1.1 + * @since 1.1 */ public synchronized void removeItemListener(ItemListener l) { if (l == null) { @@ -540,7 +540,7 @@ * @param e the event * @see java.awt.event.ItemEvent * @see #processItemEvent - * @since JDK1.1 + * @since 1.1 */ protected void processEvent(AWTEvent e) { if (e instanceof ItemEvent) { @@ -572,7 +572,7 @@ * @see java.awt.event.ItemListener * @see #addItemListener * @see java.awt.Component#enableEvents - * @since JDK1.1 + * @since 1.1 */ protected void processItemEvent(ItemEvent e) { ItemListener listener = itemListener; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/CheckboxGroup.java --- a/jdk/src/share/classes/java/awt/CheckboxGroup.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/CheckboxGroup.java Wed Jul 05 19:45:17 2017 +0200 @@ -52,7 +52,7 @@ * * @author Sami Shaio * @see java.awt.Checkbox - * @since JDK1.0 + * @since 1.0 */ public class CheckboxGroup implements java.io.Serializable { /** @@ -84,7 +84,7 @@ * "on" state, or null. * @see java.awt.Checkbox * @see java.awt.CheckboxGroup#setSelectedCheckbox - * @since JDK1.1 + * @since 1.1 */ public Checkbox getSelectedCheckbox() { return getCurrent(); @@ -113,7 +113,7 @@ * current selection. * @see java.awt.Checkbox * @see java.awt.CheckboxGroup#getSelectedCheckbox - * @since JDK1.1 + * @since 1.1 */ public void setSelectedCheckbox(Checkbox box) { setCurrent(box); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/CheckboxMenuItem.java --- a/jdk/src/share/classes/java/awt/CheckboxMenuItem.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/CheckboxMenuItem.java Wed Jul 05 19:45:17 2017 +0200 @@ -59,7 +59,7 @@ * @author Sami Shaio * @see java.awt.event.ItemEvent * @see java.awt.event.ItemListener - * @since JDK1.0 + * @since 1.0 */ public class CheckboxMenuItem extends MenuItem implements ItemSelectable, Accessible { @@ -102,7 +102,7 @@ * @exception HeadlessException if GraphicsEnvironment.isHeadless() * returns true * @see java.awt.GraphicsEnvironment#isHeadless - * @since JDK1.1 + * @since 1.1 */ public CheckboxMenuItem() throws HeadlessException { this("", false); @@ -132,7 +132,7 @@ * @exception HeadlessException if GraphicsEnvironment.isHeadless() * returns true * @see java.awt.GraphicsEnvironment#isHeadless - * @since JDK1.1 + * @since 1.1 */ public CheckboxMenuItem(String label, boolean state) throws HeadlessException { @@ -231,7 +231,7 @@ * @see #setState * @see java.awt.event.ItemEvent * @see java.awt.event.ItemListener - * @since JDK1.1 + * @since 1.1 */ public synchronized void addItemListener(ItemListener l) { if (l == null) { @@ -253,7 +253,7 @@ * @see #getItemListeners * @see java.awt.event.ItemEvent * @see java.awt.event.ItemListener - * @since JDK1.1 + * @since 1.1 */ public synchronized void removeItemListener(ItemListener l) { if (l == null) { @@ -350,7 +350,7 @@ * @param e the event * @see java.awt.event.ItemEvent * @see #processItemEvent - * @since JDK1.1 + * @since 1.1 */ protected void processEvent(AWTEvent e) { if (e instanceof ItemEvent) { @@ -381,7 +381,7 @@ * @see java.awt.event.ItemListener * @see #addItemListener * @see java.awt.MenuItem#enableEvents - * @since JDK1.1 + * @since 1.1 */ protected void processItemEvent(ItemEvent e) { ItemListener listener = itemListener; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/Choice.java --- a/jdk/src/share/classes/java/awt/Choice.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/Choice.java Wed Jul 05 19:45:17 2017 +0200 @@ -68,7 +68,7 @@ * * @author Sami Shaio * @author Arthur van Hoff - * @since JDK1.0 + * @since 1.0 */ public class Choice extends Component implements ItemSelectable, Accessible { /** @@ -158,7 +158,7 @@ * Returns the number of items in this Choice menu. * @return the number of items in this Choice menu * @see #getItem - * @since JDK1.1 + * @since 1.1 */ public int getItemCount() { return countItems(); @@ -196,7 +196,7 @@ * @param item the item to be added * @exception NullPointerException if the item's value is * null - * @since JDK1.1 + * @since 1.1 */ public void add(String item) { addItem(item); @@ -291,7 +291,7 @@ * @param item the item to remove from this Choice menu * @exception IllegalArgumentException if the item doesn't * exist in the choice menu - * @since JDK1.1 + * @since 1.1 */ public void remove(String item) { synchronized (this) { @@ -319,7 +319,7 @@ * @param position the position of the item * @throws IndexOutOfBoundsException if the specified * position is out of bounds - * @since JDK1.1 + * @since 1.1 */ public void remove(int position) { synchronized (this) { @@ -357,7 +357,7 @@ /** * Removes all items from the choice menu. * @see #remove - * @since JDK1.1 + * @since 1.1 */ public void removeAll() { synchronized (this) { @@ -475,7 +475,7 @@ * @see #select * @see java.awt.event.ItemEvent * @see java.awt.event.ItemListener - * @since JDK1.1 + * @since 1.1 */ public synchronized void addItemListener(ItemListener l) { if (l == null) { @@ -497,7 +497,7 @@ * @see #getItemListeners * @see java.awt.event.ItemEvent * @see java.awt.event.ItemListener - * @since JDK1.1 + * @since 1.1 */ public synchronized void removeItemListener(ItemListener l) { if (l == null) { @@ -591,7 +591,7 @@ * @param e the event * @see java.awt.event.ItemEvent * @see #processItemEvent - * @since JDK1.1 + * @since 1.1 */ protected void processEvent(AWTEvent e) { if (e instanceof ItemEvent) { @@ -623,7 +623,7 @@ * @see java.awt.event.ItemListener * @see #addItemListener(ItemListener) * @see java.awt.Component#enableEvents - * @since JDK1.1 + * @since 1.1 */ protected void processItemEvent(ItemEvent e) { ItemListener listener = itemListener; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/Color.java --- a/jdk/src/share/classes/java/awt/Color.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/Color.java Wed Jul 05 19:45:17 2017 +0200 @@ -597,7 +597,7 @@ * @see #getRed * @see #getGreen * @see #getBlue - * @since JDK1.0 + * @since 1.0 */ public int getRGB() { return value; @@ -621,7 +621,7 @@ * a brighter version of this Color * with the same {@code alpha} value. * @see java.awt.Color#darker - * @since JDK1.0 + * @since 1.0 */ public Color brighter() { int r = getRed(); @@ -664,7 +664,7 @@ * a darker version of this Color * with the same {@code alpha} value. * @see java.awt.Color#brighter - * @since JDK1.0 + * @since 1.0 */ public Color darker() { return new Color(Math.max((int)(getRed() *FACTOR), 0), @@ -676,7 +676,7 @@ /** * Computes the hash code for this Color. * @return a hash code value for this object. - * @since JDK1.0 + * @since 1.0 */ public int hashCode() { return value; @@ -693,7 +693,7 @@ * Color * @return true if the objects are the same; * false otherwise. - * @since JDK1.0 + * @since 1.0 */ public boolean equals(Object obj) { return obj instanceof Color && ((Color)obj).getRGB() == this.getRGB(); @@ -723,7 +723,7 @@ * @exception NumberFormatException if the specified string cannot * be interpreted as a decimal, * octal, or hexadecimal integer. - * @since JDK1.1 + * @since 1.1 */ public static Color decode(String nm) throws NumberFormatException { Integer intval = Integer.decode(nm); @@ -747,7 +747,7 @@ * @see java.lang.System#getProperty(java.lang.String) * @see java.lang.Integer#getInteger(java.lang.String) * @see java.awt.Color#Color(int) - * @since JDK1.0 + * @since 1.0 */ public static Color getColor(String nm) { return getColor(nm, null); @@ -771,7 +771,7 @@ * @see java.lang.System#getProperty(java.lang.String) * @see java.lang.Integer#getInteger(java.lang.String) * @see java.awt.Color#Color(int) - * @since JDK1.0 + * @since 1.0 */ public static Color getColor(String nm, Color v) { Integer intval = Integer.getInteger(nm); @@ -801,7 +801,7 @@ * @see java.lang.System#getProperty(java.lang.String) * @see java.lang.Integer#getInteger(java.lang.String) * @see java.awt.Color#Color(int) - * @since JDK1.0 + * @since 1.0 */ public static Color getColor(String nm, int v) { Integer intval = Integer.getInteger(nm); @@ -834,7 +834,7 @@ * @see java.awt.Color#getRGB() * @see java.awt.Color#Color(int) * @see java.awt.image.ColorModel#getRGBdefault() - * @since JDK1.0 + * @since 1.0 */ public static int HSBtoRGB(float hue, float saturation, float brightness) { int r = 0, g = 0, b = 0; @@ -902,7 +902,7 @@ * @see java.awt.Color#getRGB() * @see java.awt.Color#Color(int) * @see java.awt.image.ColorModel#getRGBdefault() - * @since JDK1.0 + * @since 1.0 */ public static float[] RGBtoHSB(int r, int g, int b, float[] hsbvals) { float hue, saturation, brightness; @@ -957,7 +957,7 @@ * @param b the brightness of the color * @return a Color object with the specified hue, * saturation, and brightness. - * @since JDK1.0 + * @since 1.0 */ public static Color getHSBColor(float h, float s, float b) { return new Color(HSBtoRGB(h, s, b)); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/Component.java --- a/jdk/src/share/classes/java/awt/Component.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/Component.java Wed Jul 05 19:45:17 2017 +0200 @@ -1018,7 +1018,7 @@ * Gets the name of the component. * @return this component's name * @see #setName - * @since JDK1.1 + * @since 1.1 */ public String getName() { if (name == null && !nameExplicitlySet) { @@ -1035,7 +1035,7 @@ * @param name the string that is to be this * component's name * @see #getName - * @since JDK1.1 + * @since 1.1 */ public void setName(String name) { String oldName; @@ -1050,7 +1050,7 @@ /** * Gets the parent of this component. * @return the parent container of this component - * @since JDK1.0 + * @since 1.0 */ public Container getParent() { return getParent_NoClientCode(); @@ -1221,7 +1221,7 @@ * toolkit is used by that component. Therefore if the component * is moved from one frame to another, the toolkit it uses may change. * @return the toolkit of this component - * @since JDK1.0 + * @since 1.0 */ public Toolkit getToolkit() { return getToolkitImpl(); @@ -1250,7 +1250,7 @@ * otherwise * @see #validate * @see #invalidate - * @since JDK1.0 + * @since 1.0 */ public boolean isValid() { return (peer != null) && valid; @@ -1292,7 +1292,7 @@ * @return true if the component is visible, * false otherwise * @see #setVisible - * @since JDK1.0 + * @since 1.0 */ @Transient public boolean isVisible() { @@ -1419,7 +1419,7 @@ * @return true if the component is showing, * false otherwise * @see #setVisible - * @since JDK1.0 + * @since 1.0 */ public boolean isShowing() { if (visible && (peer != null)) { @@ -1437,7 +1437,7 @@ * @return true if the component is enabled, * false otherwise * @see #setEnabled - * @since JDK1.0 + * @since 1.0 */ public boolean isEnabled() { return isEnabledImpl(); @@ -1466,7 +1466,7 @@ * enabled; otherwise this component is disabled * @see #isEnabled * @see #isLightweight - * @since JDK1.1 + * @since 1.1 */ public void setEnabled(boolean b) { enable(b); @@ -1611,7 +1611,7 @@ * otherwise, hides this component * @see #isVisible * @see #invalidate - * @since JDK1.1 + * @since 1.1 */ public void setVisible(boolean b) { show(b); @@ -1739,7 +1739,7 @@ * not have a foreground color, the foreground color of its parent * is returned * @see #setForeground - * @since JDK1.0 + * @since 1.0 * @beaninfo * bound: true */ @@ -1760,7 +1760,7 @@ * then this component will inherit * the foreground color of its parent * @see #getForeground - * @since JDK1.0 + * @since 1.0 */ public void setForeground(Color c) { Color oldColor = foreground; @@ -1796,7 +1796,7 @@ * not have a background color, * the background color of its parent is returned * @see #setBackground - * @since JDK1.0 + * @since 1.0 */ @Transient public Color getBackground() { @@ -1819,7 +1819,7 @@ * if this parameter is null, then this * component will inherit the background color of its parent * @see #getBackground - * @since JDK1.0 + * @since 1.0 * @beaninfo * bound: true */ @@ -1856,7 +1856,7 @@ * @return this component's font; if a font has not been set * for this component, the font of its parent is returned * @see #setFont - * @since JDK1.0 + * @since 1.0 */ @Transient public Font getFont() { @@ -1887,7 +1887,7 @@ * component will inherit the font of its parent * @see #getFont * @see #invalidate - * @since JDK1.0 + * @since 1.0 * @beaninfo * bound: true */ @@ -1940,7 +1940,7 @@ * does not have its own locale and has not yet been added to * a containment hierarchy such that the locale can be determined * from the containing parent - * @since JDK1.1 + * @since 1.1 */ public Locale getLocale() { Locale locale = this.locale; @@ -1965,7 +1965,7 @@ * @param l the locale to become this component's locale * @see #getLocale * @see #invalidate - * @since JDK1.1 + * @since 1.1 */ public void setLocale(Locale l) { Locale oldValue = locale; @@ -1986,7 +1986,7 @@ * @see java.awt.image.ColorModel * @see java.awt.peer.ComponentPeer#getColorModel() * @see Toolkit#getColorModel() - * @since JDK1.0 + * @since 1.0 */ public ColorModel getColorModel() { ComponentPeer peer = this.peer; @@ -2016,7 +2016,7 @@ * the coordinate space of the component's parent * @see #setLocation * @see #getLocationOnScreen - * @since JDK1.1 + * @since 1.1 */ public Point getLocation() { return location(); @@ -2095,7 +2095,7 @@ * @see #getLocation * @see #setBounds * @see #invalidate - * @since JDK1.1 + * @since 1.1 */ public void setLocation(int x, int y) { move(x, y); @@ -2127,7 +2127,7 @@ * @see #getLocation * @see #setBounds * @see #invalidate - * @since JDK1.1 + * @since 1.1 */ public void setLocation(Point p) { setLocation(p.x, p.y); @@ -2143,7 +2143,7 @@ * @return a Dimension object that indicates the * size of this component * @see #setSize - * @since JDK1.1 + * @since 1.1 */ public Dimension getSize() { return size(); @@ -2170,7 +2170,7 @@ * @see #getSize * @see #setBounds * @see #invalidate - * @since JDK1.1 + * @since 1.1 */ public void setSize(int width, int height) { resize(width, height); @@ -2201,7 +2201,7 @@ * @see #setSize * @see #setBounds * @see #invalidate - * @since JDK1.1 + * @since 1.1 */ public void setSize(Dimension d) { resize(d); @@ -2258,7 +2258,7 @@ * @see #setSize(int, int) * @see #setSize(Dimension) * @see #invalidate - * @since JDK1.1 + * @since 1.1 */ public void setBounds(int x, int y, int width, int height) { reshape(x, y, width, height); @@ -2402,7 +2402,7 @@ * @see #setSize(int, int) * @see #setSize(Dimension) * @see #invalidate - * @since JDK1.1 + * @since 1.1 */ public void setBounds(Rectangle r) { setBounds(r.x, r.y, r.width, r.height); @@ -2883,7 +2883,7 @@ * @see #doLayout() * @see LayoutManager * @see Container#validate - * @since JDK1.0 + * @since 1.0 */ public void validate() { synchronized (getTreeLock()) { @@ -2926,7 +2926,7 @@ * @see #doLayout * @see LayoutManager * @see java.awt.Container#isValidateRoot - * @since JDK1.0 + * @since 1.0 */ public void invalidate() { synchronized (getTreeLock()) { @@ -3021,7 +3021,7 @@ * @return a graphics context for this component, or null * if it has none * @see #paint - * @since JDK1.0 + * @since 1.0 */ public Graphics getGraphics() { if (peer instanceof LightweightPeer) { @@ -3085,7 +3085,7 @@ * @see #getPeer * @see java.awt.peer.ComponentPeer#getFontMetrics(Font) * @see Toolkit#getFontMetrics(Font) - * @since JDK1.0 + * @since 1.0 */ public FontMetrics getFontMetrics(Font font) { // This is an unsupported hack, but left in for a customer. @@ -3125,7 +3125,7 @@ * @see #contains * @see Toolkit#createCustomCursor * @see Cursor - * @since JDK1.1 + * @since 1.1 */ public void setCursor(Cursor cursor) { this.cursor = cursor; @@ -3158,7 +3158,7 @@ * If no cursor is set in the entire hierarchy, * Cursor.DEFAULT_CURSOR is returned. * @see #setCursor - * @since JDK1.1 + * @since 1.1 */ public Cursor getCursor() { return getCursor_NoClientCode(); @@ -3212,7 +3212,7 @@ * * @param g the graphics context to use for painting * @see #update - * @since JDK1.0 + * @since 1.0 */ public void paint(Graphics g) { } @@ -3248,7 +3248,7 @@ * @param g the specified context to use for updating * @see #paint * @see #repaint() - * @since JDK1.0 + * @since 1.0 */ public void update(Graphics g) { paint(g); @@ -3264,7 +3264,7 @@ * * @param g the graphics context to use for painting * @see #paint - * @since JDK1.0 + * @since 1.0 */ public void paintAll(Graphics g) { if (isShowing()) { @@ -3308,7 +3308,7 @@ * * @see #update(Graphics) - * @since JDK1.0 + * @since 1.0 */ public void repaint() { repaint(0, 0, 0, width, height); @@ -3327,7 +3327,7 @@ * @param tm maximum time in milliseconds before update * @see #paint * @see #update(Graphics) - * @since JDK1.0 + * @since 1.0 */ public void repaint(long tm) { repaint(tm, 0, 0, width, height); @@ -3351,7 +3351,7 @@ * @param width the width * @param height the height * @see #update(Graphics) - * @since JDK1.0 + * @since 1.0 */ public void repaint(int x, int y, int width, int height) { repaint(0, x, y, width, height); @@ -3377,7 +3377,7 @@ * @param width the width * @param height the height * @see #update(Graphics) - * @since JDK1.0 + * @since 1.0 */ public void repaint(long tm, int x, int y, int width, int height) { if (this.peer instanceof LightweightPeer) { @@ -3430,7 +3430,7 @@ * graphics context is the bounding rectangle of this component. * @param g the graphics context to use for printing * @see #paint(Graphics) - * @since JDK1.0 + * @since 1.0 */ public void print(Graphics g) { paint(g); @@ -3445,7 +3445,7 @@ * graphics context is the bounding rectangle of this component. * @param g the graphics context to use for printing * @see #print(Graphics) - * @since JDK1.0 + * @since 1.0 */ public void printAll(Graphics g) { if (isShowing()) { @@ -3525,7 +3525,7 @@ * @see Graphics#drawImage(Image, int, int, int, int, Color, java.awt.image.ImageObserver) * @see Graphics#drawImage(Image, int, int, int, int, java.awt.image.ImageObserver) * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.0 + * @since 1.0 */ public boolean imageUpdate(Image img, int infoflags, int x, int y, int w, int h) { @@ -3550,7 +3550,7 @@ * Creates an image from the specified image producer. * @param producer the image producer * @return the image produced - * @since JDK1.0 + * @since 1.0 */ public Image createImage(ImageProducer producer) { ComponentPeer peer = this.peer; @@ -3572,7 +3572,7 @@ * true. * @see #isDisplayable * @see GraphicsEnvironment#isHeadless - * @since JDK1.0 + * @since 1.0 */ public Image createImage(int width, int height) { ComponentPeer peer = this.peer; @@ -3643,7 +3643,7 @@ * to be notified as the image is being prepared * @return true if the image has already been fully * prepared; false otherwise - * @since JDK1.0 + * @since 1.0 */ public boolean prepareImage(Image image, ImageObserver observer) { return prepareImage(image, -1, -1, observer); @@ -3665,7 +3665,7 @@ * @return true if the image has already been fully * prepared; false otherwise * @see java.awt.image.ImageObserver - * @since JDK1.0 + * @since 1.0 */ public boolean prepareImage(Image image, int width, int height, ImageObserver observer) { @@ -3701,7 +3701,7 @@ * @see #prepareImage(Image, int, int, java.awt.image.ImageObserver) * @see Toolkit#checkImage(Image, int, int, java.awt.image.ImageObserver) * @see java.awt.image.ImageObserver - * @since JDK1.0 + * @since 1.0 */ public int checkImage(Image image, ImageObserver observer) { return checkImage(image, -1, -1, observer); @@ -3737,7 +3737,7 @@ * @see #prepareImage(Image, int, int, java.awt.image.ImageObserver) * @see Toolkit#checkImage(Image, int, int, java.awt.image.ImageObserver) * @see java.awt.image.ImageObserver - * @since JDK1.0 + * @since 1.0 */ public int checkImage(Image image, int width, int height, ImageObserver observer) { @@ -4622,7 +4622,7 @@ * @param x the x coordinate of the point * @param y the y coordinate of the point * @see #getComponentAt(int, int) - * @since JDK1.1 + * @since 1.1 */ public boolean contains(int x, int y) { return inside(x, y); @@ -4644,7 +4644,7 @@ * @param p the point * @throws NullPointerException if {@code p} is {@code null} * @see #getComponentAt(Point) - * @since JDK1.1 + * @since 1.1 */ public boolean contains(Point p) { return contains(p.x, p.y); @@ -4669,7 +4669,7 @@ * null if the location * is outside this component * @see #contains(int, int) - * @since JDK1.0 + * @since 1.0 */ public Component getComponentAt(int x, int y) { return locate(x, y); @@ -4689,7 +4689,7 @@ * specified point. * @param p the point * @see java.awt.Component#contains - * @since JDK1.1 + * @since 1.1 */ public Component getComponentAt(Point p) { return getComponentAt(p.x, p.y); @@ -5224,7 +5224,7 @@ * @see java.awt.event.ComponentListener * @see #removeComponentListener * @see #getComponentListeners - * @since JDK1.1 + * @since 1.1 */ public synchronized void addComponentListener(ComponentListener l) { if (l == null) { @@ -5248,7 +5248,7 @@ * @see java.awt.event.ComponentListener * @see #addComponentListener * @see #getComponentListeners - * @since JDK1.1 + * @since 1.1 */ public synchronized void removeComponentListener(ComponentListener l) { if (l == null) { @@ -5286,7 +5286,7 @@ * @see java.awt.event.FocusListener * @see #removeFocusListener * @see #getFocusListeners - * @since JDK1.1 + * @since 1.1 */ public synchronized void addFocusListener(FocusListener l) { if (l == null) { @@ -5317,7 +5317,7 @@ * @see java.awt.event.FocusListener * @see #addFocusListener * @see #getFocusListeners - * @since JDK1.1 + * @since 1.1 */ public synchronized void removeFocusListener(FocusListener l) { if (l == null) { @@ -5618,7 +5618,7 @@ * @see java.awt.event.KeyListener * @see #removeKeyListener * @see #getKeyListeners - * @since JDK1.1 + * @since 1.1 */ public synchronized void addKeyListener(KeyListener l) { if (l == null) { @@ -5649,7 +5649,7 @@ * @see java.awt.event.KeyListener * @see #addKeyListener * @see #getKeyListeners - * @since JDK1.1 + * @since 1.1 */ public synchronized void removeKeyListener(KeyListener l) { if (l == null) { @@ -5687,7 +5687,7 @@ * @see java.awt.event.MouseListener * @see #removeMouseListener * @see #getMouseListeners - * @since JDK1.1 + * @since 1.1 */ public synchronized void addMouseListener(MouseListener l) { if (l == null) { @@ -5718,7 +5718,7 @@ * @see java.awt.event.MouseListener * @see #addMouseListener * @see #getMouseListeners - * @since JDK1.1 + * @since 1.1 */ public synchronized void removeMouseListener(MouseListener l) { if (l == null) { @@ -5756,7 +5756,7 @@ * @see java.awt.event.MouseMotionListener * @see #removeMouseMotionListener * @see #getMouseMotionListeners - * @since JDK1.1 + * @since 1.1 */ public synchronized void addMouseMotionListener(MouseMotionListener l) { if (l == null) { @@ -5787,7 +5787,7 @@ * @see java.awt.event.MouseMotionListener * @see #addMouseMotionListener * @see #getMouseMotionListeners - * @since JDK1.1 + * @since 1.1 */ public synchronized void removeMouseMotionListener(MouseMotionListener l) { if (l == null) { @@ -6072,7 +6072,7 @@ * @see #processEvent * @see #disableEvents * @see AWTEvent - * @since JDK1.1 + * @since 1.1 */ protected final void enableEvents(long eventsToEnable) { long notifyAncestors = 0; @@ -6108,7 +6108,7 @@ * from being delivered to this component. * @param eventsToDisable the event mask defining the event types * @see #enableEvents - * @since JDK1.1 + * @since 1.1 */ protected final void disableEvents(long eventsToDisable) { long notifyAncestors = 0; @@ -6285,7 +6285,7 @@ * @see #processInputMethodEvent * @see #processHierarchyEvent * @see #processMouseWheelEvent - * @since JDK1.1 + * @since 1.1 */ protected void processEvent(AWTEvent e) { if (e instanceof FocusEvent) { @@ -6351,7 +6351,7 @@ * @see java.awt.event.ComponentListener * @see #addComponentListener * @see #enableEvents - * @since JDK1.1 + * @since 1.1 */ protected void processComponentEvent(ComponentEvent e) { ComponentListener listener = componentListener; @@ -6414,7 +6414,7 @@ * @see #addFocusListener * @see #enableEvents * @see #dispatchEvent - * @since JDK1.1 + * @since 1.1 */ protected void processFocusEvent(FocusEvent e) { FocusListener listener = focusListener; @@ -6480,7 +6480,7 @@ * @see #addKeyListener * @see #enableEvents * @see #isShowing - * @since JDK1.1 + * @since 1.1 */ protected void processKeyEvent(KeyEvent e) { KeyListener listener = keyListener; @@ -6522,7 +6522,7 @@ * @see java.awt.event.MouseListener * @see #addMouseListener * @see #enableEvents - * @since JDK1.1 + * @since 1.1 */ protected void processMouseEvent(MouseEvent e) { MouseListener listener = mouseListener; @@ -6570,7 +6570,7 @@ * @see java.awt.event.MouseMotionListener * @see #addMouseMotionListener * @see #enableEvents - * @since JDK1.1 + * @since 1.1 */ protected void processMouseMotionEvent(MouseEvent e) { MouseMotionListener listener = mouseMotionListener; @@ -6882,7 +6882,7 @@ * @see #isDisplayable * @see #removeNotify * @see #invalidate - * @since JDK1.0 + * @since 1.0 */ public void addNotify() { synchronized (getTreeLock()) { @@ -6985,7 +6985,7 @@ * * @see #isDisplayable * @see #addNotify - * @since JDK1.0 + * @since 1.0 */ public void removeNotify() { KeyboardFocusManager.clearMostRecentFocusOwner(this); @@ -7094,7 +7094,7 @@ * @return true if this Component is * focusable; false otherwise * @see #setFocusable - * @since JDK1.1 + * @since 1.1 * @deprecated As of 1.4, replaced by isFocusable(). */ @Deprecated @@ -7433,7 +7433,7 @@ * @see #isFocusable * @see #isDisplayable * @see KeyboardFocusManager#clearGlobalFocusOwner - * @since JDK1.0 + * @since 1.0 */ public void requestFocus() { requestFocusHelper(false, true); @@ -7862,7 +7862,7 @@ * Transfers the focus to the next component, as though this Component were * the focus owner. * @see #requestFocus() - * @since JDK1.1 + * @since 1.1 */ public void transferFocus() { nextFocus(); @@ -8070,7 +8070,7 @@ * @param popup the popup menu to be added to the component. * @see #remove(MenuComponent) * @exception NullPointerException if {@code popup} is {@code null} - * @since JDK1.1 + * @since 1.1 */ public void add(PopupMenu popup) { synchronized (getTreeLock()) { @@ -8095,7 +8095,7 @@ * Removes the specified popup menu from the component. * @param popup the popup menu to be removed * @see #add(PopupMenu) - * @since JDK1.1 + * @since 1.1 */ @SuppressWarnings("unchecked") public void remove(MenuComponent popup) { @@ -8126,7 +8126,7 @@ * null. * * @return a string representation of this component's state - * @since JDK1.0 + * @since 1.0 */ protected String paramString() { final String thisName = Objects.toString(getName(), ""); @@ -8140,7 +8140,7 @@ /** * Returns a string representation of this component and its values. * @return a string representation of this component - * @since JDK1.0 + * @since 1.0 */ public String toString() { return getClass().getName() + '[' + paramString() + ']'; @@ -8150,7 +8150,7 @@ * Prints a listing of this component to the standard system output * stream System.out. * @see java.lang.System#out - * @since JDK1.0 + * @since 1.0 */ public void list() { list(System.out, 0); @@ -8161,7 +8161,7 @@ * stream. * @param out a print stream * @throws NullPointerException if {@code out} is {@code null} - * @since JDK1.0 + * @since 1.0 */ public void list(PrintStream out) { list(out, 0); @@ -8174,7 +8174,7 @@ * @param indent number of spaces to indent * @see java.io.PrintStream#println(java.lang.Object) * @throws NullPointerException if {@code out} is {@code null} - * @since JDK1.0 + * @since 1.0 */ public void list(PrintStream out, int indent) { for (int i = 0 ; i < indent ; i++) { @@ -8187,7 +8187,7 @@ * Prints a listing to the specified print writer. * @param out the print writer to print to * @throws NullPointerException if {@code out} is {@code null} - * @since JDK1.1 + * @since 1.1 */ public void list(PrintWriter out) { list(out, 0); @@ -8200,7 +8200,7 @@ * @param indent the number of spaces to indent * @throws NullPointerException if {@code out} is {@code null} * @see java.io.PrintStream#println(java.lang.Object) - * @since JDK1.1 + * @since 1.1 */ public void list(PrintWriter out, int indent) { for (int i = 0 ; i < indent ; i++) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/Container.java --- a/jdk/src/share/classes/java/awt/Container.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/Container.java Wed Jul 05 19:45:17 2017 +0200 @@ -85,7 +85,7 @@ * @see #add(java.awt.Component, int) * @see #getComponent(int) * @see LayoutManager - * @since JDK1.0 + * @since 1.0 */ public class Container extends Component { @@ -302,7 +302,7 @@ * * @return the number of components in this panel. * @see #getComponent - * @since JDK1.1 + * @since 1.1 * @see Component#getTreeLock() */ public int getComponentCount() { @@ -384,7 +384,7 @@ * @return the insets of this container. * @see Insets * @see LayoutManager - * @since JDK1.1 + * @since 1.1 */ public Insets getInsets() { return insets(); @@ -975,7 +975,7 @@ * @see #validate * @see javax.swing.JComponent#revalidate() * @see LayoutManager - * @since JDK1.1 + * @since 1.1 */ public void add(Component comp, Object constraints) { addImpl(comp, constraints, -1); @@ -1078,7 +1078,7 @@ * @see #invalidate * @see LayoutManager * @see LayoutManager2 - * @since JDK1.1 + * @since 1.1 */ protected void addImpl(Component comp, Object constraints, int index) { synchronized (getTreeLock()) { @@ -1202,7 +1202,7 @@ * @see #invalidate * @see #validate * @see #getComponentCount - * @since JDK1.1 + * @since 1.1 */ public void remove(int index) { synchronized (getTreeLock()) { @@ -1501,7 +1501,7 @@ * @see LayoutManager#layoutContainer * @see #setLayout * @see #validate - * @since JDK1.1 + * @since 1.1 */ public void doLayout() { layout(); @@ -1749,7 +1749,7 @@ * @param f The font to become this container's font. * @see Component#getFont * @see #invalidate - * @since JDK1.0 + * @since 1.0 */ public void setFont(Font f) { boolean shouldinvalidate = false; @@ -1834,7 +1834,7 @@ * @see #getLayout * @see LayoutManager#minimumLayoutSize(Container) * @see Component#getMinimumSize - * @since JDK1.1 + * @since 1.1 */ public Dimension getMinimumSize() { return minimumSize(); @@ -2539,7 +2539,7 @@ * point is within the bounds of the container the container itself * is returned; otherwise the top-most child is returned. * @see Component#contains - * @since JDK1.1 + * @since 1.1 */ public Component getComponentAt(int x, int y) { return locate(x, y); @@ -2585,7 +2585,7 @@ * or null if the component does * not contain the point. * @see Component#contains - * @since JDK1.1 + * @since 1.1 */ public Component getComponentAt(Point p) { return getComponentAt(p.x, p.y); @@ -2837,7 +2837,7 @@ * @param c the component * @return true if it is an ancestor; * false otherwise. - * @since JDK1.1 + * @since 1.1 */ public boolean isAncestorOf(Component c) { Container p; @@ -3012,7 +3012,7 @@ * @param indent the number of spaces to indent * @throws NullPointerException if {@code out} is {@code null} * @see Component#list(java.io.PrintStream, int) - * @since JDK1.0 + * @since 1.0 */ public void list(PrintStream out, int indent) { super.list(out, indent); @@ -3039,7 +3039,7 @@ * @param indent the number of spaces to indent * @throws NullPointerException if {@code out} is {@code null} * @see Component#list(java.io.PrintWriter, int) - * @since JDK1.1 + * @since 1.1 */ public void list(PrintWriter out, int indent) { super.list(out, indent); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/Dialog.java --- a/jdk/src/share/classes/java/awt/Dialog.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/Dialog.java Wed Jul 05 19:45:17 2017 +0200 @@ -92,7 +92,7 @@ * * @author Sami Shaio * @author Arthur van Hoff - * @since JDK1.0 + * @since 1.0 */ public class Dialog extends Window { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/Event.java --- a/jdk/src/share/classes/java/awt/Event.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/Event.java Wed Jul 05 19:45:17 2017 +0200 @@ -57,7 +57,7 @@ * PGDN, F1, F2, etc). * * @author Sami Shaio - * @since JDK1.0 + * @since 1.0 */ public class Event implements java.io.Serializable { private transient long data; @@ -871,7 +871,7 @@ * @return a string that represents the event and the values * of its member fields. * @see java.awt.Event#paramString - * @since JDK1.1 + * @since 1.1 */ public String toString() { return getClass().getName() + "[" + paramString() + "]"; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/FileDialog.java --- a/jdk/src/share/classes/java/awt/FileDialog.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/FileDialog.java Wed Jul 05 19:45:17 2017 +0200 @@ -44,7 +44,7 @@ * * @author Sami Shaio * @author Arthur van Hoff - * @since JDK1.0 + * @since 1.0 */ public class FileDialog extends Dialog { @@ -176,7 +176,7 @@ * FileDialog(parent, "", LOAD). * * @param parent the owner of the dialog - * @since JDK1.1 + * @since 1.1 */ public FileDialog(Frame parent) { this(parent, "", LOAD); @@ -353,7 +353,7 @@ * @see java.awt.FileDialog#getMode * @exception IllegalArgumentException if an illegal file * dialog mode is supplied - * @since JDK1.1 + * @since 1.1 */ public void setMode(int mode) { switch (mode) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/FlowLayout.java --- a/jdk/src/share/classes/java/awt/FlowLayout.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/FlowLayout.java Wed Jul 05 19:45:17 2017 +0200 @@ -79,7 +79,7 @@ * * @author Arthur van Hoff * @author Sami Shaio - * @since JDK1.0 + * @since 1.0 * @see ComponentOrientation */ public class FlowLayout implements LayoutManager, java.io.Serializable { @@ -246,7 +246,7 @@ * or FlowLayout.TRAILING. * @return the alignment value for this layout * @see java.awt.FlowLayout#setAlignment - * @since JDK1.1 + * @since 1.1 */ public int getAlignment() { return newAlign; @@ -264,7 +264,7 @@ * * @param align one of the alignment values shown above * @see #getAlignment() - * @since JDK1.1 + * @since 1.1 */ public void setAlignment(int align) { this.newAlign = align; @@ -295,7 +295,7 @@ * and between the components and the borders * of the Container * @see java.awt.FlowLayout#setHgap - * @since JDK1.1 + * @since 1.1 */ public int getHgap() { return hgap; @@ -310,7 +310,7 @@ * and between the components and the borders * of the Container * @see java.awt.FlowLayout#getHgap - * @since JDK1.1 + * @since 1.1 */ public void setHgap(int hgap) { this.hgap = hgap; @@ -325,7 +325,7 @@ * and between the components and the borders * of the Container * @see java.awt.FlowLayout#setVgap - * @since JDK1.1 + * @since 1.1 */ public int getVgap() { return vgap; @@ -339,7 +339,7 @@ * and between the components and the borders * of the Container * @see java.awt.FlowLayout#getVgap - * @since JDK1.1 + * @since 1.1 */ public void setVgap(int vgap) { this.vgap = vgap; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/Font.java --- a/jdk/src/share/classes/java/awt/Font.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/Font.java Wed Jul 05 19:45:17 2017 +0200 @@ -364,7 +364,7 @@ /** * The logical name of this Font, as passed to the * constructor. - * @since JDK1.0 + * @since 1.0 * * @serial * @see #getName @@ -374,7 +374,7 @@ /** * The style of this Font, as passed to the constructor. * This style can be PLAIN, BOLD, ITALIC, or BOLD+ITALIC. - * @since JDK1.0 + * @since 1.0 * * @serial * @see #getStyle() @@ -383,7 +383,7 @@ /** * The point size of this Font, rounded to integer. - * @since JDK1.0 + * @since 1.0 * * @serial * @see #getSize() @@ -436,7 +436,7 @@ /** * Gets the peer of this Font. * @return the peer of the Font. - * @since JDK1.1 + * @since 1.1 * @deprecated Font rendering is now platform independent. */ @Deprecated @@ -562,7 +562,7 @@ * @param size the point size of the {@code Font} * @see GraphicsEnvironment#getAllFonts * @see GraphicsEnvironment#getAvailableFontFamilyNames - * @since JDK1.0 + * @since 1.0 */ public Font(String name, int style, int size) { this.name = (name != null) ? name : "Default"; @@ -1180,7 +1180,7 @@ * * @see #getName * @see #getFontName - * @since JDK1.1 + * @since 1.1 */ public String getFamily() { return getFamily_NoClientCode(); @@ -1240,7 +1240,7 @@ * this Font. * @see #getFamily * @see #getFontName - * @since JDK1.0 + * @since 1.0 */ public String getName() { return name; @@ -1286,7 +1286,7 @@ * @see #isPlain * @see #isBold * @see #isItalic - * @since JDK1.0 + * @since 1.0 */ public int getStyle() { return style; @@ -1312,7 +1312,7 @@ * @see #getSize2D * @see GraphicsConfiguration#getDefaultTransform * @see GraphicsConfiguration#getNormalizingTransform - * @since JDK1.0 + * @since 1.0 */ public int getSize() { return size; @@ -1337,7 +1337,7 @@ * PLAIN style; * false otherwise. * @see java.awt.Font#getStyle - * @since JDK1.0 + * @since 1.0 */ public boolean isPlain() { return style == 0; @@ -1350,7 +1350,7 @@ * style is BOLD; * false otherwise. * @see java.awt.Font#getStyle - * @since JDK1.0 + * @since 1.0 */ public boolean isBold() { return (style & BOLD) != 0; @@ -1363,7 +1363,7 @@ * style is ITALIC; * false otherwise. * @see java.awt.Font#getStyle - * @since JDK1.0 + * @since 1.0 */ public boolean isItalic() { return (style & ITALIC) != 0; @@ -1484,7 +1484,7 @@ * describes, or a new default Font if * str is null. * @see #getFamily - * @since JDK1.1 + * @since 1.1 */ public static Font decode(String str) { String fontName = str; @@ -1595,7 +1595,7 @@ /** * Returns a hashcode for this Font. * @return a hashcode value for this Font. - * @since JDK1.0 + * @since 1.0 */ public int hashCode() { if (hash == 0) { @@ -1622,7 +1622,7 @@ * or if the argument is a Font object * describing the same font as this object; * false otherwise. - * @since JDK1.0 + * @since 1.0 */ public boolean equals(Object obj) { if (obj == this) { @@ -1667,7 +1667,7 @@ * representation. * @return a String representation of this * Font object. - * @since JDK1.0 + * @since 1.0 */ // NOTE: This method may be called by privileged threads. // DO NOT INVOKE CLIENT CODE ON THIS THREAD! diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/FontMetrics.java --- a/jdk/src/share/classes/java/awt/FontMetrics.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/FontMetrics.java Wed Jul 05 19:45:17 2017 +0200 @@ -94,7 +94,7 @@ * * @author Jim Graham * @see java.awt.Font - * @since JDK1.0 + * @since 1.0 */ public abstract class FontMetrics implements java.io.Serializable { @@ -625,7 +625,6 @@ * object's values as a String. * @return a String representation of this * FontMetrics object. - * @since JDK1.0. */ public String toString() { return getClass().getName() + diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/Frame.java --- a/jdk/src/share/classes/java/awt/Frame.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/Frame.java Wed Jul 05 19:45:17 2017 +0200 @@ -130,7 +130,7 @@ * @author Sami Shaio * @see WindowEvent * @see Window#addWindowListener - * @since JDK1.0 + * @since 1.0 */ public class Frame extends Window implements MenuContainer { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/Graphics.java --- a/jdk/src/share/classes/java/awt/Graphics.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/Graphics.java Wed Jul 05 19:45:17 2017 +0200 @@ -99,7 +99,7 @@ * @see java.awt.Graphics#setPaintMode() * @see java.awt.Graphics#setXORMode(java.awt.Color) * @see java.awt.Graphics#setFont(java.awt.Font) - * @since JDK1.0 + * @since 1.0 */ public abstract class Graphics { @@ -283,7 +283,7 @@ * @see java.awt.Graphics#clipRect * @see java.awt.Graphics#setClip(int, int, int, int) * @see java.awt.Graphics#setClip(Shape) - * @since JDK1.1 + * @since 1.1 */ public abstract Rectangle getClipBounds(); @@ -321,7 +321,7 @@ * @see java.awt.Graphics#clipRect * @see java.awt.Graphics#setClip(Shape) * @see java.awt.Graphics#getClip - * @since JDK1.1 + * @since 1.1 */ public abstract void setClip(int x, int y, int width, int height); @@ -339,7 +339,7 @@ * @see java.awt.Graphics#clipRect * @see java.awt.Graphics#setClip(int, int, int, int) * @see java.awt.Graphics#setClip(Shape) - * @since JDK1.1 + * @since 1.1 */ public abstract Shape getClip(); @@ -357,7 +357,7 @@ * @see java.awt.Graphics#getClip() * @see java.awt.Graphics#clipRect * @see java.awt.Graphics#setClip(int, int, int, int) - * @since JDK1.1 + * @since 1.1 */ public abstract void setClip(Shape clip); @@ -694,7 +694,7 @@ * @param yPoints an array of y points * @param nPoints the total number of points * @see java.awt.Graphics#drawPolygon(int[], int[], int) - * @since JDK1.1 + * @since 1.1 */ public abstract void drawPolyline(int xPoints[], int yPoints[], int nPoints); @@ -1058,7 +1058,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.1 + * @since 1.1 */ public abstract boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, @@ -1119,7 +1119,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.1 + * @since 1.1 */ public abstract boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/Graphics2D.java --- a/jdk/src/share/classes/java/awt/Graphics2D.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/Graphics2D.java Wed Jul 05 19:45:17 2017 +0200 @@ -662,7 +662,7 @@ * null * @see java.awt.Graphics#drawBytes * @see java.awt.Graphics#drawChars - * @since JDK1.0 + * @since 1.0 */ public abstract void drawString(String str, int x, int y); @@ -968,7 +968,7 @@ * context are relative to this new origin. * @param x the specified x coordinate * @param y the specified y coordinate - * @since JDK1.0 + * @since 1.0 */ public abstract void translate(int x, int y); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/GridBagConstraints.java --- a/jdk/src/share/classes/java/awt/GridBagConstraints.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/GridBagConstraints.java Wed Jul 05 19:45:17 2017 +0200 @@ -32,7 +32,7 @@ * @author Doug Stein * @author Bill Spitzak (orignial NeWS & OLIT implementation) * @see java.awt.GridBagLayout - * @since JDK1.0 + * @since 1.0 */ public class GridBagConstraints implements Cloneable, java.io.Serializable { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/GridBagLayout.java --- a/jdk/src/share/classes/java/awt/GridBagLayout.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/GridBagLayout.java Wed Jul 05 19:45:17 2017 +0200 @@ -359,7 +359,7 @@ * @see java.awt.GridBagConstraints * @see java.awt.GridBagLayoutInfo * @see java.awt.ComponentOrientation - * @since JDK1.0 + * @since 1.0 */ public class GridBagLayout implements LayoutManager2, java.io.Serializable { @@ -562,7 +562,7 @@ * @return the graphics origin of the cell in the top-left * corner of the layout grid * @see java.awt.ComponentOrientation - * @since JDK1.1 + * @since 1.1 */ public Point getLayoutOrigin () { Point origin = new Point(0,0); @@ -580,7 +580,7 @@ * @return an array of two arrays, containing the widths * of the layout columns and * the heights of the layout rows - * @since JDK1.1 + * @since 1.1 */ public int [][] getLayoutDimensions () { if (layoutInfo == null) @@ -606,7 +606,7 @@ * @return an array of two arrays, representing the * horizontal weights of the layout columns * and the vertical weights of the layout rows - * @since JDK1.1 + * @since 1.1 */ public double [][] getLayoutWeights () { if (layoutInfo == null) @@ -647,7 +647,7 @@ * in the layout grid contains the point * (xy). * @see java.awt.ComponentOrientation - * @since JDK1.1 + * @since 1.1 */ public Point location(int x, int y) { Point loc = new Point(0,0); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/GridBagLayoutInfo.java --- a/jdk/src/share/classes/java/awt/GridBagLayoutInfo.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/GridBagLayoutInfo.java Wed Jul 05 19:45:17 2017 +0200 @@ -62,7 +62,7 @@ * grid cells with it's own parameters. * @param width the columns * @param height the rows - * @since 6.0 + * @since 1.6 */ GridBagLayoutInfo(int width, int height) { this.width = width; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/GridLayout.java --- a/jdk/src/share/classes/java/awt/GridLayout.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/GridLayout.java Wed Jul 05 19:45:17 2017 +0200 @@ -88,7 +88,7 @@ * number of rows is set to zero. * * @author Arthur van Hoff - * @since JDK1.0 + * @since 1.0 */ public class GridLayout implements LayoutManager, java.io.Serializable { /* @@ -144,7 +144,7 @@ /** * Creates a grid layout with a default of one column per component, * in a single row. - * @since JDK1.1 + * @since 1.1 */ public GridLayout() { this(1, 0, 0, 0); @@ -203,7 +203,7 @@ /** * Gets the number of rows in this layout. * @return the number of rows in this layout - * @since JDK1.1 + * @since 1.1 */ public int getRows() { return rows; @@ -214,7 +214,7 @@ * @param rows the number of rows in this layout * @exception IllegalArgumentException if the value of both * rows and cols is set to zero - * @since JDK1.1 + * @since 1.1 */ public void setRows(int rows) { if ((rows == 0) && (this.cols == 0)) { @@ -226,7 +226,7 @@ /** * Gets the number of columns in this layout. * @return the number of columns in this layout - * @since JDK1.1 + * @since 1.1 */ public int getColumns() { return cols; @@ -242,7 +242,7 @@ * @param cols the number of columns in this layout * @exception IllegalArgumentException if the value of both * rows and cols is set to zero - * @since JDK1.1 + * @since 1.1 */ public void setColumns(int cols) { if ((cols == 0) && (this.rows == 0)) { @@ -254,7 +254,7 @@ /** * Gets the horizontal gap between components. * @return the horizontal gap between components - * @since JDK1.1 + * @since 1.1 */ public int getHgap() { return hgap; @@ -263,7 +263,7 @@ /** * Sets the horizontal gap between components to the specified value. * @param hgap the horizontal gap between components - * @since JDK1.1 + * @since 1.1 */ public void setHgap(int hgap) { this.hgap = hgap; @@ -272,7 +272,7 @@ /** * Gets the vertical gap between components. * @return the vertical gap between components - * @since JDK1.1 + * @since 1.1 */ public int getVgap() { return vgap; @@ -281,7 +281,7 @@ /** * Sets the vertical gap between components to the specified value. * @param vgap the vertical gap between components - * @since JDK1.1 + * @since 1.1 */ public void setVgap(int vgap) { this.vgap = vgap; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/Image.java --- a/jdk/src/share/classes/java/awt/Image.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/Image.java Wed Jul 05 19:45:17 2017 +0200 @@ -41,7 +41,7 @@ * * @author Sami Shaio * @author Arthur van Hoff - * @since JDK1.0 + * @since 1.0 */ public abstract class Image { @@ -164,7 +164,7 @@ * @see java.awt.Image#SCALE_SMOOTH * @see java.awt.Image#SCALE_REPLICATE * @see java.awt.Image#SCALE_AREA_AVERAGING - * @since JDK1.1 + * @since 1.1 */ public Image getScaledInstance(int width, int height, int hints) { ImageFilter filter; @@ -180,21 +180,21 @@ /** * Use the default image-scaling algorithm. - * @since JDK1.1 + * @since 1.1 */ public static final int SCALE_DEFAULT = 1; /** * Choose an image-scaling algorithm that gives higher priority * to scaling speed than smoothness of the scaled image. - * @since JDK1.1 + * @since 1.1 */ public static final int SCALE_FAST = 2; /** * Choose an image-scaling algorithm that gives higher priority * to image smoothness than scaling speed. - * @since JDK1.1 + * @since 1.1 */ public static final int SCALE_SMOOTH = 4; @@ -205,7 +205,7 @@ * that performs the same algorithm yet integrates more efficiently * into the imaging infrastructure supplied by the toolkit. * @see java.awt.image.ReplicateScaleFilter - * @since JDK1.1 + * @since 1.1 */ public static final int SCALE_REPLICATE = 8; @@ -215,7 +215,7 @@ * performs the same algorithm yet integrates more efficiently * into the image infrastructure supplied by the toolkit. * @see java.awt.image.AreaAveragingScaleFilter - * @since JDK1.1 + * @since 1.1 */ public static final int SCALE_AREA_AVERAGING = 16; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/Insets.java --- a/jdk/src/share/classes/java/awt/Insets.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/Insets.java Wed Jul 05 19:45:17 2017 +0200 @@ -35,7 +35,7 @@ * @author Sami Shaio * @see java.awt.LayoutManager * @see java.awt.Container - * @since JDK1.0 + * @since 1.0 */ public class Insets implements Cloneable, java.io.Serializable { @@ -130,7 +130,7 @@ * bottom, and right are all equal. * @return true if the two insets are equal; * otherwise false. - * @since JDK1.1 + * @since 1.1 */ public boolean equals(Object obj) { if (obj instanceof Insets) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/Label.java --- a/jdk/src/share/classes/java/awt/Label.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/Label.java Wed Jul 05 19:45:17 2017 +0200 @@ -49,7 +49,7 @@ * style="float:center; margin: 7px 10px;"> * * @author Sami Shaio - * @since JDK1.0 + * @since 1.0 */ public class Label extends Component implements Accessible { @@ -73,7 +73,6 @@ /** * Indicates that the label should be right justified. - * @since JDK1.0t. */ public static final int RIGHT = 2; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/List.java --- a/jdk/src/share/classes/java/awt/List.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/List.java Wed Jul 05 19:45:17 2017 +0200 @@ -104,7 +104,7 @@ * @see java.awt.event.ItemListener * @see java.awt.event.ActionEvent * @see java.awt.event.ActionListener - * @since JDK1.0 + * @since 1.0 */ public class List extends Component implements ItemSelectable, Accessible { /** @@ -199,7 +199,7 @@ * @exception HeadlessException if GraphicsEnvironment.isHeadless() * returns true. * @see java.awt.GraphicsEnvironment#isHeadless - * @since JDK1.1 + * @since 1.1 */ public List(int rows) throws HeadlessException { this(rows, false); @@ -275,7 +275,7 @@ * Gets the number of items in the list. * @return the number of items in the list * @see #getItem - * @since JDK1.1 + * @since 1.1 */ public int getItemCount() { return countItems(); @@ -315,7 +315,7 @@ * @see #select * @see #deselect * @see #isIndexSelected - * @since JDK1.1 + * @since 1.1 */ public synchronized String[] getItems() { String itemCopies[] = new String[items.size()]; @@ -326,7 +326,7 @@ /** * Adds the specified item to the end of scrolling list. * @param item the item to be added - * @since JDK1.1 + * @since 1.1 */ public void add(String item) { addItem(item); @@ -351,7 +351,7 @@ * if this parameter is null then the item is * treated as an empty string, "" * @param index the position at which to add the item - * @since JDK1.1 + * @since 1.1 */ public void add(String item, int index) { addItem(item, index); @@ -399,7 +399,7 @@ * Removes all items from this list. * @see #remove * @see #delItems - * @since JDK1.1 + * @since 1.1 */ public void removeAll() { clear(); @@ -426,7 +426,7 @@ * @param item the item to remove from the list * @exception IllegalArgumentException * if the item doesn't exist in the list - * @since JDK1.1 + * @since 1.1 */ public synchronized void remove(String item) { int index = items.indexOf(item); @@ -445,7 +445,7 @@ * only selected item in the list, the list is set to have no selection. * @param position the index of the item to delete * @see #add(String, int) - * @since JDK1.1 + * @since 1.1 * @exception ArrayIndexOutOfBoundsException * if the position is less than 0 or * greater than getItemCount()-1 @@ -639,7 +639,7 @@ * selected; false otherwise * @see #select * @see #deselect - * @since JDK1.1 + * @since 1.1 */ public boolean isIndexSelected(int index) { return isSelected(index); @@ -675,7 +675,7 @@ * @return true if this list allows multiple * selections; otherwise, false * @see #setMultipleMode - * @since JDK1.1 + * @since 1.1 */ public boolean isMultipleMode() { return allowsMultipleSelections(); @@ -702,7 +702,7 @@ * are allowed; otherwise, only one item from * the list can be selected at once * @see #isMultipleMode - * @since JDK1.1 + * @since 1.1 */ public void setMultipleMode(boolean b) { setMultipleSelections(b); @@ -753,7 +753,7 @@ * @return the preferred dimensions for displaying this scrolling list * given that the specified number of rows must be visible * @see java.awt.Component#getPreferredSize - * @since JDK1.1 + * @since 1.1 */ public Dimension getPreferredSize(int rows) { return preferredSize(rows); @@ -777,7 +777,7 @@ * Gets the preferred size of this scrolling list. * @return the preferred dimensions for displaying this scrolling list * @see java.awt.Component#getPreferredSize - * @since JDK1.1 + * @since 1.1 */ public Dimension getPreferredSize() { return preferredSize(); @@ -803,7 +803,7 @@ * @return the minimum dimensions for displaying this scrolling list * given that the specified number of rows must be visible * @see java.awt.Component#getMinimumSize - * @since JDK1.1 + * @since 1.1 */ public Dimension getMinimumSize(int rows) { return minimumSize(rows); @@ -828,7 +828,7 @@ * @return the minimum dimensions needed * to display this scrolling list * @see java.awt.Component#getMinimumSize() - * @since JDK1.1 + * @since 1.1 */ public Dimension getMinimumSize() { return minimumSize(); @@ -861,7 +861,7 @@ * @see #deselect * @see java.awt.event.ItemEvent * @see java.awt.event.ItemListener - * @since JDK1.1 + * @since 1.1 */ public synchronized void addItemListener(ItemListener l) { if (l == null) { @@ -884,7 +884,7 @@ * @see #getItemListeners * @see java.awt.event.ItemEvent * @see java.awt.event.ItemListener - * @since JDK1.1 + * @since 1.1 */ public synchronized void removeItemListener(ItemListener l) { if (l == null) { @@ -927,7 +927,7 @@ * @see #getActionListeners * @see java.awt.event.ActionEvent * @see java.awt.event.ActionListener - * @since JDK1.1 + * @since 1.1 */ public synchronized void addActionListener(ActionListener l) { if (l == null) { @@ -951,7 +951,7 @@ * @see #getActionListeners * @see java.awt.event.ActionEvent * @see java.awt.event.ActionListener - * @since JDK1.1 + * @since 1.1 */ public synchronized void removeActionListener(ActionListener l) { if (l == null) { @@ -1061,7 +1061,7 @@ * @see java.awt.event.ItemEvent * @see #processActionEvent * @see #processItemEvent - * @since JDK1.1 + * @since 1.1 */ protected void processEvent(AWTEvent e) { if (e instanceof ItemEvent) { @@ -1096,7 +1096,7 @@ * @see java.awt.event.ItemListener * @see #addItemListener * @see java.awt.Component#enableEvents - * @since JDK1.1 + * @since 1.1 */ protected void processItemEvent(ItemEvent e) { ItemListener listener = itemListener; @@ -1127,7 +1127,7 @@ * @see java.awt.event.ActionListener * @see #addActionListener * @see java.awt.Component#enableEvents - * @since JDK1.1 + * @since 1.1 */ protected void processActionEvent(ActionEvent e) { ActionListener listener = actionListener; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/MediaTracker.java --- a/jdk/src/share/classes/java/awt/MediaTracker.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/MediaTracker.java Wed Jul 05 19:45:17 2017 +0200 @@ -164,7 +164,7 @@ * }


    * * @author Jim Graham - * @since JDK1.0 + * @since 1.0 */ public class MediaTracker implements java.io.Serializable { @@ -724,7 +724,7 @@ * @param image the image to be removed * @see java.awt.MediaTracker#removeImage(java.awt.Image, int) * @see java.awt.MediaTracker#removeImage(java.awt.Image, int, int, int) - * @since JDK1.1 + * @since 1.1 */ public synchronized void removeImage(Image image) { removeImageImpl(image); @@ -763,7 +763,7 @@ * @param id the tracking ID from which to remove the image * @see java.awt.MediaTracker#removeImage(java.awt.Image) * @see java.awt.MediaTracker#removeImage(java.awt.Image, int, int, int) - * @since JDK1.1 + * @since 1.1 */ public synchronized void removeImage(Image image, int id) { removeImageImpl(image, id); @@ -803,7 +803,7 @@ * @param height the height to remove (-1 for unscaled) * @see java.awt.MediaTracker#removeImage(java.awt.Image) * @see java.awt.MediaTracker#removeImage(java.awt.Image, int) - * @since JDK1.1 + * @since 1.1 */ public synchronized void removeImage(Image image, int id, int width, int height) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/Menu.java --- a/jdk/src/share/classes/java/awt/Menu.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/Menu.java Wed Jul 05 19:45:17 2017 +0200 @@ -53,7 +53,7 @@ * @author Sami Shaio * @see java.awt.MenuItem * @see java.awt.CheckboxMenuItem - * @since JDK1.0 + * @since 1.0 */ public class Menu extends MenuItem implements MenuContainer, Accessible { @@ -118,7 +118,7 @@ * @exception HeadlessException if GraphicsEnvironment.isHeadless() * returns true. * @see java.awt.GraphicsEnvironment#isHeadless - * @since JDK1.1 + * @since 1.1 */ public Menu() throws HeadlessException { this("", false); @@ -151,7 +151,6 @@ * @exception HeadlessException if GraphicsEnvironment.isHeadless() * returns true. * @see java.awt.GraphicsEnvironment#isHeadless - * @since JDK1.0. */ public Menu(String label, boolean tearOff) throws HeadlessException { super(label); @@ -215,7 +214,7 @@ /** * Get the number of items in this menu. * @return the number of items in this menu. - * @since JDK1.1 + * @since 1.1 */ public int getItemCount() { return countItems(); @@ -303,7 +302,7 @@ * @see java.awt.Menu#add(java.awt.MenuItem) * @exception IllegalArgumentException if the value of * index is less than zero - * @since JDK1.1 + * @since 1.1 */ public void insert(MenuItem menuitem, int index) { @@ -347,7 +346,7 @@ * @see java.awt.Menu#add(java.awt.MenuItem) * @exception IllegalArgumentException if the value of * index is less than zero - * @since JDK1.1 + * @since 1.1 */ public void insert(String label, int index) { @@ -369,7 +368,7 @@ * @exception IllegalArgumentException if the value of * index is less than 0. * @see java.awt.Menu#addSeparator - * @since JDK1.1 + * @since 1.1 */ public void insertSeparator(int index) { @@ -436,7 +435,7 @@ /** * Removes all items from this menu. - * @since JDK1.0. + * @since 1.1 */ public void removeAll() { synchronized (getTreeLock()) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/MenuBar.java --- a/jdk/src/share/classes/java/awt/MenuBar.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/MenuBar.java Wed Jul 05 19:45:17 2017 +0200 @@ -65,7 +65,7 @@ * @see java.awt.Menu * @see java.awt.MenuItem * @see java.awt.MenuShortcut - * @since JDK1.0 + * @since 1.0 */ public class MenuBar extends MenuComponent implements MenuContainer, Accessible { @@ -272,7 +272,7 @@ /** * Gets the number of menus on the menu bar. * @return the number of menus on the menu bar. - * @since JDK1.1 + * @since 1.1 */ public int getMenuCount() { return countMenus(); @@ -318,7 +318,7 @@ * @return an enumeration of menu shortcuts that this * menu bar is managing. * @see java.awt.MenuShortcut - * @since JDK1.1 + * @since 1.1 */ public synchronized Enumeration shortcuts() { Vector shortcuts = new Vector<>(); @@ -341,7 +341,7 @@ * @param s the specified menu shortcut. * @see java.awt.MenuItem * @see java.awt.MenuShortcut - * @since JDK1.1 + * @since 1.1 */ public MenuItem getShortcutMenuItem(MenuShortcut s) { int nmenus = getMenuCount(); @@ -387,7 +387,7 @@ /** * Deletes the specified menu shortcut. * @param s the menu shortcut to delete. - * @since JDK1.1 + * @since 1.1 */ public void deleteShortcut(MenuShortcut s) { int nmenus = getMenuCount(); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/MenuComponent.java --- a/jdk/src/share/classes/java/awt/MenuComponent.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/MenuComponent.java Wed Jul 05 19:45:17 2017 +0200 @@ -45,7 +45,7 @@ * through the method processEvent. * * @author Arthur van Hoff - * @since JDK1.0 + * @since 1.0 */ public abstract class MenuComponent implements java.io.Serializable { @@ -175,7 +175,7 @@ * Gets the name of the menu component. * @return the name of the menu component * @see java.awt.MenuComponent#setName(java.lang.String) - * @since JDK1.1 + * @since 1.1 */ public String getName() { if (name == null && !nameExplicitlySet) { @@ -191,7 +191,7 @@ * Sets the name of the component to the specified string. * @param name the name of the menu component * @see java.awt.MenuComponent#getName - * @since JDK1.1 + * @since 1.1 */ public void setName(String name) { synchronized(this) { @@ -373,7 +373,7 @@ * exception. * * @param e the event - * @since JDK1.1 + * @since 1.1 */ protected void processEvent(AWTEvent e) { } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/MenuItem.java --- a/jdk/src/share/classes/java/awt/MenuItem.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/MenuItem.java Wed Jul 05 19:45:17 2017 +0200 @@ -176,7 +176,7 @@ * @exception HeadlessException if GraphicsEnvironment.isHeadless() * returns true. * @see java.awt.GraphicsEnvironment#isHeadless - * @since JDK1.1 + * @since 1.1 */ public MenuItem() throws HeadlessException { this("", null); @@ -192,7 +192,7 @@ * @exception HeadlessException if GraphicsEnvironment.isHeadless() * returns true. * @see java.awt.GraphicsEnvironment#isHeadless - * @since JDK1.0 + * @since 1.0 */ public MenuItem(String label) throws HeadlessException { this(label, null); @@ -209,7 +209,7 @@ * @exception HeadlessException if GraphicsEnvironment.isHeadless() * returns true. * @see java.awt.GraphicsEnvironment#isHeadless - * @since JDK1.1 + * @since 1.1 */ public MenuItem(String label, MenuShortcut s) throws HeadlessException { this.label = label; @@ -242,7 +242,7 @@ * @return the label of this menu item, or null if this menu item has no label. * @see java.awt.MenuItem#setLabel - * @since JDK1.0 + * @since 1.0 */ public String getLabel() { return label; @@ -252,7 +252,7 @@ * Sets the label for this menu item to the specified label. * @param label the new label, or null for no label. * @see java.awt.MenuItem#getLabel - * @since JDK1.0 + * @since 1.0 */ public synchronized void setLabel(String label) { this.label = label; @@ -265,7 +265,7 @@ /** * Checks whether this menu item is enabled. * @see java.awt.MenuItem#setEnabled - * @since JDK1.0 + * @since 1.0 */ public boolean isEnabled() { return enabled; @@ -276,7 +276,7 @@ * @param b if true, enables this menu item; * if false, disables it. * @see java.awt.MenuItem#isEnabled - * @since JDK1.1 + * @since 1.1 */ public synchronized void setEnabled(boolean b) { enable(b); @@ -327,7 +327,7 @@ * @return the menu shortcut associated with this menu item, * or null if none has been specified. * @see java.awt.MenuItem#setShortcut - * @since JDK1.1 + * @since 1.1 */ public MenuShortcut getShortcut() { return shortcut; @@ -340,7 +340,7 @@ * @param s the menu shortcut to associate * with this menu item. * @see java.awt.MenuItem#getShortcut - * @since JDK1.1 + * @since 1.1 */ public void setShortcut(MenuShortcut s) { shortcut = s; @@ -353,7 +353,7 @@ /** * Delete any MenuShortcut object associated * with this menu item. - * @since JDK1.1 + * @since 1.1 */ public void deleteShortcut() { shortcut = null; @@ -455,7 +455,7 @@ * @see java.awt.MenuItem#processEvent * @see java.awt.MenuItem#disableEvents * @see java.awt.Component#enableEvents - * @since JDK1.1 + * @since 1.1 */ protected final void enableEvents(long eventsToEnable) { eventMask |= eventsToEnable; @@ -470,7 +470,7 @@ * @see java.awt.MenuItem#processEvent * @see java.awt.MenuItem#enableEvents * @see java.awt.Component#disableEvents - * @since JDK1.1 + * @since 1.1 */ protected final void disableEvents(long eventsToDisable) { eventMask &= ~eventsToDisable; @@ -485,7 +485,7 @@ * @param command the action command to be set * for this menu item. * @see java.awt.MenuItem#getActionCommand - * @since JDK1.1 + * @since 1.1 */ public void setActionCommand(String command) { actionCommand = command; @@ -495,7 +495,7 @@ * Gets the command name of the action event that is fired * by this menu item. * @see java.awt.MenuItem#setActionCommand - * @since JDK1.1 + * @since 1.1 */ public String getActionCommand() { return getActionCommandImpl(); @@ -518,7 +518,7 @@ * @see #getActionListeners * @see java.awt.event.ActionEvent * @see java.awt.event.ActionListener - * @since JDK1.1 + * @since 1.1 */ public synchronized void addActionListener(ActionListener l) { if (l == null) { @@ -540,7 +540,7 @@ * @see #getActionListeners * @see java.awt.event.ActionEvent * @see java.awt.event.ActionListener - * @since JDK1.1 + * @since 1.1 */ public synchronized void removeActionListener(ActionListener l) { if (l == null) { @@ -621,7 +621,7 @@ * * @param e the event * @see java.awt.MenuItem#processActionEvent - * @since JDK1.1 + * @since 1.1 */ protected void processEvent(AWTEvent e) { if (e instanceof ActionEvent) { @@ -661,7 +661,7 @@ * @see java.awt.event.ActionEvent * @see java.awt.event.ActionListener * @see java.awt.MenuItem#enableEvents - * @since JDK1.1 + * @since 1.1 */ protected void processActionEvent(ActionEvent e) { ActionListener listener = actionListener; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/MenuShortcut.java --- a/jdk/src/share/classes/java/awt/MenuShortcut.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/MenuShortcut.java Wed Jul 05 19:45:17 2017 +0200 @@ -54,7 +54,7 @@ * via {@link Toolkit#getMenuShortcutKeyMask}. * * @author Thomas Ball - * @since JDK1.1 + * @since 1.1 */ public class MenuShortcut implements java.io.Serializable { @@ -71,7 +71,7 @@ * @see #getKey() * @see #usesShiftModifier() * @see java.awt.event.KeyEvent - * @since JDK1.1 + * @since 1.1 */ int key; @@ -82,7 +82,7 @@ * * @serial * @see #usesShiftModifier() - * @since JDK1.1 + * @since 1.1 */ boolean usesShift; @@ -120,7 +120,7 @@ * Returns the raw keycode of this MenuShortcut. * @return the raw keycode of this MenuShortcut. * @see java.awt.event.KeyEvent - * @since JDK1.1 + * @since 1.1 */ public int getKey() { return key; @@ -130,7 +130,7 @@ * Returns whether this MenuShortcut must be invoked using the SHIFT key. * @return true if this MenuShortcut must be invoked using the * SHIFT key, false otherwise. - * @since JDK1.1 + * @since 1.1 */ public boolean usesShiftModifier() { return usesShift; @@ -143,7 +143,7 @@ * @param s the MenuShortcut to compare with this. * @return true if this MenuShortcut is the same as another, * false otherwise. - * @since JDK1.1 + * @since 1.1 */ public boolean equals(MenuShortcut s) { return (s != null && (s.getKey() == key) && @@ -178,7 +178,7 @@ /** * Returns an internationalized description of the MenuShortcut. * @return a string representation of this MenuShortcut. - * @since JDK1.1 + * @since 1.1 */ public String toString() { int modifiers = 0; @@ -196,7 +196,7 @@ * Returns the parameter string representing the state of this * MenuShortcut. This string is useful for debugging. * @return the parameter string of this MenuShortcut. - * @since JDK1.1 + * @since 1.1 */ protected String paramString() { String str = "key=" + key; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/Panel.java --- a/jdk/src/share/classes/java/awt/Panel.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/Panel.java Wed Jul 05 19:45:17 2017 +0200 @@ -36,7 +36,7 @@ * * @author Sami Shaio * @see java.awt.FlowLayout - * @since JDK1.0 + * @since 1.0 */ public class Panel extends Container implements Accessible { private static final String base = "panel"; @@ -59,7 +59,7 @@ /** * Creates a new panel with the specified layout manager. * @param layout the layout manager for this panel. - * @since JDK1.1 + * @since 1.1 */ public Panel(LayoutManager layout) { setLayout(layout); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/ScrollPaneAdjustable.java --- a/jdk/src/share/classes/java/awt/ScrollPaneAdjustable.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/ScrollPaneAdjustable.java Wed Jul 05 19:45:17 2017 +0200 @@ -393,7 +393,7 @@ * @see #getAdjustmentListeners * @see java.awt.event.AdjustmentListener * @see java.awt.event.AdjustmentEvent - * @since JDK1.1 + * @since 1.1 */ public synchronized void removeAdjustmentListener(AdjustmentListener l){ if (l == null) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/Scrollbar.java --- a/jdk/src/share/classes/java/awt/Scrollbar.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/Scrollbar.java Wed Jul 05 19:45:17 2017 +0200 @@ -161,7 +161,7 @@ * @author Sami Shaio * @see java.awt.event.AdjustmentEvent * @see java.awt.event.AdjustmentListener - * @since JDK1.0 + * @since 1.0 */ public class Scrollbar extends Component implements Adjustable, Accessible { @@ -460,7 +460,7 @@ * @exception IllegalArgumentException if the value supplied * for orientation is not a * legal value - * @since JDK1.1 + * @since 1.1 */ public void setOrientation(int orientation) { synchronized (getTreeLock()) { @@ -566,7 +566,7 @@ * @param newMinimum the new minimum value for this scroll bar * @see java.awt.Scrollbar#setValues * @see java.awt.Scrollbar#setMaximum - * @since JDK1.1 + * @since 1.1 */ public void setMinimum(int newMinimum) { // No checks are necessary in this method since minimum is @@ -611,7 +611,7 @@ * for this scroll bar * @see java.awt.Scrollbar#setValues * @see java.awt.Scrollbar#setMinimum - * @since JDK1.1 + * @since 1.1 */ public void setMaximum(int newMaximum) { // minimum is checked first in setValues, so we need to @@ -649,7 +649,7 @@ * * @return the visible amount of this scroll bar * @see java.awt.Scrollbar#setVisibleAmount - * @since JDK1.1 + * @since 1.1 */ public int getVisibleAmount() { return getVisible(); @@ -697,7 +697,7 @@ * @param newAmount the new visible amount * @see java.awt.Scrollbar#getVisibleAmount * @see java.awt.Scrollbar#setValues - * @since JDK1.1 + * @since 1.1 */ public void setVisibleAmount(int newAmount) { // Use setValues so that a consistent policy relating @@ -722,7 +722,7 @@ * @param v the amount by which to increment or decrement * the scroll bar's value * @see java.awt.Scrollbar#getUnitIncrement - * @since JDK1.1 + * @since 1.1 */ public void setUnitIncrement(int v) { setLineIncrement(v); @@ -761,7 +761,7 @@ * * @return the unit increment of this scroll bar * @see java.awt.Scrollbar#setUnitIncrement - * @since JDK1.1 + * @since 1.1 */ public int getUnitIncrement() { return getLineIncrement(); @@ -790,7 +790,7 @@ * @param v the amount by which to increment or decrement * the scroll bar's value * @see java.awt.Scrollbar#getBlockIncrement - * @since JDK1.1 + * @since 1.1 */ public void setBlockIncrement(int v) { setPageIncrement(v); @@ -826,7 +826,7 @@ * * @return the block increment of this scroll bar * @see java.awt.Scrollbar#setBlockIncrement - * @since JDK1.1 + * @since 1.1 */ public int getBlockIncrement() { return getPageIncrement(); @@ -972,7 +972,7 @@ * @see #getAdjustmentListeners * @see java.awt.event.AdjustmentEvent * @see java.awt.event.AdjustmentListener - * @since JDK1.1 + * @since 1.1 */ public synchronized void addAdjustmentListener(AdjustmentListener l) { if (l == null) { @@ -995,7 +995,7 @@ * @see #getAdjustmentListeners * @see java.awt.event.AdjustmentEvent * @see java.awt.event.AdjustmentListener - * @since JDK1.1 + * @since 1.1 */ public synchronized void removeAdjustmentListener(AdjustmentListener l) { if (l == null) { @@ -1086,7 +1086,7 @@ * @param e the event * @see java.awt.event.AdjustmentEvent * @see java.awt.Scrollbar#processAdjustmentEvent - * @since JDK1.1 + * @since 1.1 */ protected void processEvent(AWTEvent e) { if (e instanceof AdjustmentEvent) { @@ -1118,7 +1118,7 @@ * @see java.awt.event.AdjustmentListener * @see java.awt.Scrollbar#addAdjustmentListener * @see java.awt.Component#enableEvents - * @since JDK1.1 + * @since 1.1 */ protected void processAdjustmentEvent(AdjustmentEvent e) { AdjustmentListener listener = adjustmentListener; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/TextArea.java --- a/jdk/src/share/classes/java/awt/TextArea.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/TextArea.java Wed Jul 05 19:45:17 2017 +0200 @@ -51,7 +51,7 @@ *
    * * @author Sami Shaio - * @since JDK1.0 + * @since 1.0 */ public class TextArea extends TextComponent { @@ -84,25 +84,25 @@ /** * Create and display both vertical and horizontal scrollbars. - * @since JDK1.1 + * @since 1.1 */ public static final int SCROLLBARS_BOTH = 0; /** * Create and display vertical scrollbar only. - * @since JDK1.1 + * @since 1.1 */ public static final int SCROLLBARS_VERTICAL_ONLY = 1; /** * Create and display horizontal scrollbar only. - * @since JDK1.1 + * @since 1.1 */ public static final int SCROLLBARS_HORIZONTAL_ONLY = 2; /** * Do not create or display any scrollbars for the text area. - * @since JDK1.1 + * @since 1.1 */ public static final int SCROLLBARS_NONE = 3; @@ -248,7 +248,7 @@ * columns is set to 0 * @param scrollbars a constant that determines what * scrollbars are created to view the text area - * @since JDK1.1 + * @since 1.1 * @exception HeadlessException if * GraphicsEnvironment.isHeadless returns true * @see java.awt.GraphicsEnvironment#isHeadless() @@ -307,7 +307,7 @@ * @see java.awt.TextComponent#setText * @see java.awt.TextArea#replaceRange * @see java.awt.TextArea#append - * @since JDK1.1 + * @since 1.1 */ public void insert(String str, int pos) { insertText(str, pos); @@ -335,7 +335,7 @@ * * @param str the non-null text to append * @see java.awt.TextArea#insert - * @since JDK1.1 + * @since 1.1 */ public void append(String str) { appendText(str); @@ -371,7 +371,7 @@ * @param start the start position * @param end the end position * @see java.awt.TextArea#insert - * @since JDK1.1 + * @since 1.1 */ public void replaceRange(String str, int start, int end) { replaceText(str, start, end); @@ -396,7 +396,7 @@ * @return the number of rows in the text area * @see #setRows(int) * @see #getColumns() - * @since JDK1 + * @since 1.0 */ public int getRows() { return rows; @@ -410,7 +410,7 @@ * @exception IllegalArgumentException if the value * supplied for rows * is less than 0 - * @since JDK1.1 + * @since 1.1 */ public void setRows(int rows) { int oldVal = this.rows; @@ -441,7 +441,7 @@ * @exception IllegalArgumentException if the value * supplied for columns * is less than 0 - * @since JDK1.1 + * @since 1.1 */ public void setColumns(int columns) { int oldVal = this.columns; @@ -469,7 +469,7 @@ * @see java.awt.TextArea#SCROLLBARS_HORIZONTAL_ONLY * @see java.awt.TextArea#SCROLLBARS_NONE * @see java.awt.TextArea#TextArea(java.lang.String, int, int, int) - * @since JDK1.1 + * @since 1.1 */ public int getScrollbarVisibility() { return scrollbarVisibility; @@ -485,7 +485,7 @@ * the text area with the specified * number of rows and columns * @see java.awt.Component#getPreferredSize - * @since JDK1.1 + * @since 1.1 */ public Dimension getPreferredSize(int rows, int columns) { return preferredSize(rows, columns); @@ -509,7 +509,7 @@ * Determines the preferred size of this text area. * @return the preferred dimensions needed for this text area * @see java.awt.Component#getPreferredSize - * @since JDK1.1 + * @since 1.1 */ public Dimension getPreferredSize() { return preferredSize(); @@ -537,7 +537,7 @@ * the text area with the specified * number of rows and columns * @see java.awt.Component#getMinimumSize - * @since JDK1.1 + * @since 1.1 */ public Dimension getMinimumSize(int rows, int columns) { return minimumSize(rows, columns); @@ -561,7 +561,7 @@ * Determines the minimum size of this text area. * @return the preferred dimensions needed for this text area * @see java.awt.Component#getPreferredSize - * @since JDK1.1 + * @since 1.1 */ public Dimension getMinimumSize() { return minimumSize(); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/TextComponent.java --- a/jdk/src/share/classes/java/awt/TextComponent.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/TextComponent.java Wed Jul 05 19:45:17 2017 +0200 @@ -55,7 +55,7 @@ * * @author Sami Shaio * @author Arthur van Hoff - * @since JDK1.0 + * @since 1.0 */ public class TextComponent extends Component implements Accessible { @@ -268,7 +268,7 @@ * @return true if this text component is * editable; false otherwise. * @see java.awt.TextComponent#setEditable - * @since JDK1.0 + * @since 1.0 */ public boolean isEditable() { return editable; @@ -288,7 +288,7 @@ * @param b a flag indicating whether this text component * is user editable. * @see java.awt.TextComponent#isEditable - * @since JDK1.0 + * @since 1.0 */ public synchronized void setEditable(boolean b) { if (editable == b) { @@ -313,7 +313,7 @@ * If this text component does not have a background color, * the background color of its parent is returned. * @see #setBackground(Color) - * @since JDK1.0 + * @since 1.0 */ public Color getBackground() { if (!editable && !backgroundSetByClientCode) { @@ -330,7 +330,7 @@ * If this parameter is null then this text component * will inherit the background color of its parent. * @see #getBackground() - * @since JDK1.0 + * @since 1.0 */ public void setBackground(Color c) { backgroundSetByClientCode = true; @@ -365,7 +365,7 @@ * selected text * @see java.awt.TextComponent#getSelectionStart * @see java.awt.TextComponent#setSelectionEnd - * @since JDK1.1 + * @since 1.1 */ public synchronized void setSelectionStart(int selectionStart) { /* Route through select method to enforce consistent policy @@ -401,7 +401,7 @@ * selected text * @see java.awt.TextComponent#getSelectionEnd * @see java.awt.TextComponent#setSelectionStart - * @since JDK1.1 + * @since 1.1 */ public synchronized void setSelectionEnd(int selectionEnd) { /* Route through select method to enforce consistent policy @@ -494,7 +494,7 @@ * @param position the position of the text insertion caret * @exception IllegalArgumentException if position * is less than zero - * @since JDK1.1 + * @since 1.1 */ public synchronized void setCaretPosition(int position) { if (position < 0) { @@ -523,7 +523,7 @@ * * @return the position of the text insertion caret * @see #setCaretPosition(int) - * @since JDK1.1 + * @since 1.1 */ public synchronized int getCaretPosition() { TextComponentPeer peer = (TextComponentPeer)this.peer; @@ -574,7 +574,7 @@ * @see #addTextListener * @see #getTextListeners * @see java.awt.event.TextListener - * @since JDK1.1 + * @since 1.1 */ public synchronized void removeTextListener(TextListener l) { if (l == null) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/TextField.java --- a/jdk/src/share/classes/java/awt/TextField.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/TextField.java Wed Jul 05 19:45:17 2017 +0200 @@ -92,7 +92,7 @@ * @see java.awt.TextField#processEvent * @see java.awt.TextField#processActionEvent * @see java.awt.TextField#addActionListener - * @since JDK1.0 + * @since 1.0 */ public class TextField extends TextComponent { @@ -265,7 +265,7 @@ * @param c the echo character for this text field. * @see java.awt.TextField#echoCharIsSet * @see java.awt.TextField#getEchoChar - * @since JDK1.1 + * @since 1.1 */ public void setEchoChar(char c) { setEchoCharacter(c); @@ -321,7 +321,7 @@ * approximate average character width that is platform-dependent. * @return the number of columns. * @see java.awt.TextField#setColumns - * @since JDK1.1 + * @since 1.1 */ public int getColumns() { return columns; @@ -335,7 +335,7 @@ * @exception IllegalArgumentException if the value * supplied for columns * is less than 0. - * @since JDK1.1 + * @since 1.1 */ public void setColumns(int columns) { int oldVal; @@ -361,7 +361,7 @@ * in this text field. * @return the preferred dimensions for * displaying this text field. - * @since JDK1.1 + * @since 1.1 */ public Dimension getPreferredSize(int columns) { return preferredSize(columns); @@ -385,7 +385,7 @@ * Gets the preferred size of this text field. * @return the preferred dimensions for * displaying this text field. - * @since JDK1.1 + * @since 1.1 */ public Dimension getPreferredSize() { return preferredSize(); @@ -409,7 +409,7 @@ * the specified number of columns. * @param columns the number of columns in * this text field. - * @since JDK1.1 + * @since 1.1 */ public Dimension getMinimumSize(int columns) { return minimumSize(columns); @@ -433,7 +433,7 @@ * Gets the minimum dimensions for this text field. * @return the minimum dimensions for * displaying this text field. - * @since JDK1.1 + * @since 1.1 */ public Dimension getMinimumSize() { return minimumSize(); @@ -463,7 +463,7 @@ * @see #removeActionListener * @see #getActionListeners * @see java.awt.event.ActionListener - * @since JDK1.1 + * @since 1.1 */ public synchronized void addActionListener(ActionListener l) { if (l == null) { @@ -484,7 +484,7 @@ * @see #addActionListener * @see #getActionListeners * @see java.awt.event.ActionListener - * @since JDK1.1 + * @since 1.1 */ public synchronized void removeActionListener(ActionListener l) { if (l == null) { @@ -578,7 +578,7 @@ * @param e the event * @see java.awt.event.ActionEvent * @see java.awt.TextField#processActionEvent - * @since JDK1.1 + * @since 1.1 */ protected void processEvent(AWTEvent e) { if (e instanceof ActionEvent) { @@ -609,7 +609,7 @@ * @see java.awt.event.ActionListener * @see java.awt.TextField#addActionListener * @see java.awt.Component#enableEvents - * @since JDK1.1 + * @since 1.1 */ protected void processActionEvent(ActionEvent e) { ActionListener listener = actionListener; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/Toolkit.java --- a/jdk/src/share/classes/java/awt/Toolkit.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/Toolkit.java Wed Jul 05 19:45:17 2017 +0200 @@ -108,7 +108,7 @@ * @author Sami Shaio * @author Arthur van Hoff * @author Fred Ecks - * @since JDK1.0 + * @since 1.0 */ public abstract class Toolkit { @@ -222,7 +222,7 @@ * @see java.awt.GraphicsEnvironment#isHeadless * @see java.awt.ScrollPane * @see java.awt.peer.ScrollPanePeer - * @since JDK1.1 + * @since 1.1 */ protected abstract ScrollPanePeer createScrollPane(ScrollPane target) throws HeadlessException; @@ -355,7 +355,7 @@ * @see java.awt.GraphicsEnvironment#isHeadless * @see java.awt.PopupMenu * @see java.awt.peer.PopupMenuPeer - * @since JDK1.1 + * @since 1.1 */ protected abstract PopupMenuPeer createPopupMenu(PopupMenu target) throws HeadlessException; @@ -457,7 +457,7 @@ * @exception HeadlessException if GraphicsEnvironment.isHeadless() * returns true * @see java.awt.GraphicsEnvironment#isHeadless - * @since JDK1.1 + * @since 1.1 */ protected void loadSystemColors(int[] systemColors) throws HeadlessException { @@ -1105,7 +1105,7 @@ * @param imagedata an array of bytes, representing * image data in a supported image format. * @return an image. - * @since JDK1.1 + * @since 1.1 */ public Image createImage(byte[] imagedata) { return createImage(imagedata, 0, imagedata.length); @@ -1122,7 +1122,7 @@ * of the data in the array. * @param imagelength the length of the data in the array. * @return an image. - * @since JDK1.1 + * @since 1.1 */ public abstract Image createImage(byte[] imagedata, int imageoffset, @@ -1159,7 +1159,7 @@ * @see java.awt.GraphicsEnvironment#isHeadless * @see java.awt.PrintJob * @see java.lang.RuntimePermission - * @since JDK1.1 + * @since 1.1 */ public abstract PrintJob getPrintJob(Frame frame, String jobtitle, Properties props); @@ -1230,7 +1230,7 @@ /** * Emits an audio beep depending on native system settings and hardware * capabilities. - * @since JDK1.1 + * @since 1.1 */ public abstract void beep(); @@ -1273,7 +1273,7 @@ * @see java.awt.datatransfer.DataFlavor#plainTextFlavor * @see java.io.Reader * @see java.awt.AWTPermission - * @since JDK1.1 + * @since 1.1 */ public abstract Clipboard getSystemClipboard() throws HeadlessException; @@ -1353,7 +1353,7 @@ * @see java.awt.GraphicsEnvironment#isHeadless * @see java.awt.MenuBar * @see java.awt.MenuShortcut - * @since JDK1.1 + * @since 1.1 */ public int getMenuShortcutKeyMask() throws HeadlessException { GraphicsEnvironment.checkHeadless(); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/Window.java --- a/jdk/src/share/classes/java/awt/Window.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/Window.java Wed Jul 05 19:45:17 2017 +0200 @@ -143,7 +143,7 @@ * @see WindowEvent * @see #addWindowListener * @see java.awt.BorderLayout - * @since JDK1.0 + * @since 1.0 */ public class Window extends Container implements Accessible { @@ -753,7 +753,7 @@ * not be called directly by programs. * @see Component#isDisplayable * @see Container#removeNotify - * @since JDK1.0 + * @since 1.0 */ public void addNotify() { synchronized (getTreeLock()) { @@ -1405,7 +1405,7 @@ * is returned. * @return the locale that is set for this window. * @see java.util.Locale - * @since JDK1.1 + * @since 1.1 */ public Locale getLocale() { if (this.locale == null) { @@ -1441,7 +1441,7 @@ * Cursor.DEFAULT_CURSOR. * @see Component#getCursor * @see Cursor - * @since JDK1.1 + * @since 1.1 */ public void setCursor(Cursor cursor) { if (cursor == null) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/datatransfer/package.html --- a/jdk/src/share/classes/java/awt/datatransfer/package.html Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/datatransfer/package.html Wed Jul 05 19:45:17 2017 +0200 @@ -59,6 +59,6 @@ --> -@since JDK1.1 +@since 1.1 diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/event/InputEvent.java --- a/jdk/src/share/classes/java/awt/event/InputEvent.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/event/InputEvent.java Wed Jul 05 19:45:17 2017 +0200 @@ -162,7 +162,7 @@ * @see getButtonDownMasks * There are twenty buttons fit into 4byte space. * one more bit is reserved for FIRST_HIGH_BIT. - * @since 7.0 + * @since 1.7 */ private static final int [] BUTTON_DOWN_MASK = new int [] { BUTTON1_DOWN_MASK, BUTTON2_DOWN_MASK, @@ -187,7 +187,7 @@ /** * A method to access an array of extended modifiers for additional buttons. - * @since 7.0 + * @since 1.7 */ private static int [] getButtonDownMasks(){ return Arrays.copyOf(BUTTON_DOWN_MASK, BUTTON_DOWN_MASK.length); @@ -237,7 +237,7 @@ * @return a mask for an existing mouse button. * @throws IllegalArgumentException if {@code button} is less than zero or greater than the number * of button masks reserved for buttons - * @since 7.0 + * @since 1.7 * @see java.awt.MouseInfo#getNumberOfButtons() * @see Toolkit#areExtraMouseButtonsEnabled() * @see MouseEvent#getModifiers() diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/event/WindowEvent.java --- a/jdk/src/share/classes/java/awt/event/WindowEvent.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/event/WindowEvent.java Wed Jul 05 19:45:17 2017 +0200 @@ -54,7 +54,7 @@ * @see WindowListener * @see Tutorial: Writing a Window Listener * - * @since JDK1.1 + * @since 1.1 */ public class WindowEvent extends ComponentEvent { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/event/package.html --- a/jdk/src/share/classes/java/awt/event/package.html Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/event/package.html Wed Jul 05 19:45:17 2017 +0200 @@ -53,6 +53,6 @@ --> -@since JDK1.1 +@since 1.1 diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/im/spi/package.html --- a/jdk/src/share/classes/java/awt/im/spi/package.html Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/im/spi/package.html Wed Jul 05 19:45:17 2017 +0200 @@ -121,6 +121,6 @@ Method Engine SPI Tutorial -@since JDK1.3 +@since 1.3 diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/image/package.html --- a/jdk/src/share/classes/java/awt/image/package.html Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/image/package.html Wed Jul 05 19:45:17 2017 +0200 @@ -53,6 +53,6 @@ --> -@since JDK1.0 +@since 1.0 diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/awt/package.html --- a/jdk/src/share/classes/java/awt/package.html Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/awt/package.html Wed Jul 05 19:45:17 2017 +0200 @@ -78,6 +78,6 @@ --> -@since JDK1.0 +@since 1.0 diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/BufferedInputStream.java --- a/jdk/src/share/classes/java/io/BufferedInputStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/BufferedInputStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -45,7 +45,7 @@ * the contained input stream. * * @author Arthur van Hoff - * @since JDK1.0 + * @since 1.0 */ public class BufferedInputStream extends FilterInputStream { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/BufferedOutputStream.java --- a/jdk/src/share/classes/java/io/BufferedOutputStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/BufferedOutputStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -32,7 +32,7 @@ * system for each byte written. * * @author Arthur van Hoff - * @since JDK1.0 + * @since 1.0 */ public class BufferedOutputStream extends FilterOutputStream { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/BufferedReader.java --- a/jdk/src/share/classes/java/io/BufferedReader.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/BufferedReader.java Wed Jul 05 19:45:17 2017 +0200 @@ -64,7 +64,7 @@ * @see java.nio.file.Files#newBufferedReader * * @author Mark Reinhold - * @since JDK1.1 + * @since 1.1 */ public class BufferedReader extends Reader { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/BufferedWriter.java --- a/jdk/src/share/classes/java/io/BufferedWriter.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/BufferedWriter.java Wed Jul 05 19:45:17 2017 +0200 @@ -60,7 +60,7 @@ * @see java.nio.file.Files#newBufferedWriter * * @author Mark Reinhold - * @since JDK1.1 + * @since 1.1 */ public class BufferedWriter extends Writer { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/ByteArrayInputStream.java --- a/jdk/src/share/classes/java/io/ByteArrayInputStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/ByteArrayInputStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -38,7 +38,7 @@ * * @author Arthur van Hoff * @see java.io.StringBufferInputStream - * @since JDK1.0 + * @since 1.0 */ public class ByteArrayInputStream extends InputStream { @@ -73,7 +73,7 @@ * If no mark has been set, then the value of mark is the offset * passed to the constructor (or 0 if the offset was not supplied). * - * @since JDK1.1 + * @since 1.1 */ protected int mark = 0; @@ -237,7 +237,7 @@ * markSupported method of ByteArrayInputStream * always returns true. * - * @since JDK1.1 + * @since 1.1 */ public boolean markSupported() { return true; @@ -256,7 +256,7 @@ *

    Note: The readAheadLimit for this class * has no meaning. * - * @since JDK1.1 + * @since 1.1 */ public void mark(int readAheadLimit) { mark = pos; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/ByteArrayOutputStream.java --- a/jdk/src/share/classes/java/io/ByteArrayOutputStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/ByteArrayOutputStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -39,7 +39,7 @@ * generating an IOException. * * @author Arthur van Hoff - * @since JDK1.0 + * @since 1.0 */ public class ByteArrayOutputStream extends OutputStream { @@ -202,7 +202,7 @@ * required. * * @return String decoded from the buffer's contents. - * @since JDK1.1 + * @since 1.1 */ public synchronized String toString() { return new String(buf, 0, count); @@ -224,7 +224,7 @@ * @return String decoded from the buffer's contents. * @exception UnsupportedEncodingException * If the named charset is not supported - * @since JDK1.1 + * @since 1.1 */ public synchronized String toString(String charsetName) throws UnsupportedEncodingException diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/CharArrayReader.java --- a/jdk/src/share/classes/java/io/CharArrayReader.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/CharArrayReader.java Wed Jul 05 19:45:17 2017 +0200 @@ -30,7 +30,7 @@ * character-input stream. * * @author Herb Jellinek - * @since JDK1.1 + * @since 1.1 */ public class CharArrayReader extends Reader { /** The character buffer. */ diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/CharArrayWriter.java --- a/jdk/src/share/classes/java/io/CharArrayWriter.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/CharArrayWriter.java Wed Jul 05 19:45:17 2017 +0200 @@ -37,7 +37,7 @@ * without generating an IOException. * * @author Herb Jellinek - * @since JDK1.1 + * @since 1.1 */ public class CharArrayWriter extends Writer { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/CharConversionException.java --- a/jdk/src/share/classes/java/io/CharConversionException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/CharConversionException.java Wed Jul 05 19:45:17 2017 +0200 @@ -28,7 +28,7 @@ * Base class for character conversion exceptions. * * @author Asmus Freytag - * @since JDK1.1 + * @since 1.1 */ public class CharConversionException extends java.io.IOException diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/DataInput.java --- a/jdk/src/share/classes/java/io/DataInput.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/DataInput.java Wed Jul 05 19:45:17 2017 +0200 @@ -143,7 +143,7 @@ * @author Frank Yellin * @see java.io.DataInputStream * @see java.io.DataOutput - * @since JDK1.0 + * @since 1.0 */ public interface DataInput { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/DataInputStream.java --- a/jdk/src/share/classes/java/io/DataInputStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/DataInputStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -37,7 +37,7 @@ * * @author Arthur van Hoff * @see java.io.DataOutputStream - * @since JDK1.0 + * @since 1.0 */ public class DataInputStream extends FilterInputStream implements DataInput { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/DataOutput.java --- a/jdk/src/share/classes/java/io/DataOutput.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/DataOutput.java Wed Jul 05 19:45:17 2017 +0200 @@ -44,7 +44,7 @@ * @author Frank Yellin * @see java.io.DataInput * @see java.io.DataOutputStream - * @since JDK1.0 + * @since 1.0 */ public interface DataOutput { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/DataOutputStream.java --- a/jdk/src/share/classes/java/io/DataOutputStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/DataOutputStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -32,7 +32,7 @@ * * @author unascribed * @see java.io.DataInputStream - * @since JDK1.0 + * @since 1.0 */ public class DataOutputStream extends FilterOutputStream implements DataOutput { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/EOFException.java --- a/jdk/src/share/classes/java/io/EOFException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/EOFException.java Wed Jul 05 19:45:17 2017 +0200 @@ -36,7 +36,7 @@ * @author Frank Yellin * @see java.io.DataInputStream * @see java.io.IOException - * @since JDK1.0 + * @since 1.0 */ public class EOFException extends IOException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/Externalizable.java --- a/jdk/src/share/classes/java/io/Externalizable.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/Externalizable.java Wed Jul 05 19:45:17 2017 +0200 @@ -61,7 +61,7 @@ * @see java.io.ObjectOutput * @see java.io.ObjectInput * @see java.io.Serializable - * @since JDK1.1 + * @since 1.1 */ public interface Externalizable extends java.io.Serializable { /** diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/File.java --- a/jdk/src/share/classes/java/io/File.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/File.java Wed Jul 05 19:45:17 2017 +0200 @@ -143,7 +143,7 @@ * diagnose errors when an operation on a file fails. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class File @@ -608,7 +608,7 @@ * java.lang.SecurityManager#checkRead} method denies * read access to the file * - * @since JDK1.1 + * @since 1.1 * @see Path#toRealPath */ public String getCanonicalPath() throws IOException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/FileInputStream.java --- a/jdk/src/share/classes/java/io/FileInputStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/FileInputStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -43,7 +43,7 @@ * @see java.io.FileDescriptor * @see java.io.FileOutputStream * @see java.nio.file.Files#newInputStream - * @since JDK1.0 + * @since 1.0 */ public class FileInputStream extends InputStream diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/FileNotFoundException.java --- a/jdk/src/share/classes/java/io/FileNotFoundException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/FileNotFoundException.java Wed Jul 05 19:45:17 2017 +0200 @@ -37,7 +37,7 @@ * example when an attempt is made to open a read-only file for writing. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class FileNotFoundException extends IOException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/FileOutputStream.java --- a/jdk/src/share/classes/java/io/FileOutputStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/FileOutputStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -47,7 +47,7 @@ * @see java.io.FileDescriptor * @see java.io.FileInputStream * @see java.nio.file.Files#newOutputStream - * @since JDK1.0 + * @since 1.0 */ public class FileOutputStream extends OutputStream @@ -125,7 +125,7 @@ * checkWrite method denies write access * to the file. * @see java.lang.SecurityManager#checkWrite(java.lang.String) - * @since JDK1.1 + * @since 1.1 */ public FileOutputStream(String name, boolean append) throws FileNotFoundException diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/FileReader.java --- a/jdk/src/share/classes/java/io/FileReader.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/FileReader.java Wed Jul 05 19:45:17 2017 +0200 @@ -40,7 +40,7 @@ * @see FileInputStream * * @author Mark Reinhold - * @since JDK1.1 + * @since 1.1 */ public class FileReader extends InputStreamReader { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/FileWriter.java --- a/jdk/src/share/classes/java/io/FileWriter.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/FileWriter.java Wed Jul 05 19:45:17 2017 +0200 @@ -46,7 +46,7 @@ * @see FileOutputStream * * @author Mark Reinhold - * @since JDK1.1 + * @since 1.1 */ public class FileWriter extends OutputStreamWriter { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/FilenameFilter.java --- a/jdk/src/share/classes/java/io/FilenameFilter.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/FilenameFilter.java Wed Jul 05 19:45:17 2017 +0200 @@ -37,7 +37,7 @@ * @see java.awt.FileDialog#setFilenameFilter(java.io.FilenameFilter) * @see java.io.File * @see java.io.File#list(java.io.FilenameFilter) - * @since JDK1.0 + * @since 1.0 */ @FunctionalInterface public interface FilenameFilter { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/FilterInputStream.java --- a/jdk/src/share/classes/java/io/FilterInputStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/FilterInputStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -40,7 +40,7 @@ * and fields. * * @author Jonathan Payne - * @since JDK1.0 + * @since 1.0 */ public class FilterInputStream extends InputStream { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/FilterOutputStream.java --- a/jdk/src/share/classes/java/io/FilterOutputStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/FilterOutputStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -39,7 +39,7 @@ * methods as well as provide additional methods and fields. * * @author Jonathan Payne - * @since JDK1.0 + * @since 1.0 */ public class FilterOutputStream extends OutputStream { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/FilterReader.java --- a/jdk/src/share/classes/java/io/FilterReader.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/FilterReader.java Wed Jul 05 19:45:17 2017 +0200 @@ -35,7 +35,7 @@ * additional methods and fields. * * @author Mark Reinhold - * @since JDK1.1 + * @since 1.1 */ public abstract class FilterReader extends Reader { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/FilterWriter.java --- a/jdk/src/share/classes/java/io/FilterWriter.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/FilterWriter.java Wed Jul 05 19:45:17 2017 +0200 @@ -35,7 +35,7 @@ * provide additional methods and fields. * * @author Mark Reinhold - * @since JDK1.1 + * @since 1.1 */ public abstract class FilterWriter extends Writer { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/IOException.java --- a/jdk/src/share/classes/java/io/IOException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/IOException.java Wed Jul 05 19:45:17 2017 +0200 @@ -33,7 +33,7 @@ * @author unascribed * @see java.io.InputStream * @see java.io.OutputStream - * @since JDK1.0 + * @since 1.0 */ public class IOException extends Exception { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/InputStream.java --- a/jdk/src/share/classes/java/io/InputStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/InputStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -40,7 +40,7 @@ * @see java.io.InputStream#read() * @see java.io.OutputStream * @see java.io.PushbackInputStream - * @since JDK1.0 + * @since 1.0 */ public abstract class InputStream implements Closeable { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/InputStreamReader.java --- a/jdk/src/share/classes/java/io/InputStreamReader.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/InputStreamReader.java Wed Jul 05 19:45:17 2017 +0200 @@ -56,7 +56,7 @@ * @see java.nio.charset.Charset * * @author Mark Reinhold - * @since JDK1.1 + * @since 1.1 */ public class InputStreamReader extends Reader { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/InterruptedIOException.java --- a/jdk/src/share/classes/java/io/InterruptedIOException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/InterruptedIOException.java Wed Jul 05 19:45:17 2017 +0200 @@ -37,7 +37,7 @@ * @see java.io.InputStream * @see java.io.OutputStream * @see java.lang.Thread#interrupt() - * @since JDK1.0 + * @since 1.0 */ public class InterruptedIOException extends IOException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/InvalidClassException.java --- a/jdk/src/share/classes/java/io/InvalidClassException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/InvalidClassException.java Wed Jul 05 19:45:17 2017 +0200 @@ -36,7 +36,7 @@ * * * @author unascribed - * @since JDK1.1 + * @since 1.1 */ public class InvalidClassException extends ObjectStreamException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/InvalidObjectException.java --- a/jdk/src/share/classes/java/io/InvalidObjectException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/InvalidObjectException.java Wed Jul 05 19:45:17 2017 +0200 @@ -30,10 +30,10 @@ * tests. The argument should provide the reason for the failure. * * @see ObjectInputValidation - * @since JDK1.1 + * @since 1.1 * * @author unascribed - * @since JDK1.1 + * @since 1.1 */ public class InvalidObjectException extends ObjectStreamException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/LineNumberInputStream.java --- a/jdk/src/share/classes/java/io/LineNumberInputStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/LineNumberInputStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -40,7 +40,7 @@ * * @author Arthur van Hoff * @see java.io.LineNumberReader - * @since JDK1.0 + * @since 1.0 * @deprecated This class incorrectly assumes that bytes adequately represent * characters. As of JDK 1.1, the preferred way to operate on * character streams is via the new character-stream classes, which diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/LineNumberReader.java --- a/jdk/src/share/classes/java/io/LineNumberReader.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/LineNumberReader.java Wed Jul 05 19:45:17 2017 +0200 @@ -44,7 +44,7 @@ * immediately by a linefeed. * * @author Mark Reinhold - * @since JDK1.1 + * @since 1.1 */ public class LineNumberReader extends BufferedReader { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/NotActiveException.java --- a/jdk/src/share/classes/java/io/NotActiveException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/NotActiveException.java Wed Jul 05 19:45:17 2017 +0200 @@ -29,7 +29,7 @@ * Thrown when serialization or deserialization is not active. * * @author unascribed - * @since JDK1.1 + * @since 1.1 */ public class NotActiveException extends ObjectStreamException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/NotSerializableException.java --- a/jdk/src/share/classes/java/io/NotSerializableException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/NotSerializableException.java Wed Jul 05 19:45:17 2017 +0200 @@ -31,7 +31,7 @@ * this exception. The argument should be the name of the class. * * @author unascribed - * @since JDK1.1 + * @since 1.1 */ public class NotSerializableException extends ObjectStreamException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/ObjectInput.java --- a/jdk/src/share/classes/java/io/ObjectInput.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/ObjectInput.java Wed Jul 05 19:45:17 2017 +0200 @@ -34,7 +34,7 @@ * @see java.io.InputStream * @see java.io.ObjectOutputStream * @see java.io.ObjectInputStream - * @since JDK1.1 + * @since 1.1 */ public interface ObjectInput extends DataInput, AutoCloseable { /** diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/ObjectInputStream.java --- a/jdk/src/share/classes/java/io/ObjectInputStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/ObjectInputStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -200,7 +200,7 @@ * @see java.io.ObjectOutputStream * @see java.io.Serializable * @see Object Serialization Specification, Section 3, Object Input Classes - * @since JDK1.1 + * @since 1.1 */ public class ObjectInputStream extends InputStream implements ObjectInput, ObjectStreamConstants diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/ObjectInputValidation.java --- a/jdk/src/share/classes/java/io/ObjectInputValidation.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/ObjectInputValidation.java Wed Jul 05 19:45:17 2017 +0200 @@ -33,7 +33,7 @@ * @author unascribed * @see ObjectInputStream * @see ObjectInputStream#registerValidation(java.io.ObjectInputValidation, int) - * @since JDK1.1 + * @since 1.1 */ public interface ObjectInputValidation { /** diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/ObjectOutput.java --- a/jdk/src/share/classes/java/io/ObjectOutput.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/ObjectOutput.java Wed Jul 05 19:45:17 2017 +0200 @@ -34,7 +34,7 @@ * @see java.io.InputStream * @see java.io.ObjectOutputStream * @see java.io.ObjectInputStream - * @since JDK1.1 + * @since 1.1 */ public interface ObjectOutput extends DataOutput, AutoCloseable { /** diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/ObjectOutputStream.java --- a/jdk/src/share/classes/java/io/ObjectOutputStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/ObjectOutputStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -156,7 +156,7 @@ * @see java.io.Serializable * @see java.io.Externalizable * @see Object Serialization Specification, Section 2, Object Output Classes - * @since JDK1.1 + * @since 1.1 */ public class ObjectOutputStream extends OutputStream implements ObjectOutput, ObjectStreamConstants diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/ObjectStreamClass.java --- a/jdk/src/share/classes/java/io/ObjectStreamClass.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/ObjectStreamClass.java Wed Jul 05 19:45:17 2017 +0200 @@ -67,7 +67,7 @@ * @author Roger Riggs * @see ObjectStreamField * @see Object Serialization Specification, Section 4, Class Descriptors - * @since JDK1.1 + * @since 1.1 */ public class ObjectStreamClass implements Serializable { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/ObjectStreamConstants.java --- a/jdk/src/share/classes/java/io/ObjectStreamConstants.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/ObjectStreamConstants.java Wed Jul 05 19:45:17 2017 +0200 @@ -29,7 +29,7 @@ * Constants written into the Object Serialization Stream. * * @author unascribed - * @since JDK 1.1 + * @since 1.1 */ public interface ObjectStreamConstants { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/ObjectStreamException.java --- a/jdk/src/share/classes/java/io/ObjectStreamException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/ObjectStreamException.java Wed Jul 05 19:45:17 2017 +0200 @@ -29,7 +29,7 @@ * Superclass of all exceptions specific to Object Stream classes. * * @author unascribed - * @since JDK1.1 + * @since 1.1 */ public abstract class ObjectStreamException extends IOException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/OptionalDataException.java --- a/jdk/src/share/classes/java/io/OptionalDataException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/OptionalDataException.java Wed Jul 05 19:45:17 2017 +0200 @@ -43,7 +43,7 @@ * * * @author unascribed - * @since JDK1.1 + * @since 1.1 */ public class OptionalDataException extends ObjectStreamException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/OutputStream.java --- a/jdk/src/share/classes/java/io/OutputStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/OutputStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -41,7 +41,7 @@ * @see java.io.FilterOutputStream * @see java.io.InputStream * @see java.io.OutputStream#write(int) - * @since JDK1.0 + * @since 1.0 */ public abstract class OutputStream implements Closeable, Flushable { /** diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/OutputStreamWriter.java --- a/jdk/src/share/classes/java/io/OutputStreamWriter.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/OutputStreamWriter.java Wed Jul 05 19:45:17 2017 +0200 @@ -71,7 +71,7 @@ * @see java.nio.charset.Charset * * @author Mark Reinhold - * @since JDK1.1 + * @since 1.1 */ public class OutputStreamWriter extends Writer { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/PipedInputStream.java --- a/jdk/src/share/classes/java/io/PipedInputStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/PipedInputStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -45,7 +45,7 @@ * * @author James Gosling * @see java.io.PipedOutputStream - * @since JDK1.0 + * @since 1.0 */ public class PipedInputStream extends InputStream { boolean closedByWriter = false; @@ -63,7 +63,7 @@ /** * The default size of the pipe's circular input buffer. - * @since JDK1.1 + * @since 1.1 */ // This used to be a constant before the pipe size was allowed // to change. This field will continue to be maintained @@ -72,7 +72,7 @@ /** * The circular buffer into which incoming data is placed. - * @since JDK1.1 + * @since 1.1 */ protected byte buffer[]; @@ -81,14 +81,14 @@ * next byte of data will be stored when received from the connected * piped output stream. in<0 implies the buffer is empty, * in==out implies the buffer is full - * @since JDK1.1 + * @since 1.1 */ protected int in = -1; /** * The index of the position in the circular buffer at which the next * byte of data will be read by this piped input stream. - * @since JDK1.1 + * @since 1.1 */ protected int out = 0; @@ -195,7 +195,7 @@ * @exception IOException If the pipe is broken, * {@link #connect(java.io.PipedOutputStream) unconnected}, * closed, or if an I/O error occurs. - * @since JDK1.1 + * @since 1.1 */ protected synchronized void receive(int b) throws IOException { checkStateForReceive(); @@ -421,7 +421,7 @@ * broken. * * @exception IOException if an I/O error occurs. - * @since JDK1.0.2 + * @since 1.0.2 */ public synchronized int available() throws IOException { if(in < 0) diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/PipedOutputStream.java --- a/jdk/src/share/classes/java/io/PipedOutputStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/PipedOutputStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -41,7 +41,7 @@ * * @author James Gosling * @see java.io.PipedInputStream - * @since JDK1.0 + * @since 1.0 */ public class PipedOutputStream extends OutputStream { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/PipedReader.java --- a/jdk/src/share/classes/java/io/PipedReader.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/PipedReader.java Wed Jul 05 19:45:17 2017 +0200 @@ -30,7 +30,7 @@ * Piped character-input streams. * * @author Mark Reinhold - * @since JDK1.1 + * @since 1.1 */ public class PipedReader extends Reader { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/PipedWriter.java --- a/jdk/src/share/classes/java/io/PipedWriter.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/PipedWriter.java Wed Jul 05 19:45:17 2017 +0200 @@ -30,7 +30,7 @@ * Piped character-output streams. * * @author Mark Reinhold - * @since JDK1.1 + * @since 1.1 */ public class PipedWriter extends Writer { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/PrintStream.java --- a/jdk/src/share/classes/java/io/PrintStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/PrintStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -51,7 +51,7 @@ * * @author Frank Yellin * @author Mark Reinhold - * @since JDK1.0 + * @since 1.0 */ public class PrintStream extends FilterOutputStream @@ -404,7 +404,7 @@ * #checkError()} to return true until {@link * #clearError()} is invoked. * - * @since JDK1.1 + * @since 1.1 */ protected void setError() { trouble = true; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/PrintWriter.java --- a/jdk/src/share/classes/java/io/PrintWriter.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/PrintWriter.java Wed Jul 05 19:45:17 2017 +0200 @@ -50,7 +50,7 @@ * * @author Frank Yellin * @author Mark Reinhold - * @since JDK1.1 + * @since 1.1 */ public class PrintWriter extends Writer { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/PushbackInputStream.java --- a/jdk/src/share/classes/java/io/PushbackInputStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/PushbackInputStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -46,13 +46,13 @@ * * @author David Connelly * @author Jonathan Payne - * @since JDK1.0 + * @since 1.0 */ public class PushbackInputStream extends FilterInputStream { /** * The pushback buffer. - * @since JDK1.1 + * @since 1.1 */ protected byte[] buf; @@ -62,7 +62,7 @@ * buf.length; when the buffer is full, pos is * equal to zero. * - * @since JDK1.1 + * @since 1.1 */ protected int pos; @@ -86,7 +86,7 @@ * @param in the input stream from which bytes will be read. * @param size the size of the pushback buffer. * @exception IllegalArgumentException if {@code size <= 0} - * @since JDK1.1 + * @since 1.1 */ public PushbackInputStream(InputStream in, int size) { super(in); @@ -224,7 +224,7 @@ * buffer for the specified number of bytes, * or this input stream has been closed by * invoking its {@link #close()} method. - * @since JDK1.1 + * @since 1.1 */ public void unread(byte[] b, int off, int len) throws IOException { ensureOpen(); @@ -246,7 +246,7 @@ * buffer for the specified number of bytes, * or this input stream has been closed by * invoking its {@link #close()} method. - * @since JDK1.1 + * @since 1.1 */ public void unread(byte[] b) throws IOException { unread(b, 0, b.length); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/PushbackReader.java --- a/jdk/src/share/classes/java/io/PushbackReader.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/PushbackReader.java Wed Jul 05 19:45:17 2017 +0200 @@ -31,7 +31,7 @@ * stream. * * @author Mark Reinhold - * @since JDK1.1 + * @since 1.1 */ public class PushbackReader extends FilterReader { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/RandomAccessFile.java --- a/jdk/src/share/classes/java/io/RandomAccessFile.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/RandomAccessFile.java Wed Jul 05 19:45:17 2017 +0200 @@ -53,7 +53,7 @@ * {@code IOException} may be thrown if the stream has been closed. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class RandomAccessFile implements DataOutput, DataInput, Closeable { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/Reader.java --- a/jdk/src/share/classes/java/io/Reader.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/Reader.java Wed Jul 05 19:45:17 2017 +0200 @@ -45,7 +45,7 @@ * @see Writer * * @author Mark Reinhold - * @since JDK1.1 + * @since 1.1 */ public abstract class Reader implements Readable, Closeable { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/SequenceInputStream.java --- a/jdk/src/share/classes/java/io/SequenceInputStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/SequenceInputStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -40,7 +40,7 @@ * on the last of the contained input streams. * * @author Author van Hoff - * @since JDK1.0 + * @since 1.0 */ public class SequenceInputStream extends InputStream { @@ -132,7 +132,7 @@ * has been closed by invoking its {@link #close()} method * @exception IOException if an I/O error occurs. * - * @since JDK1.1 + * @since 1.1 */ public int available() throws IOException { if (in == null) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/Serializable.java --- a/jdk/src/share/classes/java/io/Serializable.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/Serializable.java Wed Jul 05 19:45:17 2017 +0200 @@ -164,7 +164,7 @@ * @see java.io.ObjectOutput * @see java.io.ObjectInput * @see java.io.Externalizable - * @since JDK1.1 + * @since 1.1 */ public interface Serializable { } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/StreamCorruptedException.java --- a/jdk/src/share/classes/java/io/StreamCorruptedException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/StreamCorruptedException.java Wed Jul 05 19:45:17 2017 +0200 @@ -30,7 +30,7 @@ * violates internal consistency checks. * * @author unascribed - * @since JDK1.1 + * @since 1.1 */ public class StreamCorruptedException extends ObjectStreamException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/StreamTokenizer.java --- a/jdk/src/share/classes/java/io/StreamTokenizer.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/StreamTokenizer.java Wed Jul 05 19:45:17 2017 +0200 @@ -59,7 +59,7 @@ * @author James Gosling * @see java.io.StreamTokenizer#nextToken() * @see java.io.StreamTokenizer#TT_EOF - * @since JDK1.0 + * @since 1.0 */ public class StreamTokenizer { @@ -240,7 +240,7 @@ * Create a tokenizer that parses the given character stream. * * @param r a Reader object providing the input stream. - * @since JDK1.1 + * @since 1.1 */ public StreamTokenizer(Reader r) { this(); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/StringBufferInputStream.java --- a/jdk/src/share/classes/java/io/StringBufferInputStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/StringBufferInputStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -37,7 +37,7 @@ * @author Arthur van Hoff * @see java.io.ByteArrayInputStream * @see java.io.StringReader - * @since JDK1.0 + * @since 1.0 * @deprecated This class does not properly convert characters into bytes. As * of JDK 1.1, the preferred way to create a stream from a * string is via the StringReader class. diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/StringReader.java --- a/jdk/src/share/classes/java/io/StringReader.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/StringReader.java Wed Jul 05 19:45:17 2017 +0200 @@ -30,7 +30,7 @@ * A character stream whose source is a string. * * @author Mark Reinhold - * @since JDK1.1 + * @since 1.1 */ public class StringReader extends Reader { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/StringWriter.java --- a/jdk/src/share/classes/java/io/StringWriter.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/StringWriter.java Wed Jul 05 19:45:17 2017 +0200 @@ -35,7 +35,7 @@ * IOException. * * @author Mark Reinhold - * @since JDK1.1 + * @since 1.1 */ public class StringWriter extends Writer { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/SyncFailedException.java --- a/jdk/src/share/classes/java/io/SyncFailedException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/SyncFailedException.java Wed Jul 05 19:45:17 2017 +0200 @@ -31,7 +31,7 @@ * @author Ken Arnold * @see java.io.FileDescriptor#sync * @see java.io.IOException - * @since JDK1.1 + * @since 1.1 */ public class SyncFailedException extends IOException { private static final long serialVersionUID = -2353342684412443330L; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/UTFDataFormatException.java --- a/jdk/src/share/classes/java/io/UTFDataFormatException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/UTFDataFormatException.java Wed Jul 05 19:45:17 2017 +0200 @@ -40,7 +40,7 @@ * @see java.io.DataInput * @see java.io.DataInputStream#readUTF(java.io.DataInput) * @see java.io.IOException - * @since JDK1.0 + * @since 1.0 */ public class UTFDataFormatException extends IOException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/UnsupportedEncodingException.java --- a/jdk/src/share/classes/java/io/UnsupportedEncodingException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/UnsupportedEncodingException.java Wed Jul 05 19:45:17 2017 +0200 @@ -28,7 +28,7 @@ * The Character Encoding is not supported. * * @author Asmus Freytag - * @since JDK1.1 + * @since 1.1 */ public class UnsupportedEncodingException extends IOException diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/WriteAbortedException.java --- a/jdk/src/share/classes/java/io/WriteAbortedException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/WriteAbortedException.java Wed Jul 05 19:45:17 2017 +0200 @@ -41,7 +41,7 @@ * method, as well as the aforementioned "legacy field." * * @author unascribed - * @since JDK1.1 + * @since 1.1 */ public class WriteAbortedException extends ObjectStreamException { private static final long serialVersionUID = -3326426625597282442L; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/Writer.java --- a/jdk/src/share/classes/java/io/Writer.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/Writer.java Wed Jul 05 19:45:17 2017 +0200 @@ -44,7 +44,7 @@ * @see Reader * * @author Mark Reinhold - * @since JDK1.1 + * @since 1.1 */ public abstract class Writer implements Appendable, Closeable, Flushable { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/io/package.html --- a/jdk/src/share/classes/java/io/package.html Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/io/package.html Wed Jul 05 19:45:17 2017 +0200 @@ -47,6 +47,6 @@

  • Serialization Enhancements -@since JDK1.0 +@since 1.0 diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/AbstractMethodError.java --- a/jdk/src/share/classes/java/lang/AbstractMethodError.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/AbstractMethodError.java Wed Jul 05 19:45:17 2017 +0200 @@ -33,7 +33,7 @@ * compiled. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class AbstractMethodError extends IncompatibleClassChangeError { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/ArithmeticException.java --- a/jdk/src/share/classes/java/lang/ArithmeticException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/ArithmeticException.java Wed Jul 05 19:45:17 2017 +0200 @@ -36,7 +36,7 @@ * stack trace was not writable}. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class ArithmeticException extends RuntimeException { private static final long serialVersionUID = 2256477558314496007L; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/ArrayIndexOutOfBoundsException.java --- a/jdk/src/share/classes/java/lang/ArrayIndexOutOfBoundsException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/ArrayIndexOutOfBoundsException.java Wed Jul 05 19:45:17 2017 +0200 @@ -31,7 +31,7 @@ * equal to the size of the array. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class ArrayIndexOutOfBoundsException extends IndexOutOfBoundsException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/ArrayStoreException.java --- a/jdk/src/share/classes/java/lang/ArrayStoreException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/ArrayStoreException.java Wed Jul 05 19:45:17 2017 +0200 @@ -35,7 +35,7 @@ * * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class ArrayStoreException extends RuntimeException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Boolean.java --- a/jdk/src/share/classes/java/lang/Boolean.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Boolean.java Wed Jul 05 19:45:17 2017 +0200 @@ -38,7 +38,7 @@ * {@code boolean}. * * @author Arthur van Hoff - * @since JDK1.0 + * @since 1.0 */ public final class Boolean implements java.io.Serializable, Comparable @@ -58,7 +58,7 @@ /** * The Class object representing the primitive type boolean. * - * @since JDK1.1 + * @since 1.1 */ @SuppressWarnings("unchecked") public static final Class TYPE = (Class) Class.getPrimitiveClass("boolean"); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Byte.java --- a/jdk/src/share/classes/java/lang/Byte.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Byte.java Wed Jul 05 19:45:17 2017 +0200 @@ -39,7 +39,7 @@ * @author Nakul Saraiya * @author Joseph D. Darcy * @see java.lang.Number - * @since JDK1.1 + * @since 1.1 */ public final class Byte extends Number implements Comparable { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Character.java --- a/jdk/src/share/classes/java/lang/Character.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Character.java Wed Jul 05 19:45:17 2017 +0200 @@ -5875,7 +5875,7 @@ * @see Character#isLetter(char) * @see Character#isLetterOrDigit(char) * @see Character#isUnicodeIdentifierStart(char) - * @since 1.02 + * @since 1.0.2 * @deprecated Replaced by isJavaIdentifierStart(char). */ @Deprecated @@ -5911,7 +5911,7 @@ * @see Character#isLetterOrDigit(char) * @see Character#isUnicodeIdentifierPart(char) * @see Character#isIdentifierIgnorable(char) - * @since 1.02 + * @since 1.0.2 * @deprecated Replaced by isJavaIdentifierPart(char). */ @Deprecated diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Class.java --- a/jdk/src/share/classes/java/lang/Class.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Class.java Wed Jul 05 19:45:17 2017 +0200 @@ -114,7 +114,7 @@ * * @author unascribed * @see java.lang.ClassLoader#defineClass(byte[], int, int) - * @since JDK1.0 + * @since 1.0 */ public final class Class implements java.io.Serializable, GenericDeclaration, @@ -469,7 +469,7 @@ * @param obj the object to check * @return true if {@code obj} is an instance of this class * - * @since JDK1.1 + * @since 1.1 */ public native boolean isInstance(Object obj); @@ -496,7 +496,7 @@ * type {@code cls} can be assigned to objects of this class * @exception NullPointerException if the specified Class parameter is * null. - * @since JDK1.1 + * @since 1.1 */ public native boolean isAssignableFrom(Class cls); @@ -516,7 +516,7 @@ * * @return {@code true} if this object represents an array class; * {@code false} otherwise. - * @since JDK1.1 + * @since 1.1 */ public native boolean isArray(); @@ -547,7 +547,7 @@ * @see java.lang.Float#TYPE * @see java.lang.Double#TYPE * @see java.lang.Void#TYPE - * @since JDK1.1 + * @since 1.1 */ public native boolean isPrimitive(); @@ -909,7 +909,7 @@ * @return the {@code Class} representing the component type of this * class if this class is an array * @see java.lang.reflect.Array - * @since JDK1.1 + * @since 1.1 */ public native Class getComponentType(); @@ -939,7 +939,7 @@ * * @return the {@code int} representing the modifiers for this class * @see java.lang.reflect.Modifier - * @since JDK1.1 + * @since 1.1 */ public native int getModifiers(); @@ -950,7 +950,7 @@ * @return the signers of this class, or null if there are no signers. In * particular, this method returns null if this object represents * a primitive type or void. - * @since JDK1.1 + * @since 1.1 */ public native Object[] getSigners(); @@ -1215,7 +1215,7 @@ * loader for the declaring class and invocation of {@link * SecurityManager#checkPackageAccess s.checkPackageAccess()} * denies access to the package of the declaring class - * @since JDK1.1 + * @since 1.1 */ @CallerSensitive public Class getDeclaringClass() throws SecurityException { @@ -1470,7 +1470,7 @@ * s.checkPackageAccess()} denies access to the package * of this class. * - * @since JDK1.1 + * @since 1.1 */ @CallerSensitive public Class[] getClasses() { @@ -1533,7 +1533,7 @@ * s.checkPackageAccess()} denies access to the package * of this class. * - * @since JDK1.1 + * @since 1.1 * @jls 8.2 Class Members * @jls 8.3 Field Declarations */ @@ -1593,7 +1593,7 @@ * * @jls 8.2 Class Members * @jls 8.4 Method Declarations - * @since JDK1.1 + * @since 1.1 */ @CallerSensitive public Method[] getMethods() throws SecurityException { @@ -1629,7 +1629,7 @@ * s.checkPackageAccess()} denies access to the package * of this class. * - * @since JDK1.1 + * @since 1.1 */ @CallerSensitive public Constructor[] getConstructors() throws SecurityException { @@ -1676,7 +1676,7 @@ * s.checkPackageAccess()} denies access to the package * of this class. * - * @since JDK1.1 + * @since 1.1 * @jls 8.2 Class Members * @jls 8.3 Field Declarations */ @@ -1761,7 +1761,7 @@ * * @jls 8.2 Class Members * @jls 8.4 Method Declarations - * @since JDK1.1 + * @since 1.1 */ @CallerSensitive public Method getMethod(String name, Class... parameterTypes) @@ -1802,7 +1802,7 @@ * s.checkPackageAccess()} denies access to the package * of this class. * - * @since JDK1.1 + * @since 1.1 */ @CallerSensitive public Constructor getConstructor(Class... parameterTypes) @@ -1845,7 +1845,7 @@ * * * - * @since JDK1.1 + * @since 1.1 */ @CallerSensitive public Class[] getDeclaredClasses() throws SecurityException { @@ -1892,7 +1892,7 @@ * * * - * @since JDK1.1 + * @since 1.1 * @jls 8.2 Class Members * @jls 8.3 Field Declarations */ @@ -1953,7 +1953,7 @@ * * @jls 8.2 Class Members * @jls 8.4 Method Declarations - * @since JDK1.1 + * @since 1.1 */ @CallerSensitive public Method[] getDeclaredMethods() throws SecurityException { @@ -1998,7 +1998,7 @@ * * * - * @since JDK1.1 + * @since 1.1 */ @CallerSensitive public Constructor[] getDeclaredConstructors() throws SecurityException { @@ -2043,7 +2043,7 @@ * * * - * @since JDK1.1 + * @since 1.1 * @jls 8.2 Class Members * @jls 8.3 Field Declarations */ @@ -2105,7 +2105,7 @@ * * @jls 8.2 Class Members * @jls 8.4 Method Declarations - * @since JDK1.1 + * @since 1.1 */ @CallerSensitive public Method getDeclaredMethod(String name, Class... parameterTypes) @@ -2155,7 +2155,7 @@ * * * - * @since JDK1.1 + * @since 1.1 */ @CallerSensitive public Constructor getDeclaredConstructor(Class... parameterTypes) @@ -2197,7 +2197,7 @@ * @return A {@link java.io.InputStream} object or {@code null} if * no resource with this name is found * @throws NullPointerException If {@code name} is {@code null} - * @since JDK1.1 + * @since 1.1 */ public InputStream getResourceAsStream(String name) { name = resolveName(name); @@ -2241,7 +2241,7 @@ * @param name name of the desired resource * @return A {@link java.net.URL} object or {@code null} if no * resource with this name is found - * @since JDK1.1 + * @since 1.1 */ public java.net.URL getResource(String name) { name = resolveName(name); @@ -2696,12 +2696,26 @@ } static class MethodArray { + // Don't add or remove methods except by add() or remove() calls. private Method[] methods; private int length; + private int defaults; MethodArray() { - methods = new Method[20]; + this(20); + } + + MethodArray(int initialSize) { + if (initialSize < 2) + throw new IllegalArgumentException("Size should be 2 or more"); + + methods = new Method[initialSize]; length = 0; + defaults = 0; + } + + boolean hasDefaults() { + return defaults != 0; } void add(Method m) { @@ -2709,6 +2723,9 @@ methods = Arrays.copyOf(methods, 2 * methods.length); } methods[length++] = m; + + if (m != null && m.isDefault()) + defaults++; } void addAll(Method[] ma) { @@ -2742,7 +2759,10 @@ } } - void addAllNonStatic(Method[] methods) { + /* Add Methods declared in an interface to this MethodArray. + * Static methods declared in interfaces are not inherited. + */ + void addInterfaceMethods(Method[] methods) { for (Method candidate : methods) { if (!Modifier.isStatic(candidate.getModifiers())) { add(candidate); @@ -2758,19 +2778,35 @@ return methods[i]; } - void removeByNameAndSignature(Method toRemove) { + Method getFirst() { + for (Method m : methods) + if (m != null) + return m; + return null; + } + + void removeByNameAndDescriptor(Method toRemove) { for (int i = 0; i < length; i++) { Method m = methods[i]; - if (m != null && - m.getReturnType() == toRemove.getReturnType() && - m.getName() == toRemove.getName() && - arrayContentsEq(m.getParameterTypes(), - toRemove.getParameterTypes())) { - methods[i] = null; + if (m != null && matchesNameAndDescriptor(m, toRemove)) { + remove(i); } } } + private void remove(int i) { + if (methods[i] != null && methods[i].isDefault()) + defaults--; + methods[i] = null; + } + + private boolean matchesNameAndDescriptor(Method m1, Method m2) { + return m1.getReturnType() == m2.getReturnType() && + m1.getName() == m2.getName() && // name is guaranteed to be interned + arrayContentsEq(m1.getParameterTypes(), + m2.getParameterTypes()); + } + void compactAndTrim() { int newPos = 0; // Get rid of null slots @@ -2788,9 +2824,48 @@ } } + /* Removes all Methods from this MethodArray that have a more specific + * default Method in this MethodArray. + * + * Users of MethodArray are responsible for pruning Methods that have + * a more specific concrete Method. + */ + void removeLessSpecifics() { + if (!hasDefaults()) + return; + + for (int i = 0; i < length; i++) { + Method m = get(i); + if (m == null || !m.isDefault()) + continue; + + for (int j = 0; j < length; j++) { + if (i == j) + continue; + + Method candidate = get(j); + if (candidate == null) + continue; + + if (!matchesNameAndDescriptor(m, candidate)) + continue; + + if (hasMoreSpecificClass(m, candidate)) + remove(j); + } + } + } + Method[] getArray() { return methods; } + + // Returns true if m1 is more specific than m2 + static boolean hasMoreSpecificClass(Method m1, Method m2) { + Class m1Class = m1.getDeclaringClass(); + Class m2Class = m2.getDeclaringClass(); + return m1Class != m2Class && m2Class.isAssignableFrom(m1Class); + } } @@ -2819,7 +2894,7 @@ // the end. MethodArray inheritedMethods = new MethodArray(); for (Class i : getInterfaces()) { - inheritedMethods.addAllNonStatic(i.privateGetPublicMethods()); + inheritedMethods.addInterfaceMethods(i.privateGetPublicMethods()); } if (!isInterface()) { Class c = getSuperclass(); @@ -2830,8 +2905,10 @@ // interface methods for (int i = 0; i < supers.length(); i++) { Method m = supers.get(i); - if (m != null && !Modifier.isAbstract(m.getModifiers())) { - inheritedMethods.removeByNameAndSignature(m); + if (m != null && + !Modifier.isAbstract(m.getModifiers()) && + !m.isDefault()) { + inheritedMethods.removeByNameAndDescriptor(m); } } // Insert superclass's inherited methods before @@ -2844,9 +2921,10 @@ // Filter out all local methods from inherited ones for (int i = 0; i < methods.length(); i++) { Method m = methods.get(i); - inheritedMethods.removeByNameAndSignature(m); + inheritedMethods.removeByNameAndDescriptor(m); } methods.addAllIfNotPresent(inheritedMethods); + methods.removeLessSpecifics(); methods.compactAndTrim(); res = methods.getArray(); if (rd != null) { @@ -2919,8 +2997,21 @@ return (res == null ? res : getReflectionFactory().copyMethod(res)); } - private Method getMethod0(String name, Class[] parameterTypes, boolean includeStaticMethods) { + MethodArray interfaceCandidates = new MethodArray(2); + Method res = privateGetMethodRecursive(name, parameterTypes, includeStaticMethods, interfaceCandidates); + if (res != null) + return res; + + // Not found on class or superclass directly + interfaceCandidates.removeLessSpecifics(); + return interfaceCandidates.getFirst(); // may be null + } + + private Method privateGetMethodRecursive(String name, + Class[] parameterTypes, + boolean includeStaticMethods, + MethodArray allInterfaceCandidates) { // Note: the intent is that the search algorithm this routine // uses be equivalent to the ordering imposed by // privateGetPublicMethods(). It fetches only the declared @@ -2928,6 +3019,14 @@ // number of Method objects which have to be created for the // common case where the method being requested is declared in // the class which is being queried. + // + // Due to default methods, unless a method is found on a superclass, + // methods declared in any superinterface needs to be considered. + // Collect all candidates declared in superinterfaces in {@code + // allInterfaceCandidates} and select the most specific if no match on + // a superclass is found. + + // Must _not_ return root methods Method res; // Search declared public methods if ((res = searchMethods(privateGetDeclaredMethods(true), @@ -2949,7 +3048,7 @@ Class[] interfaces = getInterfaces(); for (Class c : interfaces) if ((res = c.getMethod0(name, parameterTypes, false)) != null) - return res; + allInterfaceCandidates.add(res); // Not found return null; } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/ClassCastException.java --- a/jdk/src/share/classes/java/lang/ClassCastException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/ClassCastException.java Wed Jul 05 19:45:17 2017 +0200 @@ -35,7 +35,7 @@ * * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class ClassCastException extends RuntimeException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/ClassCircularityError.java --- a/jdk/src/share/classes/java/lang/ClassCircularityError.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/ClassCircularityError.java Wed Jul 05 19:45:17 2017 +0200 @@ -30,7 +30,7 @@ * superclass hierarchy of a class being loaded. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class ClassCircularityError extends LinkageError { private static final long serialVersionUID = 1054362542914539689L; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/ClassFormatError.java --- a/jdk/src/share/classes/java/lang/ClassFormatError.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/ClassFormatError.java Wed Jul 05 19:45:17 2017 +0200 @@ -31,7 +31,7 @@ * be interpreted as a class file. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class ClassFormatError extends LinkageError { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/ClassNotFoundException.java --- a/jdk/src/share/classes/java/lang/ClassNotFoundException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/ClassNotFoundException.java Wed Jul 05 19:45:17 2017 +0200 @@ -48,7 +48,7 @@ * @see java.lang.Class#forName(java.lang.String) * @see java.lang.ClassLoader#findSystemClass(java.lang.String) * @see java.lang.ClassLoader#loadClass(java.lang.String, boolean) - * @since JDK1.0 + * @since 1.0 */ public class ClassNotFoundException extends ReflectiveOperationException { /** diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/CloneNotSupportedException.java --- a/jdk/src/share/classes/java/lang/CloneNotSupportedException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/CloneNotSupportedException.java Wed Jul 05 19:45:17 2017 +0200 @@ -38,7 +38,7 @@ * @author unascribed * @see java.lang.Cloneable * @see java.lang.Object#clone() - * @since JDK1.0 + * @since 1.0 */ public diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Cloneable.java --- a/jdk/src/share/classes/java/lang/Cloneable.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Cloneable.java Wed Jul 05 19:45:17 2017 +0200 @@ -48,7 +48,7 @@ * @author unascribed * @see java.lang.CloneNotSupportedException * @see java.lang.Object#clone() - * @since JDK1.0 + * @since 1.0 */ public interface Cloneable { } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Compiler.java --- a/jdk/src/share/classes/java/lang/Compiler.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Compiler.java Wed Jul 05 19:45:17 2017 +0200 @@ -42,7 +42,7 @@ *

    If no compiler is available, these methods do nothing. * * @author Frank Yellin - * @since JDK1.0 + * @since 1.0 */ public final class Compiler { private Compiler() {} // don't make instances diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Double.java --- a/jdk/src/share/classes/java/lang/Double.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Double.java Wed Jul 05 19:45:17 2017 +0200 @@ -43,7 +43,7 @@ * @author Lee Boynton * @author Arthur van Hoff * @author Joseph D. Darcy - * @since JDK1.0 + * @since 1.0 */ public final class Double extends Number implements Comparable { /** @@ -132,7 +132,7 @@ * The {@code Class} instance representing the primitive type * {@code double}. * - * @since JDK1.1 + * @since 1.1 */ @SuppressWarnings("unchecked") public static final Class TYPE = (Class) Class.getPrimitiveClass("double"); @@ -650,7 +650,7 @@ * @return the {@code double} value represented by this object * converted to type {@code byte} * @jls 5.1.3 Narrowing Primitive Conversions - * @since JDK1.1 + * @since 1.1 */ public byte byteValue() { return (byte)value; @@ -663,7 +663,7 @@ * @return the {@code double} value represented by this object * converted to type {@code short} * @jls 5.1.3 Narrowing Primitive Conversions - * @since JDK1.1 + * @since 1.1 */ public short shortValue() { return (short)value; @@ -700,7 +700,7 @@ * @return the {@code double} value represented by this object * converted to type {@code float} * @jls 5.1.3 Narrowing Primitive Conversions - * @since JDK1.0 + * @since 1.0 */ public float floatValue() { return (float)value; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Error.java --- a/jdk/src/share/classes/java/lang/Error.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Error.java Wed Jul 05 19:45:17 2017 +0200 @@ -44,7 +44,7 @@ * @author Frank Yellin * @see java.lang.ThreadDeath * @jls 11.2 Compile-Time Checking of Exceptions - * @since JDK1.0 + * @since 1.0 */ public class Error extends Throwable { static final long serialVersionUID = 4980196508277280342L; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Exception.java --- a/jdk/src/share/classes/java/lang/Exception.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Exception.java Wed Jul 05 19:45:17 2017 +0200 @@ -40,7 +40,7 @@ * @author Frank Yellin * @see java.lang.Error * @jls 11.2 Compile-Time Checking of Exceptions - * @since JDK1.0 + * @since 1.0 */ public class Exception extends Throwable { static final long serialVersionUID = -3387516993124229948L; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/ExceptionInInitializerError.java --- a/jdk/src/share/classes/java/lang/ExceptionInInitializerError.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/ExceptionInInitializerError.java Wed Jul 05 19:45:17 2017 +0200 @@ -39,7 +39,7 @@ * as the aforementioned "legacy method." * * @author Frank Yellin - * @since JDK1.1 + * @since 1.1 */ public class ExceptionInInitializerError extends LinkageError { /** diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Float.java --- a/jdk/src/share/classes/java/lang/Float.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Float.java Wed Jul 05 19:45:17 2017 +0200 @@ -44,7 +44,7 @@ * @author Lee Boynton * @author Arthur van Hoff * @author Joseph D. Darcy - * @since JDK1.0 + * @since 1.0 */ public final class Float extends Number implements Comparable { /** @@ -131,7 +131,7 @@ * The {@code Class} instance representing the primitive type * {@code float}. * - * @since JDK1.1 + * @since 1.1 */ @SuppressWarnings("unchecked") public static final Class TYPE = (Class) Class.getPrimitiveClass("float"); @@ -587,7 +587,7 @@ * @return the {@code float} value represented by this object * converted to type {@code short} * @jls 5.1.3 Narrowing Primitive Conversions - * @since JDK1.1 + * @since 1.1 */ public short shortValue() { return (short)value; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/IllegalAccessError.java --- a/jdk/src/share/classes/java/lang/IllegalAccessError.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/IllegalAccessError.java Wed Jul 05 19:45:17 2017 +0200 @@ -34,7 +34,7 @@ * incompatibly changed. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class IllegalAccessError extends IncompatibleClassChangeError { private static final long serialVersionUID = -8988904074992417891L; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/IllegalAccessException.java --- a/jdk/src/share/classes/java/lang/IllegalAccessException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/IllegalAccessException.java Wed Jul 05 19:45:17 2017 +0200 @@ -54,7 +54,7 @@ * @see java.lang.reflect.Field#getDouble(Object) * @see java.lang.reflect.Method#invoke(Object, Object[]) * @see java.lang.reflect.Constructor#newInstance(Object[]) - * @since JDK1.0 + * @since 1.0 */ public class IllegalAccessException extends ReflectiveOperationException { private static final long serialVersionUID = 6616958222490762034L; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/IllegalArgumentException.java --- a/jdk/src/share/classes/java/lang/IllegalArgumentException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/IllegalArgumentException.java Wed Jul 05 19:45:17 2017 +0200 @@ -30,7 +30,7 @@ * inappropriate argument. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class IllegalArgumentException extends RuntimeException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/IllegalMonitorStateException.java --- a/jdk/src/share/classes/java/lang/IllegalMonitorStateException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/IllegalMonitorStateException.java Wed Jul 05 19:45:17 2017 +0200 @@ -36,7 +36,7 @@ * @see java.lang.Object#wait() * @see java.lang.Object#wait(long) * @see java.lang.Object#wait(long, int) - * @since JDK1.0 + * @since 1.0 */ public class IllegalMonitorStateException extends RuntimeException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/IllegalStateException.java --- a/jdk/src/share/classes/java/lang/IllegalStateException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/IllegalStateException.java Wed Jul 05 19:45:17 2017 +0200 @@ -32,7 +32,7 @@ * operation. * * @author Jonni Kanerva - * @since JDK1.1 + * @since 1.1 */ public class IllegalStateException extends RuntimeException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/IllegalThreadStateException.java --- a/jdk/src/share/classes/java/lang/IllegalThreadStateException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/IllegalThreadStateException.java Wed Jul 05 19:45:17 2017 +0200 @@ -34,7 +34,7 @@ * @author unascribed * @see java.lang.Thread#resume() * @see java.lang.Thread#suspend() - * @since JDK1.0 + * @since 1.0 */ public class IllegalThreadStateException extends IllegalArgumentException { private static final long serialVersionUID = -7626246362397460174L; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/IncompatibleClassChangeError.java --- a/jdk/src/share/classes/java/lang/IncompatibleClassChangeError.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/IncompatibleClassChangeError.java Wed Jul 05 19:45:17 2017 +0200 @@ -31,7 +31,7 @@ * executing method depends, has since changed. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class IncompatibleClassChangeError extends LinkageError { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/IndexOutOfBoundsException.java --- a/jdk/src/share/classes/java/lang/IndexOutOfBoundsException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/IndexOutOfBoundsException.java Wed Jul 05 19:45:17 2017 +0200 @@ -32,7 +32,7 @@ * Applications can subclass this class to indicate similar exceptions. * * @author Frank Yellin - * @since JDK1.0 + * @since 1.0 */ public class IndexOutOfBoundsException extends RuntimeException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/InstantiationError.java --- a/jdk/src/share/classes/java/lang/InstantiationError.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/InstantiationError.java Wed Jul 05 19:45:17 2017 +0200 @@ -34,7 +34,7 @@ * incompatibly changed. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/InstantiationException.java --- a/jdk/src/share/classes/java/lang/InstantiationException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/InstantiationException.java Wed Jul 05 19:45:17 2017 +0200 @@ -40,7 +40,7 @@ * * @author unascribed * @see java.lang.Class#newInstance() - * @since JDK1.0 + * @since 1.0 */ public class InstantiationException extends ReflectiveOperationException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Integer.java --- a/jdk/src/share/classes/java/lang/Integer.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Integer.java Wed Jul 05 19:45:17 2017 +0200 @@ -47,7 +47,7 @@ * @author Arthur van Hoff * @author Josh Bloch * @author Joseph D. Darcy - * @since JDK1.0 + * @since 1.0 */ public final class Integer extends Number implements Comparable { /** @@ -66,7 +66,7 @@ * The {@code Class} instance representing the primitive type * {@code int}. * - * @since JDK1.1 + * @since 1.1 */ @SuppressWarnings("unchecked") public static final Class TYPE = (Class) Class.getPrimitiveClass("int"); @@ -227,7 +227,7 @@ * represented by the argument in hexadecimal (base 16). * @see #parseUnsignedInt(String, int) * @see #toUnsignedString(int, int) - * @since JDK1.0.2 + * @since 1.0.2 */ public static String toHexString(int i) { return toUnsignedString0(i, 4); @@ -265,7 +265,7 @@ * represented by the argument in octal (base 8). * @see #parseUnsignedInt(String, int) * @see #toUnsignedString(int, int) - * @since JDK1.0.2 + * @since 1.0.2 */ public static String toOctalString(int i) { return toUnsignedString0(i, 3); @@ -297,7 +297,7 @@ * represented by the argument in binary (base 2). * @see #parseUnsignedInt(String, int) * @see #toUnsignedString(int, int) - * @since JDK1.0.2 + * @since 1.0.2 */ public static String toBinaryString(int i) { return toUnsignedString0(i, 1); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/InternalError.java --- a/jdk/src/share/classes/java/lang/InternalError.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/InternalError.java Wed Jul 05 19:45:17 2017 +0200 @@ -30,7 +30,7 @@ * the Java Virtual Machine. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class InternalError extends VirtualMachineError { private static final long serialVersionUID = -9062593416125562365L; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/InterruptedException.java --- a/jdk/src/share/classes/java/lang/InterruptedException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/InterruptedException.java Wed Jul 05 19:45:17 2017 +0200 @@ -44,7 +44,7 @@ * @see java.lang.Thread#sleep(long) * @see java.lang.Thread#interrupt() * @see java.lang.Thread#interrupted() - * @since JDK1.0 + * @since 1.0 */ public class InterruptedException extends Exception { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/LinkageError.java --- a/jdk/src/share/classes/java/lang/LinkageError.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/LinkageError.java Wed Jul 05 19:45:17 2017 +0200 @@ -32,7 +32,7 @@ * * * @author Frank Yellin - * @since JDK1.0 + * @since 1.0 */ public class LinkageError extends Error { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Long.java --- a/jdk/src/share/classes/java/lang/Long.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Long.java Wed Jul 05 19:45:17 2017 +0200 @@ -49,7 +49,7 @@ * @author Arthur van Hoff * @author Josh Bloch * @author Joseph D. Darcy - * @since JDK1.0 + * @since 1.0 */ public final class Long extends Number implements Comparable { /** @@ -68,7 +68,7 @@ * The {@code Class} instance representing the primitive type * {@code long}. * - * @since JDK1.1 + * @since 1.1 */ @SuppressWarnings("unchecked") public static final Class TYPE = (Class) Class.getPrimitiveClass("long"); @@ -266,7 +266,7 @@ * (base 16). * @see #parseUnsignedLong(String, int) * @see #toUnsignedString(long, int) - * @since JDK 1.0.2 + * @since 1.0.2 */ public static String toHexString(long i) { return toUnsignedString0(i, 4); @@ -305,7 +305,7 @@ * value represented by the argument in octal (base 8). * @see #parseUnsignedLong(String, int) * @see #toUnsignedString(long, int) - * @since JDK 1.0.2 + * @since 1.0.2 */ public static String toOctalString(long i) { return toUnsignedString0(i, 3); @@ -338,7 +338,7 @@ * value represented by the argument in binary (base 2). * @see #parseUnsignedLong(String, int) * @see #toUnsignedString(long, int) - * @since JDK 1.0.2 + * @since 1.0.2 */ public static String toBinaryString(long i) { return toUnsignedString0(i, 1); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Math.java --- a/jdk/src/share/classes/java/lang/Math.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Math.java Wed Jul 05 19:45:17 2017 +0200 @@ -99,7 +99,7 @@ * * @author unascribed * @author Joseph D. Darcy - * @since JDK1.0 + * @since 1.0 */ public final class Math { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/NegativeArraySizeException.java --- a/jdk/src/share/classes/java/lang/NegativeArraySizeException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/NegativeArraySizeException.java Wed Jul 05 19:45:17 2017 +0200 @@ -29,7 +29,7 @@ * Thrown if an application tries to create an array with negative size. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class NegativeArraySizeException extends RuntimeException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/NoClassDefFoundError.java --- a/jdk/src/share/classes/java/lang/NoClassDefFoundError.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/NoClassDefFoundError.java Wed Jul 05 19:45:17 2017 +0200 @@ -36,7 +36,7 @@ * found. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class NoClassDefFoundError extends LinkageError { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/NoSuchFieldError.java --- a/jdk/src/share/classes/java/lang/NoSuchFieldError.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/NoSuchFieldError.java Wed Jul 05 19:45:17 2017 +0200 @@ -34,7 +34,7 @@ * incompatibly changed. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class NoSuchFieldError extends IncompatibleClassChangeError { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/NoSuchFieldException.java --- a/jdk/src/share/classes/java/lang/NoSuchFieldException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/NoSuchFieldException.java Wed Jul 05 19:45:17 2017 +0200 @@ -29,7 +29,7 @@ * Signals that the class doesn't have a field of a specified name. * * @author unascribed - * @since JDK1.1 + * @since 1.1 */ public class NoSuchFieldException extends ReflectiveOperationException { private static final long serialVersionUID = -6143714805279938260L; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/NoSuchMethodError.java --- a/jdk/src/share/classes/java/lang/NoSuchMethodError.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/NoSuchMethodError.java Wed Jul 05 19:45:17 2017 +0200 @@ -35,7 +35,7 @@ * incompatibly changed. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class NoSuchMethodError extends IncompatibleClassChangeError { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/NoSuchMethodException.java --- a/jdk/src/share/classes/java/lang/NoSuchMethodException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/NoSuchMethodException.java Wed Jul 05 19:45:17 2017 +0200 @@ -29,7 +29,7 @@ * Thrown when a particular method cannot be found. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class NoSuchMethodException extends ReflectiveOperationException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/NullPointerException.java --- a/jdk/src/share/classes/java/lang/NullPointerException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/NullPointerException.java Wed Jul 05 19:45:17 2017 +0200 @@ -47,7 +47,7 @@ * stack trace was not writable}. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class NullPointerException extends RuntimeException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Number.java --- a/jdk/src/share/classes/java/lang/Number.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Number.java Wed Jul 05 19:45:17 2017 +0200 @@ -50,7 +50,7 @@ * @author Arthur van Hoff * @jls 5.1.2 Widening Primitive Conversions * @jls 5.1.3 Narrowing Primitive Conversions - * @since JDK1.0 + * @since 1.0 */ public abstract class Number implements java.io.Serializable { /** @@ -98,7 +98,7 @@ * * @return the numeric value represented by this object after conversion * to type {@code byte}. - * @since JDK1.1 + * @since 1.1 */ public byte byteValue() { return (byte)intValue(); @@ -113,7 +113,7 @@ * * @return the numeric value represented by this object after conversion * to type {@code short}. - * @since JDK1.1 + * @since 1.1 */ public short shortValue() { return (short)intValue(); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/NumberFormatException.java --- a/jdk/src/share/classes/java/lang/NumberFormatException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/NumberFormatException.java Wed Jul 05 19:45:17 2017 +0200 @@ -32,7 +32,7 @@ * * @author unascribed * @see java.lang.Integer#parseInt(String) - * @since JDK1.0 + * @since 1.0 */ public class NumberFormatException extends IllegalArgumentException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Object.java --- a/jdk/src/share/classes/java/lang/Object.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Object.java Wed Jul 05 19:45:17 2017 +0200 @@ -32,7 +32,7 @@ * * @author unascribed * @see java.lang.Class - * @since JDK1.0 + * @since 1.0 */ public class Object { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/OutOfMemoryError.java --- a/jdk/src/share/classes/java/lang/OutOfMemoryError.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/OutOfMemoryError.java Wed Jul 05 19:45:17 2017 +0200 @@ -36,7 +36,7 @@ * writable}. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class OutOfMemoryError extends VirtualMachineError { private static final long serialVersionUID = 8228564086184010517L; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Process.java --- a/jdk/src/share/classes/java/lang/Process.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Process.java Wed Jul 05 19:45:17 2017 +0200 @@ -72,7 +72,7 @@ *

    As of 1.5, {@link ProcessBuilder#start()} is the preferred way * to create a {@code Process}. * - * @since JDK1.0 + * @since 1.0 */ public abstract class Process { /** diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Runnable.java --- a/jdk/src/share/classes/java/lang/Runnable.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Runnable.java Wed Jul 05 19:45:17 2017 +0200 @@ -50,7 +50,7 @@ * @author Arthur van Hoff * @see java.lang.Thread * @see java.util.concurrent.Callable - * @since JDK1.0 + * @since 1.0 */ @FunctionalInterface public interface Runnable { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Runtime.java --- a/jdk/src/share/classes/java/lang/Runtime.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Runtime.java Wed Jul 05 19:45:17 2017 +0200 @@ -40,7 +40,7 @@ * * @author unascribed * @see java.lang.Runtime#getRuntime() - * @since JDK1.0 + * @since 1.0 */ public class Runtime { @@ -299,7 +299,7 @@ * @see java.lang.Runtime#exit(int) * @see java.lang.Runtime#gc() * @see java.lang.SecurityManager#checkExit(int) - * @since JDK1.1 + * @since 1.1 */ @Deprecated public static void runFinalizersOnExit(boolean value) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/RuntimeException.java --- a/jdk/src/share/classes/java/lang/RuntimeException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/RuntimeException.java Wed Jul 05 19:45:17 2017 +0200 @@ -38,7 +38,7 @@ * * @author Frank Yellin * @jls 11.2 Compile-Time Checking of Exceptions - * @since JDK1.0 + * @since 1.0 */ public class RuntimeException extends Exception { static final long serialVersionUID = -7034897190745766939L; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/SecurityException.java --- a/jdk/src/share/classes/java/lang/SecurityException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/SecurityException.java Wed Jul 05 19:45:17 2017 +0200 @@ -29,7 +29,7 @@ * * @author unascribed * @see java.lang.SecurityManager - * @since JDK1.0 + * @since 1.0 */ public class SecurityException extends RuntimeException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/SecurityManager.java --- a/jdk/src/share/classes/java/lang/SecurityManager.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/SecurityManager.java Wed Jul 05 19:45:17 2017 +0200 @@ -216,7 +216,7 @@ * @see java.security.SecurityPermission SecurityPermission * @see java.security.ProtectionDomain * - * @since JDK1.0 + * @since 1.0 */ public class SecurityManager { @@ -1179,7 +1179,7 @@ * use (join/leave/send/receive) IP multicast. * @exception NullPointerException if the address argument is * null. - * @since JDK1.1 + * @since 1.1 * @see #checkPermission(java.security.Permission) checkPermission */ public void checkMulticast(InetAddress maddr) { @@ -1213,7 +1213,7 @@ * use (join/leave/send/receive) IP multicast. * @exception NullPointerException if the address argument is * null. - * @since JDK1.1 + * @since 1.1 * @deprecated Use #checkPermission(java.security.Permission) instead * @see #checkPermission(java.security.Permission) checkPermission */ @@ -1322,7 +1322,7 @@ * * @exception SecurityException if the calling thread does not have * permission to initiate a print job request. - * @since JDK1.1 + * @since 1.1 * @see #checkPermission(java.security.Permission) checkPermission */ public void checkPrintJobAccess() { @@ -1333,7 +1333,7 @@ * Throws {@code SecurityException} if the calling thread does * not have {@code AllPermission}. * - * @since JDK1.1 + * @since 1.1 * @exception SecurityException if the calling thread does not have * {@code AllPermission} * @deprecated This method was originally used to check if the calling @@ -1351,7 +1351,7 @@ * Throws {@code SecurityException} if the calling thread does * not have {@code AllPermission}. * - * @since JDK1.1 + * @since 1.1 * @exception SecurityException if the calling thread does not have * {@code AllPermission} * @deprecated This method was originally used to check if the calling @@ -1610,7 +1610,7 @@ * to check the permission {@code java.security.AllPermission}. * * @see java.lang.reflect.Member - * @since JDK1.1 + * @since 1.1 * @see #checkPermission(java.security.Permission) checkPermission */ @Deprecated @@ -1666,7 +1666,7 @@ * @exception NullPointerException if target is null. * @exception IllegalArgumentException if target is empty. * - * @since JDK1.1 + * @since 1.1 * @see #checkPermission(java.security.Permission) checkPermission */ public void checkSecurityAccess(String target) { @@ -1683,7 +1683,7 @@ * manager to return the appropriate thread group. * * @return ThreadGroup that new threads are instantiated into - * @since JDK1.1 + * @since 1.1 * @see java.lang.ThreadGroup */ public ThreadGroup getThreadGroup() { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Short.java --- a/jdk/src/share/classes/java/lang/Short.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Short.java Wed Jul 05 19:45:17 2017 +0200 @@ -38,7 +38,7 @@ * @author Nakul Saraiya * @author Joseph D. Darcy * @see java.lang.Number - * @since JDK1.1 + * @since 1.1 */ public final class Short extends Number implements Comparable { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/StackOverflowError.java --- a/jdk/src/share/classes/java/lang/StackOverflowError.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/StackOverflowError.java Wed Jul 05 19:45:17 2017 +0200 @@ -30,7 +30,7 @@ * recurses too deeply. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class StackOverflowError extends VirtualMachineError { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/String.java --- a/jdk/src/share/classes/java/lang/String.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/String.java Wed Jul 05 19:45:17 2017 +0200 @@ -105,7 +105,7 @@ * @see java.lang.StringBuffer * @see java.lang.StringBuilder * @see java.nio.charset.Charset - * @since JDK1.0 + * @since 1.0 */ public final class String @@ -404,7 +404,7 @@ * If the {@code offset} and {@code length} arguments index * characters outside the bounds of the {@code bytes} array * - * @since JDK1.1 + * @since 1.1 */ public String(byte bytes[], int offset, int length, String charsetName) throws UnsupportedEncodingException { @@ -472,7 +472,7 @@ * @throws UnsupportedEncodingException * If the named charset is not supported * - * @since JDK1.1 + * @since 1.1 */ public String(byte bytes[], String charsetName) throws UnsupportedEncodingException { @@ -527,7 +527,7 @@ * If the {@code offset} and the {@code length} arguments index * characters outside the bounds of the {@code bytes} array * - * @since JDK1.1 + * @since 1.1 */ public String(byte bytes[], int offset, int length) { checkBounds(bytes, offset, length); @@ -548,7 +548,7 @@ * @param bytes * The bytes to be decoded into characters * - * @since JDK1.1 + * @since 1.1 */ public String(byte bytes[]) { this(bytes, 0, bytes.length); @@ -898,7 +898,7 @@ * @throws UnsupportedEncodingException * If the named charset is not supported * - * @since JDK1.1 + * @since 1.1 */ public byte[] getBytes(String charsetName) throws UnsupportedEncodingException { @@ -940,7 +940,7 @@ * * @return The resultant byte array * - * @since JDK1.1 + * @since 1.1 */ public byte[] getBytes() { return StringCoding.encode(value, 0, value.length); @@ -1415,7 +1415,7 @@ * argument is an empty string or is equal to this * {@code String} object as determined by the * {@link #equals(Object)} method. - * @since 1. 0 + * @since 1.0 */ public boolean startsWith(String prefix) { return startsWith(prefix, 0); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/StringBuffer.java --- a/jdk/src/share/classes/java/lang/StringBuffer.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/StringBuffer.java Wed Jul 05 19:45:17 2017 +0200 @@ -92,7 +92,7 @@ * @author Arthur van Hoff * @see java.lang.StringBuilder * @see java.lang.String - * @since JDK1.0 + * @since 1.0 */ public final class StringBuffer extends AbstractStringBuilder @@ -656,7 +656,7 @@ } /** - * @since JDK1.0.2 + * @since 1.0.2 */ @Override public synchronized StringBuffer reverse() { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/StringIndexOutOfBoundsException.java --- a/jdk/src/share/classes/java/lang/StringIndexOutOfBoundsException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/StringIndexOutOfBoundsException.java Wed Jul 05 19:45:17 2017 +0200 @@ -33,7 +33,7 @@ * * @author unascribed * @see java.lang.String#charAt(int) - * @since JDK1.0 + * @since 1.0 */ public class StringIndexOutOfBoundsException extends IndexOutOfBoundsException { @@ -42,8 +42,6 @@ /** * Constructs a {@code StringIndexOutOfBoundsException} with no * detail message. - * - * @since JDK1.0. */ public StringIndexOutOfBoundsException() { super(); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/System.java --- a/jdk/src/share/classes/java/lang/System.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/System.java Wed Jul 05 19:45:17 2017 +0200 @@ -54,7 +54,7 @@ * method for quickly copying a portion of an array. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public final class System { @@ -144,7 +144,7 @@ * @see SecurityManager#checkPermission * @see java.lang.RuntimePermission * - * @since JDK1.1 + * @since 1.1 */ public static void setIn(InputStream in) { checkIO(); @@ -168,7 +168,7 @@ * @see SecurityManager#checkPermission * @see java.lang.RuntimePermission * - * @since JDK1.1 + * @since 1.1 */ public static void setOut(PrintStream out) { checkIO(); @@ -192,7 +192,7 @@ * @see SecurityManager#checkPermission * @see java.lang.RuntimePermission * - * @since JDK1.1 + * @since 1.1 */ public static void setErr(PrintStream err) { checkIO(); @@ -502,7 +502,7 @@ * * @param x object for which the hashCode is to be calculated * @return the hashCode - * @since JDK1.1 + * @since 1.1 */ public static native int identityHashCode(Object x); @@ -1032,7 +1032,7 @@ * @see java.lang.Runtime#exit(int) * @see java.lang.Runtime#gc() * @see java.lang.SecurityManager#checkExit(int) - * @since JDK1.1 + * @since 1.1 */ @Deprecated public static void runFinalizersOnExit(boolean value) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Thread.java --- a/jdk/src/share/classes/java/lang/Thread.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Thread.java Wed Jul 05 19:45:17 2017 +0200 @@ -135,7 +135,7 @@ * @see Runtime#exit(int) * @see #run() * @see #stop() - * @since JDK1.0 + * @since 1.0 */ public class Thread implements Runnable { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/ThreadDeath.java --- a/jdk/src/share/classes/java/lang/ThreadDeath.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/ThreadDeath.java Wed Jul 05 19:45:17 2017 +0200 @@ -43,7 +43,7 @@ * "normal occurrence", because many applications catch all * occurrences of {@code Exception} and then discard the exception. * - * @since JDK1.0 + * @since 1.0 */ public class ThreadDeath extends Error { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/ThreadGroup.java --- a/jdk/src/share/classes/java/lang/ThreadGroup.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/ThreadGroup.java Wed Jul 05 19:45:17 2017 +0200 @@ -40,7 +40,7 @@ * parent thread group or any other thread groups. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ /* The locking strategy for this code is to try to lock only one level of the * tree wherever possible, but otherwise to lock from the bottom up. @@ -90,7 +90,7 @@ * @exception SecurityException if the current thread cannot create a * thread in the specified thread group. * @see java.lang.ThreadGroup#checkAccess() - * @since JDK1.0 + * @since 1.0 */ public ThreadGroup(String name) { this(Thread.currentThread().getThreadGroup(), name); @@ -111,7 +111,7 @@ * thread in the specified thread group. * @see java.lang.SecurityException * @see java.lang.ThreadGroup#checkAccess() - * @since JDK1.0 + * @since 1.0 */ public ThreadGroup(ThreadGroup parent, String name) { this(checkParentAccess(parent), parent, name); @@ -140,7 +140,7 @@ * Returns the name of this thread group. * * @return the name of this thread group. - * @since JDK1.0 + * @since 1.0 */ public final String getName() { return name; @@ -160,7 +160,7 @@ * @see java.lang.ThreadGroup#checkAccess() * @see java.lang.SecurityException * @see java.lang.RuntimePermission - * @since JDK1.0 + * @since 1.0 */ public final ThreadGroup getParent() { if (parent != null) @@ -176,7 +176,7 @@ * @return the maximum priority that a thread in this thread group * can have. * @see #setMaxPriority - * @since JDK1.0 + * @since 1.0 */ public final int getMaxPriority() { return maxPriority; @@ -189,7 +189,7 @@ * * @return true if this thread group is a daemon thread group; * false otherwise. - * @since JDK1.0 + * @since 1.0 */ public final boolean isDaemon() { return daemon; @@ -199,7 +199,7 @@ * Tests if this thread group has been destroyed. * * @return true if this object is destroyed - * @since JDK1.1 + * @since 1.1 */ public synchronized boolean isDestroyed() { return destroyed; @@ -221,7 +221,7 @@ * this thread group. * @see java.lang.SecurityException * @see java.lang.ThreadGroup#checkAccess() - * @since JDK1.0 + * @since 1.0 */ public final void setDaemon(boolean daemon) { checkAccess(); @@ -254,7 +254,7 @@ * @see #getMaxPriority * @see java.lang.SecurityException * @see java.lang.ThreadGroup#checkAccess() - * @since JDK1.0 + * @since 1.0 */ public final void setMaxPriority(int pri) { int ngroupsSnapshot; @@ -285,7 +285,7 @@ * @return true if this thread group is the thread group * argument or one of its ancestor thread groups; * false otherwise. - * @since JDK1.0 + * @since 1.0 */ public final boolean parentOf(ThreadGroup g) { for (; g != null ; g = g.parent) { @@ -307,7 +307,7 @@ * @exception SecurityException if the current thread is not allowed to * access this thread group. * @see java.lang.SecurityManager#checkAccess(java.lang.ThreadGroup) - * @since JDK1.0 + * @since 1.0 */ public final void checkAccess() { SecurityManager security = System.getSecurityManager(); @@ -331,7 +331,7 @@ * group and in any other thread group that has this thread * group as an ancestor * - * @since JDK1.0 + * @since 1.0 */ public int activeCount() { int result; @@ -377,7 +377,7 @@ * if {@linkplain #checkAccess checkAccess} determines that * the current thread cannot access this thread group * - * @since JDK1.0 + * @since 1.0 */ public int enumerate(Thread list[]) { checkAccess(); @@ -415,7 +415,7 @@ * if {@linkplain #checkAccess checkAccess} determines that * the current thread cannot access this thread group * - * @since JDK1.0 + * @since 1.0 */ public int enumerate(Thread list[], boolean recurse) { checkAccess(); @@ -468,7 +468,7 @@ * @return the number of active thread groups with this thread group as * an ancestor * - * @since JDK1.0 + * @since 1.0 */ public int activeGroupCount() { int ngroupsSnapshot; @@ -511,7 +511,7 @@ * if {@linkplain #checkAccess checkAccess} determines that * the current thread cannot access this thread group * - * @since JDK1.0 + * @since 1.0 */ public int enumerate(ThreadGroup list[]) { checkAccess(); @@ -549,7 +549,7 @@ * if {@linkplain #checkAccess checkAccess} determines that * the current thread cannot access this thread group * - * @since JDK1.0 + * @since 1.0 */ public int enumerate(ThreadGroup list[], boolean recurse) { checkAccess(); @@ -603,7 +603,7 @@ * @see java.lang.SecurityException * @see java.lang.Thread#stop() * @see java.lang.ThreadGroup#checkAccess() - * @since JDK1.0 + * @since 1.0 * @deprecated This method is inherently unsafe. See * {@link Thread#stop} for details. */ @@ -665,7 +665,7 @@ * @see java.lang.Thread#suspend() * @see java.lang.SecurityException * @see java.lang.ThreadGroup#checkAccess() - * @since JDK1.0 + * @since 1.0 * @deprecated This method is inherently deadlock-prone. See * {@link Thread#suspend} for details. */ @@ -726,7 +726,7 @@ * @see java.lang.SecurityException * @see java.lang.Thread#resume() * @see java.lang.ThreadGroup#checkAccess() - * @since JDK1.0 + * @since 1.0 * @deprecated This method is used solely in conjunction with * Thread.suspend and ThreadGroup.suspend, * both of which have been deprecated, as they are inherently @@ -767,7 +767,7 @@ * @exception SecurityException if the current thread cannot modify this * thread group. * @see java.lang.ThreadGroup#checkAccess() - * @since JDK1.0 + * @since 1.0 */ public final void destroy() { int ngroupsSnapshot; @@ -980,7 +980,7 @@ * Prints information about this thread group to the standard * output. This method is useful only for debugging. * - * @since JDK1.0 + * @since 1.0 */ public void list() { list(System.out, 0); @@ -1045,7 +1045,7 @@ * * @param t the thread that is about to exit. * @param e the uncaught exception. - * @since JDK1.0 + * @since 1.0 */ public void uncaughtException(Thread t, Throwable e) { if (parent != null) { @@ -1068,7 +1068,7 @@ * * @param b boolean to allow or disallow suspension * @return true on success - * @since JDK1.1 + * @since 1.1 * @deprecated The definition of this call depends on {@link #suspend}, * which is deprecated. Further, the behavior of this call * was never specified. @@ -1086,7 +1086,7 @@ * Returns a string representation of this Thread group. * * @return a string representation of this thread group. - * @since JDK1.0 + * @since 1.0 */ public String toString() { return getClass().getName() + "[name=" + getName() + ",maxpri=" + maxPriority + "]"; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Throwable.java --- a/jdk/src/share/classes/java/lang/Throwable.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Throwable.java Wed Jul 05 19:45:17 2017 +0200 @@ -109,7 +109,7 @@ * @author Josh Bloch (Added exception chaining and programmatic access to * stack trace in 1.4.) * @jls 11.2 Compile-Time Checking of Exceptions - * @since JDK1.0 + * @since 1.0 */ public class Throwable implements Serializable { /** use serialVersionUID from JDK 1.0.2 for interoperability */ @@ -385,7 +385,7 @@ * {@code getMessage()}. * * @return The localized description of this throwable. - * @since JDK1.1 + * @since 1.1 */ public String getLocalizedMessage() { return getMessage(); @@ -714,7 +714,7 @@ * print writer. * * @param s {@code PrintWriter} to use for output - * @since JDK1.1 + * @since 1.1 */ public void printStackTrace(PrintWriter s) { printStackTrace(new WrappedPrintWriter(s)); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/UnknownError.java --- a/jdk/src/share/classes/java/lang/UnknownError.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/UnknownError.java Wed Jul 05 19:45:17 2017 +0200 @@ -30,7 +30,7 @@ * Java Virtual Machine. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class UnknownError extends VirtualMachineError { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/UnsatisfiedLinkError.java --- a/jdk/src/share/classes/java/lang/UnsatisfiedLinkError.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/UnsatisfiedLinkError.java Wed Jul 05 19:45:17 2017 +0200 @@ -31,7 +31,7 @@ * * @author unascribed * @see java.lang.Runtime - * @since JDK1.0 + * @since 1.0 */ public class UnsatisfiedLinkError extends LinkageError { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/VerifyError.java --- a/jdk/src/share/classes/java/lang/VerifyError.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/VerifyError.java Wed Jul 05 19:45:17 2017 +0200 @@ -31,7 +31,7 @@ * or security problem. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class VerifyError extends LinkageError { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/VirtualMachineError.java --- a/jdk/src/share/classes/java/lang/VirtualMachineError.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/VirtualMachineError.java Wed Jul 05 19:45:17 2017 +0200 @@ -31,7 +31,7 @@ * * * @author Frank Yellin - * @since JDK1.0 + * @since 1.0 */ abstract public class VirtualMachineError extends Error { private static final long serialVersionUID = 4161983926571568670L; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/Void.java --- a/jdk/src/share/classes/java/lang/Void.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/Void.java Wed Jul 05 19:45:17 2017 +0200 @@ -31,7 +31,7 @@ * void. * * @author unascribed - * @since JDK1.1 + * @since 1.1 */ public final class Void { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/instrument/package.html --- a/jdk/src/share/classes/java/lang/instrument/package.html Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/instrument/package.html Wed Jul 05 19:45:17 2017 +0200 @@ -274,7 +274,7 @@

  • JDK Tools and Utilities -@since JDK1.5 +@since 1.5 @revised 1.6 diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/invoke/MethodHandles.java --- a/jdk/src/share/classes/java/lang/invoke/MethodHandles.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/invoke/MethodHandles.java Wed Jul 05 19:45:17 2017 +0200 @@ -1612,23 +1612,30 @@ checkSecurityManager(refc, method); assert(!method.isMethodHandleInvoke()); - Class refcAsSuper; if (refKind == REF_invokeSpecial && refc != lookupClass() && !refc.isInterface() && - refc != (refcAsSuper = lookupClass().getSuperclass()) && + refc != lookupClass().getSuperclass() && refc.isAssignableFrom(lookupClass())) { assert(!method.getName().equals("")); // not this code path // Per JVMS 6.5, desc. of invokespecial instruction: // If the method is in a superclass of the LC, // and if our original search was above LC.super, - // repeat the search (symbolic lookup) from LC.super. + // repeat the search (symbolic lookup) from LC.super + // and continue with the direct superclass of that class, + // and so forth, until a match is found or no further superclasses exist. // FIXME: MemberName.resolve should handle this instead. - MemberName m2 = new MemberName(refcAsSuper, - method.getName(), - method.getMethodType(), - REF_invokeSpecial); - m2 = IMPL_NAMES.resolveOrNull(refKind, m2, lookupClassOrNull()); + Class refcAsSuper = lookupClass(); + MemberName m2; + do { + refcAsSuper = refcAsSuper.getSuperclass(); + m2 = new MemberName(refcAsSuper, + method.getName(), + method.getMethodType(), + REF_invokeSpecial); + m2 = IMPL_NAMES.resolveOrNull(refKind, m2, lookupClassOrNull()); + } while (m2 == null && // no method is found yet + refc != refcAsSuper); // search up to refc if (m2 == null) throw new InternalError(method.toString()); method = m2; refc = refcAsSuper; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/package-info.java --- a/jdk/src/share/classes/java/lang/package-info.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/package-info.java Wed Jul 05 19:45:17 2017 +0200 @@ -66,6 +66,6 @@ * that must be supported by every implementation of the Java * platform. * - * @since JDK1.0 + * @since 1.0 */ package java.lang; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/lang/reflect/package-info.java --- a/jdk/src/share/classes/java/lang/reflect/package-info.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/lang/reflect/package-info.java Wed Jul 05 19:45:17 2017 +0200 @@ -44,6 +44,6 @@ * members of a target object (based on its runtime class) or the * members declared by a given class. * - * @since JDK1.1 + * @since 1.1 */ package java.lang.reflect; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/math/BigInteger.java --- a/jdk/src/share/classes/java/math/BigInteger.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/math/BigInteger.java Wed Jul 05 19:45:17 2017 +0200 @@ -117,7 +117,7 @@ * @author Michael McCloskey * @author Alan Eliasen * @author Timothy Buktu - * @since JDK1.1 + * @since 1.1 */ public class BigInteger extends Number implements Comparable { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/math/package-info.java --- a/jdk/src/share/classes/java/math/package-info.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/math/package-info.java Wed Jul 05 19:45:17 2017 +0200 @@ -40,6 +40,6 @@ * allowing the user to choose from a comprehensive set of eight * rounding modes. * - * @since JDK1.1 + * @since 1.1 */ package java.math; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/BindException.java --- a/jdk/src/share/classes/java/net/BindException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/BindException.java Wed Jul 05 19:45:17 2017 +0200 @@ -30,7 +30,7 @@ * socket to a local address and port. Typically, the port is * in use, or the requested local address could not be assigned. * - * @since JDK1.1 + * @since 1.1 */ public class BindException extends SocketException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/ConnectException.java --- a/jdk/src/share/classes/java/net/ConnectException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/ConnectException.java Wed Jul 05 19:45:17 2017 +0200 @@ -31,7 +31,7 @@ * was refused remotely (e.g., no process is listening on the * remote address/port). * - * @since JDK1.1 + * @since 1.1 */ public class ConnectException extends SocketException { private static final long serialVersionUID = 3831404271622369215L; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/ContentHandler.java --- a/jdk/src/share/classes/java/net/ContentHandler.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/ContentHandler.java Wed Jul 05 19:45:17 2017 +0200 @@ -79,7 +79,7 @@ * @see java.net.URLConnection * @see java.net.URLConnection#getContent() * @see java.net.URLConnection#setContentHandlerFactory(java.net.ContentHandlerFactory) - * @since JDK1.0 + * @since 1.0 */ abstract public class ContentHandler { /** diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/ContentHandlerFactory.java --- a/jdk/src/share/classes/java/net/ContentHandlerFactory.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/ContentHandlerFactory.java Wed Jul 05 19:45:17 2017 +0200 @@ -36,7 +36,7 @@ * @author James Gosling * @see java.net.ContentHandler * @see java.net.URLStreamHandler - * @since JDK1.0 + * @since 1.0 */ public interface ContentHandlerFactory { /** diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/DatagramPacket.java --- a/jdk/src/share/classes/java/net/DatagramPacket.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/DatagramPacket.java Wed Jul 05 19:45:17 2017 +0200 @@ -37,7 +37,7 @@ * * @author Pavani Diwanji * @author Benjamin Renaud - * @since JDK1.0 + * @since 1.0 */ public final class DatagramPacket { @@ -276,7 +276,7 @@ * Sets the IP address of the machine to which this datagram * is being sent. * @param iaddr the {@code InetAddress} - * @since JDK1.1 + * @since 1.1 * @see #getAddress() */ public synchronized void setAddress(InetAddress iaddr) { @@ -287,7 +287,7 @@ * Sets the port number on the remote host to which this datagram * is being sent. * @param iport the port number - * @since JDK1.1 + * @since 1.1 * @see #getPort() */ public synchronized void setPort(int iport) { @@ -342,7 +342,7 @@ * @see #getLength * @see #getData * - * @since JDK1.1 + * @since 1.1 */ public synchronized void setData(byte[] buf) { if (buf == null) { @@ -370,7 +370,7 @@ * @see #getLength * @see #setData * - * @since JDK1.1 + * @since 1.1 */ public synchronized void setLength(int length) { if ((length + offset) > buf.length || length < 0 || diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/DatagramSocket.java --- a/jdk/src/share/classes/java/net/DatagramSocket.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/DatagramSocket.java Wed Jul 05 19:45:17 2017 +0200 @@ -63,7 +63,7 @@ * @author Pavani Diwanji * @see java.net.DatagramPacket * @see java.nio.channels.DatagramChannel - * @since JDK1.0 + * @since 1.0 */ public class DatagramSocket implements java.io.Closeable { @@ -275,7 +275,7 @@ * {@code checkListen} method doesn't allow the operation. * * @see SecurityManager#checkListen - * @since JDK1.1 + * @since 1.1 */ public DatagramSocket(int port, InetAddress laddr) throws SocketException { this(new InetSocketAddress(laddr, port)); @@ -852,7 +852,7 @@ * * @param timeout the specified timeout in milliseconds. * @throws SocketException if there is an error in the underlying protocol, such as an UDP error. - * @since JDK1.1 + * @since 1.1 * @see #getSoTimeout() */ public synchronized void setSoTimeout(int timeout) throws SocketException { @@ -867,7 +867,7 @@ * * @return the setting for SO_TIMEOUT * @throws SocketException if there is an error in the underlying protocol, such as an UDP error. - * @since JDK1.1 + * @since 1.1 * @see #setSoTimeout(int) */ public synchronized int getSoTimeout() throws SocketException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/DatagramSocketImpl.java --- a/jdk/src/share/classes/java/net/DatagramSocketImpl.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/DatagramSocketImpl.java Wed Jul 05 19:45:17 2017 +0200 @@ -34,7 +34,7 @@ /** * Abstract datagram and multicast socket implementation base class. * @author Pavani Diwanji - * @since JDK1.1 + * @since 1.1 */ public abstract class DatagramSocketImpl implements SocketOptions { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/FileNameMap.java --- a/jdk/src/share/classes/java/net/FileNameMap.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/FileNameMap.java Wed Jul 05 19:45:17 2017 +0200 @@ -30,7 +30,7 @@ * between a file name and a MIME type string. * * @author Steven B. Byrne - * @since JDK1.1 + * @since 1.1 */ public interface FileNameMap { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/HttpURLConnection.java --- a/jdk/src/share/classes/java/net/HttpURLConnection.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/HttpURLConnection.java Wed Jul 05 19:45:17 2017 +0200 @@ -64,7 +64,7 @@ * redirected host/URL. * * @see java.net.HttpURLConnection#disconnect() - * @since JDK1.1 + * @since 1.1 */ abstract public class HttpURLConnection extends URLConnection { /* instance variables */ diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/Inet4Address.java --- a/jdk/src/share/classes/java/net/Inet4Address.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/Inet4Address.java Wed Jul 05 19:45:17 2017 +0200 @@ -155,7 +155,7 @@ * address i.e first four bits of the address are 1110. * @return a {@code boolean} indicating if the InetAddress is * an IP multicast address - * @since JDK1.1 + * @since 1.1 */ public boolean isMulticastAddress() { return ((holder().getAddress() & 0xf0000000) == 0xe0000000); @@ -320,7 +320,7 @@ * Returns the IP address string in textual presentation form. * * @return the raw IP address in a string format. - * @since JDK1.0.2 + * @since 1.0.2 */ public String getHostAddress() { return numericToTextFormat(getAddress()); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/Inet6Address.java --- a/jdk/src/share/classes/java/net/Inet6Address.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/Inet6Address.java Wed Jul 05 19:45:17 2017 +0200 @@ -683,7 +683,7 @@ * @return a {@code boolean} indicating if the InetAddress is an IP * multicast address * - * @since JDK1.1 + * @since 1.1 */ @Override public boolean isMulticastAddress() { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/InetAddress.java --- a/jdk/src/share/classes/java/net/InetAddress.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/InetAddress.java Wed Jul 05 19:45:17 2017 +0200 @@ -183,7 +183,7 @@ * @see java.net.InetAddress#getAllByName(java.lang.String) * @see java.net.InetAddress#getByName(java.lang.String) * @see java.net.InetAddress#getLocalHost() - * @since JDK1.0 + * @since 1.0 */ public class InetAddress implements java.io.Serializable { @@ -305,7 +305,7 @@ * IP multicast address. * @return a {@code boolean} indicating if the InetAddress is * an IP multicast address - * @since JDK1.1 + * @since 1.1 */ public boolean isMulticastAddress() { return false; @@ -654,7 +654,7 @@ * Returns the IP address string in textual presentation. * * @return the raw IP address in a string format. - * @since JDK1.0.2 + * @since 1.0.2 */ public String getHostAddress() { return null; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/MalformedURLException.java --- a/jdk/src/share/classes/java/net/MalformedURLException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/MalformedURLException.java Wed Jul 05 19:45:17 2017 +0200 @@ -33,7 +33,7 @@ * string could not be parsed. * * @author Arthur van Hoff - * @since JDK1.0 + * @since 1.0 */ public class MalformedURLException extends IOException { private static final long serialVersionUID = -182787522200415866L; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/MulticastSocket.java --- a/jdk/src/share/classes/java/net/MulticastSocket.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/MulticastSocket.java Wed Jul 05 19:45:17 2017 +0200 @@ -77,7 +77,7 @@ * Currently applets are not allowed to use multicast sockets. * * @author Pavani Diwanji - * @since JDK1.1 + * @since 1.1 */ public class MulticastSocket extends DatagramSocket { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/NoRouteToHostException.java --- a/jdk/src/share/classes/java/net/NoRouteToHostException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/NoRouteToHostException.java Wed Jul 05 19:45:17 2017 +0200 @@ -31,7 +31,7 @@ * host cannot be reached because of an intervening firewall, or * if an intermediate router is down. * - * @since JDK1.1 + * @since 1.1 */ public class NoRouteToHostException extends SocketException { private static final long serialVersionUID = -1897550894873493790L; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/ProtocolException.java --- a/jdk/src/share/classes/java/net/ProtocolException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/ProtocolException.java Wed Jul 05 19:45:17 2017 +0200 @@ -32,7 +32,7 @@ * protocol, such as a TCP error. * * @author Chris Warth - * @since JDK1.0 + * @since 1.0 */ public class ProtocolException extends IOException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/ServerSocket.java --- a/jdk/src/share/classes/java/net/ServerSocket.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/ServerSocket.java Wed Jul 05 19:45:17 2017 +0200 @@ -48,7 +48,7 @@ * @see java.net.SocketImpl * @see java.net.ServerSocket#setSocketFactory(java.net.SocketImplFactory) * @see java.nio.channels.ServerSocketChannel - * @since JDK1.0 + * @since 1.0 */ public class ServerSocket implements java.io.Closeable { @@ -225,7 +225,7 @@ * @see SocketOptions * @see SocketImpl * @see SecurityManager#checkListen - * @since JDK1.1 + * @since 1.1 */ public ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException { setImpl(); @@ -527,7 +527,7 @@ * and the channel is in non-blocking mode * @throws IOException if an I/O error occurs when waiting * for a connection. - * @since JDK1.1 + * @since 1.1 * @revised 1.4 * @spec JSR-51 */ @@ -644,7 +644,7 @@ * @param timeout the specified timeout, in milliseconds * @exception SocketException if there is an error in * the underlying protocol, such as a TCP error. - * @since JDK1.1 + * @since 1.1 * @see #getSoTimeout() */ public synchronized void setSoTimeout(int timeout) throws SocketException { @@ -658,7 +658,7 @@ * 0 returns implies that the option is disabled (i.e., timeout of infinity). * @return the {@link SocketOptions#SO_TIMEOUT SO_TIMEOUT} value * @exception IOException if an I/O error occurs - * @since JDK1.1 + * @since 1.1 * @see #setSoTimeout(int) */ public synchronized int getSoTimeout() throws IOException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/Socket.java --- a/jdk/src/share/classes/java/net/Socket.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/Socket.java Wed Jul 05 19:45:17 2017 +0200 @@ -50,7 +50,7 @@ * @see java.net.Socket#setSocketImplFactory(java.net.SocketImplFactory) * @see java.net.SocketImpl * @see java.nio.channels.SocketChannel - * @since JDK1.0 + * @since 1.0 */ public class Socket implements java.io.Closeable { @@ -79,7 +79,7 @@ * Creates an unconnected socket, with the * system-default type of SocketImpl. * - * @since JDK1.1 + * @since 1.1 * @revised 1.4 */ public Socket() { @@ -161,7 +161,7 @@ * * @exception SocketException if there is an error in the underlying protocol, * such as a TCP error. - * @since JDK1.1 + * @since 1.1 */ protected Socket(SocketImpl impl) throws SocketException { this.impl = impl; @@ -281,7 +281,7 @@ * parameter is outside the specified range of valid port values, * which is between 0 and 65535, inclusive. * @see SecurityManager#checkConnect - * @since JDK1.1 + * @since 1.1 */ public Socket(String host, int port, InetAddress localAddr, int localPort) throws IOException { @@ -323,7 +323,7 @@ * which is between 0 and 65535, inclusive. * @exception NullPointerException if {@code address} is null. * @see SecurityManager#checkConnect - * @since JDK1.1 + * @since 1.1 */ public Socket(InetAddress address, int port, InetAddress localAddr, int localPort) throws IOException { @@ -708,7 +708,7 @@ * @return the local address to which the socket is bound, * the loopback address if denied by the security manager, or * the wildcard address if the socket is closed or not bound yet. - * @since JDK1.1 + * @since 1.1 * * @see SecurityManager#checkConnect */ @@ -972,7 +972,7 @@ * @exception SocketException if there is an error * in the underlying protocol, such as a TCP error. * - * @since JDK1.1 + * @since 1.1 * * @see #getTcpNoDelay() */ @@ -989,7 +989,7 @@ * {@link SocketOptions#TCP_NODELAY TCP_NODELAY} is enabled. * @exception SocketException if there is an error * in the underlying protocol, such as a TCP error. - * @since JDK1.1 + * @since 1.1 * @see #setTcpNoDelay(boolean) */ public boolean getTcpNoDelay() throws SocketException { @@ -1010,7 +1010,7 @@ * @exception SocketException if there is an error * in the underlying protocol, such as a TCP error. * @exception IllegalArgumentException if the linger value is negative. - * @since JDK1.1 + * @since 1.1 * @see #getSoLinger() */ public void setSoLinger(boolean on, int linger) throws SocketException { @@ -1038,7 +1038,7 @@ * @return the setting for {@link SocketOptions#SO_LINGER SO_LINGER}. * @exception SocketException if there is an error * in the underlying protocol, such as a TCP error. - * @since JDK1.1 + * @since 1.1 * @see #setSoLinger(boolean, int) */ public int getSoLinger() throws SocketException { @@ -1131,7 +1131,7 @@ * @param timeout the specified timeout, in milliseconds. * @exception SocketException if there is an error * in the underlying protocol, such as a TCP error. - * @since JDK 1.1 + * @since 1.1 * @see #getSoTimeout() */ public synchronized void setSoTimeout(int timeout) throws SocketException { @@ -1151,7 +1151,7 @@ * @exception SocketException if there is an error * in the underlying protocol, such as a TCP error. * - * @since JDK1.1 + * @since 1.1 * @see #setSoTimeout(int) */ public synchronized int getSoTimeout() throws SocketException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/SocketException.java --- a/jdk/src/share/classes/java/net/SocketException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/SocketException.java Wed Jul 05 19:45:17 2017 +0200 @@ -31,7 +31,7 @@ * Thrown to indicate that there is an error creating or accessing a Socket. * * @author Jonathan Payne - * @since JDK1.0 + * @since 1.0 */ public class SocketException extends IOException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/SocketImpl.java --- a/jdk/src/share/classes/java/net/SocketImpl.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/SocketImpl.java Wed Jul 05 19:45:17 2017 +0200 @@ -42,7 +42,7 @@ * described, without attempting to go through a firewall or proxy. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public abstract class SocketImpl implements SocketOptions { /** diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/SocketImplFactory.java --- a/jdk/src/share/classes/java/net/SocketImplFactory.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/SocketImplFactory.java Wed Jul 05 19:45:17 2017 +0200 @@ -34,7 +34,7 @@ * @author Arthur van Hoff * @see java.net.Socket * @see java.net.ServerSocket - * @since JDK1.0 + * @since 1.0 */ public interface SocketImplFactory { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/URL.java --- a/jdk/src/share/classes/java/net/URL.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/URL.java Wed Jul 05 19:45:17 2017 +0200 @@ -131,7 +131,7 @@ * as the encoding scheme defined in RFC2396. * * @author James Gosling - * @since JDK1.0 + * @since 1.0 */ public final class URL implements java.io.Serializable { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/URLConnection.java --- a/jdk/src/share/classes/java/net/URLConnection.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/URLConnection.java Wed Jul 05 19:45:17 2017 +0200 @@ -155,7 +155,7 @@ * @see java.net.URLConnection#setIfModifiedSince(long) * @see java.net.URLConnection#setRequestProperty(java.lang.String, java.lang.String) * @see java.net.URLConnection#setUseCaches(boolean) - * @since JDK1.0 + * @since 1.0 */ public abstract class URLConnection { @@ -283,7 +283,7 @@ private MessageHeader requests; /** - * @since JDK1.1 + * @since 1.1 */ private static FileNameMap fileNameMap; @@ -495,7 +495,7 @@ * @return the content length of the resource that this connection's URL * references, or {@code -1} if the content length is * not known. - * @since 7.0 + * @since 1.7 */ public long getContentLengthLong() { return getHeaderFieldLong("content-length", -1); @@ -623,7 +623,7 @@ * @return the value of the named field, parsed as a long. The * {@code Default} value is returned if the field is * missing or malformed. - * @since 7.0 + * @since 1.7 */ public long getHeaderFieldLong(String name, long Default) { String value = getHeaderField(name); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/URLEncoder.java --- a/jdk/src/share/classes/java/net/URLEncoder.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/URLEncoder.java Wed Jul 05 19:45:17 2017 +0200 @@ -77,7 +77,7 @@ * character @ is encoded as one byte 40 (hex). * * @author Herb Jellinek - * @since JDK1.0 + * @since 1.0 */ public class URLEncoder { static BitSet dontNeedEncoding; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/URLStreamHandler.java --- a/jdk/src/share/classes/java/net/URLStreamHandler.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/URLStreamHandler.java Wed Jul 05 19:45:17 2017 +0200 @@ -47,7 +47,7 @@ * * @author James Gosling * @see java.net.URL#URL(java.lang.String, java.lang.String, int, java.lang.String) - * @since JDK1.0 + * @since 1.0 */ public abstract class URLStreamHandler { /** diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/URLStreamHandlerFactory.java --- a/jdk/src/share/classes/java/net/URLStreamHandlerFactory.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/URLStreamHandlerFactory.java Wed Jul 05 19:45:17 2017 +0200 @@ -35,7 +35,7 @@ * @author Arthur van Hoff * @see java.net.URL * @see java.net.URLStreamHandler - * @since JDK1.0 + * @since 1.0 */ public interface URLStreamHandlerFactory { /** diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/UnknownHostException.java --- a/jdk/src/share/classes/java/net/UnknownHostException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/UnknownHostException.java Wed Jul 05 19:45:17 2017 +0200 @@ -31,7 +31,7 @@ * Thrown to indicate that the IP address of a host could not be determined. * * @author Jonathan Payne - * @since JDK1.0 + * @since 1.0 */ public class UnknownHostException extends IOException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/UnknownServiceException.java --- a/jdk/src/share/classes/java/net/UnknownServiceException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/UnknownServiceException.java Wed Jul 05 19:45:17 2017 +0200 @@ -34,7 +34,7 @@ * read-only URL connection. * * @author unascribed - * @since JDK1.0 + * @since 1.0 */ public class UnknownServiceException extends IOException { private static final long serialVersionUID = -4169033248853639508L; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/net/package-info.java --- a/jdk/src/share/classes/java/net/package-info.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/net/package-info.java Wed Jul 05 19:45:17 2017 +0200 @@ -156,6 +156,6 @@ * Networking System Properties
  • * * - * @since JDK1.0 + * @since 1.0 */ package java.net; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/AccessException.java --- a/jdk/src/share/classes/java/rmi/AccessException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/AccessException.java Wed Jul 05 19:45:17 2017 +0200 @@ -36,7 +36,7 @@ * * @author Ann Wollrath * @author Roger Riggs - * @since JDK1.1 + * @since 1.1 * @see java.rmi.Naming * @see java.rmi.activation.ActivationSystem */ @@ -50,7 +50,7 @@ * detail message. * * @param s the detail message - * @since JDK1.1 + * @since 1.1 */ public AccessException(String s) { super(s); @@ -62,7 +62,7 @@ * * @param s the detail message * @param ex the nested exception - * @since JDK1.1 + * @since 1.1 */ public AccessException(String s, Exception ex) { super(s, ex); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/AlreadyBoundException.java --- a/jdk/src/share/classes/java/rmi/AlreadyBoundException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/AlreadyBoundException.java Wed Jul 05 19:45:17 2017 +0200 @@ -29,7 +29,7 @@ * is made to bind an object in the registry to a name that already * has an associated binding. * - * @since JDK1.1 + * @since 1.1 * @author Ann Wollrath * @author Roger Riggs * @see java.rmi.Naming#bind(String, java.rmi.Remote) @@ -43,7 +43,7 @@ /** * Constructs an AlreadyBoundException with no * specified detail message. - * @since JDK1.1 + * @since 1.1 */ public AlreadyBoundException() { super(); @@ -54,7 +54,7 @@ * detail message. * * @param s the detail message - * @since JDK1.1 + * @since 1.1 */ public AlreadyBoundException(String s) { super(s); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/ConnectException.java --- a/jdk/src/share/classes/java/rmi/ConnectException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/ConnectException.java Wed Jul 05 19:45:17 2017 +0200 @@ -30,7 +30,7 @@ * to the remote host for a remote method call. * * @author Ann Wollrath - * @since JDK1.1 + * @since 1.1 */ public class ConnectException extends RemoteException { @@ -42,7 +42,7 @@ * detail message. * * @param s the detail message - * @since JDK1.1 + * @since 1.1 */ public ConnectException(String s) { super(s); @@ -54,7 +54,7 @@ * * @param s the detail message * @param ex the nested exception - * @since JDK1.1 + * @since 1.1 */ public ConnectException(String s, Exception ex) { super(s, ex); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/ConnectIOException.java --- a/jdk/src/share/classes/java/rmi/ConnectIOException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/ConnectIOException.java Wed Jul 05 19:45:17 2017 +0200 @@ -31,7 +31,7 @@ * to the remote host for a remote method call. * * @author Ann Wollrath - * @since JDK1.1 + * @since 1.1 */ public class ConnectIOException extends RemoteException { @@ -43,7 +43,7 @@ * detail message. * * @param s the detail message - * @since JDK1.1 + * @since 1.1 */ public ConnectIOException(String s) { super(s); @@ -56,7 +56,7 @@ * * @param s the detail message * @param ex the nested exception - * @since JDK1.1 + * @since 1.1 */ public ConnectIOException(String s, Exception ex) { super(s, ex); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/MarshalException.java --- a/jdk/src/share/classes/java/rmi/MarshalException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/MarshalException.java Wed Jul 05 19:45:17 2017 +0200 @@ -39,7 +39,7 @@ * "at most once" call semantics. * * @author Ann Wollrath - * @since JDK1.1 + * @since 1.1 */ public class MarshalException extends RemoteException { @@ -51,7 +51,7 @@ * detail message. * * @param s the detail message - * @since JDK1.1 + * @since 1.1 */ public MarshalException(String s) { super(s); @@ -63,7 +63,7 @@ * * @param s the detail message * @param ex the nested exception - * @since JDK1.1 + * @since 1.1 */ public MarshalException(String s, Exception ex) { super(s, ex); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/Naming.java --- a/jdk/src/share/classes/java/rmi/Naming.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/Naming.java Wed Jul 05 19:45:17 2017 +0200 @@ -64,7 +64,7 @@ * * @author Ann Wollrath * @author Roger Riggs - * @since JDK1.1 + * @since 1.1 * @see java.rmi.registry.Registry * @see java.rmi.registry.LocateRegistry * @see java.rmi.registry.LocateRegistry#createRegistry(int) @@ -86,7 +86,7 @@ * @exception AccessException if this operation is not permitted * @exception MalformedURLException if the name is not an appropriately * formatted URL - * @since JDK1.1 + * @since 1.1 */ public static Remote lookup(String name) throws NotBoundException, @@ -112,7 +112,7 @@ * @exception RemoteException if registry could not be contacted * @exception AccessException if this operation is not permitted (if * originating from a non-local host, for example) - * @since JDK1.1 + * @since 1.1 */ public static void bind(String name, Remote obj) throws AlreadyBoundException, @@ -139,7 +139,7 @@ * @exception RemoteException if registry could not be contacted * @exception AccessException if this operation is not permitted (if * originating from a non-local host, for example) - * @since JDK1.1 + * @since 1.1 */ public static void unbind(String name) throws RemoteException, @@ -163,7 +163,7 @@ * @exception RemoteException if registry could not be contacted * @exception AccessException if this operation is not permitted (if * originating from a non-local host, for example) - * @since JDK1.1 + * @since 1.1 */ public static void rebind(String name, Remote obj) throws RemoteException, java.net.MalformedURLException @@ -190,7 +190,7 @@ * @exception MalformedURLException if the name is not an appropriately * formatted URL * @exception RemoteException if registry could not be contacted. - * @since JDK1.1 + * @since 1.1 */ public static String[] list(String name) throws RemoteException, java.net.MalformedURLException diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/NoSuchObjectException.java --- a/jdk/src/share/classes/java/rmi/NoSuchObjectException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/NoSuchObjectException.java Wed Jul 05 19:45:17 2017 +0200 @@ -39,7 +39,7 @@ * java.rmi.activation.Activatable and * * @author Ann Wollrath - * @since JDK1.1 + * @since 1.1 * @see java.rmi.server.RemoteObject#toStub(Remote) * @see java.rmi.server.UnicastRemoteObject#unexportObject(Remote,boolean) * @see java.rmi.activation.Activatable#unexportObject(Remote,boolean) @@ -54,7 +54,7 @@ * detail message. * * @param s the detail message - * @since JDK1.1 + * @since 1.1 */ public NoSuchObjectException(String s) { super(s); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/NotBoundException.java --- a/jdk/src/share/classes/java/rmi/NotBoundException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/NotBoundException.java Wed Jul 05 19:45:17 2017 +0200 @@ -29,7 +29,7 @@ * is made to lookup or unbind in the registry a name that has * no associated binding. * - * @since JDK1.1 + * @since 1.1 * @author Ann Wollrath * @author Roger Riggs * @see java.rmi.Naming#lookup(String) @@ -45,7 +45,7 @@ /** * Constructs a NotBoundException with no * specified detail message. - * @since JDK1.1 + * @since 1.1 */ public NotBoundException() { super(); @@ -56,7 +56,7 @@ * detail message. * * @param s the detail message - * @since JDK1.1 + * @since 1.1 */ public NotBoundException(String s) { super(s); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/RMISecurityException.java --- a/jdk/src/share/classes/java/rmi/RMISecurityException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/RMISecurityException.java Wed Jul 05 19:45:17 2017 +0200 @@ -30,7 +30,7 @@ * java.rmi.RMISecurityManager's methods. * * @author Roger Riggs - * @since JDK1.1 + * @since 1.1 * @deprecated Use {@link java.lang.SecurityException} instead. * Application code should never directly reference this class, and * RMISecurityManager no longer throws this subclass of @@ -45,7 +45,7 @@ /** * Construct an RMISecurityException with a detail message. * @param name the detail message - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -57,7 +57,7 @@ * Construct an RMISecurityException with a detail message. * @param name the detail message * @param arg ignored - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/RMISecurityManager.java --- a/jdk/src/share/classes/java/rmi/RMISecurityManager.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/RMISecurityManager.java Wed Jul 05 19:45:17 2017 +0200 @@ -52,7 +52,7 @@ * * @author Roger Riggs * @author Peter Jones - * @since JDK1.1 + * @since 1.1 * @deprecated Use {@link SecurityManager} instead. */ @Deprecated @@ -60,7 +60,7 @@ /** * Constructs a new {@code RMISecurityManager}. - * @since JDK1.1 + * @since 1.1 */ public RMISecurityManager() { } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/Remote.java --- a/jdk/src/share/classes/java/rmi/Remote.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/Remote.java Wed Jul 05 19:45:17 2017 +0200 @@ -42,7 +42,7 @@ *

    For complete details on RMI, see the RMI Specification which describes the RMI API and system. * - * @since JDK1.1 + * @since 1.1 * @author Ann Wollrath * @see java.rmi.server.UnicastRemoteObject * @see java.rmi.activation.Activatable diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/RemoteException.java --- a/jdk/src/share/classes/java/rmi/RemoteException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/RemoteException.java Wed Jul 05 19:45:17 2017 +0200 @@ -44,7 +44,7 @@ * IllegalStateException}. * * @author Ann Wollrath - * @since JDK1.1 + * @since 1.1 */ public class RemoteException extends java.io.IOException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/ServerError.java --- a/jdk/src/share/classes/java/rmi/ServerError.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/ServerError.java Wed Jul 05 19:45:17 2017 +0200 @@ -35,7 +35,7 @@ * Error that occurred as its cause. * * @author Ann Wollrath - * @since JDK1.1 + * @since 1.1 */ public class ServerError extends RemoteException { @@ -48,7 +48,7 @@ * * @param s the detail message * @param err the nested error - * @since JDK1.1 + * @since 1.1 */ public ServerError(String s, Error err) { super(s, err); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/ServerException.java --- a/jdk/src/share/classes/java/rmi/ServerException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/ServerException.java Wed Jul 05 19:45:17 2017 +0200 @@ -35,7 +35,7 @@ * RemoteException that occurred as its cause. * * @author Ann Wollrath - * @since JDK1.1 + * @since 1.1 */ public class ServerException extends RemoteException { @@ -47,7 +47,7 @@ * detail message. * * @param s the detail message - * @since JDK1.1 + * @since 1.1 */ public ServerException(String s) { super(s); @@ -59,7 +59,7 @@ * * @param s the detail message * @param ex the nested exception - * @since JDK1.1 + * @since 1.1 */ public ServerException(String s, Exception ex) { super(s, ex); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/ServerRuntimeException.java --- a/jdk/src/share/classes/java/rmi/ServerRuntimeException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/ServerRuntimeException.java Wed Jul 05 19:45:17 2017 +0200 @@ -40,7 +40,7 @@ * executing on the Java 2 platform v1.2 or later versions. * * @author Ann Wollrath - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -56,7 +56,7 @@ * @param s the detail message * @param ex the nested exception * @deprecated no replacement - * @since JDK1.1 + * @since 1.1 */ @Deprecated public ServerRuntimeException(String s, Exception ex) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/StubNotFoundException.java --- a/jdk/src/share/classes/java/rmi/StubNotFoundException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/StubNotFoundException.java Wed Jul 05 19:45:17 2017 +0200 @@ -33,7 +33,7 @@ * java.rmi.activation.Activatable.register method. * * @author Roger Riggs - * @since JDK1.1 + * @since 1.1 * @see java.rmi.server.UnicastRemoteObject * @see java.rmi.activation.Activatable */ @@ -47,7 +47,7 @@ * detail message. * * @param s the detail message - * @since JDK1.1 + * @since 1.1 */ public StubNotFoundException(String s) { super(s); @@ -59,7 +59,7 @@ * * @param s the detail message * @param ex the nested exception - * @since JDK1.1 + * @since 1.1 */ public StubNotFoundException(String s, Exception ex) { super(s, ex); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/UnexpectedException.java --- a/jdk/src/share/classes/java/rmi/UnexpectedException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/UnexpectedException.java Wed Jul 05 19:45:17 2017 +0200 @@ -32,7 +32,7 @@ * throws clause of the method in the remote interface. * * @author Roger Riggs - * @since JDK1.1 + * @since 1.1 */ public class UnexpectedException extends RemoteException { @@ -44,7 +44,7 @@ * detail message. * * @param s the detail message - * @since JDK1.1 + * @since 1.1 */ public UnexpectedException(String s) { super(s); @@ -56,7 +56,7 @@ * * @param s the detail message * @param ex the nested exception - * @since JDK1.1 + * @since 1.1 */ public UnexpectedException(String s, Exception ex) { super(s, ex); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/UnknownHostException.java --- a/jdk/src/share/classes/java/rmi/UnknownHostException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/UnknownHostException.java Wed Jul 05 19:45:17 2017 +0200 @@ -30,7 +30,7 @@ * java.net.UnknownHostException occurs while creating * a connection to the remote host for a remote method call. * - * @since JDK1.1 + * @since 1.1 */ public class UnknownHostException extends RemoteException { @@ -42,7 +42,7 @@ * detail message. * * @param s the detail message - * @since JDK1.1 + * @since 1.1 */ public UnknownHostException(String s) { super(s); @@ -54,7 +54,7 @@ * * @param s the detail message * @param ex the nested exception - * @since JDK1.1 + * @since 1.1 */ public UnknownHostException(String s, Exception ex) { super(s, ex); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/UnmarshalException.java --- a/jdk/src/share/classes/java/rmi/UnmarshalException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/UnmarshalException.java Wed Jul 05 19:45:17 2017 +0200 @@ -44,7 +44,7 @@ * * * @author Ann Wollrath - * @since JDK1.1 + * @since 1.1 */ public class UnmarshalException extends RemoteException { @@ -56,7 +56,7 @@ * detail message. * * @param s the detail message - * @since JDK1.1 + * @since 1.1 */ public UnmarshalException(String s) { super(s); @@ -68,7 +68,7 @@ * * @param s the detail message * @param ex the nested exception - * @since JDK1.1 + * @since 1.1 */ public UnmarshalException(String s, Exception ex) { super(s, ex); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/dgc/package.html --- a/jdk/src/share/classes/java/rmi/dgc/package.html Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/dgc/package.html Wed Jul 05 19:45:17 2017 +0200 @@ -50,6 +50,6 @@ --> -@since JDK1.1 +@since 1.1 diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/package.html --- a/jdk/src/share/classes/java/rmi/package.html Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/package.html Wed Jul 05 19:45:17 2017 +0200 @@ -54,6 +54,6 @@ --> -@since JDK1.1 +@since 1.1 diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/registry/LocateRegistry.java --- a/jdk/src/share/classes/java/rmi/registry/LocateRegistry.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/registry/LocateRegistry.java Wed Jul 05 19:45:17 2017 +0200 @@ -51,7 +51,7 @@ * * @author Ann Wollrath * @author Peter Jones - * @since JDK1.1 + * @since 1.1 * @see java.rmi.registry.Registry */ public final class LocateRegistry { @@ -67,7 +67,7 @@ * * @return reference (a stub) to the remote object registry * @exception RemoteException if the reference could not be created - * @since JDK1.1 + * @since 1.1 */ public static Registry getRegistry() throws RemoteException @@ -82,7 +82,7 @@ * @param port port on which the registry accepts requests * @return reference (a stub) to the remote object registry * @exception RemoteException if the reference could not be created - * @since JDK1.1 + * @since 1.1 */ public static Registry getRegistry(int port) throws RemoteException @@ -98,7 +98,7 @@ * @param host host for the remote registry * @return reference (a stub) to the remote object registry * @exception RemoteException if the reference could not be created - * @since JDK1.1 + * @since 1.1 */ public static Registry getRegistry(String host) throws RemoteException @@ -115,7 +115,7 @@ * @param port port on which the registry accepts requests * @return reference (a stub) to the remote object registry * @exception RemoteException if the reference could not be created - * @since JDK1.1 + * @since 1.1 */ public static Registry getRegistry(String host, int port) throws RemoteException @@ -197,7 +197,7 @@ * @param port the port on which the registry accepts requests * @return the registry * @exception RemoteException if the registry could not be exported - * @since JDK1.1 + * @since 1.1 **/ public static Registry createRegistry(int port) throws RemoteException { return new RegistryImpl(port); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/registry/Registry.java --- a/jdk/src/share/classes/java/rmi/registry/Registry.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/registry/Registry.java Wed Jul 05 19:45:17 2017 +0200 @@ -72,7 +72,7 @@ * * @author Ann Wollrath * @author Peter Jones - * @since JDK1.1 + * @since 1.1 * @see LocateRegistry */ public interface Registry extends Remote { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/registry/RegistryHandler.java --- a/jdk/src/share/classes/java/rmi/registry/RegistryHandler.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/registry/RegistryHandler.java Wed Jul 05 19:45:17 2017 +0200 @@ -34,7 +34,7 @@ * by application code. * * @author Ann Wollrath - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/registry/package.html --- a/jdk/src/share/classes/java/rmi/registry/package.html Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/registry/package.html Wed Jul 05 19:45:17 2017 +0200 @@ -52,6 +52,6 @@ --> -@since JDK1.1 +@since 1.1 diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/ExportException.java --- a/jdk/src/share/classes/java/rmi/server/ExportException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/ExportException.java Wed Jul 05 19:45:17 2017 +0200 @@ -33,7 +33,7 @@ * java.rmi.activation.Activatable. * * @author Ann Wollrath - * @since JDK1.1 + * @since 1.1 * @see java.rmi.server.UnicastRemoteObject * @see java.rmi.activation.Activatable */ @@ -47,7 +47,7 @@ * detail message. * * @param s the detail message - * @since JDK1.1 + * @since 1.1 */ public ExportException(String s) { super(s); @@ -59,7 +59,7 @@ * * @param s the detail message * @param ex the nested exception - * @since JDK1.1 + * @since 1.1 */ public ExportException(String s, Exception ex) { super(s, ex); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/LoaderHandler.java --- a/jdk/src/share/classes/java/rmi/server/LoaderHandler.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/LoaderHandler.java Wed Jul 05 19:45:17 2017 +0200 @@ -34,7 +34,7 @@ * by application code. * * @author Ann Wollrath - * @since JDK1.1 + * @since 1.1 * * @deprecated no replacement */ @@ -56,7 +56,7 @@ * @exception ClassNotFoundException * if a definition for the class could not * be found at the codebase location. - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -75,7 +75,7 @@ * @exception ClassNotFoundException * if a definition for the class could not * be found at the specified URL - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -87,7 +87,7 @@ * * @param loader a class loader from which to get the security context * @return the security context - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/LogStream.java --- a/jdk/src/share/classes/java/rmi/server/LogStream.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/LogStream.java Wed Jul 05 19:45:17 2017 +0200 @@ -32,7 +32,7 @@ * of possible interest to those monitoring a system. * * @author Ann Wollrath (lots of code stolen from Ken Arnold) - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -64,7 +64,7 @@ * method. * @param name string identifying messages from this log * @out output stream that log messages will be sent to - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -83,7 +83,7 @@ * the default stream is created. * @param name name identifying the desired LogStream * @return log associated with given name - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -103,7 +103,7 @@ * Return the current default stream for new logs. * @return default log stream * @see #setDefaultStream - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -115,7 +115,7 @@ * Set the default stream for new logs. * @param newDefault new default log stream * @see #getDefaultStream - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -134,7 +134,7 @@ * Return the current stream to which output from this log is sent. * @return output stream for this log * @see #setOutputStream - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -147,7 +147,7 @@ * Set the stream to which output from this log is sent. * @param out new output stream for this log * @see #getOutputStream - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -164,7 +164,7 @@ * the byte is appended to the internal buffer. If it is a newline, * then the currently buffered line is sent to the log's output * stream, prefixed with the appropriate logging information. - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -208,7 +208,7 @@ /** * Write a subarray of bytes. Pass each through write byte method. - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -223,7 +223,7 @@ /** * Return log name as string representation. * @return log name - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -244,7 +244,7 @@ * integer representation. * @param s name of logging level (e.g., 'SILENT', 'BRIEF', 'VERBOSE') * @return corresponding integer log level - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/ObjID.java --- a/jdk/src/share/classes/java/rmi/server/ObjID.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/ObjID.java Wed Jul 05 19:45:17 2017 +0200 @@ -65,7 +65,7 @@ * * @author Ann Wollrath * @author Peter Jones - * @since JDK1.1 + * @since 1.1 */ public final class ObjID implements Serializable { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/Operation.java --- a/jdk/src/share/classes/java/rmi/server/Operation.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/Operation.java Wed Jul 05 19:45:17 2017 +0200 @@ -32,7 +32,7 @@ * stubs (stubs generated with rmic -v1.2); hence, this class * is deprecated. * - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -43,7 +43,7 @@ * Creates a new Operation object. * @param op method name * @deprecated no replacement - * @since JDK1.1 + * @since 1.1 */ @Deprecated public Operation(String op) { @@ -54,7 +54,7 @@ * Returns the name of the method. * @return method name * @deprecated no replacement - * @since JDK1.1 + * @since 1.1 */ @Deprecated public String getOperation() { @@ -64,7 +64,7 @@ /** * Returns the string representation of the operation. * @deprecated no replacement - * @since JDK1.1 + * @since 1.1 */ @Deprecated public String toString() { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/RMIClassLoader.java --- a/jdk/src/share/classes/java/rmi/server/RMIClassLoader.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/RMIClassLoader.java Wed Jul 05 19:45:17 2017 +0200 @@ -105,7 +105,7 @@ * @author Peter Jones * @author Laird Dornin * @see RMIClassLoaderSpi - * @since JDK1.1 + * @since 1.1 */ public class RMIClassLoader { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/RMIFailureHandler.java --- a/jdk/src/share/classes/java/rmi/server/RMIFailureHandler.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/RMIFailureHandler.java Wed Jul 05 19:45:17 2017 +0200 @@ -35,7 +35,7 @@ * ServerSocket. * * @author Ann Wollrath - * @since JDK1.1 + * @since 1.1 */ public interface RMIFailureHandler { @@ -53,7 +53,7 @@ * @return if true, the RMI runtime attempts to retry * ServerSocket creation * @see java.rmi.server.RMISocketFactory#setFailureHandler(RMIFailureHandler) - * @since JDK1.1 + * @since 1.1 */ public boolean failure(Exception ex); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/RMISocketFactory.java --- a/jdk/src/share/classes/java/rmi/server/RMISocketFactory.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/RMISocketFactory.java Wed Jul 05 19:45:17 2017 +0200 @@ -85,7 +85,7 @@ * * @author Ann Wollrath * @author Peter Jones - * @since JDK1.1 + * @since 1.1 */ public abstract class RMISocketFactory implements RMIClientSocketFactory, RMIServerSocketFactory @@ -100,7 +100,7 @@ /** * Constructs an RMISocketFactory. - * @since JDK1.1 + * @since 1.1 */ public RMISocketFactory() { super(); @@ -112,7 +112,7 @@ * @param port the port number * @return a socket connected to the specified host and port. * @exception IOException if an I/O error occurs during socket creation - * @since JDK1.1 + * @since 1.1 */ public abstract Socket createSocket(String host, int port) throws IOException; @@ -124,7 +124,7 @@ * @return the server socket on the specified port * @exception IOException if an I/O error occurs during server socket * creation - * @since JDK1.1 + * @since 1.1 */ public abstract ServerSocket createServerSocket(int port) throws IOException; @@ -142,7 +142,7 @@ * checkSetFactory method doesn't allow the operation. * @see #getSocketFactory * @see java.lang.SecurityManager#checkSetFactory() - * @since JDK1.1 + * @since 1.1 */ public synchronized static void setSocketFactory(RMISocketFactory fac) throws IOException @@ -163,7 +163,7 @@ * set. * @return the socket factory * @see #setSocketFactory(RMISocketFactory) - * @since JDK1.1 + * @since 1.1 */ public synchronized static RMISocketFactory getSocketFactory() { @@ -176,7 +176,7 @@ * by the RMI runtime when getSocketFactory * returns null. * @return the default RMI socket factory - * @since JDK1.1 + * @since 1.1 */ public synchronized static RMISocketFactory getDefaultSocketFactory() { if (defaultSocketFactory == null) { @@ -203,7 +203,7 @@ * operation. * @see #getFailureHandler * @see java.rmi.server.RMIFailureHandler#failure(Exception) - * @since JDK1.1 + * @since 1.1 */ public synchronized static void setFailureHandler(RMIFailureHandler fh) { @@ -219,7 +219,7 @@ * setFailureHandler method. * @return the failure handler * @see #setFailureHandler(RMIFailureHandler) - * @since JDK1.1 + * @since 1.1 */ public synchronized static RMIFailureHandler getFailureHandler() { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/RemoteCall.java --- a/jdk/src/share/classes/java/rmi/server/RemoteCall.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/RemoteCall.java Wed Jul 05 19:45:17 2017 +0200 @@ -37,7 +37,7 @@ * deprecated because it is only used by deprecated methods of * java.rmi.server.RemoteRef. * - * @since JDK1.1 + * @since 1.1 * @author Ann Wollrath * @author Roger Riggs * @see java.rmi.server.RemoteRef @@ -52,7 +52,7 @@ * * @return output stream for arguments/results * @exception java.io.IOException if an I/O error occurs. - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -63,7 +63,7 @@ * the stream. * * @exception java.io.IOException if an I/O error occurs. - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -75,7 +75,7 @@ * * @return input stream for reading arguments/results * @exception java.io.IOException if an I/O error occurs. - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -87,7 +87,7 @@ * the channel early. * * @exception java.io.IOException if an I/O error occurs. - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -103,7 +103,7 @@ * @return output stream for writing call result * @exception java.io.IOException if an I/O error occurs. * @exception java.io.StreamCorruptedException If already been called. - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -114,7 +114,7 @@ * Do whatever it takes to execute the call. * * @exception java.lang.Exception if a general exception occurs. - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -124,7 +124,7 @@ * Allow cleanup after the remote call has completed. * * @exception java.io.IOException if an I/O error occurs. - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/RemoteObject.java --- a/jdk/src/share/classes/java/rmi/server/RemoteObject.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/RemoteObject.java Wed Jul 05 19:45:17 2017 +0200 @@ -39,7 +39,7 @@ * @author Ann Wollrath * @author Laird Dornin * @author Peter Jones - * @since JDK1.1 + * @since 1.1 */ public abstract class RemoteObject implements Remote, java.io.Serializable { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/RemoteRef.java --- a/jdk/src/share/classes/java/rmi/server/RemoteRef.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/RemoteRef.java Wed Jul 05 19:45:17 2017 +0200 @@ -33,7 +33,7 @@ * remote method invocation to a remote object. * * @author Ann Wollrath - * @since JDK1.1 + * @since 1.1 * @see java.rmi.server.RemoteStub */ public interface RemoteRef extends java.io.Externalizable { @@ -84,7 +84,7 @@ * interpret them. The remote reference may need the operation to * encode in the call. * - * @since JDK1.1 + * @since 1.1 * @deprecated 1.2 style stubs no longer use this method. Instead of * using a sequence of method calls on the stub's the remote reference * (newCall, invoke, and done), a @@ -114,7 +114,7 @@ * take care of cleaning up the connection before raising the * "user" or remote exception. * - * @since JDK1.1 + * @since 1.1 * @deprecated 1.2 style stubs no longer use this method. Instead of * using a sequence of method calls to the remote reference * (newCall, invoke, and done), a @@ -135,7 +135,7 @@ * Done should only be called if the invoke returns successfully * (non-exceptionally) to the stub. * - * @since JDK1.1 + * @since 1.1 * @deprecated 1.2 style stubs no longer use this method. Instead of * using a sequence of method calls to the remote reference * (newCall, invoke, and done), a @@ -157,7 +157,7 @@ * @param out the output stream to which the reference will be serialized * @return the class name (without package qualification) of the reference * type - * @since JDK1.1 + * @since 1.1 */ String getRefClass(java.io.ObjectOutput out); @@ -168,7 +168,7 @@ * * @return remote object hashcode * @see java.util.Hashtable - * @since JDK1.1 + * @since 1.1 */ int remoteHashCode(); @@ -180,7 +180,7 @@ * @param obj the Object to compare with * @return true if these Objects are equal; false otherwise. * @see java.util.Hashtable - * @since JDK1.1 + * @since 1.1 */ boolean remoteEquals(RemoteRef obj); @@ -188,7 +188,7 @@ * Returns a String that represents the reference of this remote * object. * @return string representing remote object reference - * @since JDK1.1 + * @since 1.1 */ String remoteToString(); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/RemoteServer.java --- a/jdk/src/share/classes/java/rmi/server/RemoteServer.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/RemoteServer.java Wed Jul 05 19:45:17 2017 +0200 @@ -37,7 +37,7 @@ * concretely by its subclass(es). * * @author Ann Wollrath - * @since JDK1.1 + * @since 1.1 */ public abstract class RemoteServer extends RemoteObject { @@ -46,7 +46,7 @@ /** * Constructs a RemoteServer. - * @since JDK1.1 + * @since 1.1 */ protected RemoteServer() { super(); @@ -56,7 +56,7 @@ * Constructs a RemoteServer with the given reference type. * * @param ref the remote reference - * @since JDK1.1 + * @since 1.1 */ protected RemoteServer(RemoteRef ref) { super(ref); @@ -71,7 +71,7 @@ * @throws ServerNotActiveException if no remote method invocation * is being processed in the current thread * - * @since JDK1.1 + * @since 1.1 */ public static String getClientHost() throws ServerNotActiveException { return sun.rmi.transport.tcp.TCPTransport.getClientHost(); @@ -91,7 +91,7 @@ * the invocation of its checkPermission method * fails * @see #getLog - * @since JDK1.1 + * @since 1.1 */ public static void setLog(java.io.OutputStream out) { @@ -103,7 +103,7 @@ * Returns stream for the RMI call log. * @return the call log * @see #setLog - * @since JDK1.1 + * @since 1.1 */ public static java.io.PrintStream getLog() { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/RemoteStub.java --- a/jdk/src/share/classes/java/rmi/server/RemoteStub.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/RemoteStub.java Wed Jul 05 19:45:17 2017 +0200 @@ -33,7 +33,7 @@ * implementation of the remote object. * * @author Ann Wollrath - * @since JDK1.1 + * @since 1.1 * * @deprecated Statically generated stubs are deprecated, since * stubs are generated dynamically. See {@link UnicastRemoteObject} @@ -57,7 +57,7 @@ * reference. * * @param ref the remote reference - * @since JDK1.1 + * @since 1.1 */ protected RemoteStub(RemoteRef ref) { super(ref); @@ -69,7 +69,7 @@ * @param stub the remote stub * @param ref the remote reference * @throws UnsupportedOperationException always - * @since JDK1.1 + * @since 1.1 * @deprecated No replacement. The {@code setRef} method * was intended for setting the remote reference of a remote * stub. This is unnecessary, since {@code RemoteStub}s can be created diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/ServerCloneException.java --- a/jdk/src/share/classes/java/rmi/server/ServerCloneException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/ServerCloneException.java Wed Jul 05 19:45:17 2017 +0200 @@ -41,7 +41,7 @@ * IllegalStateException}. * * @author Ann Wollrath - * @since JDK1.1 + * @since 1.1 * @see java.rmi.server.UnicastRemoteObject#clone() */ public class ServerCloneException extends CloneNotSupportedException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/ServerNotActiveException.java --- a/jdk/src/share/classes/java/rmi/server/ServerNotActiveException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/ServerNotActiveException.java Wed Jul 05 19:45:17 2017 +0200 @@ -32,7 +32,7 @@ * method call. * * @author Roger Riggs - * @since JDK1.1 + * @since 1.1 * @see java.rmi.server.RemoteServer#getClientHost() */ public class ServerNotActiveException extends java.lang.Exception { @@ -43,7 +43,7 @@ /** * Constructs an ServerNotActiveException with no specified * detail message. - * @since JDK1.1 + * @since 1.1 */ public ServerNotActiveException() {} @@ -52,7 +52,7 @@ * detail message. * * @param s the detail message. - * @since JDK1.1 + * @since 1.1 */ public ServerNotActiveException(String s) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/ServerRef.java --- a/jdk/src/share/classes/java/rmi/server/ServerRef.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/ServerRef.java Wed Jul 05 19:45:17 2017 +0200 @@ -32,7 +32,7 @@ * implementation. * * @author Ann Wollrath - * @since JDK1.1 + * @since 1.1 * @deprecated No replacement. This interface is unused and is obsolete. */ @Deprecated @@ -50,7 +50,7 @@ * @return the stub for the remote object * @exception RemoteException if an exception occurs attempting * to export the object (e.g., stub class could not be found) - * @since JDK1.1 + * @since 1.1 */ RemoteStub exportObject(Remote obj, Object data) throws RemoteException; @@ -62,7 +62,7 @@ * @return the client's host name * @exception ServerNotActiveException if called outside of servicing * a remote method invocation - * @since JDK1.1 + * @since 1.1 */ String getClientHost() throws ServerNotActiveException; } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/Skeleton.java --- a/jdk/src/share/classes/java/rmi/server/Skeleton.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/Skeleton.java Wed Jul 05 19:45:17 2017 +0200 @@ -37,7 +37,7 @@ * implementation. * * @author Ann Wollrath - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement. Skeletons are no longer required for remote * method calls in the Java 2 platform v1.2 and greater. */ @@ -52,7 +52,7 @@ * @param opnum operation number * @param hash stub/skeleton interface hash * @exception java.lang.Exception if a general exception occurs. - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated @@ -62,7 +62,7 @@ /** * Returns the operations supported by the skeleton. * @return operations supported by skeleton - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/SkeletonMismatchException.java --- a/jdk/src/share/classes/java/rmi/server/SkeletonMismatchException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/SkeletonMismatchException.java Wed Jul 05 19:45:17 2017 +0200 @@ -36,7 +36,7 @@ * the stub compiler (rmic). * * @author Roger Riggs - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement. Skeletons are no longer required for remote * method calls in the Java 2 platform v1.2 and greater. */ @@ -51,7 +51,7 @@ * a specified detail message. * * @param s the detail message - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement */ @Deprecated diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/SkeletonNotFoundException.java --- a/jdk/src/share/classes/java/rmi/server/SkeletonNotFoundException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/SkeletonNotFoundException.java Wed Jul 05 19:45:17 2017 +0200 @@ -33,7 +33,7 @@ * exported is not found. Skeletons are no longer required, so this * exception is never thrown. * - * @since JDK1.1 + * @since 1.1 * @deprecated no replacement. Skeletons are no longer required for remote * method calls in the Java 2 platform v1.2 and greater. */ @@ -48,7 +48,7 @@ * detail message. * * @param s the detail message. - * @since JDK1.1 + * @since 1.1 */ public SkeletonNotFoundException(String s) { super(s); @@ -60,7 +60,7 @@ * * @param s the detail message. * @param ex the nested exception - * @since JDK1.1 + * @since 1.1 */ public SkeletonNotFoundException(String s, Exception ex) { super(s, ex); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/SocketSecurityException.java --- a/jdk/src/share/classes/java/rmi/server/SocketSecurityException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/SocketSecurityException.java Wed Jul 05 19:45:17 2017 +0200 @@ -29,7 +29,7 @@ * An obsolete subclass of {@link ExportException}. * * @author Ann Wollrath - * @since JDK1.1 + * @since 1.1 * @deprecated This class is obsolete. Use {@link ExportException} instead. */ @Deprecated @@ -43,7 +43,7 @@ * detail message. * * @param s the detail message. - * @since JDK1.1 + * @since 1.1 */ public SocketSecurityException(String s) { super(s); @@ -55,7 +55,7 @@ * * @param s the detail message. * @param ex the nested exception - * @since JDK1.1 + * @since 1.1 */ public SocketSecurityException(String s, Exception ex) { super(s, ex); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/UID.java --- a/jdk/src/share/classes/java/rmi/server/UID.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/UID.java Wed Jul 05 19:45:17 2017 +0200 @@ -66,7 +66,7 @@ * * @author Ann Wollrath * @author Peter Jones - * @since JDK1.1 + * @since 1.1 */ public final class UID implements Serializable { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/UnicastRemoteObject.java --- a/jdk/src/share/classes/java/rmi/server/UnicastRemoteObject.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/UnicastRemoteObject.java Wed Jul 05 19:45:17 2017 +0200 @@ -142,7 +142,7 @@ * * @author Ann Wollrath * @author Peter Jones - * @since JDK1.1 + * @since 1.1 **/ public class UnicastRemoteObject extends RemoteServer { @@ -173,7 +173,7 @@ * created using the {@link RMISocketFactory} class. * * @throws RemoteException if failed to export object - * @since JDK1.1 + * @since 1.1 */ protected UnicastRemoteObject() throws RemoteException { @@ -242,7 +242,7 @@ * @exception CloneNotSupportedException if clone failed due to * a RemoteException. * @return the new remote object - * @since JDK1.1 + * @since 1.1 */ public Object clone() throws CloneNotSupportedException { @@ -280,7 +280,7 @@ * @param obj the remote object to be exported * @return remote object stub * @exception RemoteException if export fails - * @since JDK1.1 + * @since 1.1 * @deprecated This method is deprecated because it supports only static stubs. * Use {@link #exportObject(Remote, int) exportObject(Remote, port)} or * {@link #exportObject(Remote, int, RMIClientSocketFactory, RMIServerSocketFactory) diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/Unreferenced.java --- a/jdk/src/share/classes/java/rmi/server/Unreferenced.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/Unreferenced.java Wed Jul 05 19:45:17 2017 +0200 @@ -32,14 +32,14 @@ * * @author Ann Wollrath * @author Roger Riggs - * @since JDK1.1 + * @since 1.1 */ public interface Unreferenced { /** * Called by the RMI runtime sometime after the runtime determines that * the reference list, the list of clients referencing the remote object, * becomes empty. - * @since JDK1.1 + * @since 1.1 */ public void unreferenced(); } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/rmi/server/package.html --- a/jdk/src/share/classes/java/rmi/server/package.html Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/rmi/server/package.html Wed Jul 05 19:45:17 2017 +0200 @@ -69,6 +69,6 @@ --> -@since JDK1.1 +@since 1.1 diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/security/acl/package-info.java --- a/jdk/src/share/classes/java/security/acl/package-info.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/security/acl/package-info.java Wed Jul 05 19:45:17 2017 +0200 @@ -28,6 +28,6 @@ * superseded by classes in the java.security package. * See that package and, for example, java.security.Permission for details. * - * @since JDK1.1 + * @since 1.1 */ package java.security.acl; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/security/interfaces/package-info.java --- a/jdk/src/share/classes/java/security/interfaces/package-info.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/security/interfaces/package-info.java Wed Jul 05 19:45:17 2017 +0200 @@ -69,6 +69,6 @@ * * * - * @since JDK1.1 + * @since 1.1 */ package java.security.interfaces; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/security/spec/DSAGenParameterSpec.java --- a/jdk/src/share/classes/java/security/spec/DSAGenParameterSpec.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/security/spec/DSAGenParameterSpec.java Wed Jul 05 19:45:17 2017 +0200 @@ -31,7 +31,7 @@ * * @see AlgorithmParameterSpec * - * @since 8 + * @since 1.8 */ public final class DSAGenParameterSpec implements AlgorithmParameterSpec { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/text/DecimalFormatSymbols.java --- a/jdk/src/share/classes/java/text/DecimalFormatSymbols.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/text/DecimalFormatSymbols.java Wed Jul 05 19:45:17 2017 +0200 @@ -679,7 +679,7 @@ * default serialization will work properly if this object is streamed out again. * Initializes the currency from the intlCurrencySymbol field. * - * @since JDK 1.1.6 + * @since 1.1.6 */ private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException { @@ -802,7 +802,7 @@ /** * The decimal separator used when formatting currency values. * @serial - * @since JDK 1.1.6 + * @since 1.1.6 * @see #getMonetaryDecimalSeparator */ private char monetarySeparator; // Field new in JDK 1.1.6 @@ -816,7 +816,7 @@ * The intent is that this will be added to the API in the future. * * @serial - * @since JDK 1.1.6 + * @since 1.1.6 */ private char exponential; // Field new in JDK 1.1.6 @@ -872,7 +872,7 @@ * is always written. * * @serial - * @since JDK 1.1.6 + * @since 1.1.6 */ private int serialVersionOnStream = currentSerialVersion; } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/text/SimpleDateFormat.java --- a/jdk/src/share/classes/java/text/SimpleDateFormat.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/text/SimpleDateFormat.java Wed Jul 05 19:45:17 2017 +0200 @@ -441,7 +441,7 @@ * and the highest allowable serialVersionOnStream * is written. * @serial - * @since JDK1.1.4 + * @since 1.1.4 */ private int serialVersionOnStream = currentSerialVersion; @@ -506,7 +506,7 @@ * defaultCenturyStart, which may be any date. May * not be null. * @serial - * @since JDK1.1.4 + * @since 1.1.4 */ private Date defaultCenturyStart; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/text/package.html --- a/jdk/src/share/classes/java/text/package.html Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/text/package.html Wed Jul 05 19:45:17 2017 +0200 @@ -60,6 +60,6 @@ --> -@since JDK1.1 +@since 1.1 diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/time/chrono/package-info.java --- a/jdk/src/share/classes/java/time/chrono/package-info.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/time/chrono/package-info.java Wed Jul 05 19:45:17 2017 +0200 @@ -166,6 +166,6 @@ * All calculations should check for numeric overflow and throw either an {@link java.lang.ArithmeticException} * or a {@link java.time.DateTimeException}. *

    - * @since JDK1.8 + * @since 1.8 */ package java.time.chrono; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/time/format/TextStyle.java --- a/jdk/src/share/classes/java/time/format/TextStyle.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/time/format/TextStyle.java Wed Jul 05 19:45:17 2017 +0200 @@ -82,6 +82,8 @@ * * @implSpec * This is immutable and thread-safe enum. + * + * @since 1.8 */ public enum TextStyle { // ordered from large to small diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/time/format/package-info.java --- a/jdk/src/share/classes/java/time/format/package-info.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/time/format/package-info.java Wed Jul 05 19:45:17 2017 +0200 @@ -90,6 +90,6 @@ * All calculations should check for numeric overflow and throw either an {@link java.lang.ArithmeticException} * or a {@link java.time.DateTimeException}. *

    - * @since JDK1.8 + * @since 1.8 */ package java.time.format; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/time/package-info.java --- a/jdk/src/share/classes/java/time/package-info.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/time/package-info.java Wed Jul 05 19:45:17 2017 +0200 @@ -282,6 +282,6 @@ * * * - * @since JDK1.8 + * @since 1.8 */ package java.time; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/time/temporal/package-info.java --- a/jdk/src/share/classes/java/time/temporal/package-info.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/time/temporal/package-info.java Wed Jul 05 19:45:17 2017 +0200 @@ -154,6 +154,6 @@ * All calculations should check for numeric overflow and throw either an {@link java.lang.ArithmeticException} * or a {@link java.time.DateTimeException}. *

    - * @since JDK1.8 + * @since 1.8 */ package java.time.temporal; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/time/zone/package-info.java --- a/jdk/src/share/classes/java/time/zone/package-info.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/time/zone/package-info.java Wed Jul 05 19:45:17 2017 +0200 @@ -81,6 +81,6 @@ * All calculations should check for numeric overflow and throw either an {@link java.lang.ArithmeticException} * or a {@link java.time.DateTimeException}. *

    - * @since JDK1.8 + * @since 1.8 */ package java.time.zone; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/BitSet.java --- a/jdk/src/share/classes/java/util/BitSet.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/BitSet.java Wed Jul 05 19:45:17 2017 +0200 @@ -60,7 +60,7 @@ * @author Arthur van Hoff * @author Michael McCloskey * @author Martin Buchholz - * @since JDK1.0 + * @since 1.0 */ public class BitSet implements Cloneable, java.io.Serializable { /* @@ -437,7 +437,7 @@ * * @param bitIndex a bit index * @throws IndexOutOfBoundsException if the specified index is negative - * @since JDK1.0 + * @since 1.0 */ public void set(int bitIndex) { if (bitIndex < 0) @@ -533,7 +533,7 @@ * * @param bitIndex the index of the bit to be cleared * @throws IndexOutOfBoundsException if the specified index is negative - * @since JDK1.0 + * @since 1.0 */ public void clear(int bitIndex) { if (bitIndex < 0) diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/Calendar.java --- a/jdk/src/share/classes/java/util/Calendar.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/Calendar.java Wed Jul 05 19:45:17 2017 +0200 @@ -308,7 +308,7 @@ * @see TimeZone * @see java.text.DateFormat * @author Mark Davis, David Goldsmith, Chen-Lieh Huang, Alan Liu - * @since JDK1.1 + * @since 1.1 */ public abstract class Calendar implements Serializable, Cloneable, Comparable { @@ -994,7 +994,7 @@ * and the highest allowable serialVersionOnStream * is written. * @serial - * @since JDK1.1.6 + * @since 1.1.6 */ private int serialVersionOnStream = currentSerialVersion; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/Date.java --- a/jdk/src/share/classes/java/util/Date.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/Date.java Wed Jul 05 19:45:17 2017 +0200 @@ -126,7 +126,7 @@ * @see java.text.DateFormat * @see java.util.Calendar * @see java.util.TimeZone - * @since JDK1.0 + * @since 1.0 */ public class Date implements java.io.Serializable, Cloneable, Comparable diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/Dictionary.java --- a/jdk/src/share/classes/java/util/Dictionary.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/Dictionary.java Wed Jul 05 19:45:17 2017 +0200 @@ -44,7 +44,7 @@ * @see java.lang.Object#equals(java.lang.Object) * @see java.lang.Object#hashCode() * @see java.util.Hashtable - * @since JDK1.0 + * @since 1.0 */ public abstract class Dictionary { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/EmptyStackException.java --- a/jdk/src/share/classes/java/util/EmptyStackException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/EmptyStackException.java Wed Jul 05 19:45:17 2017 +0200 @@ -31,7 +31,7 @@ * * @author Jonathan Payne * @see java.util.Stack - * @since JDK1.0 + * @since 1.0 */ public class EmptyStackException extends RuntimeException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/Enumeration.java --- a/jdk/src/share/classes/java/util/Enumeration.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/Enumeration.java Wed Jul 05 19:45:17 2017 +0200 @@ -56,7 +56,7 @@ * @see java.util.Vector#elements() * * @author Lee Boynton - * @since JDK1.0 + * @since 1.0 */ public interface Enumeration { /** diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/EventListener.java --- a/jdk/src/share/classes/java/util/EventListener.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/EventListener.java Wed Jul 05 19:45:17 2017 +0200 @@ -27,7 +27,7 @@ /** * A tagging interface that all event listener interfaces must extend. - * @since JDK1.1 + * @since 1.1 */ public interface EventListener { } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/EventObject.java --- a/jdk/src/share/classes/java/util/EventObject.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/EventObject.java Wed Jul 05 19:45:17 2017 +0200 @@ -33,7 +33,7 @@ * that is logically deemed to be the object upon which the Event in question * initially occurred upon. * - * @since JDK1.1 + * @since 1.1 */ public class EventObject implements java.io.Serializable { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/GregorianCalendar.java --- a/jdk/src/share/classes/java/util/GregorianCalendar.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/GregorianCalendar.java Wed Jul 05 19:45:17 2017 +0200 @@ -325,7 +325,7 @@ * * @see TimeZone * @author David Goldsmith, Mark Davis, Chen-Lieh Huang, Alan Liu - * @since JDK1.1 + * @since 1.1 */ public class GregorianCalendar extends Calendar { /* diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/HashMap.java --- a/jdk/src/share/classes/java/util/HashMap.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/HashMap.java Wed Jul 05 19:45:17 2017 +0200 @@ -1967,7 +1967,7 @@ dir = -1; else if (ph < h) dir = 1; - else if ((pk = p.key) == k || (pk != null && k.equals(pk))) + else if ((pk = p.key) == k || (k != null && k.equals(pk))) return p; else if ((kc == null && (kc = comparableClassFor(k)) == null) || diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/Hashtable.java --- a/jdk/src/share/classes/java/util/Hashtable.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/Hashtable.java Wed Jul 05 19:45:17 2017 +0200 @@ -129,7 +129,7 @@ * @see Map * @see HashMap * @see TreeMap - * @since JDK1.0 + * @since 1.0 */ public class Hashtable extends Dictionary diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/ListResourceBundle.java --- a/jdk/src/share/classes/java/util/ListResourceBundle.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/ListResourceBundle.java Wed Jul 05 19:45:17 2017 +0200 @@ -113,7 +113,7 @@ * * @see ResourceBundle * @see PropertyResourceBundle - * @since JDK1.1 + * @since 1.1 */ public abstract class ListResourceBundle extends ResourceBundle { /** diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/MissingResourceException.java --- a/jdk/src/share/classes/java/util/MissingResourceException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/MissingResourceException.java Wed Jul 05 19:45:17 2017 +0200 @@ -45,7 +45,7 @@ * @see java.lang.Exception * @see ResourceBundle * @author Mark Davis - * @since JDK1.1 + * @since 1.1 */ public class MissingResourceException extends RuntimeException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/NoSuchElementException.java --- a/jdk/src/share/classes/java/util/NoSuchElementException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/NoSuchElementException.java Wed Jul 05 19:45:17 2017 +0200 @@ -32,7 +32,7 @@ * @author unascribed * @see java.util.Enumeration#nextElement() * @see java.util.Iterator#next() - * @since JDK1.0 + * @since 1.0 */ public class NoSuchElementException extends RuntimeException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/Observable.java --- a/jdk/src/share/classes/java/util/Observable.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/Observable.java Wed Jul 05 19:45:17 2017 +0200 @@ -57,7 +57,7 @@ * @see java.util.Observable#notifyObservers(java.lang.Object) * @see java.util.Observer * @see java.util.Observer#update(java.util.Observable, java.lang.Object) - * @since JDK1.0 + * @since 1.0 */ public class Observable { private boolean changed = false; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/Observer.java --- a/jdk/src/share/classes/java/util/Observer.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/Observer.java Wed Jul 05 19:45:17 2017 +0200 @@ -30,7 +30,7 @@ * * @author Chris Warth * @see java.util.Observable - * @since JDK1.0 + * @since 1.0 */ public interface Observer { /** diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/Properties.java --- a/jdk/src/share/classes/java/util/Properties.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/Properties.java Wed Jul 05 19:45:17 2017 +0200 @@ -116,7 +116,7 @@ * @author Arthur van Hoff * @author Michael McCloskey * @author Xueming Shen - * @since JDK1.0 + * @since 1.0 */ public class Properties extends Hashtable { @@ -1065,7 +1065,7 @@ * @param out an output stream. * @throws ClassCastException if any key in this property list * is not a string. - * @since JDK1.1 + * @since 1.1 */ /* * Rather than use an anonymous inner class to share common code, this diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/PropertyResourceBundle.java --- a/jdk/src/share/classes/java/util/PropertyResourceBundle.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/PropertyResourceBundle.java Wed Jul 05 19:45:17 2017 +0200 @@ -117,7 +117,7 @@ * @see ResourceBundle * @see ListResourceBundle * @see Properties - * @since JDK1.1 + * @since 1.1 */ public class PropertyResourceBundle extends ResourceBundle { /** diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/ResourceBundle.java --- a/jdk/src/share/classes/java/util/ResourceBundle.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/ResourceBundle.java Wed Jul 05 19:45:17 2017 +0200 @@ -282,7 +282,7 @@ * @see ListResourceBundle * @see PropertyResourceBundle * @see MissingResourceException - * @since JDK1.1 + * @since 1.1 */ public abstract class ResourceBundle { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/Stack.java --- a/jdk/src/share/classes/java/util/Stack.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/Stack.java Wed Jul 05 19:45:17 2017 +0200 @@ -43,7 +43,7 @@ * Deque stack = new ArrayDeque();} * * @author Jonathan Payne - * @since JDK1.0 + * @since 1.0 */ public class Stack extends Vector { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/StringTokenizer.java --- a/jdk/src/share/classes/java/util/StringTokenizer.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/StringTokenizer.java Wed Jul 05 19:45:17 2017 +0200 @@ -97,7 +97,7 @@ * * @author unascribed * @see java.io.StreamTokenizer - * @since JDK1.0 + * @since 1.0 */ public class StringTokenizer implements Enumeration { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/TimeZone.java --- a/jdk/src/share/classes/java/util/TimeZone.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/TimeZone.java Wed Jul 05 19:45:17 2017 +0200 @@ -128,7 +128,7 @@ * @see GregorianCalendar * @see SimpleTimeZone * @author Mark Davis, David Goldsmith, Chen-Lieh Huang, Alan Liu - * @since JDK1.1 + * @since 1.1 */ abstract public class TimeZone implements Serializable, Cloneable { /** diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/TooManyListenersException.java --- a/jdk/src/share/classes/java/util/TooManyListenersException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/TooManyListenersException.java Wed Jul 05 19:45:17 2017 +0200 @@ -44,7 +44,7 @@ * @see java.util.EventListener * * @author Laurence P. G. Cable - * @since JDK1.1 + * @since 1.1 */ public class TooManyListenersException extends Exception { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/Vector.java --- a/jdk/src/share/classes/java/util/Vector.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/Vector.java Wed Jul 05 19:45:17 2017 +0200 @@ -82,7 +82,7 @@ * @author Jonathan Payne * @see Collection * @see LinkedList - * @since JDK1.0 + * @since 1.0 */ public class Vector extends AbstractList diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/package.html --- a/jdk/src/share/classes/java/util/package.html Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/package.html Wed Jul 05 19:45:17 2017 +0200 @@ -50,6 +50,6 @@ Framework Design FAQ -@since JDK1.0 +@since 1.0 diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/prefs/package.html --- a/jdk/src/share/classes/java/util/prefs/package.html Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/prefs/package.html Wed Jul 05 19:45:17 2017 +0200 @@ -39,6 +39,6 @@

    Related Documentation

    --> -@since JDK1.4 +@since 1.4 diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/zip/ZipException.java --- a/jdk/src/share/classes/java/util/zip/ZipException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/zip/ZipException.java Wed Jul 05 19:45:17 2017 +0200 @@ -32,7 +32,7 @@ * * @author unascribed * @see java.io.IOException - * @since JDK1.0 + * @since 1.0 */ public diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/java/util/zip/package.html --- a/jdk/src/share/classes/java/util/zip/package.html Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/java/util/zip/package.html Wed Jul 05 19:45:17 2017 +0200 @@ -81,7 +81,7 @@ --> -@since JDK1.1 +@since 1.1 diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java --- a/jdk/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/javax/management/modelmbean/RequiredModelMBean.java Wed Jul 05 19:45:17 2017 +0200 @@ -1215,7 +1215,7 @@ ReflectUtil.checkPackageAccess(className); final ClassLoader targetClassLoader = rmmbClass.getClassLoader(); - Class clz = Class.forName(className, false, + Class clz = Class.forName(className, false, targetClassLoader); if (!rmmbClass.isAssignableFrom(clz)) return null; @@ -1673,12 +1673,12 @@ // inequality may come from type subclassing boolean subtype; try { - final Class respClass = response.getClass(); + final Class respClass = response.getClass(); final Exception[] caughException = new Exception[1]; AccessControlContext stack = AccessController.getContext(); - Class c = javaSecurityAccess.doIntersectionPrivilege(new PrivilegedAction>() { + Class c = javaSecurityAccess.doIntersectionPrivilege(new PrivilegedAction>() { @Override public Class run() { @@ -2855,7 +2855,7 @@ AccessControlContext stack = AccessController.getContext(); final ClassNotFoundException[] caughtException = new ClassNotFoundException[1]; - Class c = javaSecurityAccess.doIntersectionPrivilege(new PrivilegedAction>() { + Class c = javaSecurityAccess.doIntersectionPrivilege(new PrivilegedAction>() { @Override public Class run() { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/javax/management/remote/rmi/RMIConnector.java --- a/jdk/src/share/classes/javax/management/remote/rmi/RMIConnector.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/javax/management/remote/rmi/RMIConnector.java Wed Jul 05 19:45:17 2017 +0200 @@ -2011,13 +2011,13 @@ if (nullSubjectConnRef == null || (conn = nullSubjectConnRef.get()) == null) { conn = new RemoteMBeanServerConnection(null); - nullSubjectConnRef = new WeakReference(conn); + nullSubjectConnRef = new WeakReference(conn); } } else { WeakReference wr = rmbscMap.get(delegationSubject); if (wr == null || (conn = wr.get()) == null) { conn = new RemoteMBeanServerConnection(delegationSubject); - rmbscMap.put(delegationSubject, new WeakReference(conn)); + rmbscMap.put(delegationSubject, new WeakReference(conn)); } } return conn; @@ -2115,7 +2115,7 @@ PrivilegedExceptionAction> action = new PrivilegedExceptionAction>() { public Constructor run() throws Exception { - Class thisClass = RMIConnector.class; + Class thisClass = RMIConnector.class; ClassLoader thisLoader = thisClass.getClassLoader(); ProtectionDomain thisProtectionDomain = thisClass.getProtectionDomain(); @@ -2354,7 +2354,7 @@ PrivilegedExceptionAction> action = new PrivilegedExceptionAction>() { public Class run() throws Exception { - Class thisClass = RMIConnector.class; + Class thisClass = RMIConnector.class; ClassLoader thisLoader = thisClass.getClassLoader(); ProtectionDomain thisProtectionDomain = thisClass.getProtectionDomain(); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/javax/security/auth/callback/package-info.java --- a/jdk/src/share/classes/javax/security/auth/callback/package-info.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/javax/security/auth/callback/package-info.java Wed Jul 05 19:45:17 2017 +0200 @@ -30,6 +30,6 @@ * or passwords, for example) or to display information * (error and warning messages, for example). * - * @since JDK1.4 + * @since 1.4 */ package javax.security.auth.callback; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/javax/security/auth/kerberos/package-info.java --- a/jdk/src/share/classes/javax/security/auth/kerberos/package-info.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/javax/security/auth/kerberos/package-info.java Wed Jul 05 19:45:17 2017 +0200 @@ -54,6 +54,6 @@ * string or a boolean value. A boolean value can be one of "true", "false", * "yes", or "no", case-insensitive.

    * - * @since JDK1.4 + * @since 1.4 */ package javax.security.auth.kerberos; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/javax/security/auth/package-info.java --- a/jdk/src/share/classes/javax/security/auth/package-info.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/javax/security/auth/package-info.java Wed Jul 05 19:45:17 2017 +0200 @@ -33,6 +33,6 @@ * based on code location, code signers and code executors * (Subjects). * - * @since JDK1.4 + * @since 1.4 */ package javax.security.auth; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/javax/security/auth/spi/package-info.java --- a/jdk/src/share/classes/javax/security/auth/spi/package-info.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/javax/security/auth/spi/package-info.java Wed Jul 05 19:45:17 2017 +0200 @@ -27,6 +27,6 @@ * This package provides the interface to be used for * implementing pluggable authentication modules. * - * @since JDK1.4 + * @since 1.4 */ package javax.security.auth.spi; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/javax/security/auth/x500/package-info.java --- a/jdk/src/share/classes/javax/security/auth/x500/package-info.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/javax/security/auth/x500/package-info.java Wed Jul 05 19:45:17 2017 +0200 @@ -44,6 +44,6 @@ * Directory Information Models * * - * @since JDK1.4 + * @since 1.4 */ package javax.security.auth.x500; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/javax/swing/plaf/nimbus/DerivedColor.java --- a/jdk/src/share/classes/javax/swing/plaf/nimbus/DerivedColor.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/javax/swing/plaf/nimbus/DerivedColor.java Wed Jul 05 19:45:17 2017 +0200 @@ -106,7 +106,7 @@ * @see #getRed * @see #getGreen * @see #getBlue - * @since JDK1.0 + * @since 1.0 */ @Override public int getRGB() { return argbValue; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/javax/swing/text/ComponentView.java --- a/jdk/src/share/classes/javax/swing/text/ComponentView.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/javax/swing/text/ComponentView.java Wed Jul 05 19:45:17 2017 +0200 @@ -439,7 +439,7 @@ * @param b If true, shows this component; * otherwise, hides this component. * @see #isVisible - * @since JDK1.1 + * @since 1.1 */ public void setVisible(boolean b) { super.setVisible(b); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/javax/swing/text/StyleContext.java --- a/jdk/src/share/classes/javax/swing/text/StyleContext.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/javax/swing/text/StyleContext.java Wed Jul 05 19:45:17 2017 +0200 @@ -1013,7 +1013,7 @@ * * @return true if this enumeration contains more elements; * false otherwise. - * @since JDK1.0 + * @since 1.0 */ public boolean hasMoreElements() { return i < attr.length; @@ -1024,7 +1024,7 @@ * * @return the next element of this enumeration. * @exception NoSuchElementException if no more elements exist. - * @since JDK1.0 + * @since 1.0 */ public Object nextElement() { if (i < attr.length) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/jdk/internal/util/xml/PropertiesDefaultHandler.java --- a/jdk/src/share/classes/jdk/internal/util/xml/PropertiesDefaultHandler.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/jdk/internal/util/xml/PropertiesDefaultHandler.java Wed Jul 05 19:45:17 2017 +0200 @@ -42,7 +42,7 @@ * re-implemented using a subset of SAX * * @author Joe Wang - * @since 8 + * @since 1.8 */ public class PropertiesDefaultHandler extends DefaultHandler { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/applet/AppletClassLoader.java --- a/jdk/src/share/classes/sun/applet/AppletClassLoader.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/applet/AppletClassLoader.java Wed Jul 05 19:45:17 2017 +0200 @@ -357,7 +357,7 @@ * @param name the resource name * @return an input stream for reading the resource, or null * if the resource could not be found - * @since JDK1.1 + * @since 1.1 */ public InputStream getResourceAsStream(String name) { @@ -417,7 +417,7 @@ * @param name the resource name * @return an input stream for reading the resource, or null * if the resource could not be found - * @since JDK1.1 + * @since 1.1 */ public InputStream getResourceAsStreamFromJar(String name) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/applet/AppletSecurity.java --- a/jdk/src/share/classes/sun/applet/AppletSecurity.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/applet/AppletSecurity.java Wed Jul 05 19:45:17 2017 +0200 @@ -303,7 +303,7 @@ * This method calls checkPermission with the * AWTPermission("accessEventQueue") permission. * - * @since JDK1.1 + * @since 1.1 * @exception SecurityException if the caller does not have * permission to access the AWT event queue. */ @@ -347,7 +347,7 @@ * @return the AppContext corresponding to the current context. * @see sun.awt.AppContext * @see java.lang.SecurityManager - * @since JDK1.2.1 + * @since 1.2.1 */ public AppContext getAppContext() { AppletClassLoader appletLoader = currentAppletClassLoader(); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/applet/AppletThreadGroup.java --- a/jdk/src/share/classes/sun/applet/AppletThreadGroup.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/applet/AppletThreadGroup.java Wed Jul 05 19:45:17 2017 +0200 @@ -55,7 +55,7 @@ * @exception SecurityException if the current thread cannot create a * thread in the specified thread group. * @see java.lang.SecurityException - * @since JDK1.1.1 + * @since 1.1.1 */ public AppletThreadGroup(ThreadGroup parent, String name) { super(parent, name); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/awt/AWTSecurityManager.java --- a/jdk/src/share/classes/sun/awt/AWTSecurityManager.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/awt/AWTSecurityManager.java Wed Jul 05 19:45:17 2017 +0200 @@ -56,7 +56,7 @@ * @return the AppContext corresponding to the current context. * @see sun.awt.AppContext * @see java.lang.SecurityManager - * @since JDK1.2.1 + * @since 1.2.1 */ public AppContext getAppContext() { return null; // Default implementation returns null diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/awt/dnd/SunDragSourceContextPeer.java --- a/jdk/src/share/classes/sun/awt/dnd/SunDragSourceContextPeer.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/awt/dnd/SunDragSourceContextPeer.java Wed Jul 05 19:45:17 2017 +0200 @@ -60,7 +60,7 @@ * TBC *

    * - * @since JDK1.3.1 + * @since 1.3.1 * */ public abstract class SunDragSourceContextPeer implements DragSourceContextPeer { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/awt/dnd/SunDropTargetContextPeer.java --- a/jdk/src/share/classes/sun/awt/dnd/SunDropTargetContextPeer.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/awt/dnd/SunDropTargetContextPeer.java Wed Jul 05 19:45:17 2017 +0200 @@ -65,7 +65,7 @@ * the interaction between a windowing systems DnD system and Java. *

    * - * @since JDK1.3.1 + * @since 1.3.1 * */ diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/awt/image/MultiResolutionImage.java --- a/jdk/src/share/classes/sun/awt/image/MultiResolutionImage.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/awt/image/MultiResolutionImage.java Wed Jul 05 19:45:17 2017 +0200 @@ -69,7 +69,7 @@ * @param height the desired image resolution height. * @return image resolution variant. * - * @since JDK1.8 + * @since 1.8 */ public Image getResolutionVariant(int width, int height); @@ -77,7 +77,7 @@ * Gets list of all resolution variants including the base image * * @return list of resolution variants. - * @since JDK1.8 + * @since 1.8 */ public List getResolutionVariants(); } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/management/DiagnosticCommandArgumentInfo.java --- a/jdk/src/share/classes/sun/management/DiagnosticCommandArgumentInfo.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/management/DiagnosticCommandArgumentInfo.java Wed Jul 05 19:45:17 2017 +0200 @@ -43,7 +43,7 @@ * argumentA's position is 0, argumentB's position is 1 and argumentC's * position is 2. * - * @since 8 + * @since 1.8 */ class DiagnosticCommandArgumentInfo { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/management/DiagnosticCommandImpl.java --- a/jdk/src/share/classes/sun/management/DiagnosticCommandImpl.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/management/DiagnosticCommandImpl.java Wed Jul 05 19:45:17 2017 +0200 @@ -35,7 +35,7 @@ /** * Implementation class for the diagnostic commands subsystem. * - * @since 8 + * @since 1.8 */ class DiagnosticCommandImpl extends NotificationEmitterSupport implements DiagnosticCommandMBean { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/management/DiagnosticCommandInfo.java --- a/jdk/src/share/classes/sun/management/DiagnosticCommandInfo.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/management/DiagnosticCommandInfo.java Wed Jul 05 19:45:17 2017 +0200 @@ -31,7 +31,7 @@ * Diagnostic command information. It contains the description of a * diagnostic command. * - * @since 8 + * @since 1.8 */ class DiagnosticCommandInfo { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java --- a/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java Wed Jul 05 19:45:17 2017 +0200 @@ -552,7 +552,7 @@ } requests.setIfNotSet("User-Agent", userAgent); int port = url.getPort(); - String host = url.getHost(); + String host = stripIPv6ZoneId(url.getHost()); if (port != -1 && port != url.getDefaultPort()) { host += ":" + String.valueOf(port); } @@ -2659,7 +2659,7 @@ requests.set(0, method + " " + getRequestURI()+" " + httpVersion, null); int port = url.getPort(); - String host = url.getHost(); + String host = stripIPv6ZoneId(url.getHost()); if (port != -1 && port != url.getDefaultPort()) { host += ":" + String.valueOf(port); } @@ -3204,6 +3204,24 @@ return headers; } + /** + * Returns the given host, without the IPv6 Zone Id, if present. + * (e.g. [fe80::a00:27ff:aaaa:aaaa%eth0] -> [fe80::a00:27ff:aaaa:aaaa]) + * + * @param host host address (not null, not empty) + * @return host address without Zone Id + */ + static String stripIPv6ZoneId(String host) { + if (host.charAt(0) != '[') { // not an IPv6-literal + return host; + } + int i = host.lastIndexOf('%'); + if (i == -1) { // doesn't contain zone_id + return host; + } + return host.substring(0, i) + "]"; + } + /* The purpose of this wrapper is just to capture the close() call * so we can check authentication information that may have * arrived in a Trailer field diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/print/PSPathGraphics.java --- a/jdk/src/share/classes/sun/print/PSPathGraphics.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/print/PSPathGraphics.java Wed Jul 05 19:45:17 2017 +0200 @@ -76,7 +76,7 @@ * a copy of this Graphics object. * @return a new graphics context that is a copy of * this graphics context. - * @since JDK1.0 + * @since 1.0 */ public Graphics create() { @@ -108,7 +108,7 @@ * @param y the y coordinate. * @see java.awt.Graphics#drawBytes * @see java.awt.Graphics#drawChars - * @since JDK1.0 + * @since 1.0 */ public void drawString(String str, int x, int y) { drawString(str, (float) x, (float) y); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/print/PathGraphics.java --- a/jdk/src/share/classes/sun/print/PathGraphics.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/print/PathGraphics.java Wed Jul 05 19:45:17 2017 +0200 @@ -332,7 +332,7 @@ * @param width the width of the oval to be drawn. * @param height the height of the oval to be drawn. * @see java.awt.Graphics#fillOval - * @since JDK1.0 + * @since 1.0 */ public void drawOval(int x, int y, int width, int height) { draw(new Ellipse2D.Float(x, y, width, height)); @@ -453,7 +453,7 @@ * @param yPoints an array of y points * @param nPoints the total number of points * @see java.awt.Graphics#drawPolygon(int[], int[], int) - * @since JDK1.1 + * @since 1.1 */ public void drawPolyline(int xPoints[], int yPoints[], int nPoints) { @@ -564,7 +564,7 @@ * @param y the y coordinate. * @see java.awt.Graphics#drawBytes * @see java.awt.Graphics#drawChars - * @since JDK1.0 + * @since 1.0 */ public void drawString(String str, int x, int y) { drawString(str, (float) x, (float) y); @@ -1388,7 +1388,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.0 + * @since 1.0 */ public boolean drawImage(Image img, int x, int y, ImageObserver observer) { @@ -1428,7 +1428,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.0 + * @since 1.0 */ public boolean drawImage(Image img, int x, int y, int width, int height, @@ -1472,7 +1472,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.0 + * @since 1.0 */ public boolean drawImage(Image img, int x, int y, Color bgcolor, @@ -1533,7 +1533,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.0 + * @since 1.0 */ public boolean drawImage(Image img, int x, int y, int width, int height, @@ -1605,7 +1605,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.1 + * @since 1.1 */ public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, @@ -1670,7 +1670,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.1 + * @since 1.1 */ public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/print/PeekGraphics.java --- a/jdk/src/share/classes/sun/print/PeekGraphics.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/print/PeekGraphics.java Wed Jul 05 19:45:17 2017 +0200 @@ -166,7 +166,7 @@ * a copy of this Graphics object. * @return a new graphics context that is a copy of * this graphics context. - * @since JDK1.0 + * @since 1.0 */ public Graphics create() { PeekGraphics newGraphics = null; @@ -196,7 +196,7 @@ * to this new origin. * @param x the x coordinate. * @param y the y coordinate. - * @since JDK1.0 + * @since 1.0 */ public void translate(int x, int y) { mGraphics.translate(x, y); @@ -293,7 +293,7 @@ * @return this graphics context's current color. * @see java.awt.Color * @see java.awt.Graphics#setColor - * @since JDK1.0 + * @since 1.0 */ public Color getColor() { return mGraphics.getColor(); @@ -306,7 +306,7 @@ * @param c the new rendering color. * @see java.awt.Color * @see java.awt.Graphics#getColor - * @since JDK1.0 + * @since 1.0 */ public void setColor(Color c) { mGraphics.setColor(c); @@ -318,7 +318,7 @@ * This sets the logical pixel operation function to the paint or * overwrite mode. All subsequent rendering operations will * overwrite the destination with the current color. - * @since JDK1.0 + * @since 1.0 */ public void setPaintMode() { mGraphics.setPaintMode(); @@ -338,7 +338,7 @@ * in an unpredictable but reversible manner; if the same figure is * drawn twice, then all pixels are restored to their original values. * @param c1 the XOR alternation color - * @since JDK1.0 + * @since 1.0 */ public void setXORMode(Color c1) { mGraphics.setXORMode(c1); @@ -349,7 +349,7 @@ * @return this graphics context's current font. * @see java.awt.Font * @see java.awt.Graphics#setFont - * @since JDK1.0 + * @since 1.0 */ public Font getFont() { return mGraphics.getFont(); @@ -364,7 +364,7 @@ * @see java.awt.Graphics#drawChars(java.lang.String, int, int) * @see java.awt.Graphics#drawString(byte[], int, int, int, int) * @see java.awt.Graphics#drawBytes(char[], int, int, int, int) - * @since JDK1.0 + * @since 1.0 */ public void setFont(Font font) { mGraphics.setFont(font); @@ -377,7 +377,7 @@ * @see java.awt.Graphics#getFont * @see java.awt.FontMetrics * @see java.awt.Graphics#getFontMetrics() - * @since JDK1.0 + * @since 1.0 */ public FontMetrics getFontMetrics(Font f) { return mGraphics.getFontMetrics(f); @@ -400,7 +400,7 @@ * @see java.awt.Graphics#clipRect * @see java.awt.Graphics#setClip(int, int, int, int) * @see java.awt.Graphics#setClip(Shape) - * @since JDK1.1 + * @since 1.1 */ public Rectangle getClipBounds() { return mGraphics.getClipBounds(); @@ -436,7 +436,7 @@ * @param height the height of the new clip rectangle. * @see java.awt.Graphics#clipRect * @see java.awt.Graphics#setClip(Shape) - * @since JDK1.1 + * @since 1.1 */ public void setClip(int x, int y, int width, int height) { mGraphics.setClip(x, y, width, height); @@ -450,7 +450,7 @@ * @see java.awt.Graphics#clipRect * @see java.awt.Graphics#setClip(int, int, int, int) * @see java.awt.Graphics#setClip(Shape) - * @since JDK1.1 + * @since 1.1 */ public Shape getClip() { return mGraphics.getClip(); @@ -468,7 +468,7 @@ * @see java.awt.Graphics#getClip() * @see java.awt.Graphics#clipRect * @see java.awt.Graphics#setClip(int, int, int, int) - * @since JDK1.1 + * @since 1.1 */ public void setClip(Shape clip) { mGraphics.setClip(clip); @@ -493,7 +493,7 @@ * @param height the height of the source rectangle. * @param dx the horizontal distance to copy the pixels. * @param dy the vertical distance to copy the pixels. - * @since JDK1.0 + * @since 1.0 */ public void copyArea(int x, int y, int width, int height, int dx, int dy) { @@ -508,7 +508,7 @@ * @param y1 the first point's y coordinate. * @param x2 the second point's x coordinate. * @param y2 the second point's y coordinate. - * @since JDK1.0 + * @since 1.0 */ public void drawLine(int x1, int y1, int x2, int y2) { addStrokeShape(new Line2D.Float(x1, y1, x2, y2)); @@ -535,7 +535,7 @@ * @param height the height of the rectangle to be filled. * @see java.awt.Graphics#fillRect * @see java.awt.Graphics#clearRect - * @since JDK1.0 + * @since 1.0 */ public void fillRect(int x, int y, int width, int height) { @@ -562,7 +562,7 @@ * @see java.awt.Graphics#setColor(java.awt.Color) * @see java.awt.Graphics#setPaintMode * @see java.awt.Graphics#setXORMode(java.awt.Color) - * @since JDK1.0 + * @since 1.0 */ public void clearRect(int x, int y, int width, int height) { Rectangle2D.Float rect = new Rectangle2D.Float(x, y, width, height); @@ -585,7 +585,7 @@ * @param arcHeight the vertical diameter of the arc * at the four corners. * @see java.awt.Graphics#fillRoundRect - * @since JDK1.0 + * @since 1.0 */ public void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) { @@ -609,7 +609,7 @@ * @param arcHeight the vertical diameter * of the arc at the four corners. * @see java.awt.Graphics#drawRoundRect - * @since JDK1.0 + * @since 1.0 */ public void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) { @@ -634,7 +634,7 @@ * @param width the width of the oval to be drawn. * @param height the height of the oval to be drawn. * @see java.awt.Graphics#fillOval - * @since JDK1.0 + * @since 1.0 */ public void drawOval(int x, int y, int width, int height) { addStrokeShape(new Rectangle2D.Float(x, y, width, height)); @@ -651,7 +651,7 @@ * @param width the width of the oval to be filled. * @param height the height of the oval to be filled. * @see java.awt.Graphics#drawOval - * @since JDK1.0 + * @since 1.0 */ public void fillOval(int x, int y, int width, int height) { Rectangle2D.Float rect = new Rectangle2D.Float(x, y, width, height); @@ -689,7 +689,7 @@ * @param arcAngle the angular extent of the arc, * relative to the start angle. * @see java.awt.Graphics#fillArc - * @since JDK1.0 + * @since 1.0 */ public void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) { @@ -725,7 +725,7 @@ * @param arcAngle the angular extent of the arc, * relative to the start angle. * @see java.awt.Graphics#drawArc - * @since JDK1.0 + * @since 1.0 */ public void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) { @@ -745,7 +745,7 @@ * @param yPoints an array of y points * @param nPoints the total number of points * @see java.awt.Graphics#drawPolygon(int[], int[], int) - * @since JDK1.1 + * @since 1.1 */ public void drawPolyline(int xPoints[], int yPoints[], int nPoints) { @@ -780,7 +780,7 @@ * @param nPoints a the total number of points. * @see java.awt.Graphics#fillPolygon * @see java.awt.Graphics#drawPolyline - * @since JDK1.0 + * @since 1.0 */ public void drawPolygon(int xPoints[], int yPoints[], int nPoints) { @@ -811,7 +811,7 @@ * @param yPoints a an array of y coordinates. * @param nPoints a the total number of points. * @see java.awt.Graphics#drawPolygon(int[], int[], int) - * @since JDK1.0 + * @since 1.0 */ public void fillPolygon(int xPoints[], int yPoints[], int nPoints) { @@ -854,7 +854,7 @@ * @param y the y coordinate. * @see java.awt.Graphics#drawBytes * @see java.awt.Graphics#drawChars - * @since JDK1.0 + * @since 1.0 */ public void drawString(String str, int x, int y) { @@ -942,7 +942,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.0 + * @since 1.0 */ public boolean drawImage(Image img, int x, int y, ImageObserver observer) { @@ -995,7 +995,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.0 + * @since 1.0 */ public boolean drawImage(Image img, int x, int y, int width, int height, @@ -1040,7 +1040,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.0 + * @since 1.0 */ public boolean drawImage(Image img, int x, int y, Color bgcolor, @@ -1099,7 +1099,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.0 + * @since 1.0 */ public boolean drawImage(Image img, int x, int y, int width, int height, @@ -1162,7 +1162,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.1 + * @since 1.1 */ public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, @@ -1236,7 +1236,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.1 + * @since 1.1 */ public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, @@ -1327,7 +1327,7 @@ * @see java.awt.Component#update * @see java.awt.Component#getGraphics * @see java.awt.Graphics#create - * @since JDK1.0 + * @since 1.0 */ public void dispose() { mGraphics.dispose(); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/print/ProxyGraphics.java --- a/jdk/src/share/classes/sun/print/ProxyGraphics.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/print/ProxyGraphics.java Wed Jul 05 19:45:17 2017 +0200 @@ -241,7 +241,7 @@ * @see java.awt.Graphics#clipRect * @see java.awt.Graphics#setClip(int, int, int, int) * @see java.awt.Graphics#setClip(Shape) - * @since JDK1.1 + * @since 1.1 */ public Rectangle getClipBounds() { return g.getClipBounds(); @@ -282,7 +282,7 @@ * @param height the height of the new clip rectangle. * @see java.awt.Graphics#clipRect * @see java.awt.Graphics#setClip(Shape) - * @since JDK1.1 + * @since 1.1 */ public void setClip(int x, int y, int width, int height) { g.setClip(x, y, width, height); @@ -302,7 +302,7 @@ * @see java.awt.Graphics#clipRect * @see java.awt.Graphics#setClip(int, int, int, int) * @see java.awt.Graphics#setClip(Shape) - * @since JDK1.1 + * @since 1.1 */ public Shape getClip() { return g.getClip(); @@ -322,7 +322,7 @@ * @see java.awt.Graphics#getClip() * @see java.awt.Graphics#clipRect * @see java.awt.Graphics#setClip(int, int, int, int) - * @since JDK1.1 + * @since 1.1 */ public void setClip(Shape clip) { g.setClip(clip); @@ -647,7 +647,7 @@ * @param yPoints an array of y points * @param nPoints the total number of points * @see java.awt.Graphics#drawPolygon(int[], int[], int) - * @since JDK1.1 + * @since 1.1 */ public void drawPolyline(int xPoints[], int yPoints[], int nPoints) { @@ -988,7 +988,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.1 + * @since 1.1 */ public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, @@ -1051,7 +1051,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.1 + * @since 1.1 */ public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/print/ProxyGraphics2D.java --- a/jdk/src/share/classes/sun/print/ProxyGraphics2D.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/print/ProxyGraphics2D.java Wed Jul 05 19:45:17 2017 +0200 @@ -115,7 +115,7 @@ * a copy of this Graphics object. * @return a new graphics context that is a copy of * this graphics context. - * @since JDK1.0 + * @since 1.0 */ public Graphics create() { return new ProxyGraphics2D((Graphics2D) mGraphics.create(), @@ -132,7 +132,7 @@ * to this new origin. * @param x the x coordinate. * @param y the y coordinate. - * @since JDK1.0 + * @since 1.0 */ public void translate(int x, int y) { mGraphics.translate(x, y); @@ -229,7 +229,7 @@ * @return this graphics context's current color. * @see java.awt.Color * @see java.awt.Graphics#setColor - * @since JDK1.0 + * @since 1.0 */ public Color getColor() { return mGraphics.getColor(); @@ -242,7 +242,7 @@ * @param c the new rendering color. * @see java.awt.Color * @see java.awt.Graphics#getColor - * @since JDK1.0 + * @since 1.0 */ public void setColor(Color c) { mGraphics.setColor(c); @@ -254,7 +254,7 @@ * This sets the logical pixel operation function to the paint or * overwrite mode. All subsequent rendering operations will * overwrite the destination with the current color. - * @since JDK1.0 + * @since 1.0 */ public void setPaintMode() { mGraphics.setPaintMode(); @@ -274,7 +274,7 @@ * in an unpredictable but reversible manner; if the same figure is * drawn twice, then all pixels are restored to their original values. * @param c1 the XOR alternation color - * @since JDK1.0 + * @since 1.0 */ public void setXORMode(Color c1) { mGraphics.setXORMode(c1); @@ -285,7 +285,7 @@ * @return this graphics context's current font. * @see java.awt.Font * @see java.awt.Graphics#setFont - * @since JDK1.0 + * @since 1.0 */ public Font getFont() { return mGraphics.getFont(); @@ -300,7 +300,7 @@ * @see java.awt.Graphics#drawChars(java.lang.String, int, int) * @see java.awt.Graphics#drawString(byte[], int, int, int, int) * @see java.awt.Graphics#drawBytes(char[], int, int, int, int) - * @since JDK1.0 + * @since 1.0 */ public void setFont(Font font) { mGraphics.setFont(font); @@ -313,7 +313,7 @@ * @see java.awt.Graphics#getFont * @see java.awt.FontMetrics * @see java.awt.Graphics#getFontMetrics() - * @since JDK1.0 + * @since 1.0 */ public FontMetrics getFontMetrics(Font f) { return mGraphics.getFontMetrics(f); @@ -336,7 +336,7 @@ * @see java.awt.Graphics#clipRect * @see java.awt.Graphics#setClip(int, int, int, int) * @see java.awt.Graphics#setClip(Shape) - * @since JDK1.1 + * @since 1.1 */ public Rectangle getClipBounds() { return mGraphics.getClipBounds(); @@ -372,7 +372,7 @@ * @param height the height of the new clip rectangle. * @see java.awt.Graphics#clipRect * @see java.awt.Graphics#setClip(Shape) - * @since JDK1.1 + * @since 1.1 */ public void setClip(int x, int y, int width, int height) { mGraphics.setClip(x, y, width, height); @@ -386,7 +386,7 @@ * @see java.awt.Graphics#clipRect * @see java.awt.Graphics#setClip(int, int, int, int) * @see java.awt.Graphics#setClip(Shape) - * @since JDK1.1 + * @since 1.1 */ public Shape getClip() { return mGraphics.getClip(); @@ -404,7 +404,7 @@ * @see java.awt.Graphics#getClip() * @see java.awt.Graphics#clipRect * @see java.awt.Graphics#setClip(int, int, int, int) - * @since JDK1.1 + * @since 1.1 */ public void setClip(Shape clip) { mGraphics.setClip(clip); @@ -429,7 +429,7 @@ * @param height the height of the source rectangle. * @param dx the horizontal distance to copy the pixels. * @param dy the vertical distance to copy the pixels. - * @since JDK1.0 + * @since 1.0 */ public void copyArea(int x, int y, int width, int height, int dx, int dy) { @@ -444,7 +444,7 @@ * @param y1 the first point's y coordinate. * @param x2 the second point's x coordinate. * @param y2 the second point's y coordinate. - * @since JDK1.0 + * @since 1.0 */ public void drawLine(int x1, int y1, int x2, int y2) { mGraphics.drawLine(x1, y1, x2, y2); @@ -469,7 +469,7 @@ * @param height the height of the rectangle to be filled. * @see java.awt.Graphics#fillRect * @see java.awt.Graphics#clearRect - * @since JDK1.0 + * @since 1.0 */ public void fillRect(int x, int y, int width, int height) { mGraphics.fillRect(x, y, width, height); @@ -493,7 +493,7 @@ * @see java.awt.Graphics#setColor(java.awt.Color) * @see java.awt.Graphics#setPaintMode * @see java.awt.Graphics#setXORMode(java.awt.Color) - * @since JDK1.0 + * @since 1.0 */ public void clearRect(int x, int y, int width, int height) { mGraphics.clearRect(x, y, width, height); @@ -514,7 +514,7 @@ * @param arcHeight the vertical diameter of the arc * at the four corners. * @see java.awt.Graphics#fillRoundRect - * @since JDK1.0 + * @since 1.0 */ public void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) { @@ -536,7 +536,7 @@ * @param arcHeight the vertical diameter * of the arc at the four corners. * @see java.awt.Graphics#drawRoundRect - * @since JDK1.0 + * @since 1.0 */ public void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight) { @@ -559,7 +559,7 @@ * @param width the width of the oval to be drawn. * @param height the height of the oval to be drawn. * @see java.awt.Graphics#fillOval - * @since JDK1.0 + * @since 1.0 */ public void drawOval(int x, int y, int width, int height) { mGraphics.drawOval(x, y, width, height); @@ -575,7 +575,7 @@ * @param width the width of the oval to be filled. * @param height the height of the oval to be filled. * @see java.awt.Graphics#drawOval - * @since JDK1.0 + * @since 1.0 */ public void fillOval(int x, int y, int width, int height) { mGraphics.fillOval(x, y, width, height); @@ -609,7 +609,7 @@ * @param arcAngle the angular extent of the arc, * relative to the start angle. * @see java.awt.Graphics#fillArc - * @since JDK1.0 + * @since 1.0 */ public void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) { @@ -643,7 +643,7 @@ * @param arcAngle the angular extent of the arc, * relative to the start angle. * @see java.awt.Graphics#drawArc - * @since JDK1.0 + * @since 1.0 */ public void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle) { @@ -660,7 +660,7 @@ * @param yPoints an array of y points * @param nPoints the total number of points * @see java.awt.Graphics#drawPolygon(int[], int[], int) - * @since JDK1.1 + * @since 1.1 */ public void drawPolyline(int xPoints[], int yPoints[], int nPoints) { @@ -685,7 +685,7 @@ * @param nPoints a the total number of points. * @see java.awt.Graphics#fillPolygon * @see java.awt.Graphics#drawPolyline - * @since JDK1.0 + * @since 1.0 */ public void drawPolygon(int xPoints[], int yPoints[], int nPoints) { @@ -711,7 +711,7 @@ * @param yPoints a an array of y coordinates. * @param nPoints a the total number of points. * @see java.awt.Graphics#drawPolygon(int[], int[], int) - * @since JDK1.0 + * @since 1.0 */ public void fillPolygon(int xPoints[], int yPoints[], int nPoints) { @@ -728,7 +728,7 @@ * @param y the y coordinate. * @see java.awt.Graphics#drawBytes * @see java.awt.Graphics#drawChars - * @since JDK1.0 + * @since 1.0 */ public void drawString(String str, int x, int y) { mGraphics.drawString(str, x, y); @@ -807,7 +807,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.0 + * @since 1.0 */ public boolean drawImage(Image img, int x, int y, ImageObserver observer) { @@ -847,7 +847,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.0 + * @since 1.0 */ public boolean drawImage(Image img, int x, int y, int width, int height, @@ -885,7 +885,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.0 + * @since 1.0 */ public boolean drawImage(Image img, int x, int y, Color bgcolor, @@ -944,7 +944,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.0 + * @since 1.0 */ public boolean drawImage(Image img, int x, int y, int width, int height, @@ -1013,7 +1013,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.1 + * @since 1.1 */ public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, @@ -1075,7 +1075,7 @@ * @see java.awt.Image * @see java.awt.image.ImageObserver * @see java.awt.image.ImageObserver#imageUpdate(java.awt.Image, int, int, int, int, int) - * @since JDK1.1 + * @since 1.1 */ public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, @@ -1255,7 +1255,7 @@ * @see java.awt.Component#update * @see java.awt.Component#getGraphics * @see java.awt.Graphics#create - * @since JDK1.0 + * @since 1.0 */ public void dispose() { mGraphics.dispose(); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/security/provider/SeedGenerator.java --- a/jdk/src/share/classes/sun/security/provider/SeedGenerator.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/security/provider/SeedGenerator.java Wed Jul 05 19:45:17 2017 +0200 @@ -150,14 +150,13 @@ * Retrieve some system information, hashed. */ static byte[] getSystemEntropy() { - byte[] ba; final MessageDigest md; try { md = MessageDigest.getInstance("SHA"); } catch (NoSuchAlgorithmException nsae) { - throw new InternalError("internal error: SHA-1 not available." - , nsae); + throw new InternalError("internal error: SHA-1 not available.", + nsae); } // The current time in millis @@ -170,11 +169,8 @@ public Void run() { try { // System properties can change from machine to machine - String s; Properties p = System.getProperties(); - Enumeration e = p.propertyNames(); - while (e.hasMoreElements()) { - s =(String)e.nextElement(); + for (String s: p.stringPropertyNames()) { md.update(s.getBytes()); md.update(p.getProperty(s).getBytes()); } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java --- a/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/security/provider/certpath/URICertStore.java Wed Jul 05 19:45:17 2017 +0200 @@ -84,7 +84,7 @@ * * @author Andreas Sterbenz * @author Sean Mullan - * @since 7.0 + * @since 1.7 */ class URICertStore extends CertStoreSpi { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/security/ssl/BaseSSLSocketImpl.java --- a/jdk/src/share/classes/sun/security/ssl/BaseSSLSocketImpl.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/security/ssl/BaseSSLSocketImpl.java Wed Jul 05 19:45:17 2017 +0200 @@ -307,7 +307,7 @@ * Gets the local address to which the socket is bound. * * @return the local address to which the socket is bound. - * @since JDK1.1 + * @since 1.1 */ @Override public final InetAddress getLocalAddress() { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java --- a/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/security/tools/KeyStoreUtil.java Wed Jul 05 19:45:17 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2012, 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 @@ -25,19 +25,28 @@ package sun.security.tools; + import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; +import java.io.StreamTokenizer; +import java.io.StringReader; import java.net.URL; import java.security.KeyStore; import java.text.Collator; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import java.util.Locale; +import java.util.Properties; + +import sun.security.util.PropertyExpander; /** *

    This class provides several utilities to KeyStore. @@ -151,4 +160,83 @@ return null; } } + + /** + * Parses a option line likes + * -genkaypair -dname "CN=Me" + * and add the results into a list + * @param list the list to fill into + * @param s the line + */ + private static void parseArgsLine(List list, String s) + throws IOException, PropertyExpander.ExpandException { + StreamTokenizer st = new StreamTokenizer(new StringReader(s)); + + st.resetSyntax(); + st.whitespaceChars(0x00, 0x20); + st.wordChars(0x21, 0xFF); + // Everything is a word char except for quotation and apostrophe + st.quoteChar('"'); + st.quoteChar('\''); + + while (true) { + if (st.nextToken() == StreamTokenizer.TT_EOF) { + break; + } + list.add(PropertyExpander.expand(st.sval)); + } + } + + /** + * Prepends matched options from a pre-configured options file. + * @param tool the name of the tool, can be "keytool" or "jarsigner" + * @param file the pre-configured options file + * @param c1 the name of the command, with the "-" prefix, + * must not be null + * @param c2 the alternative command name, with the "-" prefix, + * null if none. For example, "genkey" is alt name for + * "genkeypair". A command can only have one alt name now. + * @param args existing arguments + * @return arguments combined + * @throws IOException if there is a file I/O or format error + * @throws PropertyExpander.ExpandException + * if there is a property expansion error + */ + public static String[] expandArgs(String tool, String file, + String c1, String c2, String[] args) + throws IOException, PropertyExpander.ExpandException { + + List result = new ArrayList<>(); + Properties p = new Properties(); + p.load(new FileInputStream(file)); + + String s = p.getProperty(tool + ".all"); + if (s != null) { + parseArgsLine(result, s); + } + + // Cannot provide both -genkey and -genkeypair + String s1 = p.getProperty(tool + "." + c1.substring(1)); + String s2 = null; + if (c2 != null) { + s2 = p.getProperty(tool + "." + c2.substring(1)); + } + if (s1 != null && s2 != null) { + throw new IOException("Cannot have both " + c1 + " and " + + c2 + " as pre-configured options"); + } + if (s1 == null) { + s1 = s2; + } + if (s1 != null) { + parseArgsLine(result, s1); + } + + if (result.isEmpty()) { + return args; + } else { + result.addAll(Arrays.asList(args)); + return result.toArray(new String[result.size()]); + } + } } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/security/tools/jarsigner/Main.java --- a/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/security/tools/jarsigner/Main.java Wed Jul 05 19:45:17 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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 @@ -178,7 +178,7 @@ public void run(String args[]) { try { - parseArgs(args); + args = parseArgs(args); // Try to load and install the specified providers if (providers != null) { @@ -282,11 +282,39 @@ /* * Parse command line arguments. */ - void parseArgs(String args[]) { + String[] parseArgs(String args[]) throws Exception { /* parse flags */ int n = 0; if (args.length == 0) fullusage(); + + String confFile = null; + String command = "-sign"; + for (n=0; n < args.length; n++) { + if (collator.compare(args[n], "-verify") == 0) { + command = "-verify"; + } else if (collator.compare(args[n], "-conf") == 0) { + if (n == args.length - 1) { + usageNoArg(); + } + confFile = args[++n]; + } + } + + if (confFile != null) { + args = KeyStoreUtil.expandArgs( + "jarsigner", confFile, command, null, args); + } + + debug = Arrays.stream(args).anyMatch( + x -> collator.compare(x, "-debug") == 0); + + if (debug) { + // No need to localize debug output + System.out.println("Command line args: " + + Arrays.toString(args)); + } + for (n=0; n < args.length; n++) { String flags = args[n]; @@ -307,6 +335,8 @@ alias = flags; ckaliases.add(alias); } + } else if (collator.compare(flags, "-conf") == 0) { + if (++n == args.length) usageNoArg(); } else if (collator.compare(flags, "-keystore") == 0) { if (++n == args.length) usageNoArg(); keystore = args[n]; @@ -347,7 +377,7 @@ if (++n == args.length) usageNoArg(); tSADigestAlg = args[n]; } else if (collator.compare(flags, "-debug") ==0) { - debug = true; + // Already processed } else if (collator.compare(flags, "-keypass") ==0) { if (++n == args.length) usageNoArg(); keypass = getPass(modifier, args[n]); @@ -466,6 +496,7 @@ usage(); } } + return args; } static char[] getPass(String modifier, String arg) { @@ -568,6 +599,9 @@ System.out.println(rb.getString (".strict.treat.warnings.as.errors")); System.out.println(); + System.out.println(rb.getString + (".conf.url.specify.a.pre.configured.options.file")); + System.out.println(); System.exit(0); } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/security/tools/jarsigner/Resources.java --- a/jdk/src/share/classes/sun/security/tools/jarsigner/Resources.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/security/tools/jarsigner/Resources.java Wed Jul 05 19:45:17 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * 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 @@ -108,6 +108,8 @@ " [-providerArg ]] ... master class file and constructor argument"}, {".strict.treat.warnings.as.errors", "[-strict] treat warnings as errors"}, + {".conf.url.specify.a.pre.configured.options.file", + "[-conf ] specify a pre-configured options file"}, {"Option.lacks.argument", "Option lacks argument"}, {"Please.type.jarsigner.help.for.usage", "Please type jarsigner -help for usage"}, {"Please.specify.jarfile.name", "Please specify jarfile name"}, diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/security/tools/keytool/Main.java --- a/jdk/src/share/classes/sun/security/tools/keytool/Main.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/security/tools/keytool/Main.java Wed Jul 05 19:45:17 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 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,7 +38,6 @@ import java.security.Timestamp; import java.security.UnrecoverableEntryException; import java.security.UnrecoverableKeyException; -import java.security.NoSuchAlgorithmException; import java.security.Principal; import java.security.Provider; import java.security.cert.Certificate; @@ -64,6 +63,7 @@ import java.security.cert.X509CRLSelector; import javax.security.auth.x500.X500Principal; import java.util.Base64; + import sun.security.util.ObjectIdentifier; import sun.security.pkcs10.PKCS10; import sun.security.pkcs10.PKCS10Attribute; @@ -242,16 +242,44 @@ final String description; final Option[] options; + final String name; + + String altName; // "genkey" is altName for "genkeypair" + Command(String d, Option... o) { description = d; options = o; + name = "-" + name().toLowerCase(Locale.ENGLISH); } @Override public String toString() { - return "-" + name().toLowerCase(Locale.ENGLISH); + return name; + } + public String getAltName() { + return altName; + } + public void setAltName(String altName) { + this.altName = altName; + } + public static Command getCommand(String cmd) { + for (Command c: Command.values()) { + if (collator.compare(cmd, c.name) == 0 + || (c.altName != null + && collator.compare(cmd, c.altName) == 0)) { + return c; + } + } + return null; } }; + static { + Command.GENKEYPAIR.setAltName("-genkey"); + Command.IMPORTCERT.setAltName("-import"); + Command.EXPORTCERT.setAltName("-export"); + Command.IMPORTPASS.setAltName("-importpassword"); + } + enum Option { ALIAS("alias", "", "alias.name.of.the.entry.to.process"), DESTALIAS("destalias", "", "destination.alias"), @@ -335,7 +363,7 @@ private void run(String[] args, PrintStream out) throws Exception { try { - parseArgs(args); + args = parseArgs(args); if (command != null) { doCommands(out); } @@ -366,11 +394,43 @@ /** * Parse command line arguments. */ - void parseArgs(String[] args) { + String[] parseArgs(String[] args) throws Exception { int i=0; boolean help = args.length == 0; + String confFile = null; + + for (i=0; i < args.length; i++) { + String flags = args[i]; + if (flags.startsWith("-")) { + if (collator.compare(flags, "-conf") == 0) { + if (i == args.length - 1) { + errorNeedArgument(flags); + } + confFile = args[++i]; + } else { + Command c = Command.getCommand(flags); + if (c != null) command = c; + } + } + } + + if (confFile != null && command != null) { + args = KeyStoreUtil.expandArgs("keytool", confFile, + command.toString(), + command.getAltName(), args); + } + + debug = Arrays.stream(args).anyMatch( + x -> collator.compare(x, "-debug") == 0); + + if (debug) { + // No need to localize debug output + System.out.println("Command line args: " + + Arrays.toString(args)); + } + for (i=0; (i < args.length) && args[i].startsWith("-"); i++) { String flags = args[i]; @@ -395,34 +455,18 @@ modifier = flags.substring(pos+1); flags = flags.substring(0, pos); } + /* * command modes */ - boolean isCommand = false; - for (Command c: Command.values()) { - if (collator.compare(flags, c.toString()) == 0) { - command = c; - isCommand = true; - break; - } - } - - if (isCommand) { - // already recognized as a command - } else if (collator.compare(flags, "-export") == 0) { - command = EXPORTCERT; - } else if (collator.compare(flags, "-genkey") == 0) { - command = GENKEYPAIR; - } else if (collator.compare(flags, "-import") == 0) { - command = IMPORTCERT; - } else if (collator.compare(flags, "-importpassword") == 0) { - command = IMPORTPASS; - } - /* - * Help - */ - else if (collator.compare(flags, "-help") == 0) { + Command c = Command.getCommand(flags); + + if (c != null) { + command = c; + } else if (collator.compare(flags, "-help") == 0) { help = true; + } else if (collator.compare(flags, "-conf") == 0) { + i++; } /* @@ -522,7 +566,7 @@ else if (collator.compare(flags, "-v") == 0) { verbose = true; } else if (collator.compare(flags, "-debug") == 0) { - debug = true; + // Already processed } else if (collator.compare(flags, "-rfc") == 0) { rfc = true; } else if (collator.compare(flags, "-noprompt") == 0) { @@ -556,6 +600,8 @@ usage(); command = null; } + + return args; } boolean isKeyStoreRelated(Command cmd) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/security/tools/keytool/Resources.java --- a/jdk/src/share/classes/sun/security/tools/keytool/Resources.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/security/tools/keytool/Resources.java Wed Jul 05 19:45:17 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * 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 @@ -48,7 +48,8 @@ "Key and Certificate Management Tool"}, {"Commands.", "Commands:"}, {"Use.keytool.command.name.help.for.usage.of.command.name", - "Use \"keytool -command_name -help\" for usage of command_name"}, + "Use \"keytool -command_name -help\" for usage of command_name.\n" + + "Use the -conf option to specify a pre-configured options file."}, // keytool: help: commands {"Generates.a.certificate.request", "Generates a certificate request"}, //-certreq diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/tools/attach/HotSpotVirtualMachine.java --- a/jdk/src/share/classes/sun/tools/attach/HotSpotVirtualMachine.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/tools/attach/HotSpotVirtualMachine.java Wed Jul 05 19:45:17 2017 +0200 @@ -33,7 +33,7 @@ import java.io.InputStream; import java.io.IOException; import java.util.Properties; -import java.util.Map; +import java.util.stream.Collectors; /* * The HotSpot implementation of com.sun.tools.attach.VirtualMachine. @@ -161,6 +161,50 @@ return props; } + private static final String MANAGMENT_PREFIX = "com.sun.management."; + + private static boolean checkedKeyName(Object key) { + if (!(key instanceof String)) { + throw new IllegalArgumentException("Invalid option (not a String): "+key); + } + if (!((String)key).startsWith(MANAGMENT_PREFIX)) { + throw new IllegalArgumentException("Invalid option: "+key); + } + return true; + } + + private static String stripKeyName(Object key) { + return ((String)key).substring(MANAGMENT_PREFIX.length()); + } + + @Override + public void startManagementAgent(Properties agentProperties) throws IOException { + if (agentProperties == null) { + throw new NullPointerException("agentProperties cannot be null"); + } + // Convert the arguments into arguments suitable for the Diagnostic Command: + // "ManagementAgent.start jmxremote.port=5555 jmxremote.authenticate=false" + String args = agentProperties.entrySet().stream() + .filter(entry -> checkedKeyName(entry.getKey())) + .map(entry -> stripKeyName(entry.getKey()) + "=" + escape(entry.getValue())) + .collect(Collectors.joining(" ")); + executeJCmd("ManagementAgent.start " + args); + } + + private String escape(Object arg) { + String value = arg.toString(); + if (value.contains(" ")) { + return "'" + value + "'"; + } + return value; + } + + @Override + public String startLocalManagementAgent() throws IOException { + executeJCmd("ManagementAgent.start_local"); + return getAgentProperties().getProperty("com.sun.management.jmxremote.localConnectorAddress"); + } + // --- HotSpot specific methods --- // same as SIGQUIT diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/tools/jconsole/LocalVirtualMachine.java --- a/jdk/src/share/classes/sun/tools/jconsole/LocalVirtualMachine.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/tools/jconsole/LocalVirtualMachine.java Wed Jul 05 19:45:17 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2012, 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 @@ -32,8 +32,6 @@ // Sun specific import com.sun.tools.attach.VirtualMachine; import com.sun.tools.attach.VirtualMachineDescriptor; -import com.sun.tools.attach.AgentInitializationException; -import com.sun.tools.attach.AgentLoadException; import com.sun.tools.attach.AttachNotSupportedException; // Sun private @@ -238,35 +236,7 @@ throw ioe; } - String home = vm.getSystemProperties().getProperty("java.home"); - - // Normally in ${java.home}/jre/lib/management-agent.jar but might - // be in ${java.home}/lib in build environments. - - String agent = home + File.separator + "jre" + File.separator + - "lib" + File.separator + "management-agent.jar"; - File f = new File(agent); - if (!f.exists()) { - agent = home + File.separator + "lib" + File.separator + - "management-agent.jar"; - f = new File(agent); - if (!f.exists()) { - throw new IOException("Management agent not found"); - } - } - - agent = f.getCanonicalPath(); - try { - vm.loadAgent(agent, "com.sun.management.jmxremote"); - } catch (AgentLoadException x) { - IOException ioe = new IOException(x.getMessage()); - ioe.initCause(x); - throw ioe; - } catch (AgentInitializationException x) { - IOException ioe = new IOException(x.getMessage()); - ioe.initCause(x); - throw ioe; - } + vm.startLocalManagementAgent(); // get the connector address Properties agentProps = vm.getAgentProperties(); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/tools/jconsole/ProxyClient.java --- a/jdk/src/share/classes/sun/tools/jconsole/ProxyClient.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/tools/jconsole/ProxyClient.java Wed Jul 05 19:45:17 2017 +0200 @@ -954,7 +954,7 @@ final InvocationHandler ih = new SnapshotInvocationHandler(mbsc); return (SnapshotMBeanServerConnection) Proxy.newProxyInstance( Snapshot.class.getClassLoader(), - new Class[] {SnapshotMBeanServerConnection.class}, + new Class[] {SnapshotMBeanServerConnection.class}, ih); } } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/tools/jconsole/TimeComboBox.java --- a/jdk/src/share/classes/sun/tools/jconsole/TimeComboBox.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/tools/jconsole/TimeComboBox.java Wed Jul 05 19:45:17 2017 +0200 @@ -37,7 +37,7 @@ * them. */ @SuppressWarnings("serial") -public class TimeComboBox extends JComboBox implements ItemListener, PropertyChangeListener { +public class TimeComboBox extends JComboBox implements ItemListener, PropertyChangeListener { private ArrayList plotters = new ArrayList(); public TimeComboBox(Plotter... plotterArray) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/tools/jconsole/inspector/OperationEntry.java --- a/jdk/src/share/classes/sun/tools/jconsole/inspector/OperationEntry.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/OperationEntry.java Wed Jul 05 19:45:17 2017 +0200 @@ -32,7 +32,6 @@ @SuppressWarnings("serial") public class OperationEntry extends JPanel { private MBeanOperationInfo operation; - private JComboBox sigs; private XTextField inputs[]; public OperationEntry (MBeanOperationInfo operation, diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/tools/jconsole/inspector/TableSorter.java --- a/jdk/src/share/classes/sun/tools/jconsole/inspector/TableSorter.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/tools/jconsole/inspector/TableSorter.java Wed Jul 05 19:45:17 2017 +0200 @@ -146,7 +146,7 @@ // update row heights in XMBeanAttributes (required by expandable cells) if (attrs != null) { for (int i = 0; i < getRowCount(); i++) { - Vector data = (Vector) dataVector.elementAt(i); + Vector data = (Vector) dataVector.elementAt(i); attrs.updateRowHeight(data.elementAt(1), i); } } @@ -217,17 +217,17 @@ } } - private Vector getRow(int row) { + private Vector getRow(int row) { return (Vector) dataVector.elementAt(row); } @SuppressWarnings("unchecked") - private void setRow(Vector data, int row) { + private void setRow(Vector data, int row) { dataVector.setElementAt(data,row); } private void swap(int i, int j, int column) { - Vector data = getRow(i); + Vector data = getRow(i); setRow(getRow(j),i); setRow(data,j); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/tools/jmap/JMap.java --- a/jdk/src/share/classes/sun/tools/jmap/JMap.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/tools/jmap/JMap.java Wed Jul 05 19:45:17 2017 +0200 @@ -194,7 +194,7 @@ } // invoke the main method with the arguments - Class[] argTypes = { String[].class } ; + Class[] argTypes = { String[].class } ; Method m = c.getDeclaredMethod("main", argTypes); Object[] invokeArgs = { args }; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/tools/jstack/JStack.java --- a/jdk/src/share/classes/sun/tools/jstack/JStack.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/tools/jstack/JStack.java Wed Jul 05 19:45:17 2017 +0200 @@ -133,7 +133,7 @@ args = prepend("-l", args); } - Class[] argTypes = { String[].class }; + Class[] argTypes = { String[].class }; Method m = cl.getDeclaredMethod("main", argTypes); Object[] invokeArgs = { args }; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/tools/jstat/Alignment.java --- a/jdk/src/share/classes/sun/tools/jstat/Alignment.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/tools/jstat/Alignment.java Wed Jul 05 19:45:17 2017 +0200 @@ -110,7 +110,7 @@ * * @return Set of Key Words for this enumeration. */ - public static Set keySet() { + public static Set keySet() { return map.keySet(); } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/tools/jstat/ColumnFormat.java --- a/jdk/src/share/classes/sun/tools/jstat/ColumnFormat.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/tools/jstat/ColumnFormat.java Wed Jul 05 19:45:17 2017 +0200 @@ -143,8 +143,8 @@ + ";format=" + format + ";width=" + width + ";scale=" + scale.toString() + ";align=" + align.toString()); - for (Iterator i = children.iterator(); i.hasNext(); /* empty */) { - OptionFormat of = (OptionFormat)i.next(); + for (Iterator i = children.iterator(); i.hasNext(); /* empty */) { + OptionFormat of = i.next(); of.printFormat(indentLevel+1); } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/tools/jstat/Jstat.java --- a/jdk/src/share/classes/sun/tools/jstat/Jstat.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/tools/jstat/Jstat.java Wed Jul 05 19:45:17 2017 +0200 @@ -116,8 +116,8 @@ Collections.sort(logged, arguments.comparator()); List constants = new ArrayList(); - for (Iterator i = logged.iterator(); i.hasNext(); /* empty */) { - Monitor m = (Monitor)i.next(); + for (Iterator i = logged.iterator(); i.hasNext(); /* empty */) { + Monitor m = i.next(); if (!(m.isSupported() || arguments.showUnsupported())) { i.remove(); continue; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/tools/jstat/Operator.java --- a/jdk/src/share/classes/sun/tools/jstat/Operator.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/tools/jstat/Operator.java Wed Jul 05 19:45:17 2017 +0200 @@ -105,7 +105,7 @@ * @param s an string to match against Operator objects. * @return The Operator object matching the given string. */ - protected static Set keySet() { + protected static Set keySet() { return map.keySet(); } } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/tools/jstat/OptionFormat.java --- a/jdk/src/share/classes/sun/tools/jstat/OptionFormat.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/tools/jstat/OptionFormat.java Wed Jul 05 19:45:17 2017 +0200 @@ -77,13 +77,13 @@ public void apply(Closure c) throws MonitorException { - for (Iterator i = children.iterator(); i.hasNext(); /* empty */) { - OptionFormat o = (OptionFormat)i.next(); + for (Iterator i = children.iterator(); i.hasNext(); /* empty */) { + OptionFormat o = i.next(); c.visit(o, i.hasNext()); } - for (Iterator i = children.iterator(); i.hasNext(); /* empty */) { - OptionFormat o = (OptionFormat)i.next(); + for (Iterator i = children.iterator(); i.hasNext(); /* empty */) { + OptionFormat o = i.next(); o.apply(c); } } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/tools/jstat/Parser.java --- a/jdk/src/share/classes/sun/tools/jstat/Parser.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/tools/jstat/Parser.java Wed Jul 05 19:45:17 2017 +0200 @@ -63,8 +63,8 @@ private static final String START = OPTION; - private static final Set scaleKeyWords = Scale.keySet(); - private static final Set alignKeyWords = Alignment.keySet(); + private static final Set scaleKeyWords = Scale.keySet(); + private static final Set alignKeyWords = Alignment.keySet(); private static String[] otherKeyWords = { OPTION, COLUMN, DATA, HEADER, WIDTH, FORMAT, ALIGN, SCALE }; @@ -141,7 +141,7 @@ * token is assumed to be of type TT_WORD, and the set is assumed * to contain String objects. */ - private Token matchOne(Set keyWords) throws ParserException, IOException { + private Token matchOne(Set keyWords) throws ParserException, IOException { if ((lookahead.ttype == StreamTokenizer.TT_WORD) && keyWords.contains(lookahead.sval)) { Token t = lookahead; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/tools/jstat/RawOutputFormatter.java --- a/jdk/src/share/classes/sun/tools/jstat/RawOutputFormatter.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/tools/jstat/RawOutputFormatter.java Wed Jul 05 19:45:17 2017 +0200 @@ -35,11 +35,11 @@ * @since 1.5 */ public class RawOutputFormatter implements OutputFormatter { - private List logged; + private List logged; private String header; private boolean printStrings; - public RawOutputFormatter(List logged, boolean printStrings) { + public RawOutputFormatter(List logged, boolean printStrings) { this.logged = logged; this.printStrings = printStrings; } @@ -48,8 +48,8 @@ if (header == null) { // build the header string and prune out any unwanted monitors StringBuilder headerBuilder = new StringBuilder(); - for (Iterator i = logged.iterator(); i.hasNext(); /* empty */ ) { - Monitor m = (Monitor)i.next(); + for (Iterator i = logged.iterator(); i.hasNext(); /* empty */ ) { + Monitor m = i.next(); headerBuilder.append(m.getName() + " "); } header = headerBuilder.toString(); @@ -60,8 +60,8 @@ public String getRow() throws MonitorException { StringBuilder row = new StringBuilder(); int count = 0; - for (Iterator i = logged.iterator(); i.hasNext(); /* empty */ ) { - Monitor m = (Monitor)i.next(); + for (Iterator i = logged.iterator(); i.hasNext(); /* empty */ ) { + Monitor m = i.next(); if (count++ > 0) { row.append(" "); } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/tools/jstat/Scale.java --- a/jdk/src/share/classes/sun/tools/jstat/Scale.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/tools/jstat/Scale.java Wed Jul 05 19:45:17 2017 +0200 @@ -175,7 +175,7 @@ * @param s an string to match against Scale objects. * @return The Scale object matching the given string. */ - protected static Set keySet() { + protected static Set keySet() { return map.keySet(); } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/tools/jstat/SyntaxException.java --- a/jdk/src/share/classes/sun/tools/jstat/SyntaxException.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/tools/jstat/SyntaxException.java Wed Jul 05 19:45:17 2017 +0200 @@ -62,14 +62,14 @@ + ", Found " + found.toMessage(); } - public SyntaxException(int lineno, Set expected, Token found) { + public SyntaxException(int lineno, Set expected, Token found) { StringBuilder msg = new StringBuilder(); msg.append("Syntax error at line " + lineno + ": Expected one of \'"); boolean first = true; - for (Iterator i = expected.iterator(); i.hasNext(); /* empty */) { - String keyWord = (String)i.next(); + for (Iterator i = expected.iterator(); i.hasNext(); /* empty */) { + String keyWord = i.next(); if (first) { msg.append(keyWord); first = false; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/tools/serialver/resources/serialver_ja.properties --- a/jdk/src/share/classes/sun/tools/serialver/resources/serialver_ja.properties Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/tools/serialver/resources/serialver_ja.properties Wed Jul 05 19:45:17 2017 +0200 @@ -1,13 +1,6 @@ -SerialVersionInspector=\u30B7\u30EA\u30A2\u30EB\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3\u30FB\u30A4\u30F3\u30B9\u30DA\u30AF\u30BF -File=\u30D5\u30A1\u30A4\u30EB -Exit=\u7D42\u4E86 -Show=\u8868\u793A -FullClassName=\u5B8C\u5168\u30AF\u30E9\u30B9\u540D: -SerialVersion=\u30B7\u30EA\u30A2\u30EB\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3: NotSerializable=\u30AF\u30E9\u30B9{0}\u306F\u76F4\u5217\u5316\u3067\u304D\u307E\u305B\u3093\u3002 ClassNotFound=\u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 error.parsing.classpath=\u30AF\u30E9\u30B9\u30D1\u30B9{0}\u306E\u89E3\u6790\u30A8\u30E9\u30FC\u3067\u3059\u3002 error.missing.classpath=-classpath\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5F15\u6570\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 invalid.flag=\u7121\u52B9\u306A\u30D5\u30E9\u30B0{0}\u3002 -ignoring.classes=-show\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6301\u3064\u30AF\u30E9\u30B9\u5F15\u6570\u3092\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093 -usage=\u4F7F\u7528\u65B9\u6CD5: serialver [-classpath classpath] [-show] [classname...] +usage=\u4F7F\u7528\u65B9\u6CD5: serialver [-classpath classpath] [classname...] diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/classes/sun/tools/serialver/resources/serialver_zh_CN.properties --- a/jdk/src/share/classes/sun/tools/serialver/resources/serialver_zh_CN.properties Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/classes/sun/tools/serialver/resources/serialver_zh_CN.properties Wed Jul 05 19:45:17 2017 +0200 @@ -1,13 +1,6 @@ -SerialVersionInspector=\u5E8F\u5217\u7248\u672C\u68C0\u67E5\u5668 -File=\u6587\u4EF6 -Exit=\u9000\u51FA -Show=\u663E\u793A -FullClassName=\u5B8C\u6574\u7684\u7C7B\u540D: -SerialVersion=\u5E8F\u5217\u7248\u672C: NotSerializable=\u7C7B{0}\u65E0\u6CD5\u5E8F\u5217\u5316\u3002 ClassNotFound=\u627E\u4E0D\u5230\u7C7B{0}\u3002 error.parsing.classpath=\u89E3\u6790\u7C7B\u8DEF\u5F84 {0} \u65F6\u51FA\u9519\u3002 error.missing.classpath=\u7F3A\u5C11 -classpath \u9009\u9879\u7684\u53C2\u6570 invalid.flag=\u65E0\u6548\u6807\u8BB0{0}\u3002 -ignoring.classes=\u65E0\u6CD5\u4F7F\u7528 -show \u9009\u9879\u6307\u5B9A\u7C7B\u53C2\u6570 -usage=\u7528\u6CD5: serialver [-classpath \u7C7B\u8DEF\u5F84] [-show] [\u7C7B\u540D\u79F0...] +usage=\u7528\u6CD5: serialver [-classpath \u7C7B\u8DEF\u5F84] [\u7C7B\u540D\u79F0...] diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/native/sun/security/ec/impl/mpi.c --- a/jdk/src/share/native/sun/security/ec/impl/mpi.c Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/native/sun/security/ec/impl/mpi.c Wed Jul 05 19:45:17 2017 +0200 @@ -3376,7 +3376,7 @@ #if !defined(MP_NO_MP_WORD) && !defined(MP_NO_DIV_WORD) mp_word w = 0, q; #else - mp_digit w, q; + mp_digit w = 0, q; #endif int ix; mp_err res; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/share/native/sun/security/krb5/nativeccache.c --- a/jdk/src/share/native/sun/security/krb5/nativeccache.c Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/share/native/sun/security/krb5/nativeccache.c Wed Jul 05 19:45:17 2017 +0200 @@ -82,9 +82,6 @@ printf("Couldn't find %s\n", className); return NULL; } -#ifdef DEBUG - printf("Found %s\n", className); -#endif /* DEBUG */ jobject returnValue = (*env)->NewWeakGlobalRef(env,cls); return returnValue; @@ -136,85 +133,54 @@ printf("Couldn't find DerValue constructor\n"); return JNI_ERR; } -#ifdef DEBUG - printf("Found DerValue constructor\n"); -#endif /* DEBUG */ ticketConstructor = (*env)->GetMethodID(env, ticketClass, "", "(Lsun/security/util/DerValue;)V"); if (ticketConstructor == 0) { printf("Couldn't find Ticket constructor\n"); return JNI_ERR; } -#ifdef DEBUG - printf("Found Ticket constructor\n"); -#endif /* DEBUG */ principalNameConstructor = (*env)->GetMethodID(env, principalNameClass, "", "(Ljava/lang/String;I)V"); if (principalNameConstructor == 0) { printf("Couldn't find PrincipalName constructor\n"); return JNI_ERR; } -#ifdef DEBUG - printf("Found PrincipalName constructor\n"); -#endif /* DEBUG */ encryptionKeyConstructor = (*env)->GetMethodID(env, encryptionKeyClass, "", "(I[B)V"); if (encryptionKeyConstructor == 0) { printf("Couldn't find EncryptionKey constructor\n"); return JNI_ERR; } -#ifdef DEBUG - printf("Found EncryptionKey constructor\n"); -#endif /* DEBUG */ ticketFlagsConstructor = (*env)->GetMethodID(env, ticketFlagsClass, "", "(I[B)V"); if (ticketFlagsConstructor == 0) { printf("Couldn't find TicketFlags constructor\n"); return JNI_ERR; } -#ifdef DEBUG - printf("Found TicketFlags constructor\n"); -#endif /* DEBUG */ kerberosTimeConstructor = (*env)->GetMethodID(env, kerberosTimeClass, "", "(J)V"); if (kerberosTimeConstructor == 0) { printf("Couldn't find KerberosTime constructor\n"); return JNI_ERR; } -#ifdef DEBUG - printf("Found KerberosTime constructor\n"); -#endif /* DEBUG */ integerConstructor = (*env)->GetMethodID(env, javaLangIntegerClass, "", "(I)V"); if (integerConstructor == 0) { printf("Couldn't find Integer constructor\n"); return JNI_ERR; } -#ifdef DEBUG - printf("Found Integer constructor\n"); -#endif /* DEBUG */ hostAddressConstructor = (*env)->GetMethodID(env, hostAddressClass, "", "(I[B)V"); if (hostAddressConstructor == 0) { printf("Couldn't find HostAddress constructor\n"); return JNI_ERR; } -#ifdef DEBUG - printf("Found HostAddress constructor\n"); -#endif /* DEBUG */ hostAddressesConstructor = (*env)->GetMethodID(env, hostAddressesClass, "", "([Lsun/security/krb5/internal/HostAddress;)V"); if (hostAddressesConstructor == 0) { printf("Couldn't find HostAddresses constructor\n"); return JNI_ERR; } -#ifdef DEBUG - printf("Found HostAddresses constructor\n"); -#endif /* DEBUG */ - -#ifdef DEBUG - printf("Finished OnLoad processing\n"); -#endif /* DEBUG */ return JNI_VERSION_1_2; } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/solaris/classes/java/io/FileDescriptor.java --- a/jdk/src/solaris/classes/java/io/FileDescriptor.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/solaris/classes/java/io/FileDescriptor.java Wed Jul 05 19:45:17 2017 +0200 @@ -41,7 +41,7 @@ * @author Pavani Diwanji * @see java.io.FileInputStream * @see java.io.FileOutputStream - * @since JDK1.0 + * @since 1.0 */ public final class FileDescriptor { @@ -126,7 +126,7 @@ * Thrown when the buffers cannot be flushed, * or because the system cannot guarantee that all the * buffers have been synchronized with physical media. - * @since JDK1.1 + * @since 1.1 */ public native void sync() throws SyncFailedException; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/solaris/classes/sun/awt/X11/XAtom.java --- a/jdk/src/solaris/classes/sun/awt/X11/XAtom.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/solaris/classes/sun/awt/X11/XAtom.java Wed Jul 05 19:45:17 2017 +0200 @@ -52,7 +52,7 @@ * XAtom xa = new XAtom(display,XAtom.XA_CUT_BUFFER0);

    * String selection = xa.getProperty(root_window);

    * @author Bino George - * @since JDK1.5 + * @since 1.5 */ import sun.misc.Unsafe; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java --- a/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/solaris/classes/sun/awt/X11/XComponentPeer.java Wed Jul 05 19:45:17 2017 +0200 @@ -677,7 +677,7 @@ * @see #getPeer * @see java.awt.peer.ComponentPeer#getFontMetrics(Font) * @see Toolkit#getFontMetrics(Font) - * @since JDK1.0 + * @since 1.0 */ public FontMetrics getFontMetrics(Font font) { if (fontLog.isLoggable(PlatformLogger.Level.FINE)) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/solaris/classes/sun/awt/X11InputMethodDescriptor.java --- a/jdk/src/solaris/classes/sun/awt/X11InputMethodDescriptor.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/solaris/classes/sun/awt/X11InputMethodDescriptor.java Wed Jul 05 19:45:17 2017 +0200 @@ -40,7 +40,7 @@ * to enable selection and loading of that input method. * The input method itself is only loaded when it is actually used. * - * @since JDK1.3 + * @since 1.3 */ public abstract class X11InputMethodDescriptor implements InputMethodDescriptor { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/solaris/classes/sun/net/www/protocol/jar/JarFileFactory.java --- a/jdk/src/solaris/classes/sun/net/www/protocol/jar/JarFileFactory.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/solaris/classes/sun/net/www/protocol/jar/JarFileFactory.java Wed Jul 05 19:45:17 2017 +0200 @@ -38,7 +38,7 @@ * and cache Jar files. * * @author Benjamin Renaud - * @since JDK1.2 + * @since 1.2 */ class JarFileFactory implements URLJarFile.URLJarFileCloseController { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/solaris/demo/jni/Poller/Poller.java --- a/jdk/src/solaris/demo/jni/Poller/Poller.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/solaris/demo/jni/Poller/Poller.java Wed Jul 05 19:45:17 2017 +0200 @@ -58,7 +58,7 @@ * @see java.io.FileDescriptor * @see java.net.Socket * @see attached README.txt - * @since JDK1.2 + * @since 1.2 */ public class Poller { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/windows/classes/java/io/FileDescriptor.java --- a/jdk/src/windows/classes/java/io/FileDescriptor.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/windows/classes/java/io/FileDescriptor.java Wed Jul 05 19:45:17 2017 +0200 @@ -38,7 +38,7 @@ *

    Applications should not create their own file descriptors. * * @author Pavani Diwanji - * @since JDK1.0 + * @since 1.0 */ public final class FileDescriptor { @@ -149,7 +149,7 @@ * Thrown when the buffers cannot be flushed, * or because the system cannot guarantee that all the * buffers have been synchronized with physical media. - * @since JDK1.1 + * @since 1.1 */ public native void sync() throws SyncFailedException; diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/windows/classes/sun/awt/windows/WClipboard.java --- a/jdk/src/windows/classes/sun/awt/windows/WClipboard.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/windows/classes/sun/awt/windows/WClipboard.java Wed Jul 05 19:45:17 2017 +0200 @@ -45,7 +45,7 @@ * @author Danila Sinopalnikov * @author Alexander Gerasimov * - * @since JDK1.1 + * @since 1.1 */ final class WClipboard extends SunClipboard { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/windows/classes/sun/awt/windows/WDragSourceContextPeer.java --- a/jdk/src/windows/classes/sun/awt/windows/WDragSourceContextPeer.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/windows/classes/sun/awt/windows/WDragSourceContextPeer.java Wed Jul 05 19:45:17 2017 +0200 @@ -48,7 +48,7 @@ * TBC *

    * - * @since JDK1.2 + * @since 1.2 * */ diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/windows/classes/sun/awt/windows/WInputMethodDescriptor.java --- a/jdk/src/windows/classes/sun/awt/windows/WInputMethodDescriptor.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/windows/classes/sun/awt/windows/WInputMethodDescriptor.java Wed Jul 05 19:45:17 2017 +0200 @@ -37,7 +37,7 @@ * to enable selection and loading of that input method. * The input method itself is only loaded when it is actually used. * - * @since JDK1.3 + * @since 1.3 */ final class WInputMethodDescriptor implements InputMethodDescriptor { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/windows/classes/sun/awt/windows/WPathGraphics.java --- a/jdk/src/windows/classes/sun/awt/windows/WPathGraphics.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/windows/classes/sun/awt/windows/WPathGraphics.java Wed Jul 05 19:45:17 2017 +0200 @@ -120,7 +120,7 @@ * a copy of this Graphics object. * @return a new graphics context that is a copy of * this graphics context. - * @since JDK1.0 + * @since 1.0 */ @Override public Graphics create() { @@ -253,7 +253,7 @@ * @param y the y coordinate. * @see java.awt.Graphics#drawBytes * @see java.awt.Graphics#drawChars - * @since JDK1.0 + * @since 1.0 */ @Override public void drawString(String str, int x, int y) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/windows/classes/sun/awt/windows/WPrinterJob.java --- a/jdk/src/windows/classes/sun/awt/windows/WPrinterJob.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/windows/classes/sun/awt/windows/WPrinterJob.java Wed Jul 05 19:45:17 2017 +0200 @@ -419,7 +419,7 @@ * @exception HeadlessException if GraphicsEnvironment.isHeadless() * returns true. * @see java.awt.GraphicsEnvironment#isHeadless - * @since JDK1.2 + * @since 1.2 */ @Override public PageFormat pageDialog(PageFormat page) throws HeadlessException { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/src/windows/classes/sun/net/www/protocol/jar/JarFileFactory.java --- a/jdk/src/windows/classes/sun/net/www/protocol/jar/JarFileFactory.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/src/windows/classes/sun/net/www/protocol/jar/JarFileFactory.java Wed Jul 05 19:45:17 2017 +0200 @@ -38,7 +38,7 @@ * and cache Jar files. * * @author Benjamin Renaud - * @since JDK1.2 + * @since 1.2 */ class JarFileFactory implements URLJarFile.URLJarFileCloseController { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/test/com/sun/tools/attach/SimpleProvider.java --- a/jdk/test/com/sun/tools/attach/SimpleProvider.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/test/com/sun/tools/attach/SimpleProvider.java Wed Jul 05 19:45:17 2017 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 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 @@ -100,4 +100,12 @@ public void dataDumpRequest() throws IOException { } + + public String startLocalManagementAgent() { + return null; + } + + public void startManagementAgent(Properties agentProperties) { + } + } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/test/com/sun/tools/attach/StartManagementAgent.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/com/sun/tools/attach/StartManagementAgent.java Wed Jul 05 19:45:17 2017 +0200 @@ -0,0 +1,211 @@ +/* + * 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 com.sun.tools.attach.AttachOperationFailedException; +import com.sun.tools.attach.VirtualMachine; + +import java.io.File; +import java.io.FileWriter; +import java.util.Properties; +import java.util.HashMap; + +import javax.management.remote.JMXServiceURL; +import javax.management.remote.JMXConnector; +import javax.management.remote.JMXConnectorFactory; + +import jdk.testlibrary.ProcessThread; +import jdk.testlibrary.Utils; + +/* + * @test + * @summary Test for VirtualMachine.startManagementAgent and VirtualMachine.startLocalManagementAgent + * @library /lib/testlibrary + * @run build Application Shutdown + * @run main StartManagementAgent + */ + +/* + * This test is not meant to test all possible configuration parameters to + * the JMX agent, there are other tests for that. This test makes sure it is + * possible to start the agent via attach. + */ +public class StartManagementAgent { + public static void main(String[] args) throws Throwable { + final String pidFile = "StartManagementAgent.Application.pid"; + ProcessThread processThread = null; + RunnerUtil.ProcessInfo info = null; + try { + processThread = RunnerUtil.startApplication(pidFile); + info = RunnerUtil.readProcessInfo(pidFile); + runTests(info.pid); + } catch (Throwable t) { + System.out.println("StartManagementAgent got unexpected exception: " + t); + t.printStackTrace(); + throw t; + } finally { + // Make sure the Application process is stopped. + RunnerUtil.stopApplication(info.shutdownPort, processThread); + } + } + + private static void basicTests(VirtualMachine vm) throws Exception { + + // Try calling with null argument + boolean exception = false; + try { + vm.startManagementAgent(null); + } catch (NullPointerException e) { + exception = true; + } + if (!exception) { + throw new Exception("startManagementAgent(null) should throw NPE"); + } + + // Try calling with a property value with a space in it + Properties p = new Properties(); + File f = new File("file with space"); + try (FileWriter fw = new FileWriter(f)) { + fw.write("com.sun.management.jmxremote.port=apa"); + } + p.put("com.sun.management.config.file", f.getAbsolutePath()); + try { + vm.startManagementAgent(p); + } catch(AttachOperationFailedException ex) { + // We expect parsing of "apa" above to fail, but if the file path + // can't be read we get a different exception message + if (!ex.getMessage().contains("java.lang.NumberFormatException")) { + throw ex; + } + } + } + + private static final String LOCAL_CONNECTOR_ADDRESS_PROP = + "com.sun.management.jmxremote.localConnectorAddress"; + + private static final int MAX_RETRIES = 10; + + public static void runTests(int pid) throws Exception { + VirtualMachine vm = VirtualMachine.attach(""+pid); + try { + + basicTests(vm); + + testLocalAgent(vm); + + // we retry the remote case several times in case the error + // was caused by a port conflict + int i = 0; + boolean success = false; + do { + try { + System.err.println("Trying remote agent. Try #" + i); + testRemoteAgent(vm); + success = true; + } catch(Exception ex) { + System.err.println("testRemoteAgent failed with exception:"); + ex.printStackTrace(); + System.err.println("Retrying."); + } + i++; + } while(!success && i < MAX_RETRIES); + if (!success) { + throw new Exception("testRemoteAgent failed after " + MAX_RETRIES + " tries"); + } + } finally { + vm.detach(); + } + } + + public static void testLocalAgent(VirtualMachine vm) throws Exception { + Properties agentProps = vm.getAgentProperties(); + String address = (String) agentProps.get(LOCAL_CONNECTOR_ADDRESS_PROP); + if (address != null) { + throw new Exception("Local management agent already started"); + } + + String result = vm.startLocalManagementAgent(); + + // try to parse the return value as a JMXServiceURL + new JMXServiceURL(result); + + agentProps = vm.getAgentProperties(); + address = (String) agentProps.get(LOCAL_CONNECTOR_ADDRESS_PROP); + if (address == null) { + throw new Exception("Local management agent could not be started"); + } + } + + public static void testRemoteAgent(VirtualMachine vm) throws Exception { + int port = Utils.getFreePort(); + + // try to connect - should fail + tryConnect(port, false); + + // start agent + System.out.println("Starting agent on port: " + port); + Properties mgmtProps = new Properties(); + mgmtProps.put("com.sun.management.jmxremote.port", port); + mgmtProps.put("com.sun.management.jmxremote.authenticate", "false"); + mgmtProps.put("com.sun.management.jmxremote.ssl", "false"); + vm.startManagementAgent(mgmtProps); + + // try to connect - should work + tryConnect(port, true); + + // try to start again - should fail + boolean exception = false; + try { + vm.startManagementAgent(mgmtProps); + } catch(AttachOperationFailedException ex) { + // expected + exception = true; + } + if (!exception) { + throw new Exception("Expected the second call to vm.startManagementAgent() to fail"); + } + } + + private static void tryConnect(int port, boolean shouldSucceed) throws Exception { + String jmxUrlStr = + String.format( + "service:jmx:rmi:///jndi/rmi://localhost:%d/jmxrmi", + port); + JMXServiceURL url = new JMXServiceURL(jmxUrlStr); + HashMap env = new HashMap<>(); + + boolean succeeded; + try { + JMXConnector c = JMXConnectorFactory.connect(url, env); + c.getMBeanServerConnection(); + succeeded = true; + } catch(Exception ex) { + succeeded = false; + } + if (succeeded && !shouldSucceed) { + throw new Exception("Could connect to agent, but should not have been possible"); + } + if (!succeeded && shouldSucceed) { + throw new Exception("Could not connect to agent"); + } + } +} diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/test/java/lang/invoke/lookup/SpecialStatic.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/java/lang/invoke/lookup/SpecialStatic.java Wed Jul 05 19:45:17 2017 +0200 @@ -0,0 +1,194 @@ +/* + * 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 8032400 + * @summary JSR292: invokeSpecial: InternalError attempting to lookup a method + * @compile -XDignore.symbol.file SpecialStatic.java + * @run junit test.java.lang.invoke.lookup.SpecialStatic + */ +package test.java.lang.invoke.lookup; + +import java.lang.invoke.MethodHandle; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.MethodType; +import jdk.internal.org.objectweb.asm.*; +import org.junit.Test; +import static jdk.internal.org.objectweb.asm.Opcodes.*; +import static org.junit.Assert.*; + +/** + * Test case: + * class T1 { int m() { return 1; }} + * class T2 extends T1 { static int m() { return 2; }} + * class T3 extends T2 { int m() { return 3; }} + * + * T3::test { invokespecial T1.m() T3 } ==> T1::m + */ +public class SpecialStatic { + static class CustomClassLoader extends ClassLoader { + public Class loadClass(String name) throws ClassNotFoundException { + if (findLoadedClass(name) != null) { + return findLoadedClass(name); + } + + if ("T1".equals(name)) { + byte[] classFile = dumpT1(); + return defineClass("T1", classFile, 0, classFile.length); + } + if ("T2".equals(name)) { + byte[] classFile = dumpT2(); + return defineClass("T2", classFile, 0, classFile.length); + } + if ("T3".equals(name)) { + byte[] classFile = dumpT3(); + return defineClass("T3", classFile, 0, classFile.length); + } + + return super.loadClass(name); + } + } + + private static ClassLoader cl = new CustomClassLoader(); + private static Class t1, t3; + static { + try { + t1 = cl.loadClass("T1"); + t3 = cl.loadClass("T3"); + } catch (ClassNotFoundException e) { + throw new Error(e); + } + } + + public static void main(String[] args) throws Throwable { + SpecialStatic test = new SpecialStatic(); + test.testConstant(); + test.testFindSpecial(); + } + + @Test + public void testConstant() throws Throwable { + MethodHandle mh = (MethodHandle)t3.getDeclaredMethod("getMethodHandle").invoke(null); + int result = (int)mh.invoke(t3.newInstance()); + assertEquals(result, 1); // T1.m should be invoked. + } + + @Test + public void testFindSpecial() throws Throwable { + MethodHandles.Lookup lookup = (MethodHandles.Lookup)t3.getDeclaredMethod("getLookup").invoke(null); + MethodHandle mh = lookup.findSpecial(t1, "m", MethodType.methodType(int.class), t3); + int result = (int)mh.invoke(t3.newInstance()); + assertEquals(result, 1); // T1.m should be invoked. + } + + public static byte[] dumpT1() { + ClassWriter cw = new ClassWriter(0); + MethodVisitor mv; + + cw.visit(52, ACC_PUBLIC + ACC_SUPER, "T1", null, "java/lang/Object", null); + + mv = cw.visitMethod(ACC_PUBLIC, "", "()V", null, null); + mv.visitCode(); + mv.visitVarInsn(ALOAD, 0); + mv.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "", "()V", false); + mv.visitInsn(RETURN); + mv.visitMaxs(1, 1); + mv.visitEnd(); + + mv = cw.visitMethod(ACC_PUBLIC, "m", "()I", null, null); + mv.visitCode(); + mv.visitIntInsn(BIPUSH, 1); + mv.visitInsn(IRETURN); + mv.visitMaxs(1, 1); + mv.visitEnd(); + + cw.visitEnd(); + return cw.toByteArray(); + } + + public static byte[] dumpT2() { + ClassWriter cw = new ClassWriter(0); + MethodVisitor mv; + + cw.visit(52, ACC_PUBLIC + ACC_SUPER, "T2", null, "T1", null); + + mv = cw.visitMethod(ACC_PUBLIC, "", "()V", null, null); + mv.visitCode(); + mv.visitVarInsn(ALOAD, 0); + mv.visitMethodInsn(INVOKESPECIAL, "T1", "", "()V", false); + mv.visitInsn(RETURN); + mv.visitMaxs(1, 1); + mv.visitEnd(); + + mv = cw.visitMethod(ACC_PUBLIC | ACC_STATIC, "m", "()I", null, null); + mv.visitCode(); + mv.visitIntInsn(BIPUSH, 2); + mv.visitInsn(IRETURN); + mv.visitMaxs(1, 1); + mv.visitEnd(); + + cw.visitEnd(); + return cw.toByteArray(); + } + + public static byte[] dumpT3() { + ClassWriter cw = new ClassWriter(0); + MethodVisitor mv; + + cw.visit(52, ACC_PUBLIC + ACC_SUPER, "T3", null, "T2", null); + + mv = cw.visitMethod(ACC_PUBLIC, "", "()V", null, null); + mv.visitCode(); + mv.visitVarInsn(ALOAD, 0); + mv.visitMethodInsn(INVOKESPECIAL, "T2", "", "()V", false); + mv.visitInsn(RETURN); + mv.visitMaxs(1, 1); + mv.visitEnd(); + + mv = cw.visitMethod(ACC_PUBLIC, "m", "()I", null, null); + mv.visitCode(); + mv.visitIntInsn(BIPUSH, 3); + mv.visitInsn(IRETURN); + mv.visitMaxs(1, 1); + mv.visitEnd(); + + // getMethodHandle + mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "getMethodHandle", "()Ljava/lang/invoke/MethodHandle;", null, null); + mv.visitCode(); + mv.visitLdcInsn(new Handle(H_INVOKESPECIAL, "T1", "m", "()I")); + mv.visitInsn(ARETURN); + mv.visitMaxs(1, 0); + mv.visitEnd(); + + // getLookup + mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "getLookup", "()Ljava/lang/invoke/MethodHandles$Lookup;", null, null); + mv.visitCode(); + mv.visitMethodInsn(INVOKESTATIC, "java/lang/invoke/MethodHandles", "lookup", "()Ljava/lang/invoke/MethodHandles$Lookup;", false); + mv.visitInsn(ARETURN); + mv.visitMaxs(1, 0); + mv.visitEnd(); + + cw.visitEnd(); + return cw.toByteArray(); + } +} diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/test/java/lang/reflect/DefaultMethodMembers/FilterNotMostSpecific.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/java/lang/reflect/DefaultMethodMembers/FilterNotMostSpecific.java Wed Jul 05 19:45:17 2017 +0200 @@ -0,0 +1,691 @@ +/* + * 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 8029674 + * @summary Verify that the right interface methods are returned by + * Class.getMethod() and Class.getMethods() + * @run testng FilterNotMostSpecific + */ + +import java.lang.reflect.*; +import java.lang.annotation.*; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Set; +import java.util.stream.Collectors; + +import org.testng.annotations.DataProvider; +import org.testng.annotations.Test; + +import static org.testng.Assert.*; + +public class FilterNotMostSpecific { + + @Test(dataProvider="getCases") + public void testGetMethod(Class iface) { + boolean match = false; + MethodDesc[] expectedMethods = iface.getAnnotationsByType(MethodDesc.class); + + for (MethodDesc expected : expectedMethods) { + if (expected.isGetMethodReturn()) { + try { + Method m = iface.getMethod(expected.name()); + if (!assertMatch(expected, m)) + fail(failMsg(expected, m, iface)); + else + match = true; + } catch (NoSuchMethodException e) { + fail("expected: " + toMethodString(expected), e); + } + } + } + assert(match); + } + + @Test(dataProvider="getCases") + public void testGetMethods(Class iface) { + List foundMethods = filterObjectMethods(iface.getMethods()); + MethodDesc[] expectedMethods = iface.getAnnotationsByType(MethodDesc.class); + Set used = new HashSet<>(); + + for (MethodDesc expected : expectedMethods) { + boolean found = false; + + for (Method m : foundMethods) { + if (used.contains(m)) + continue; + + if(expected.name().equals(m.getName()) && + expected.declaringClass() ==m.getDeclaringClass()) { + + found = true; + assertMatch(expected, m); + used.add(m); + break; + } + } + if (! found) + fail("On: "+ iface +"\nDid not find " + toMethodString(expected) + " among " + foundMethods); + } + assertEquals(foundMethods.size(), expectedMethods.length, + "\non: " + iface + + "\nexpected: " + toMethodStrings(expectedMethods) + + "\nfound: " + foundMethods + "\n"); + } + + private boolean assertMatch(MethodDesc expected, Method m) { + if (!expected.name().equals(m.getName())) + return false; + if (expected.declaringClass() != m.getDeclaringClass()) + return false; + + if (expected.kind() == MethodKind.ABSTRACT) + assertTrue(Modifier.isAbstract(m.getModifiers()), m + " should be ABSTRACT"); + else if (expected.kind() == MethodKind.CONCRETE) + assertTrue(!Modifier.isAbstract(m.getModifiers()) && !m.isDefault(), m + " should be CONCRETE"); + else if (expected.kind() == MethodKind.DEFAULT) + assertTrue(m.isDefault(), m + " should be DEFAULT"); + + return true; + } + + private String failMsg(MethodDesc expected, Method m, Class iface) { + return "\nOn interface: " + iface + + "\nexpected: " + toMethodString(expected) + + "\nfound: " + m; + } + + private static List filterObjectMethods(Method[] in) { + return Arrays.stream(in). + filter(m -> (m.getDeclaringClass() != java.lang.Object.class)). + collect(Collectors.toList()); + } + + private String toMethodString(MethodDesc m) { + return m.declaringClass().getSimpleName().toString() + "." + + m.name() + "()"; + } + + private List toMethodStrings(MethodDesc[] m) { + return Arrays.stream(m). + map(this::toMethodString) + .collect(Collectors.toList()); + } + + @Retention(RetentionPolicy.RUNTIME) + @Repeatable(MethodDescs.class) + public @interface MethodDesc { + String name(); + Class declaringClass(); + MethodKind kind() default MethodKind.ABSTRACT; + boolean isGetMethodReturn() default false; + } + + @Retention(RetentionPolicy.RUNTIME) + public @interface MethodDescs { + MethodDesc[] value(); + } + + public static enum MethodKind { + ABSTRACT, + CONCRETE, + DEFAULT, + } + // base interfaces + interface I { void nonDefault(); } + interface J extends I { void nonDefault(); } + + interface Jprim extends I {} + interface Jbis extends Jprim { void nonDefault(); } + + // interesting cases + + @MethodDesc(name="nonDefault", declaringClass=Jbis.class, + isGetMethodReturn=true) + interface P1 extends Jbis {} + + @MethodDesc(name="nonDefault", declaringClass=Jbis.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=I.class) + interface P2 extends Jbis, Jprim {} + + @MethodDesc(name="nonDefault", declaringClass=Jbis.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=I.class) + interface P3 extends Jbis, Jprim, I {} + + @MethodDesc(name="nonDefault", declaringClass=I.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=J.class) + interface P4 extends I, J {} + + @MethodDesc(name="nonDefault", declaringClass=J.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=I.class) + interface P5 extends J, I {} + + @MethodDesc(name="nonDefault", declaringClass=J.class, + isGetMethodReturn=true) + interface K1 extends J {} + + @MethodDesc(name="nonDefault", declaringClass=K1M.class, + isGetMethodReturn=true) + interface K1M extends J { void nonDefault(); } + + @MethodDesc(name="nonDefault", declaringClass=I.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=J.class) + interface K2 extends I, J {} + + @MethodDesc(name="nonDefault", declaringClass=J.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=I.class) + interface K2O extends J, I {} + + @MethodDesc(name="nonDefault", declaringClass=K2M.class, + isGetMethodReturn=true) + interface K2M extends J, I { void nonDefault(); } + + // base interfaces default methods + interface L { default void isDefault() {} void nonDefault(); } + interface M extends L { default void isDefault() {} void nonDefault(); } + + // test cases default methods + + @MethodDesc(name="nonDefault", declaringClass=M.class, + isGetMethodReturn=true) + @MethodDesc(name="isDefault", declaringClass=M.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + interface N1 extends M {} + + @MethodDesc(name="isDefault", declaringClass=N1D.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=M.class, + isGetMethodReturn=true) + interface N1D extends M { default void isDefault() {}} + + @MethodDesc(name="nonDefault", declaringClass=N1N.class, + isGetMethodReturn=true) + @MethodDesc(name="isDefault", declaringClass=M.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + interface N1N extends M { void nonDefault(); } + + @MethodDesc(name="isDefault", declaringClass=N1DN.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=N1DN.class, + isGetMethodReturn=true) + interface N1DN extends M { default void isDefault() {} void nonDefault(); } + + @MethodDesc(name="isDefault", declaringClass=M.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=L.class) + @MethodDesc(name="nonDefault", declaringClass=M.class, + isGetMethodReturn=true) + interface N2 extends M, L {} + + @MethodDesc(name="isDefault", declaringClass=M.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=L.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=M.class) + interface N22 extends L, M {} + + @MethodDesc(name="isDefault", declaringClass=N2D.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=L.class) + @MethodDesc(name="nonDefault", declaringClass=M.class, + isGetMethodReturn=true) + interface N2D extends M, L { default void isDefault() {}} + + @MethodDesc(name="isDefault", declaringClass=M.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=N2N.class, + isGetMethodReturn=true) + interface N2N extends M, L { void nonDefault(); } + + @MethodDesc(name="isDefault", declaringClass=N2DN.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=N2DN.class, + isGetMethodReturn=true) + interface N2DN extends M, L { default void isDefault() {} void nonDefault(); } + + @MethodDesc(name="isDefault", declaringClass=N2DN.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=L.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=M.class) + @MethodDesc(name="nonDefault", declaringClass=N2DN.class) + interface O1 extends L, M, N2DN {} + + @MethodDesc(name="isDefault", declaringClass=N2DN.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=L.class) + @MethodDesc(name="nonDefault", declaringClass=M.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=N2DN.class) + interface O2 extends M, N2DN, L {} + + @MethodDesc(name="isDefault", declaringClass=N2DN.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=L.class) + @MethodDesc(name="nonDefault", declaringClass=M.class) + @MethodDesc(name="nonDefault", declaringClass=N2DN.class, + isGetMethodReturn=true) + interface O3 extends N2DN, L, M {} + + @MethodDesc(name="isDefault", declaringClass=N2DN.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=L.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=M.class) + @MethodDesc(name="nonDefault", declaringClass=N2DN.class) + abstract class C1 implements L, M, N2DN {} + + @MethodDesc(name="isDefault", declaringClass=N2DN.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=L.class) + @MethodDesc(name="nonDefault", declaringClass=M.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=N2DN.class) + abstract class C2 implements M, N2DN, L {} + + @MethodDesc(name="isDefault", declaringClass=N2DN.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=L.class) + @MethodDesc(name="nonDefault", declaringClass=M.class) + @MethodDesc(name="nonDefault", declaringClass=N2DN.class, + isGetMethodReturn=true) + abstract class C3 implements N2DN, L, M {} + + @MethodDesc(name="isDefault", declaringClass=N2DN.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=C4.class, + kind=MethodKind.CONCRETE, isGetMethodReturn=true) + class C4 implements L, M, N2DN { public void nonDefault() {} } + + @MethodDesc(name="isDefault", declaringClass=N2DN.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=C5.class, + kind=MethodKind.CONCRETE, isGetMethodReturn=true) + class C5 implements M, N2DN, L { public void nonDefault() {} } + + @MethodDesc(name="isDefault", declaringClass=N2DN.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=C6.class, + kind=MethodKind.CONCRETE, isGetMethodReturn=true) + class C6 implements N2DN, L, M { public void nonDefault() {} } + + // reabstraction + + @MethodDesc(name="isDefault", declaringClass=R1.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=L.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=M.class) + @MethodDesc(name="nonDefault", declaringClass=N2DN.class) + interface R1 extends L, M, N2DN { void isDefault(); } + + @MethodDesc(name="isDefault", declaringClass=R2.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=L.class) + @MethodDesc(name="nonDefault", declaringClass=M.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=N2DN.class) + interface R2 extends M, N2DN, L { void isDefault(); } + + @MethodDesc(name="isDefault", declaringClass=R3.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=L.class) + @MethodDesc(name="nonDefault", declaringClass=M.class) + @MethodDesc(name="nonDefault", declaringClass=N2DN.class, + isGetMethodReturn=true) + interface R3 extends N2DN, L, M { void isDefault(); } + + // this one is strange but logical, getMethod finds N2DN first, which is + // default but not the most specific + @MethodDesc(name="isDefault", declaringClass=N2DN.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="isDefault", declaringClass=R1.class) + @MethodDesc(name="nonDefault", declaringClass=L.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=M.class) + @MethodDesc(name="nonDefault", declaringClass=N2DN.class) + interface R4 extends L, M, N2DN, R1 {} + + // this one is strange but logical, getMethod finds N2DN first, which is + // default but not the most specific + @MethodDesc(name="isDefault", declaringClass=N2DN.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="isDefault", declaringClass=R2.class) + @MethodDesc(name="nonDefault", declaringClass=L.class) + @MethodDesc(name="nonDefault", declaringClass=M.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=N2DN.class) + interface R5 extends M, N2DN, R2, L {} + + // this one is strange but logical, getMethod finds N2DN first, which is + // default but not the most specific + @MethodDesc(name="isDefault", declaringClass=N2DN.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="isDefault", declaringClass=R3.class) + @MethodDesc(name="nonDefault", declaringClass=L.class) + @MethodDesc(name="nonDefault", declaringClass=M.class) + @MethodDesc(name="nonDefault", declaringClass=N2DN.class, + isGetMethodReturn=true) + interface R6 extends N2DN, R3, L, M {} + + // the following three finds the "right" one + @MethodDesc(name="isDefault", declaringClass=R1.class, + isGetMethodReturn=true) + @MethodDesc(name="isDefault", declaringClass=N2DN.class, + kind=MethodKind.DEFAULT) + @MethodDesc(name="nonDefault", declaringClass=L.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=M.class) + @MethodDesc(name="nonDefault", declaringClass=N2DN.class) + interface R7 extends L, M, R1, N2DN {} + + @MethodDesc(name="isDefault", declaringClass=R2.class, + isGetMethodReturn=true) + @MethodDesc(name="isDefault", declaringClass=N2DN.class, + kind=MethodKind.DEFAULT) + @MethodDesc(name="nonDefault", declaringClass=L.class) + @MethodDesc(name="nonDefault", declaringClass=M.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=N2DN.class) + interface R8 extends M, R2, N2DN, L {} + + @MethodDesc(name="isDefault", declaringClass=R3.class, + isGetMethodReturn=true) + @MethodDesc(name="isDefault", declaringClass=N2DN.class, + kind=MethodKind.DEFAULT) + @MethodDesc(name="nonDefault", declaringClass=L.class) + @MethodDesc(name="nonDefault", declaringClass=M.class) + @MethodDesc(name="nonDefault", declaringClass=N2DN.class, + isGetMethodReturn=true) + interface R9 extends R3, N2DN, L, M {} + + // More reabstraction + interface Z1 { void z(); } + interface Z2 extends Z1 { default void z() {} } + + @MethodDesc(name="z", declaringClass=Z2.class, + isGetMethodReturn=true, kind=MethodKind.DEFAULT) + interface Z31 extends Z1, Z2 {} + + @MethodDesc(name="z", declaringClass=Z2.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + interface Z32 extends Z2, Z1 {} + + interface Z3 extends Z2, Z1 { void z(); } + + @MethodDesc(name="z", declaringClass=Z2.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="z", declaringClass=Z3.class) + interface Z41 extends Z1, Z2, Z3 { } + + @MethodDesc(name="z", declaringClass=Z2.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="z", declaringClass=Z3.class) + interface Z42 extends Z2, Z3, Z1 { } + + @MethodDesc(name="z", declaringClass=Z3.class, + isGetMethodReturn=true) + @MethodDesc(name="z", declaringClass=Z2.class, + kind=MethodKind.DEFAULT) + interface Z43 extends Z3, Z1, Z2 { } + + @MethodDesc(name="z", declaringClass=Z2.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="z", declaringClass=Z3.class) + abstract class ZC41 implements Z1, Z2, Z3 { } + + @MethodDesc(name="z", declaringClass=Z2.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="z", declaringClass=Z3.class) + abstract class ZC42 implements Z2, Z3, Z1 { } + + @MethodDesc(name="z", declaringClass=Z3.class, + isGetMethodReturn=true) + @MethodDesc(name="z", declaringClass=Z2.class, + kind=MethodKind.DEFAULT) + abstract class ZC43 implements Z3, Z1, Z2 { } + + // More reabstraction + concretization + interface X1 { default void x() {} } + interface X2 extends X1 { void x(); } + + @MethodDesc(name="x", declaringClass=X1.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + @MethodDesc(name="x", declaringClass=X2.class) + interface X31 extends X1, X2 {} + + @MethodDesc(name="x", declaringClass=X2.class, + isGetMethodReturn=true) + @MethodDesc(name="x", declaringClass=X1.class, + kind=MethodKind.DEFAULT) + interface X32 extends X2, X1 {} + + @MethodDesc(name="x", declaringClass=X3.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + interface X3 extends X2, X1 { default void x() {} } + + // order shouldn't matter here + @MethodDesc(name="x", declaringClass=X3.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + interface X41 extends X1, X2, X3 { } + + @MethodDesc(name="x", declaringClass=X3.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + interface X42 extends X2, X3, X1 { } + + @MethodDesc(name="x", declaringClass=X3.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + interface X43 extends X3, X1, X2 { } + + // order shouldn't matter here + @MethodDesc(name="x", declaringClass=X3.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + abstract class XC41 implements X1, X2, X3 { } + + @MethodDesc(name="x", declaringClass=X3.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + abstract class XC42 implements X2, X3, X1 { } + + @MethodDesc(name="x", declaringClass=X3.class, + kind=MethodKind.DEFAULT, isGetMethodReturn=true) + abstract class XC43 implements X3, X1, X2 { } + + interface K extends I, J { void nonDefault(); } + + @MethodDesc(name="nonDefault", declaringClass=I.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=J.class) + @MethodDesc(name="nonDefault", declaringClass=K.class) + abstract class ZZ1 implements I, J, K {} + + @MethodDesc(name="nonDefault", declaringClass=I.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=J.class) + @MethodDesc(name="nonDefault", declaringClass=K.class) + abstract class ZZ2 extends ZZ1 implements K, I, J {} + + @MethodDesc(name="nonDefault", declaringClass=I.class, + isGetMethodReturn=true) + @MethodDesc(name="nonDefault", declaringClass=J.class) + @MethodDesc(name="nonDefault", declaringClass=K.class) + abstract class ZZ3 extends ZZ2 implements J, K, I {} + + // bridges + interface B1A { Object m(); } + interface B1B extends B1A { Map m(); } + + @MethodDesc(name="m", declaringClass=B1C.class, + isGetMethodReturn=true) + @MethodDesc(name="m", declaringClass=B1C.class, + kind=MethodKind.DEFAULT) + @MethodDesc(name="m", declaringClass=B1C.class, + kind=MethodKind.DEFAULT) + interface B1C extends B1B { HashMap m(); } + + @MethodDesc(name="m", declaringClass=B2.class, + isGetMethodReturn=true) + @MethodDesc(name="m", declaringClass=B2.class, + kind=MethodKind.DEFAULT) + @MethodDesc(name="m", declaringClass=B2.class, + kind=MethodKind.DEFAULT) + interface B2 extends B1C { HashMap m(); } + + @MethodDesc(name="m", declaringClass=B2.class, //HahsMap + isGetMethodReturn=true) + @MethodDesc(name="m", declaringClass=B2.class, //Map + kind=MethodKind.DEFAULT) + @MethodDesc(name="m", declaringClass=B2.class, //Object + kind=MethodKind.DEFAULT) + interface B3A extends B2, B1A {} + + // this one is funny since HashMap isn't a bridge thus not a default + @MethodDesc(name="m", declaringClass=B2.class, //HashMap + isGetMethodReturn=true) + @MethodDesc(name="m", declaringClass=B2.class, //Map + kind=MethodKind.DEFAULT) + @MethodDesc(name="m", declaringClass=B2.class, //Object + kind=MethodKind.DEFAULT) + @MethodDesc(name="m", declaringClass=B1C.class) //HashMap + interface B3B extends B2, B1C {} + + // same name different params type + interface A1 { void m(); void m(int i); void m(int i, int j); } + interface A2A extends A1 { void m(); void m(int i); void m(int i, int j); } + interface A2B extends A1 { void m(); void m(int i); default void m(int i, int j) {} } + + @MethodDesc(name="m", declaringClass=A1.class, + isGetMethodReturn=true) + @MethodDesc(name="m", declaringClass=A1.class) + @MethodDesc(name="m", declaringClass=A1.class) + @MethodDesc(name="m", declaringClass=A2A.class) + @MethodDesc(name="m", declaringClass=A2A.class) + @MethodDesc(name="m", declaringClass=A2A.class) + interface A3A extends A1, A2A {} + + @MethodDesc(name="m", declaringClass=A1.class, + isGetMethodReturn=true) + @MethodDesc(name="m", declaringClass=A1.class) + @MethodDesc(name="m", declaringClass=A2B.class) + @MethodDesc(name="m", declaringClass=A2B.class) + @MethodDesc(name="m", declaringClass=A2B.class, + kind=MethodKind.DEFAULT) + interface A3B extends A1, A2B {} + + @DataProvider + public Object[][] getCases() { return CASES; } + public static final Class[][] CASES = { + { K1.class }, + { K1M.class }, + { K2.class }, + { K2O.class }, + { K2M.class }, + + { N1.class }, + { N1D.class }, + { N1N.class }, + { N1DN.class }, + + { N2.class }, + { N22.class }, + { N2D.class }, + { N2N.class }, + { N2DN.class }, + + { P1.class }, + { P2.class }, + { P3.class }, + { P4.class }, + { P5.class }, + + { O1.class }, + { O2.class }, + { O3.class }, + + { C1.class }, + { C2.class }, + { C3.class }, + + { C4.class }, + { C5.class }, + { C6.class }, + + { R1.class }, + { R2.class }, + { R3.class }, + + { R4.class }, + { R5.class }, + { R6.class }, + + { R7.class }, + { R8.class }, + { R9.class }, + + { Z31.class }, + { Z32.class }, + + { Z41.class }, + { Z42.class }, + { Z43.class }, + + { ZC41.class }, + { ZC42.class }, + { ZC43.class }, + + { ZZ1.class }, + { ZZ2.class }, + { ZZ3.class }, + + { X3.class }, + { X31.class }, + { X32.class }, + + { X41.class }, + { X42.class }, + { X43.class }, + + { XC41.class }, + { XC42.class }, + { XC43.class }, + + { B1C.class }, + { B2.class }, + { B3A.class }, + { B3B.class }, + + { A3A.class }, + { A3B.class }, + }; +} diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/test/java/util/HashMap/PutNullKey.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/java/util/HashMap/PutNullKey.java Wed Jul 05 19:45:17 2017 +0200 @@ -0,0 +1,90 @@ +/* + * 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 8046085 + * @summary Ensure that when trees are being used for collisions that null key + * insertion still works. + */ + +import java.util.*; +import java.util.stream.IntStream; + +public class PutNullKey { + + // Initial capacity of map + // Should be >= the map capacity for treeifying, see HashMap/ConcurrentMap.MIN_TREEIFY_CAPACITY + static final int INITIAL_CAPACITY = 64; + + // Maximum size of map + // Should be > the treeify threshold, see HashMap/ConcurrentMap.TREEIFY_THRESHOLD + static final int SIZE = 256; + + // Load factor of map + // A value 1.0 will ensure that a new threshold == capacity + static final float LOAD_FACTOR = 1.0f; + + public static class CollidingHash implements Comparable { + + private final int value; + + public CollidingHash(int value) { + this.value = value; + } + + @Override + public int hashCode() { + // intentionally bad hashcode. Force into first bin. + return 0; + } + + @Override + public boolean equals(Object o) { + if (null == o) { + return false; + } + + if (o.getClass() != CollidingHash.class) { + return false; + } + + return value == ((CollidingHash) o).value; + } + + @Override + public int compareTo(CollidingHash o) { + return value - o.value; + } + } + + public static void main(String[] args) throws Exception { + Map m = new HashMap<>(INITIAL_CAPACITY, LOAD_FACTOR); + IntStream.range(0, SIZE) + .mapToObj(CollidingHash::new) + .forEach(e -> { m.put(e, e); }); + + // kaboom? + m.put(null, null); + } +} diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/test/java/util/Timer/Args.java --- a/jdk/test/java/util/Timer/Args.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/test/java/util/Timer/Args.java Wed Jul 05 19:45:17 2017 +0200 @@ -29,96 +29,137 @@ import java.util.*; import java.util.concurrent.*; +import static java.util.concurrent.TimeUnit.*; public class Args { + static final long DELAY_MS = 30 * 1000L; + void schedule(final Timer t, final TimerTask task, final Date d) { t.schedule(task, d); - THROWS(IllegalStateException.class, - new F(){void f(){ t.schedule(task, d); }}); + assertThrows + (IllegalStateException.class, + () -> t.schedule(task, d)); } - void schedule(final Timer t, final TimerTask task, final Date d, final long period) { + void schedule(final Timer t, final TimerTask task, final Date d, final +long period) { t.schedule(task, d, period); - THROWS(IllegalStateException.class, - new F(){void f(){ t.schedule(task, d, period); }}); + assertThrows + (IllegalStateException.class, + () -> t.schedule(task, d, period)); } - void scheduleAtFixedRate(final Timer t, final TimerTask task, final Date d, final long period) { + void scheduleAtFixedRate(final Timer t, final TimerTask task, final +Date d, final long period) { t.scheduleAtFixedRate(task, d, period); - THROWS(IllegalStateException.class, - new F(){void f(){ t.scheduleAtFixedRate(task, d, period); }}); + assertThrows + (IllegalStateException.class, + () -> t.scheduleAtFixedRate(task, d, period)); } TimerTask counter(final CountDownLatch latch) { return new TimerTask() { public void run() { - check(latch.getCount() > 0); + if (latch.getCount() == 0) + fail(String.format("Latch counted down too many times: " + +latch)); latch.countDown(); }}; } + TimerTask nop() { + return new TimerTask() { public void run() { }}; + } + void test(String[] args) throws Throwable { final Timer t = new Timer(); - final TimerTask x = new TimerTask() { public void run() {}}; - THROWS(IllegalArgumentException.class, - new F(){void f(){ t.schedule(x, -42); }}, - new F(){void f(){ t.schedule(x, new Date(-42)); }}, + try { + test(t); + } finally { + // Ensure this test doesn't interfere with subsequent + // tests even in case of failure. + t.cancel(); + } + + // Attempts to schedule tasks on a cancelled Timer result in ISE. - new F(){void f(){ t.schedule(x, Long.MAX_VALUE); }}, - new F(){void f(){ t.schedule(x, -42, 42); }}, - new F(){void f(){ t.schedule(x, new Date(-42), 42); }}, - new F(){void f(){ t.schedule(x, Long.MAX_VALUE, 42); }}, - new F(){void f(){ t.schedule(x, 42, 0); }}, - new F(){void f(){ t.schedule(x, new Date(42), 0); }}, - new F(){void f(){ t.schedule(x, 42, -42); }}, - new F(){void f(){ t.schedule(x, new Date(42), -42); }}, + final Date past = new Date(System.currentTimeMillis() - DELAY_MS); + final Date future = new Date(System.currentTimeMillis() + DELAY_MS); + assertThrows + (IllegalStateException.class, + () -> t.schedule(nop(), 42), + () -> t.schedule(nop(), 42), + () -> t.schedule(nop(), past), + () -> t.schedule(nop(), 42, 42), + () -> t.schedule(nop(), past, 42), + () -> t.scheduleAtFixedRate(nop(), 42, 42), + () -> t.scheduleAtFixedRate(nop(), past, 42), + () -> t.scheduleAtFixedRate(nop(), future, 42)); + } + + void test(Timer t) throws Throwable { + final TimerTask x = new TimerTask() { public void run() {}}; + assertThrows + (IllegalArgumentException.class, + () -> t.schedule(x, -42), + () -> t.schedule(x, new Date(-42)), - new F(){void f(){ t.scheduleAtFixedRate(x, -42, 42); }}, - new F(){void f(){ t.scheduleAtFixedRate(x, new Date(-42), 42); }}, - new F(){void f(){ t.scheduleAtFixedRate(x, Long.MAX_VALUE, 42); }}, - new F(){void f(){ t.scheduleAtFixedRate(x, 42, 0); }}, - new F(){void f(){ t.scheduleAtFixedRate(x, new Date(42), 0); }}, - new F(){void f(){ t.scheduleAtFixedRate(x, 42, -42); }}, - new F(){void f(){ t.scheduleAtFixedRate(x, new Date(42), -42); }} - ); + () -> t.schedule(x, Long.MAX_VALUE), + () -> t.schedule(x, -42, 42), + () -> t.schedule(x, new Date(-42), 42), + () -> t.schedule(x, Long.MAX_VALUE, 42), + () -> t.schedule(x, 42, 0), + () -> t.schedule(x, new Date(42), 0), + () -> t.schedule(x, 42, -42), + () -> t.schedule(x, new Date(42), -42), - THROWS(NullPointerException.class, - new F(){void f(){ t.schedule(null, 42); }}, - new F(){void f(){ t.schedule(x, (Date)null); }}, + () -> t.scheduleAtFixedRate(x, -42, 42), + () -> t.scheduleAtFixedRate(x, new Date(-42), 42), + () -> t.scheduleAtFixedRate(x, Long.MAX_VALUE, 42), + () -> t.scheduleAtFixedRate(x, 42, 0), + () -> t.scheduleAtFixedRate(x, new Date(42), 0), + () -> t.scheduleAtFixedRate(x, 42, -42), + () -> t.scheduleAtFixedRate(x, new Date(42), -42)); + + assertThrows + (NullPointerException.class, + () -> t.schedule(null, 42), + () -> t.schedule(x, (Date)null), - new F(){void f(){ t.schedule(null, 42, 42); }}, - new F(){void f(){ t.schedule(x, (Date)null, 42); }}, + () -> t.schedule(null, 42, 42), + () -> t.schedule(x, (Date)null, 42), + + () -> t.scheduleAtFixedRate(null, 42, 42), + () -> t.scheduleAtFixedRate(x, (Date)null, 42)); - new F(){void f(){ t.scheduleAtFixedRate(null, 42, 42); }}, - new F(){void f(){ t.scheduleAtFixedRate(x, (Date)null, 42); }} - ); + // Create local classes for clearer diagnostics in case of failure + class OneShotLatch extends CountDownLatch { + OneShotLatch() { super(1); } + } + class FixedDelayLatch extends CountDownLatch { + FixedDelayLatch() { super(1); } + } + class FixedRateLatch extends CountDownLatch { + FixedRateLatch() { super(11); } + } + final CountDownLatch y1 = new OneShotLatch(); + final CountDownLatch y2 = new FixedDelayLatch(); + final CountDownLatch y3 = new FixedRateLatch(); - final CountDownLatch y1 = new CountDownLatch(1); - final CountDownLatch y2 = new CountDownLatch(1); - final CountDownLatch y3 = new CountDownLatch(11); final long start = System.currentTimeMillis(); - final Date past = new Date(start - 10500); + final Date past = new Date(start - (10 * DELAY_MS + DELAY_MS / 2)); schedule( t, counter(y1), past); - schedule( t, counter(y2), past, 1000); - scheduleAtFixedRate(t, counter(y3), past, 1000); - y3.await(); - y1.await(); - y2.await(); + schedule( t, counter(y2), past, DELAY_MS); + scheduleAtFixedRate(t, counter(y3), past, DELAY_MS); + + check(y1.await(DELAY_MS / 4, MILLISECONDS)); + check(y2.await(DELAY_MS / 4, MILLISECONDS)); + check(y3.await(DELAY_MS / 4, MILLISECONDS)); final long elapsed = System.currentTimeMillis() - start; - System.out.printf("elapsed=%d%n", elapsed); - check(elapsed < 500); - - t.cancel(); - - THROWS(IllegalStateException.class, - new F(){void f(){ t.schedule(x, 42); }}, - new F(){void f(){ t.schedule(x, past); }}, - new F(){void f(){ t.schedule(x, 42, 42); }}, - new F(){void f(){ t.schedule(x, past, 42); }}, - new F(){void f(){ t.scheduleAtFixedRate(x, 42, 42); }}, - new F(){void f(){ t.scheduleAtFixedRate(x, past, 42); }}); - + if (elapsed >= DELAY_MS / 2) + fail(String.format("Test took too long: elapsed=%d%n", +elapsed)); } //--------------------- Infrastructure --------------------------- @@ -137,11 +178,12 @@ try {test(args);} catch (Throwable t) {unexpected(t);} System.out.printf("%nPassed = %d, failed = %d%n%n", passed, failed); if (failed > 0) throw new AssertionError("Some tests failed");} - abstract class F {abstract void f() throws Throwable;} - void THROWS(Class k, F... fs) { + interface F { void f() throws Throwable; } + void assertThrows(Class k, F... fs) { for (F f : fs) try {f.f(); fail("Expected " + k.getName() + " not thrown");} catch (Throwable t) { if (k.isAssignableFrom(t.getClass())) pass(); else unexpected(t);}} } + diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/test/sun/management/jmxremote/bootstrap/JvmstatCountersTest.java --- a/jdk/test/sun/management/jmxremote/bootstrap/JvmstatCountersTest.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/test/sun/management/jmxremote/bootstrap/JvmstatCountersTest.java Wed Jul 05 19:45:17 2017 +0200 @@ -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 @@ -143,9 +143,12 @@ String vmid = name.substring(0, name.indexOf("@")); System.out.println("vmid = " + vmid); VirtualMachine vm = VirtualMachine.attach(vmid); - String agent = vm.getSystemProperties().getProperty("java.home") + - File.separator + "lib" + File.separator + "management-agent.jar"; - vm.loadAgent(agent, "com.sun.management.jmxremote.port=0,com.sun.management.jmxremote.authenticate=false,com.sun.management.jmxremote.ssl=false"); + Properties p = new Properties(); + p.put("com.sun.management.jmxremote.port", "0"); + p.put("com.sun.management.jmxremote.authenticate", "false"); + p.put("com.sun.management.jmxremote.ssl", "false"); + vm.startManagementAgent(p); + vm.startLocalManagementAgent(); vm.detach(); String localAddress2 = ConnectorAddressLink.importFrom(0); if (localAddress2 == null) { diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/test/sun/management/jmxremote/bootstrap/LocalManagementTest.java --- a/jdk/test/sun/management/jmxremote/bootstrap/LocalManagementTest.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/test/sun/management/jmxremote/bootstrap/LocalManagementTest.java Wed Jul 05 19:45:17 2017 +0200 @@ -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 @@ -22,13 +22,8 @@ */ import java.io.File; -import java.io.IOException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; -import java.nio.file.FileSystem; -import java.nio.file.FileSystems; -import java.nio.file.Files; -import java.nio.file.Path; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; @@ -47,19 +42,12 @@ */ import jdk.testlibrary.ProcessTools; -import jdk.testlibrary.Utils; public class LocalManagementTest { private static final String TEST_CLASSPATH = System.getProperty("test.class.path"); private static final String TEST_JDK = System.getProperty("test.jdk"); - private static int MAX_GET_FREE_PORT_TRIES = 10; public static void main(String[] args) throws Exception { - try { - MAX_GET_FREE_PORT_TRIES = Integer.parseInt(System.getProperty("test.getfreeport.max.tries", "10")); - } catch (NumberFormatException ex) { - } - int failures = 0; for(Method m : LocalManagementTest.class.getDeclaredMethods()) { if (Modifier.isStatic(m.getModifiers()) && @@ -84,110 +72,27 @@ } } + @SuppressWarnings("unused") private static boolean test1() throws Exception { return doTest("1", "-Dcom.sun.management.jmxremote"); } - private static boolean test2() throws Exception { - Path agentPath = findAgent(); - if (agentPath != null) { - String agent = agentPath.toString(); - return doTest("2", "-javaagent:" + agent); - } else { - return false; - } - } - /** * no args (blank) - manager should attach and start agent */ + @SuppressWarnings("unused") private static boolean test3() throws Exception { return doTest("3", null); } /** - * sanity check arguments to management-agent.jar - */ - private static boolean test4() throws Exception { - Path agentPath = findAgent(); - if (agentPath != null) { - - for (int i = 0; i < MAX_GET_FREE_PORT_TRIES; ++i) { - ProcessBuilder builder = ProcessTools.createJavaProcessBuilder( - "-javaagent:" + agentPath.toString() + - "=com.sun.management.jmxremote.port=" + Utils.getFreePort() + "," + - "com.sun.management.jmxremote.authenticate=false," + - "com.sun.management.jmxremote.ssl=false", - "-cp", - TEST_CLASSPATH, - "TestApplication", - "-exit" - ); - - Process prc = null; - final AtomicReference isBindExceptionThrown = new AtomicReference<>(); - isBindExceptionThrown.set(new Boolean(false)); - try { - prc = ProcessTools.startProcess( - "TestApplication", - builder, - (String line) -> { - if (line.contains("Exception thrown by the agent : " + - "java.rmi.server.ExportException: Port already in use")) { - isBindExceptionThrown.set(new Boolean(true)); - } - }); - - prc.waitFor(); - - if (prc.exitValue() == 0) { - return true; - } - - if (isBindExceptionThrown.get().booleanValue()) { - System.out.println("'Port already in use' error detected. Try again"); - } else { - return false; - } - } finally { - if (prc != null) { - prc.destroy(); - prc.waitFor(); - } - } - } - } - return false; - } - - /** * use DNS-only name service */ + @SuppressWarnings("unused") private static boolean test5() throws Exception { return doTest("5", "-Dsun.net.spi.namservice.provider.1=\"dns,sun\""); } - private static Path findAgent() { - FileSystem FS = FileSystems.getDefault(); - Path agentPath = FS.getPath( - TEST_JDK, "jre", "lib", "management-agent.jar" - ); - if (!isFileOk(agentPath)) { - agentPath = FS.getPath( - TEST_JDK, "lib", "management-agent.jar" - ); - } - if (!isFileOk(agentPath)) { - System.err.println("Can not locate management-agent.jar"); - return null; - } - return agentPath; - } - - private static boolean isFileOk(Path path) { - return Files.isRegularFile(path) && Files.isReadable(path); - } - private static boolean doTest(String testId, String arg) throws Exception { List args = new ArrayList<>(); args.add("-cp"); @@ -267,4 +172,4 @@ } } } -} \ No newline at end of file +} diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/test/sun/management/jmxremote/bootstrap/TestManager.java --- a/jdk/test/sun/management/jmxremote/bootstrap/TestManager.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/test/sun/management/jmxremote/bootstrap/TestManager.java Wed Jul 05 19:45:17 2017 +0200 @@ -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 @@ -40,7 +40,6 @@ import static java.lang.management.ManagementFactory.*; import java.net.Socket; import java.net.InetSocketAddress; -import java.io.File; import java.io.IOException; // Sun specific @@ -55,28 +54,8 @@ * Starts the management agent in the target VM */ private static void startManagementAgent(String pid) throws IOException { - /* - * JAR file normally in ${java.home}/jre/lib but may be in ${java.home}/lib - * with development/non-images builds - */ - String home = System.getProperty("java.home"); - String agent = home + File.separator + "jre" + File.separator + "lib" - + File.separator + "management-agent.jar"; - File f = new File(agent); - if (!f.exists()) { - agent = home + File.separator + "lib" + File.separator + - "management-agent.jar"; - f = new File(agent); - if (!f.exists()) { - throw new RuntimeException("management-agent.jar missing"); - } - } - agent = f.getCanonicalPath(); - - System.out.println("Loading " + agent + " into target VM ..."); - try { - VirtualMachine.attach(pid).loadAgent(agent); + VirtualMachine.attach(pid).startLocalManagementAgent(); } catch (Exception x) { throw new IOException(x.getMessage()); } @@ -122,8 +101,7 @@ if (agentPropLocalConnectorAddress == null && jvmstatLocalConnectorAddress == null) { - // No JMX Connector address so attach to VM, and load - // management-agent.jar + // No JMX Connector address so attach to VM, and start local agent startManagementAgent(pid); agentPropLocalConnectorAddress = (String) vm.getAgentProperties().get(LOCAL_CONNECTOR_ADDRESS_PROP); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/test/sun/management/jmxremote/startstop/JMXStartStopTest.java --- a/jdk/test/sun/management/jmxremote/startstop/JMXStartStopTest.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/test/sun/management/jmxremote/startstop/JMXStartStopTest.java Wed Jul 05 19:45:17 2017 +0200 @@ -31,16 +31,13 @@ import java.rmi.registry.Registry; import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; import java.util.Iterator; import java.util.List; -import java.util.Map; import java.util.Objects; import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; import javax.management.*; @@ -60,7 +57,6 @@ * JCMD achieves the desired results */ public class JMXStartStopTest { - private static final String TEST_JDK = System.getProperty("test.jdk"); private static final String TEST_SRC = System.getProperty("test.src"); private static final boolean verbose = false; @@ -117,8 +113,8 @@ QueryExp query) throws Exception { - Set names = server.queryNames(pattern,query); - for (Iterator i=names.iterator(); i.hasNext(); ) { + Set names = server.queryNames(pattern,query); + for (Iterator i = names.iterator(); i.hasNext(); ) { ObjectName name = (ObjectName)i.next(); MBeanInfo info = server.getMBeanInfo(name); dbg_print("Got MBean: " + name); @@ -128,7 +124,7 @@ continue; for (MBeanAttributeInfo attr : attrs) { if (attr.isReadable()) { - Object o = server.getAttribute(name, attr.getName()); + server.getAttribute(name, attr.getName()); } } } @@ -149,9 +145,8 @@ } JMXServiceURL url = new JMXServiceURL(jmxUrlStr); - Map m = new HashMap(); - JMXConnector c = JMXConnectorFactory.connect(url,m); + JMXConnector c = JMXConnectorFactory.connect(url, null); MBeanServerConnection conn = c.getMBeanServerConnection(); ObjectName pattern = new ObjectName("java.lang:type=Memory,*"); @@ -221,9 +216,8 @@ port); JMXServiceURL url = new JMXServiceURL(jmxUrlStr); - Map m = new HashMap(); - JMXConnector c = JMXConnectorFactory.connect(url,m); + JMXConnector c = JMXConnectorFactory.connect(url, null); MBeanServerConnection conn = c.getMBeanServerConnection(); ObjectName pattern = new ObjectName("java.lang:type=Memory,*"); @@ -314,25 +308,6 @@ } } - /** - * Retrieves the PID of the test application using JCMD - * @return The PID of the test application - * @throws InterruptedException - * @throws IOException - */ - private static String getPID() throws InterruptedException, IOException { - final AtomicReference pid = new AtomicReference<>(); - jcmd( - null, - line -> { - if (line.endsWith("JMXStartStopDoSomething")) { - pid.set(line.split(" ")[0]); - } - } - ); - return pid.get(); - } - private static class Something { private Process p; private final ProcessBuilder pb; @@ -473,7 +448,7 @@ private static final String CMD_START= "ManagementAgent.start"; private static final String CMD_START_LOCAL = "ManagementAgent.start_local"; - private static void test_01() throws Exception { + static void test_01() throws Exception { // Run an app with JMX enabled stop it and // restart on other port @@ -499,7 +474,7 @@ } } - private static void test_02() throws Exception { + static void test_02() throws Exception { // Run an app without JMX enabled // start JMX by jcmd @@ -520,7 +495,7 @@ } } - private static void test_03() throws Exception { + static void test_03() throws Exception { // Run an app without JMX enabled // start JMX by jcmd on one port than on other one @@ -550,7 +525,7 @@ } } - private static void test_04() throws Exception { + static void test_04() throws Exception { // Run an app without JMX enabled // start JMX by jcmd on one port, specify rmi port explicitly @@ -571,7 +546,7 @@ } } - private static void test_05() throws Exception { + static void test_05() throws Exception { // Run an app without JMX enabled, it will enable local server // but should leave remote server disabled @@ -589,7 +564,7 @@ } } - private static void test_06() throws Exception { + static void test_06() throws Exception { // Run an app without JMX enabled // start JMX by jcmd on one port, specify rmi port explicitly // attempt to start it again @@ -636,38 +611,39 @@ jcmd(CMD_STOP); jcmd(CMD_STOP); - ServerSocket ss = new ServerSocket(0); + try (ServerSocket ss = new ServerSocket(0)) + { + jcmd( + line -> { + if (line.contains("Port already in use: " + ss.getLocalPort())) { + checks[2] = true; + } + }, + CMD_START, + "jmxremote.port=" + ss.getLocalPort(), + "jmxremote.rmi.port=" + pa.getPort2(), + "jmxremote.authenticate=false", + "jmxremote.ssl=false"); - jcmd( - line -> { - if (line.contains("Port already in use: " + ss.getLocalPort())) { - checks[2] = true; - } - }, - CMD_START, - "jmxremote.port=" + ss.getLocalPort(), - "jmxremote.rmi.port=" + pa.getPort2(), - "jmxremote.authenticate=false", - "jmxremote.ssl=false"); - - if (!checks[0]) { - throw new Exception("Starting agent on port " + pa.getPort1() + " should " + - "report an invalid agent state"); - } - if (!checks[1]) { - throw new Exception("Starting agent on poprt " + pa.getPort2() + " should " + - "report an invalid agent state"); - } - if (!checks[2]) { - throw new Exception("Starting agent on port " + ss.getLocalPort() + " should " + - "report port in use"); + if (!checks[0]) { + throw new Exception("Starting agent on port " + pa.getPort1() + " should " + + "report an invalid agent state"); + } + if (!checks[1]) { + throw new Exception("Starting agent on poprt " + pa.getPort2() + " should " + + "report an invalid agent state"); + } + if (!checks[2]) { + throw new Exception("Starting agent on port " + ss.getLocalPort() + " should " + + "report port in use"); + } } } finally { s.stop(); } } - private static void test_07() throws Exception { + static void test_07() throws Exception { // Run an app without JMX enabled, but with some properties set // in command line. // make sure these properties overridden corectly @@ -694,7 +670,7 @@ } } - private static void test_08() throws Exception { + static void test_08() throws Exception { // Run an app with JMX enabled and with some properties set // in command line. // stop JMX agent and then start it again with different property values @@ -729,7 +705,7 @@ } } - private static void test_09() throws Exception { + static void test_09() throws Exception { // Run an app with JMX enabled and with some properties set // in command line. // stop JMX agent and then start it again with different property values @@ -766,7 +742,7 @@ } } - private static void test_10() throws Exception { + static void test_10() throws Exception { // Run an app with JMX enabled and with some properties set // in command line. // stop JMX agent and then start it again with different property values @@ -803,7 +779,7 @@ } } - private static void test_11() throws Exception { + static void test_11() throws Exception { // Run an app with JMX enabled // stop remote agent // make sure local agent is not affected @@ -825,7 +801,7 @@ } } - private static void test_12() throws Exception { + static void test_12() throws Exception { // Run an app with JMX disabled // start local agent only @@ -845,28 +821,4 @@ } } - private static void test_13() throws Exception { - // Run an app with -javaagent make sure it works as expected - - // system properties are ignored - - System.out.println("**** Test thirteen ****"); - PortAllocator pa = new PortAllocator(); - - String agent = TEST_JDK + "/jre/lib/management-agent.jar"; - if (!new File(agent).exists()) { - agent = TEST_JDK + "/lib/management-agent.jar"; - } - - Something s = doSomething("test_14", - "-javaagent:" + agent + "=com.sun.management.jmxremote.port=" + - pa.getPort1() + ",com.sun.management.jmxremote.authenticate=false", - "-Dcom.sun.management.jmxremote.ssl=false" - ); - - try { - testNoConnect(pa.port1); - } finally { - s.stop(); - } - } } diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/test/sun/net/www/protocol/http/ZoneId.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/sun/net/www/protocol/http/ZoneId.java Wed Jul 05 19:45:17 2017 +0200 @@ -0,0 +1,127 @@ +/* + * 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 8027308 + * @summary verifies that HttpURLConnection does not send the zone id in the + * 'Host' field of the header: + * Host: [fe80::a00:27ff:aaaa:aaaa] instead of + * Host: [fe80::a00:27ff:aaaa:aaaa%eth0]" + */ + +import com.sun.net.httpserver.Headers; +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; +import com.sun.net.httpserver.HttpServer; + +import java.io.IOException; +import java.net.*; +import java.util.Enumeration; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; + +public class ZoneId { + + public static void main(String[] args) throws Exception { + + InetAddress address = getAppropriateIPv6Address(); + + if (address == null) { + System.out.println( + "The test will be skipped as not a single " + + "appropriate IPv6 address was found on this machine"); + return; + } + String ip6_literal = address.getHostAddress(); + + System.out.println("Found an appropriate IPv6 address: " + address); + + System.out.println("Starting http server..."); + HttpServer server = + HttpServer.create(new InetSocketAddress(address, 0), 0); + CompletableFuture headers = new CompletableFuture<>(); + server.createContext("/", createCapturingHandler(headers)); + server.start(); + System.out.println("Started at " + server.getAddress()); + try { + String spec = "http://[" + address.getHostAddress() + "]:" + server.getAddress().getPort(); + System.out.println("Client is connecting to: " + spec); + URLConnection urlConnection = new URL(spec).openConnection(); + ((sun.net.www.protocol.http.HttpURLConnection) urlConnection) + .getResponseCode(); + } finally { + System.out.println("Shutting down the server..."); + server.stop(0); + } + + int idx = ip6_literal.lastIndexOf('%'); + String ip6_address = ip6_literal.substring(0, idx); + List hosts = headers.get().get("Host"); + + System.out.println("Host: " + hosts); + + if (hosts.size() != 1 || hosts.get(0).contains("%") || + !hosts.get(0).contains(ip6_address)) { + throw new RuntimeException("FAIL"); + } + } + + private static InetAddress getAppropriateIPv6Address() throws SocketException { + System.out.println("Searching through the network interfaces..."); + Enumeration is = NetworkInterface.getNetworkInterfaces(); + while (is.hasMoreElements()) { + NetworkInterface i = is.nextElement(); + System.out.println("\tinterface: " + i); + + // just a "good enough" marker that the interface + // does not support a loopback and therefore should not be used + if ( i.getHardwareAddress() == null) continue; + if (!i.isUp()) continue; + + Enumeration as = i.getInetAddresses(); + while (as.hasMoreElements()) { + InetAddress a = as.nextElement(); + System.out.println("\t\taddress: " + a.getHostAddress()); + if ( !(a instanceof Inet6Address && + a.toString().contains("%")) ) { + continue; + } + return a; + } + } + return null; + } + + private static HttpHandler createCapturingHandler(CompletableFuture headers) { + return new HttpHandler() { + @Override + public void handle(HttpExchange exchange) throws IOException { + headers.complete(exchange.getRequestHeaders()); + exchange.sendResponseHeaders(HttpURLConnection.HTTP_OK, -1); + exchange.close(); + } + }; + } +} diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/test/sun/security/pkcs11/KeyStore/SecretKeysBasic.java --- a/jdk/test/sun/security/pkcs11/KeyStore/SecretKeysBasic.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/test/sun/security/pkcs11/KeyStore/SecretKeysBasic.java Wed Jul 05 19:45:17 2017 +0200 @@ -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 @@ -139,6 +139,13 @@ } private static void doTest() throws Exception { + // Make sure both NSS libraries are the same version. + if (isNSS(provider) && + (getLibsoftokn3Version() != getLibnss3Version())) { + System.out.println("libsoftokn3 and libnss3 versions do not match. Aborting test..."); + return; + } + if (ks == null) { ks = KeyStore.getInstance(KS_TYPE, provider); ks.load(null, tokenPwd); diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/test/sun/security/pkcs11/PKCS11Test.java --- a/jdk/test/sun/security/pkcs11/PKCS11Test.java Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/test/sun/security/pkcs11/PKCS11Test.java Wed Jul 05 19:45:17 2017 +0200 @@ -66,6 +66,11 @@ // The other is "libnss3.so", listed as "nss3". static String nss_library = "softokn3"; + // NSS versions of each library. It is simplier to keep nss_version + // for quick checking for generic testing than many if-else statements. + static double softoken3_version = -1; + static double nss3_version = -1; + static Provider getSunPKCS11(String config) throws Exception { Class clazz = Class.forName("sun.security.pkcs11.SunPKCS11"); Constructor cons = clazz.getConstructor(new Class[] {String.class}); @@ -175,6 +180,10 @@ } public static String getNSSLibDir() throws Exception { + return getNSSLibDir(nss_library); + } + + static String getNSSLibDir(String library) throws Exception { Properties props = System.getProperties(); String osName = props.getProperty("os.name"); if (osName.startsWith("Win")) { @@ -195,7 +204,7 @@ String nssLibDir = null; for (String dir : nssLibDirs) { if (new File(dir).exists() && - new File(dir + System.mapLibraryName(nss_library)).exists()) { + new File(dir + System.mapLibraryName(library)).exists()) { nssLibDir = dir; System.setProperty("pkcs11test.nss.libdir", nssLibDir); break; @@ -241,16 +250,37 @@ return nss_ecc_status; } + public static double getLibsoftokn3Version() { + if (softoken3_version == -1) + return getNSSInfo("softokn3"); + return softoken3_version; + } + + public static double getLibnss3Version() { + if (nss3_version == -1) + return getNSSInfo("nss3"); + return nss3_version; + } + /* Read the library to find out the verison */ static void getNSSInfo() { + getNSSInfo(nss_library); + } + + static double getNSSInfo(String library) { String nssHeader = "$Header: NSS"; boolean found = false; String s = null; int i = 0; String libfile = ""; + if (library.compareTo("softokn3") == 0 && softoken3_version > -1) + return softoken3_version; + if (library.compareTo("nss3") == 0 && nss3_version > -1) + return nss3_version; + try { - libfile = getNSSLibDir() + System.mapLibraryName(nss_library); + libfile = getNSSLibDir() + System.mapLibraryName(library); FileInputStream is = new FileInputStream(libfile); byte[] data = new byte[1000]; int read = 0; @@ -284,9 +314,10 @@ } if (!found) { - System.out.println("NSS version not found, set to 0.0: "+libfile); + System.out.println("lib" + library + + " version not found, set to 0.0: " + libfile); nss_version = 0.0; - return; + return nss_version; } // the index after whitespace after nssHeader @@ -306,11 +337,12 @@ try { nss_version = Double.parseDouble(version); } catch (NumberFormatException e) { - System.out.println("Failed to parse NSS version. Set to 0.0"); + System.out.println("Failed to parse lib" + library + + " version. Set to 0.0"); e.printStackTrace(); } - System.out.print("NSS version = "+version+". "); + System.out.print("lib" + library + " version = "+version+". "); // Check for ECC if (s.indexOf("Basic") > 0) { @@ -319,7 +351,17 @@ } else if (s.indexOf("Extended") > 0) { nss_ecc_status = ECCState.Extended; System.out.println("ECC Extended."); + } else { + System.out.println("ECC None."); } + + if (library.compareTo("softokn3") == 0) { + softoken3_version = nss_version; + } else if (library.compareTo("nss3") == 0) { + nss3_version = nss_version; + } + + return nss_version; } // Used to set the nss_library file to search for libsoftokn3.so diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/test/sun/security/tools/keytool/default_options.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/sun/security/tools/keytool/default_options.sh Wed Jul 05 19:45:17 2017 +0200 @@ -0,0 +1,118 @@ +# +# 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 8023197 +# @summary Pre-configured command line options for keytool and jarsigner +# + +if [ "${TESTJAVA}" = "" ] ; then + JAVAC_CMD=`which javac` + TESTJAVA=`dirname $JAVAC_CMD`/.. +fi + +KS=ks +KEYTOOL="$TESTJAVA/bin/keytool ${TESTTOOLVMOPTS}" +JAR="$TESTJAVA/bin/jar ${TESTTOOLVMOPTS}" +JARSIGNER="$TESTJAVA/bin/jarsigner ${TESTTOOLVMOPTS}" + +rm $KS 2> /dev/null + +PASS=changeit +export PASS + +# keytool + +cat < kt.conf +# A Pre-configured options file +keytool.all = -storepass:env PASS -keypass:env PASS -keystore \${user.dir}/$KS -debug +keytool.genkey = -keyalg ec -ext bc +keytool.delete = -keystore nothing +EOF + +# kt.conf is read +$KEYTOOL -conf kt.conf -genkeypair -dname CN=A -alias a || exit 1 +$KEYTOOL -conf kt.conf -list -alias a -v > a_certinfo || exit 2 +grep "Signature algorithm name" a_certinfo | grep ECDSA || exit 3 +grep "BasicConstraints" a_certinfo || exit 4 + +# kt.conf is read, and dup multi-valued options processed as expected +$KEYTOOL -conf kt.conf -genkeypair -dname CN=B -alias b -ext ku=ds \ + || exit 11 +$KEYTOOL -conf kt.conf -list -alias b -v > b_certinfo || exit 12 +grep "BasicConstraints" b_certinfo || exit 14 +grep "DigitalSignature" b_certinfo || exit 15 + +# Single-valued option in command section override all +$KEYTOOL -conf kt.conf -delete -alias a && exit 16 + +# Single-valued option on command line overrides again +$KEYTOOL -conf kt.conf -delete -alias b -keystore $KS || exit 17 + +# jarsigner + +cat < js.conf +jarsigner.all = -keystore \${user.dir}/$KS -storepass:env PASS -debug -strict +jarsigner.sign = -digestalg SHA1 +jarsigner.verify = -verbose:summary + +EOF + +$JAR cvf a.jar ks js.conf kt.conf + +$JARSIGNER -conf js.conf a.jar a || exit 21 +$JARSIGNER -conf js.conf -verify a.jar > jarsigner.out || exit 22 +grep "and 2 more" jarsigner.out || exit 23 +$JAR xvf a.jar META-INF/MANIFEST.MF +grep "SHA1-Digest" META-INF/MANIFEST.MF || exit 24 + +# Error cases + +# File does not exist +$KEYTOOL -conf no-such-file -help -list && exit 31 + +# Cannot have both standard name (-genkeypair) and legacy name (-genkey) +cat < bad.conf +keytool.all = -storepass:env PASS -keypass:env PASS -keystore ks +keytool.genkeypair = -keyalg rsa +keytool.genkey = -keyalg ec +EOF + +$KEYTOOL -conf bad.conf -genkeypair -alias me -dname "cn=me" && exit 32 + +# Unknown options are rejected by tool +cat < bad.conf +keytool.all=-unknown +EOF + +$KEYTOOL -conf bad.conf -help -list && exit 33 + +# System property must be present +cat < bad.conf +keytool.all = -keystore \${no.such.prop} +EOF + +$KEYTOOL -conf bad.conf -help -list && exit 34 + +echo Done +exit 0 diff -r a7c5ef3bb9d4 -r 1db850cae005 jdk/test/sun/security/tools/policytool/i18n.sh --- a/jdk/test/sun/security/tools/policytool/i18n.sh Wed Jun 18 10:08:47 2014 -0700 +++ b/jdk/test/sun/security/tools/policytool/i18n.sh Wed Jul 05 19:45:17 2017 +0200 @@ -77,7 +77,7 @@ echo "Checking for $HOME/.java.policy" # 8015274 -if [ -e $HOME/.java.policy ]; then +if [ -f $HOME/.java.policy ]; then echo "You have a .java.policy file in your HOME directory" echo "The file must be removed before running this test" exit 1