mirror of
https://github.com/openjdk/jdk.git
synced 2026-06-05 10:12:35 +00:00
Merge
This commit is contained in:
commit
e395ecfccb
1
.hgtags
1
.hgtags
@ -222,3 +222,4 @@ ea73f01b9053e7165e7ba80f242bafecbc6af712 jdk8-b96
|
||||
711eb4aa87de68de78250e0549980936bab53d54 jdk8-b98
|
||||
2d3875b0d18b3ad1c2bebf385a697e309e4005a4 jdk8-b99
|
||||
3d34036aae4ea90b2ca59712d5a69db3221f0875 jdk8-b100
|
||||
edb01c460d4cab21ff0ff13512df7b746efaa0e7 jdk8-b101
|
||||
|
||||
@ -222,3 +222,4 @@ a1c1e8bf71f354f3aec0214cf13d6668811e021d jdk8-b97
|
||||
0d0c983a817bbe8518a5ff201306334a8de267f2 jdk8-b98
|
||||
59dc9da813794c924a0383c2a6241af94defdfed jdk8-b99
|
||||
d2dcb110e9dbaf9903c05b211df800e78e4b394e jdk8-b100
|
||||
9f74a220677dc265a724515d8e2617548cef62f1 jdk8-b101
|
||||
|
||||
@ -222,3 +222,4 @@ c8286839d0df04aba819ec4bef12b86babccf30e jdk8-b90
|
||||
3370fb6146e47a6cc05a213fc213e12fc0a38d07 jdk8-b98
|
||||
3f67804ab61303782df57e54989ef5e0e4629beb jdk8-b99
|
||||
8d492f1dfd1b131a4c7886ee6b59528609f7e4fe jdk8-b100
|
||||
a013024b07475782f1fa8e196e950b34b4077663 jdk8-b101
|
||||
|
||||
@ -363,3 +363,5 @@ c9dd82da51ed34a28f7c6b3245163ee962e94572 hs25-b40
|
||||
9f71e36a471ae4a668e08827d33035963ed10c08 hs25-b42
|
||||
5787fac72e760c6a5fd9efa113b0c75caf554136 jdk8-b100
|
||||
46487ba40ff225654d0c51787ed3839bafcbd9f3 hs25-b43
|
||||
f6921c876db192bba389cec062855a66372da01c jdk8-b101
|
||||
530fe88b3b2c710f42810b3580d86a0d83ad6c1c hs25-b44
|
||||
|
||||
@ -24,16 +24,20 @@
|
||||
|
||||
TYPE=MINIMAL1
|
||||
|
||||
INCLUDE_JVMTI ?= false
|
||||
INCLUDE_FPROF ?= false
|
||||
INCLUDE_VM_STRUCTS ?= false
|
||||
INCLUDE_JNI_CHECK ?= false
|
||||
INCLUDE_SERVICES ?= false
|
||||
INCLUDE_MANAGEMENT ?= false
|
||||
INCLUDE_ALL_GCS ?= false
|
||||
INCLUDE_NMT ?= false
|
||||
INCLUDE_TRACE ?= false
|
||||
INCLUDE_CDS ?= false
|
||||
# Force all variables to false, overriding any other
|
||||
# setting that may have occurred in the makefiles. These
|
||||
# can still be overridden by passing the variable as an
|
||||
# argument to 'make'
|
||||
INCLUDE_JVMTI := false
|
||||
INCLUDE_FPROF := false
|
||||
INCLUDE_VM_STRUCTS := false
|
||||
INCLUDE_JNI_CHECK := false
|
||||
INCLUDE_SERVICES := false
|
||||
INCLUDE_MANAGEMENT := false
|
||||
INCLUDE_ALL_GCS := false
|
||||
INCLUDE_NMT := false
|
||||
INCLUDE_TRACE := false
|
||||
INCLUDE_CDS := false
|
||||
|
||||
CXXFLAGS += -DMINIMAL_JVM -DCOMPILER1 -DVMTYPE=\"Minimal\"
|
||||
CFLAGS += -DMINIMAL_JVM -DCOMPILER1 -DVMTYPE=\"Minimal\"
|
||||
|
||||
@ -35,7 +35,7 @@ HOTSPOT_VM_COPYRIGHT=Copyright 2013
|
||||
|
||||
HS_MAJOR_VER=25
|
||||
HS_MINOR_VER=0
|
||||
HS_BUILD_NUMBER=43
|
||||
HS_BUILD_NUMBER=44
|
||||
|
||||
JDK_MAJOR_VER=1
|
||||
JDK_MINOR_VER=8
|
||||
|
||||
@ -24,16 +24,20 @@
|
||||
|
||||
TYPE=MINIMAL1
|
||||
|
||||
INCLUDE_JVMTI ?= false
|
||||
INCLUDE_FPROF ?= false
|
||||
INCLUDE_VM_STRUCTS ?= false
|
||||
INCLUDE_JNI_CHECK ?= false
|
||||
INCLUDE_SERVICES ?= false
|
||||
INCLUDE_MANAGEMENT ?= false
|
||||
INCLUDE_ALL_GCS ?= false
|
||||
INCLUDE_NMT ?= false
|
||||
INCLUDE_TRACE ?= false
|
||||
INCLUDE_CDS ?= false
|
||||
# Force all variables to false, overriding any other
|
||||
# setting that may have occurred in the makefiles. These
|
||||
# can still be overridden by passing the variable as an
|
||||
# argument to 'make'
|
||||
INCLUDE_JVMTI := false
|
||||
INCLUDE_FPROF := false
|
||||
INCLUDE_VM_STRUCTS := false
|
||||
INCLUDE_JNI_CHECK := false
|
||||
INCLUDE_SERVICES := false
|
||||
INCLUDE_MANAGEMENT := false
|
||||
INCLUDE_ALL_GCS := false
|
||||
INCLUDE_NMT := false
|
||||
INCLUDE_TRACE := false
|
||||
INCLUDE_CDS := false
|
||||
|
||||
CXXFLAGS += -DMINIMAL_JVM -DCOMPILER1 -DVMTYPE=\"Minimal\"
|
||||
CFLAGS += -DMINIMAL_JVM -DCOMPILER1 -DVMTYPE=\"Minimal\"
|
||||
|
||||
@ -42,7 +42,7 @@ define_pd_global(bool, ProfileInterpreter, false);
|
||||
#else
|
||||
define_pd_global(bool, ProfileInterpreter, true);
|
||||
#endif // CC_INTERP
|
||||
define_pd_global(bool, TieredCompilation, false);
|
||||
define_pd_global(bool, TieredCompilation, trueInTiered);
|
||||
define_pd_global(intx, CompileThreshold, 10000);
|
||||
define_pd_global(intx, BackEdgeThreshold, 140000);
|
||||
|
||||
|
||||
@ -44,7 +44,7 @@ define_pd_global(bool, ProfileInterpreter, false);
|
||||
#else
|
||||
define_pd_global(bool, ProfileInterpreter, true);
|
||||
#endif // CC_INTERP
|
||||
define_pd_global(bool, TieredCompilation, false);
|
||||
define_pd_global(bool, TieredCompilation, trueInTiered);
|
||||
define_pd_global(intx, CompileThreshold, 10000);
|
||||
define_pd_global(intx, BackEdgeThreshold, 100000);
|
||||
|
||||
|
||||
@ -299,7 +299,7 @@ class CompileReplay : public StackObj {
|
||||
Symbol* method_signature = parse_symbol(CHECK_NULL);
|
||||
Method* m = k->find_method(method_name, method_signature);
|
||||
if (m == NULL) {
|
||||
report_error("can't find method");
|
||||
report_error("Can't find method");
|
||||
}
|
||||
return m;
|
||||
}
|
||||
@ -398,8 +398,8 @@ class CompileReplay : public StackObj {
|
||||
|
||||
// compile <klass> <name> <signature> <entry_bci> <comp_level>
|
||||
void process_compile(TRAPS) {
|
||||
// methodHandle method;
|
||||
Method* method = parse_method(CHECK);
|
||||
if (had_error()) return;
|
||||
int entry_bci = parse_int("entry_bci");
|
||||
const char* comp_level_label = "comp_level";
|
||||
int comp_level = parse_int(comp_level_label);
|
||||
@ -440,6 +440,7 @@ class CompileReplay : public StackObj {
|
||||
//
|
||||
void process_ciMethod(TRAPS) {
|
||||
Method* method = parse_method(CHECK);
|
||||
if (had_error()) return;
|
||||
ciMethodRecord* rec = new_ciMethod(method);
|
||||
rec->invocation_counter = parse_int("invocation_counter");
|
||||
rec->backedge_counter = parse_int("backedge_counter");
|
||||
@ -451,6 +452,7 @@ class CompileReplay : public StackObj {
|
||||
// ciMethodData <klass> <name> <signature> <state> <current mileage> orig <length> # # ... data <length> # # ... oops <length>
|
||||
void process_ciMethodData(TRAPS) {
|
||||
Method* method = parse_method(CHECK);
|
||||
if (had_error()) return;
|
||||
/* jsut copied from Method, to build interpret data*/
|
||||
if (InstanceRefKlass::owns_pending_list_lock((JavaThread*)THREAD)) {
|
||||
return;
|
||||
|
||||
@ -122,6 +122,22 @@ class MarkRefsIntoClosure: public CMSOopsInGenClosure {
|
||||
}
|
||||
};
|
||||
|
||||
class Par_MarkRefsIntoClosure: public CMSOopsInGenClosure {
|
||||
private:
|
||||
const MemRegion _span;
|
||||
CMSBitMap* _bitMap;
|
||||
protected:
|
||||
DO_OOP_WORK_DEFN
|
||||
public:
|
||||
Par_MarkRefsIntoClosure(MemRegion span, CMSBitMap* bitMap);
|
||||
virtual void do_oop(oop* p);
|
||||
virtual void do_oop(narrowOop* p);
|
||||
|
||||
Prefetch::style prefetch_style() {
|
||||
return Prefetch::do_read;
|
||||
}
|
||||
};
|
||||
|
||||
// A variant of the above used in certain kinds of CMS
|
||||
// marking verification.
|
||||
class MarkRefsIntoVerifyClosure: public CMSOopsInGenClosure {
|
||||
|
||||
@ -569,6 +569,7 @@ CMSCollector::CMSCollector(ConcurrentMarkSweepGeneration* cmsGen,
|
||||
_restart_addr(NULL),
|
||||
_overflow_list(NULL),
|
||||
_stats(cmsGen),
|
||||
_eden_chunk_lock(new Mutex(Mutex::leaf + 1, "CMS_eden_chunk_lock", true)),
|
||||
_eden_chunk_array(NULL), // may be set in ctor body
|
||||
_eden_chunk_capacity(0), // -- ditto --
|
||||
_eden_chunk_index(0), // -- ditto --
|
||||
@ -732,7 +733,7 @@ CMSCollector::CMSCollector(ConcurrentMarkSweepGeneration* cmsGen,
|
||||
assert(_eden_chunk_array != NULL || _eden_chunk_capacity == 0, "Error");
|
||||
|
||||
// Support for parallelizing survivor space rescan
|
||||
if (CMSParallelRemarkEnabled && CMSParallelSurvivorRemarkEnabled) {
|
||||
if ((CMSParallelRemarkEnabled && CMSParallelSurvivorRemarkEnabled) || CMSParallelInitialMarkEnabled) {
|
||||
const size_t max_plab_samples =
|
||||
((DefNewGeneration*)_young_gen)->max_survivor_size()/MinTLABSize;
|
||||
|
||||
@ -2137,6 +2138,39 @@ void CMSCollector::do_mark_sweep_work(bool clear_all_soft_refs,
|
||||
}
|
||||
|
||||
|
||||
void CMSCollector::print_eden_and_survivor_chunk_arrays() {
|
||||
DefNewGeneration* dng = _young_gen->as_DefNewGeneration();
|
||||
EdenSpace* eden_space = dng->eden();
|
||||
ContiguousSpace* from_space = dng->from();
|
||||
ContiguousSpace* to_space = dng->to();
|
||||
// Eden
|
||||
if (_eden_chunk_array != NULL) {
|
||||
gclog_or_tty->print_cr("eden " PTR_FORMAT "-" PTR_FORMAT "-" PTR_FORMAT "(" SIZE_FORMAT ")",
|
||||
eden_space->bottom(), eden_space->top(),
|
||||
eden_space->end(), eden_space->capacity());
|
||||
gclog_or_tty->print_cr("_eden_chunk_index=" SIZE_FORMAT ", "
|
||||
"_eden_chunk_capacity=" SIZE_FORMAT,
|
||||
_eden_chunk_index, _eden_chunk_capacity);
|
||||
for (size_t i = 0; i < _eden_chunk_index; i++) {
|
||||
gclog_or_tty->print_cr("_eden_chunk_array[" SIZE_FORMAT "]=" PTR_FORMAT,
|
||||
i, _eden_chunk_array[i]);
|
||||
}
|
||||
}
|
||||
// Survivor
|
||||
if (_survivor_chunk_array != NULL) {
|
||||
gclog_or_tty->print_cr("survivor " PTR_FORMAT "-" PTR_FORMAT "-" PTR_FORMAT "(" SIZE_FORMAT ")",
|
||||
from_space->bottom(), from_space->top(),
|
||||
from_space->end(), from_space->capacity());
|
||||
gclog_or_tty->print_cr("_survivor_chunk_index=" SIZE_FORMAT ", "
|
||||
"_survivor_chunk_capacity=" SIZE_FORMAT,
|
||||
_survivor_chunk_index, _survivor_chunk_capacity);
|
||||
for (size_t i = 0; i < _survivor_chunk_index; i++) {
|
||||
gclog_or_tty->print_cr("_survivor_chunk_array[" SIZE_FORMAT "]=" PTR_FORMAT,
|
||||
i, _survivor_chunk_array[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CMSCollector::getFreelistLocks() const {
|
||||
// Get locks for all free lists in all generations that this
|
||||
// collector is responsible for
|
||||
@ -3549,6 +3583,31 @@ CMSPhaseAccounting::~CMSPhaseAccounting() {
|
||||
|
||||
// CMS work
|
||||
|
||||
// The common parts of CMSParInitialMarkTask and CMSParRemarkTask.
|
||||
class CMSParMarkTask : public AbstractGangTask {
|
||||
protected:
|
||||
CMSCollector* _collector;
|
||||
int _n_workers;
|
||||
CMSParMarkTask(const char* name, CMSCollector* collector, int n_workers) :
|
||||
AbstractGangTask(name),
|
||||
_collector(collector),
|
||||
_n_workers(n_workers) {}
|
||||
// Work method in support of parallel rescan ... of young gen spaces
|
||||
void do_young_space_rescan(uint worker_id, OopsInGenClosure* cl,
|
||||
ContiguousSpace* space,
|
||||
HeapWord** chunk_array, size_t chunk_top);
|
||||
void work_on_young_gen_roots(uint worker_id, OopsInGenClosure* cl);
|
||||
};
|
||||
|
||||
// Parallel initial mark task
|
||||
class CMSParInitialMarkTask: public CMSParMarkTask {
|
||||
public:
|
||||
CMSParInitialMarkTask(CMSCollector* collector, int n_workers) :
|
||||
CMSParMarkTask("Scan roots and young gen for initial mark in parallel",
|
||||
collector, n_workers) {}
|
||||
void work(uint worker_id);
|
||||
};
|
||||
|
||||
// Checkpoint the roots into this generation from outside
|
||||
// this generation. [Note this initial checkpoint need only
|
||||
// be approximate -- we'll do a catch up phase subsequently.]
|
||||
@ -3646,19 +3705,42 @@ void CMSCollector::checkpointRootsInitialWork(bool asynch) {
|
||||
// the klasses. The claimed marks need to be cleared before marking starts.
|
||||
ClassLoaderDataGraph::clear_claimed_marks();
|
||||
|
||||
CMKlassClosure klass_closure(¬Older);
|
||||
if (CMSPrintEdenSurvivorChunks) {
|
||||
print_eden_and_survivor_chunk_arrays();
|
||||
}
|
||||
|
||||
{
|
||||
COMPILER2_PRESENT(DerivedPointerTableDeactivate dpt_deact;)
|
||||
gch->rem_set()->prepare_for_younger_refs_iterate(false); // Not parallel.
|
||||
gch->gen_process_strong_roots(_cmsGen->level(),
|
||||
true, // younger gens are roots
|
||||
true, // activate StrongRootsScope
|
||||
false, // not scavenging
|
||||
SharedHeap::ScanningOption(roots_scanning_options()),
|
||||
¬Older,
|
||||
true, // walk all of code cache if (so & SO_CodeCache)
|
||||
NULL,
|
||||
&klass_closure);
|
||||
if (CMSParallelInitialMarkEnabled && CollectedHeap::use_parallel_gc_threads()) {
|
||||
// The parallel version.
|
||||
FlexibleWorkGang* workers = gch->workers();
|
||||
assert(workers != NULL, "Need parallel worker threads.");
|
||||
int n_workers = workers->active_workers();
|
||||
CMSParInitialMarkTask tsk(this, n_workers);
|
||||
gch->set_par_threads(n_workers);
|
||||
initialize_sequential_subtasks_for_young_gen_rescan(n_workers);
|
||||
if (n_workers > 1) {
|
||||
GenCollectedHeap::StrongRootsScope srs(gch);
|
||||
workers->run_task(&tsk);
|
||||
} else {
|
||||
GenCollectedHeap::StrongRootsScope srs(gch);
|
||||
tsk.work(0);
|
||||
}
|
||||
gch->set_par_threads(0);
|
||||
} else {
|
||||
// The serial version.
|
||||
CMKlassClosure klass_closure(¬Older);
|
||||
gch->rem_set()->prepare_for_younger_refs_iterate(false); // Not parallel.
|
||||
gch->gen_process_strong_roots(_cmsGen->level(),
|
||||
true, // younger gens are roots
|
||||
true, // activate StrongRootsScope
|
||||
false, // not scavenging
|
||||
SharedHeap::ScanningOption(roots_scanning_options()),
|
||||
¬Older,
|
||||
true, // walk all of code cache if (so & SO_CodeCache)
|
||||
NULL,
|
||||
&klass_closure);
|
||||
}
|
||||
}
|
||||
|
||||
// Clear mod-union table; it will be dirtied in the prologue of
|
||||
@ -4417,7 +4499,9 @@ void CMSCollector::preclean() {
|
||||
verify_overflow_empty();
|
||||
_abort_preclean = false;
|
||||
if (CMSPrecleaningEnabled) {
|
||||
_eden_chunk_index = 0;
|
||||
if (!CMSEdenChunksRecordAlways) {
|
||||
_eden_chunk_index = 0;
|
||||
}
|
||||
size_t used = get_eden_used();
|
||||
size_t capacity = get_eden_capacity();
|
||||
// Don't start sampling unless we will get sufficiently
|
||||
@ -4526,7 +4610,9 @@ void CMSCollector::sample_eden() {
|
||||
if (!_start_sampling) {
|
||||
return;
|
||||
}
|
||||
if (_eden_chunk_array) {
|
||||
// When CMSEdenChunksRecordAlways is true, the eden chunk array
|
||||
// is populated by the young generation.
|
||||
if (_eden_chunk_array != NULL && !CMSEdenChunksRecordAlways) {
|
||||
if (_eden_chunk_index < _eden_chunk_capacity) {
|
||||
_eden_chunk_array[_eden_chunk_index] = *_top_addr; // take sample
|
||||
assert(_eden_chunk_array[_eden_chunk_index] <= *_end_addr,
|
||||
@ -5010,6 +5096,10 @@ void CMSCollector::checkpointRootsFinalWork(bool asynch,
|
||||
// Update the saved marks which may affect the root scans.
|
||||
gch->save_marks();
|
||||
|
||||
if (CMSPrintEdenSurvivorChunks) {
|
||||
print_eden_and_survivor_chunk_arrays();
|
||||
}
|
||||
|
||||
{
|
||||
COMPILER2_PRESENT(DerivedPointerTableDeactivate dpt_deact;)
|
||||
|
||||
@ -5116,10 +5206,53 @@ void CMSCollector::checkpointRootsFinalWork(bool asynch,
|
||||
}
|
||||
}
|
||||
|
||||
void CMSParInitialMarkTask::work(uint worker_id) {
|
||||
elapsedTimer _timer;
|
||||
ResourceMark rm;
|
||||
HandleMark hm;
|
||||
|
||||
// ---------- scan from roots --------------
|
||||
_timer.start();
|
||||
GenCollectedHeap* gch = GenCollectedHeap::heap();
|
||||
Par_MarkRefsIntoClosure par_mri_cl(_collector->_span, &(_collector->_markBitMap));
|
||||
CMKlassClosure klass_closure(&par_mri_cl);
|
||||
|
||||
// ---------- young gen roots --------------
|
||||
{
|
||||
work_on_young_gen_roots(worker_id, &par_mri_cl);
|
||||
_timer.stop();
|
||||
if (PrintCMSStatistics != 0) {
|
||||
gclog_or_tty->print_cr(
|
||||
"Finished young gen initial mark scan work in %dth thread: %3.3f sec",
|
||||
worker_id, _timer.seconds());
|
||||
}
|
||||
}
|
||||
|
||||
// ---------- remaining roots --------------
|
||||
_timer.reset();
|
||||
_timer.start();
|
||||
gch->gen_process_strong_roots(_collector->_cmsGen->level(),
|
||||
false, // yg was scanned above
|
||||
false, // this is parallel code
|
||||
false, // not scavenging
|
||||
SharedHeap::ScanningOption(_collector->CMSCollector::roots_scanning_options()),
|
||||
&par_mri_cl,
|
||||
true, // walk all of code cache if (so & SO_CodeCache)
|
||||
NULL,
|
||||
&klass_closure);
|
||||
assert(_collector->should_unload_classes()
|
||||
|| (_collector->CMSCollector::roots_scanning_options() & SharedHeap::SO_CodeCache),
|
||||
"if we didn't scan the code cache, we have to be ready to drop nmethods with expired weak oops");
|
||||
_timer.stop();
|
||||
if (PrintCMSStatistics != 0) {
|
||||
gclog_or_tty->print_cr(
|
||||
"Finished remaining root initial mark scan work in %dth thread: %3.3f sec",
|
||||
worker_id, _timer.seconds());
|
||||
}
|
||||
}
|
||||
|
||||
// Parallel remark task
|
||||
class CMSParRemarkTask: public AbstractGangTask {
|
||||
CMSCollector* _collector;
|
||||
int _n_workers;
|
||||
class CMSParRemarkTask: public CMSParMarkTask {
|
||||
CompactibleFreeListSpace* _cms_space;
|
||||
|
||||
// The per-thread work queues, available here for stealing.
|
||||
@ -5133,10 +5266,9 @@ class CMSParRemarkTask: public AbstractGangTask {
|
||||
CompactibleFreeListSpace* cms_space,
|
||||
int n_workers, FlexibleWorkGang* workers,
|
||||
OopTaskQueueSet* task_queues):
|
||||
AbstractGangTask("Rescan roots and grey objects in parallel"),
|
||||
_collector(collector),
|
||||
CMSParMarkTask("Rescan roots and grey objects in parallel",
|
||||
collector, n_workers),
|
||||
_cms_space(cms_space),
|
||||
_n_workers(n_workers),
|
||||
_task_queues(task_queues),
|
||||
_term(n_workers, task_queues) { }
|
||||
|
||||
@ -5150,11 +5282,6 @@ class CMSParRemarkTask: public AbstractGangTask {
|
||||
void work(uint worker_id);
|
||||
|
||||
private:
|
||||
// Work method in support of parallel rescan ... of young gen spaces
|
||||
void do_young_space_rescan(int i, Par_MarkRefsIntoAndScanClosure* cl,
|
||||
ContiguousSpace* space,
|
||||
HeapWord** chunk_array, size_t chunk_top);
|
||||
|
||||
// ... of dirty cards in old space
|
||||
void do_dirty_card_rescan_tasks(CompactibleFreeListSpace* sp, int i,
|
||||
Par_MarkRefsIntoAndScanClosure* cl);
|
||||
@ -5186,6 +5313,25 @@ class RemarkKlassClosure : public KlassClosure {
|
||||
}
|
||||
};
|
||||
|
||||
void CMSParMarkTask::work_on_young_gen_roots(uint worker_id, OopsInGenClosure* cl) {
|
||||
DefNewGeneration* dng = _collector->_young_gen->as_DefNewGeneration();
|
||||
EdenSpace* eden_space = dng->eden();
|
||||
ContiguousSpace* from_space = dng->from();
|
||||
ContiguousSpace* to_space = dng->to();
|
||||
|
||||
HeapWord** eca = _collector->_eden_chunk_array;
|
||||
size_t ect = _collector->_eden_chunk_index;
|
||||
HeapWord** sca = _collector->_survivor_chunk_array;
|
||||
size_t sct = _collector->_survivor_chunk_index;
|
||||
|
||||
assert(ect <= _collector->_eden_chunk_capacity, "out of bounds");
|
||||
assert(sct <= _collector->_survivor_chunk_capacity, "out of bounds");
|
||||
|
||||
do_young_space_rescan(worker_id, cl, to_space, NULL, 0);
|
||||
do_young_space_rescan(worker_id, cl, from_space, sca, sct);
|
||||
do_young_space_rescan(worker_id, cl, eden_space, eca, ect);
|
||||
}
|
||||
|
||||
// work_queue(i) is passed to the closure
|
||||
// Par_MarkRefsIntoAndScanClosure. The "i" parameter
|
||||
// also is passed to do_dirty_card_rescan_tasks() and to
|
||||
@ -5210,23 +5356,7 @@ void CMSParRemarkTask::work(uint worker_id) {
|
||||
// work first.
|
||||
// ---------- young gen roots --------------
|
||||
{
|
||||
DefNewGeneration* dng = _collector->_young_gen->as_DefNewGeneration();
|
||||
EdenSpace* eden_space = dng->eden();
|
||||
ContiguousSpace* from_space = dng->from();
|
||||
ContiguousSpace* to_space = dng->to();
|
||||
|
||||
HeapWord** eca = _collector->_eden_chunk_array;
|
||||
size_t ect = _collector->_eden_chunk_index;
|
||||
HeapWord** sca = _collector->_survivor_chunk_array;
|
||||
size_t sct = _collector->_survivor_chunk_index;
|
||||
|
||||
assert(ect <= _collector->_eden_chunk_capacity, "out of bounds");
|
||||
assert(sct <= _collector->_survivor_chunk_capacity, "out of bounds");
|
||||
|
||||
do_young_space_rescan(worker_id, &par_mrias_cl, to_space, NULL, 0);
|
||||
do_young_space_rescan(worker_id, &par_mrias_cl, from_space, sca, sct);
|
||||
do_young_space_rescan(worker_id, &par_mrias_cl, eden_space, eca, ect);
|
||||
|
||||
work_on_young_gen_roots(worker_id, &par_mrias_cl);
|
||||
_timer.stop();
|
||||
if (PrintCMSStatistics != 0) {
|
||||
gclog_or_tty->print_cr(
|
||||
@ -5334,8 +5464,8 @@ void CMSParRemarkTask::work(uint worker_id) {
|
||||
|
||||
// Note that parameter "i" is not used.
|
||||
void
|
||||
CMSParRemarkTask::do_young_space_rescan(int i,
|
||||
Par_MarkRefsIntoAndScanClosure* cl, ContiguousSpace* space,
|
||||
CMSParMarkTask::do_young_space_rescan(uint worker_id,
|
||||
OopsInGenClosure* cl, ContiguousSpace* space,
|
||||
HeapWord** chunk_array, size_t chunk_top) {
|
||||
// Until all tasks completed:
|
||||
// . claim an unclaimed task
|
||||
@ -5530,6 +5660,32 @@ CMSParRemarkTask::do_work_steal(int i, Par_MarkRefsIntoAndScanClosure* cl,
|
||||
"Else our work is not yet done");
|
||||
}
|
||||
|
||||
// Record object boundaries in _eden_chunk_array by sampling the eden
|
||||
// top in the slow-path eden object allocation code path and record
|
||||
// the boundaries, if CMSEdenChunksRecordAlways is true. If
|
||||
// CMSEdenChunksRecordAlways is false, we use the other asynchronous
|
||||
// sampling in sample_eden() that activates during the part of the
|
||||
// preclean phase.
|
||||
void CMSCollector::sample_eden_chunk() {
|
||||
if (CMSEdenChunksRecordAlways && _eden_chunk_array != NULL) {
|
||||
if (_eden_chunk_lock->try_lock()) {
|
||||
// Record a sample. This is the critical section. The contents
|
||||
// of the _eden_chunk_array have to be non-decreasing in the
|
||||
// address order.
|
||||
_eden_chunk_array[_eden_chunk_index] = *_top_addr;
|
||||
assert(_eden_chunk_array[_eden_chunk_index] <= *_end_addr,
|
||||
"Unexpected state of Eden");
|
||||
if (_eden_chunk_index == 0 ||
|
||||
((_eden_chunk_array[_eden_chunk_index] > _eden_chunk_array[_eden_chunk_index-1]) &&
|
||||
(pointer_delta(_eden_chunk_array[_eden_chunk_index],
|
||||
_eden_chunk_array[_eden_chunk_index-1]) >= CMSSamplingGrain))) {
|
||||
_eden_chunk_index++; // commit sample
|
||||
}
|
||||
_eden_chunk_lock->unlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Return a thread-local PLAB recording array, as appropriate.
|
||||
void* CMSCollector::get_data_recorder(int thr_num) {
|
||||
if (_survivor_plab_array != NULL &&
|
||||
@ -5553,12 +5709,13 @@ void CMSCollector::reset_survivor_plab_arrays() {
|
||||
|
||||
// Merge the per-thread plab arrays into the global survivor chunk
|
||||
// array which will provide the partitioning of the survivor space
|
||||
// for CMS rescan.
|
||||
// for CMS initial scan and rescan.
|
||||
void CMSCollector::merge_survivor_plab_arrays(ContiguousSpace* surv,
|
||||
int no_of_gc_threads) {
|
||||
assert(_survivor_plab_array != NULL, "Error");
|
||||
assert(_survivor_chunk_array != NULL, "Error");
|
||||
assert(_collectorState == FinalMarking, "Error");
|
||||
assert(_collectorState == FinalMarking ||
|
||||
(CMSParallelInitialMarkEnabled && _collectorState == InitialMarking), "Error");
|
||||
for (int j = 0; j < no_of_gc_threads; j++) {
|
||||
_cursor[j] = 0;
|
||||
}
|
||||
@ -5621,7 +5778,7 @@ void CMSCollector::merge_survivor_plab_arrays(ContiguousSpace* surv,
|
||||
}
|
||||
|
||||
// Set up the space's par_seq_tasks structure for work claiming
|
||||
// for parallel rescan of young gen.
|
||||
// for parallel initial scan and rescan of young gen.
|
||||
// See ParRescanTask where this is currently used.
|
||||
void
|
||||
CMSCollector::
|
||||
@ -6748,6 +6905,28 @@ void MarkRefsIntoClosure::do_oop(oop obj) {
|
||||
void MarkRefsIntoClosure::do_oop(oop* p) { MarkRefsIntoClosure::do_oop_work(p); }
|
||||
void MarkRefsIntoClosure::do_oop(narrowOop* p) { MarkRefsIntoClosure::do_oop_work(p); }
|
||||
|
||||
Par_MarkRefsIntoClosure::Par_MarkRefsIntoClosure(
|
||||
MemRegion span, CMSBitMap* bitMap):
|
||||
_span(span),
|
||||
_bitMap(bitMap)
|
||||
{
|
||||
assert(_ref_processor == NULL, "deliberately left NULL");
|
||||
assert(_bitMap->covers(_span), "_bitMap/_span mismatch");
|
||||
}
|
||||
|
||||
void Par_MarkRefsIntoClosure::do_oop(oop obj) {
|
||||
// if p points into _span, then mark corresponding bit in _markBitMap
|
||||
assert(obj->is_oop(), "expected an oop");
|
||||
HeapWord* addr = (HeapWord*)obj;
|
||||
if (_span.contains(addr)) {
|
||||
// this should be made more efficient
|
||||
_bitMap->par_mark(addr);
|
||||
}
|
||||
}
|
||||
|
||||
void Par_MarkRefsIntoClosure::do_oop(oop* p) { Par_MarkRefsIntoClosure::do_oop_work(p); }
|
||||
void Par_MarkRefsIntoClosure::do_oop(narrowOop* p) { Par_MarkRefsIntoClosure::do_oop_work(p); }
|
||||
|
||||
// A variant of the above, used for CMS marking verification.
|
||||
MarkRefsIntoVerifyClosure::MarkRefsIntoVerifyClosure(
|
||||
MemRegion span, CMSBitMap* verification_bm, CMSBitMap* cms_bm):
|
||||
@ -9305,7 +9484,6 @@ void ASConcurrentMarkSweepGeneration::shrink_by(size_t desired_bytes) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Transfer some number of overflown objects to usual marking
|
||||
// stack. Return true if some objects were transferred.
|
||||
bool MarkRefsIntoAndScanClosure::take_from_overflow_list() {
|
||||
@ -9377,4 +9555,3 @@ TraceCMSMemoryManagerStats::TraceCMSMemoryManagerStats(CMSCollector::CollectorSt
|
||||
ShouldNotReachHere();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -515,6 +515,8 @@ class CMSCollector: public CHeapObj<mtGC> {
|
||||
friend class ConcurrentMarkSweepThread;
|
||||
friend class ConcurrentMarkSweepGeneration;
|
||||
friend class CompactibleFreeListSpace;
|
||||
friend class CMSParMarkTask;
|
||||
friend class CMSParInitialMarkTask;
|
||||
friend class CMSParRemarkTask;
|
||||
friend class CMSConcMarkingTask;
|
||||
friend class CMSRefProcTaskProxy;
|
||||
@ -749,6 +751,7 @@ class CMSCollector: public CHeapObj<mtGC> {
|
||||
Generation* _young_gen; // the younger gen
|
||||
HeapWord** _top_addr; // ... Top of Eden
|
||||
HeapWord** _end_addr; // ... End of Eden
|
||||
Mutex* _eden_chunk_lock;
|
||||
HeapWord** _eden_chunk_array; // ... Eden partitioning array
|
||||
size_t _eden_chunk_index; // ... top (exclusive) of array
|
||||
size_t _eden_chunk_capacity; // ... max entries in array
|
||||
@ -950,6 +953,7 @@ class CMSCollector: public CHeapObj<mtGC> {
|
||||
|
||||
// Support for parallel remark of survivor space
|
||||
void* get_data_recorder(int thr_num);
|
||||
void sample_eden_chunk();
|
||||
|
||||
CMSBitMap* markBitMap() { return &_markBitMap; }
|
||||
void directAllocated(HeapWord* start, size_t size);
|
||||
@ -1027,6 +1031,8 @@ class CMSCollector: public CHeapObj<mtGC> {
|
||||
|
||||
// Initialization errors
|
||||
bool completed_initialization() { return _completed_initialization; }
|
||||
|
||||
void print_eden_and_survivor_chunk_arrays();
|
||||
};
|
||||
|
||||
class CMSExpansionCause : public AllStatic {
|
||||
@ -1317,6 +1323,10 @@ class ConcurrentMarkSweepGeneration: public CardGeneration {
|
||||
//Delegate to collector
|
||||
return collector()->get_data_recorder(thr_num);
|
||||
}
|
||||
void sample_eden_chunk() {
|
||||
//Delegate to collector
|
||||
return collector()->sample_eden_chunk();
|
||||
}
|
||||
|
||||
// Printing
|
||||
const char* name() const;
|
||||
|
||||
@ -96,11 +96,6 @@
|
||||
"the buffer will be enqueued for processing. A value of 0 " \
|
||||
"specifies that mutator threads should not do such filtering.") \
|
||||
\
|
||||
develop(intx, G1ExtraRegionSurvRate, 33, \
|
||||
"If the young survival rate is S, and there's room left in " \
|
||||
"to-space, we will allow regions whose survival rate is up to " \
|
||||
"S + (1 - S)*X, where X is this parameter (as a fraction.)") \
|
||||
\
|
||||
develop(bool, G1SATBPrintStubs, false, \
|
||||
"If true, print generated stubs for the SATB barrier") \
|
||||
\
|
||||
@ -110,9 +105,6 @@
|
||||
develop(bool, G1RSBarrierRegionFilter, true, \
|
||||
"If true, generate region filtering code in RS barrier") \
|
||||
\
|
||||
develop(bool, G1RSBarrierNullFilter, true, \
|
||||
"If true, generate null-pointer filtering code in RS barrier") \
|
||||
\
|
||||
develop(bool, G1DeferredRSUpdate, true, \
|
||||
"If true, use deferred RS updates") \
|
||||
\
|
||||
@ -120,9 +112,6 @@
|
||||
"If true, verify that no dirty cards remain after RS log " \
|
||||
"processing.") \
|
||||
\
|
||||
develop(bool, G1RSCountHisto, false, \
|
||||
"If true, print a histogram of RS occupancies after each pause") \
|
||||
\
|
||||
diagnostic(bool, G1PrintRegionLivenessInfo, false, \
|
||||
"Prints the liveness information for all regions in the heap " \
|
||||
"at the end of a marking cycle.") \
|
||||
@ -169,9 +158,6 @@
|
||||
product(uintx, G1ConcRSHotCardLimit, 4, \
|
||||
"The threshold that defines (>=) a hot card.") \
|
||||
\
|
||||
develop(bool, G1PrintOopAppls, false, \
|
||||
"When true, print applications of closures to external locs.") \
|
||||
\
|
||||
develop(intx, G1RSetRegionEntriesBase, 256, \
|
||||
"Max number of regions in a fine-grain table per MB.") \
|
||||
\
|
||||
|
||||
@ -314,6 +314,11 @@ void HeapRegion::setup_heap_region_size(uintx min_heap_size) {
|
||||
region_size = MAX_REGION_SIZE;
|
||||
}
|
||||
|
||||
if (region_size != G1HeapRegionSize) {
|
||||
// Update the flag to make sure that PrintFlagsFinal logs the correct value
|
||||
FLAG_SET_ERGO(uintx, G1HeapRegionSize, region_size);
|
||||
}
|
||||
|
||||
// And recalculate the log.
|
||||
region_size_log = log2_long((jlong) region_size);
|
||||
|
||||
|
||||
@ -1033,6 +1033,9 @@ HeapWord* DefNewGeneration::allocate(size_t word_size,
|
||||
// have to use it here, as well.
|
||||
HeapWord* result = eden()->par_allocate(word_size);
|
||||
if (result != NULL) {
|
||||
if (CMSEdenChunksRecordAlways && _next_gen != NULL) {
|
||||
_next_gen->sample_eden_chunk();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
do {
|
||||
@ -1063,13 +1066,19 @@ HeapWord* DefNewGeneration::allocate(size_t word_size,
|
||||
// circular dependency at compile time.
|
||||
if (result == NULL) {
|
||||
result = allocate_from_space(word_size);
|
||||
} else if (CMSEdenChunksRecordAlways && _next_gen != NULL) {
|
||||
_next_gen->sample_eden_chunk();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
HeapWord* DefNewGeneration::par_allocate(size_t word_size,
|
||||
bool is_tlab) {
|
||||
return eden()->par_allocate(word_size);
|
||||
HeapWord* res = eden()->par_allocate(word_size);
|
||||
if (CMSEdenChunksRecordAlways && _next_gen != NULL) {
|
||||
_next_gen->sample_eden_chunk();
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
void DefNewGeneration::gc_prologue(bool full) {
|
||||
|
||||
@ -455,6 +455,7 @@ class Generation: public CHeapObj<mtGC> {
|
||||
// expected to be GC worker thread-local, with the worker index
|
||||
// indicated by "thr_num".
|
||||
virtual void* get_data_recorder(int thr_num) { return NULL; }
|
||||
virtual void sample_eden_chunk() {}
|
||||
|
||||
// Some generations may require some cleanup actions before allowing
|
||||
// a verification.
|
||||
|
||||
@ -2254,10 +2254,11 @@ ChunkIndex ChunkManager::list_index(size_t size) {
|
||||
|
||||
void SpaceManager::deallocate(MetaWord* p, size_t word_size) {
|
||||
assert_lock_strong(_lock);
|
||||
size_t raw_word_size = get_raw_word_size(word_size);
|
||||
size_t min_size = TreeChunk<Metablock, FreeList>::min_size();
|
||||
assert(word_size >= min_size,
|
||||
assert(raw_word_size >= min_size,
|
||||
err_msg("Should not deallocate dark matter " SIZE_FORMAT, word_size));
|
||||
block_freelists()->return_block(p, word_size);
|
||||
block_freelists()->return_block(p, raw_word_size);
|
||||
}
|
||||
|
||||
// Adds a chunk to the list of chunks in use.
|
||||
|
||||
@ -65,7 +65,8 @@ SharedHeap::SharedHeap(CollectorPolicy* policy_) :
|
||||
}
|
||||
_sh = this; // ch is static, should be set only once.
|
||||
if ((UseParNewGC ||
|
||||
(UseConcMarkSweepGC && CMSParallelRemarkEnabled) ||
|
||||
(UseConcMarkSweepGC && (CMSParallelInitialMarkEnabled ||
|
||||
CMSParallelRemarkEnabled)) ||
|
||||
UseG1GC) &&
|
||||
ParallelGCThreads > 0) {
|
||||
_workers = new FlexibleWorkGang("Parallel GC Threads", ParallelGCThreads,
|
||||
|
||||
@ -1891,6 +1891,10 @@ void Arguments::check_deprecated_gc_flags() {
|
||||
warning("Using MaxGCMinorPauseMillis as minor pause goal is deprecated"
|
||||
"and will likely be removed in future release");
|
||||
}
|
||||
if (FLAG_IS_CMDLINE(DefaultMaxRAMFraction)) {
|
||||
warning("DefaultMaxRAMFraction is deprecated and will likely be removed in a future release. "
|
||||
"Use MaxRAMFraction instead.");
|
||||
}
|
||||
}
|
||||
|
||||
// Check stack pages settings
|
||||
|
||||
@ -1689,6 +1689,9 @@ class CommandLineFlags {
|
||||
product(bool, CMSAbortSemantics, false, \
|
||||
"Whether abort-on-overflow semantics is implemented") \
|
||||
\
|
||||
product(bool, CMSParallelInitialMarkEnabled, true, \
|
||||
"Use the parallel initial mark.") \
|
||||
\
|
||||
product(bool, CMSParallelRemarkEnabled, true, \
|
||||
"Whether parallel remark enabled (only if ParNewGC)") \
|
||||
\
|
||||
@ -1700,6 +1703,14 @@ class CommandLineFlags {
|
||||
"Whether to always record survivor space PLAB bdries" \
|
||||
" (effective only if CMSParallelSurvivorRemarkEnabled)") \
|
||||
\
|
||||
product(bool, CMSEdenChunksRecordAlways, true, \
|
||||
"Whether to always record eden chunks used for " \
|
||||
"the parallel initial mark or remark of eden" ) \
|
||||
\
|
||||
product(bool, CMSPrintEdenSurvivorChunks, false, \
|
||||
"Print the eden and the survivor chunks used for the parallel " \
|
||||
"initial mark or remark of the eden/survivor spaces") \
|
||||
\
|
||||
product(bool, CMSConcurrentMTEnabled, true, \
|
||||
"Whether multi-threaded concurrent work enabled (if ParNewGC)") \
|
||||
\
|
||||
|
||||
64
hotspot/test/gc/arguments/TestG1HeapRegionSize.java
Normal file
64
hotspot/test/gc/arguments/TestG1HeapRegionSize.java
Normal file
@ -0,0 +1,64 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test TestG1HeapRegionSize
|
||||
* @key gc
|
||||
* @bug 8021879
|
||||
* @summary Verify that the flag G1HeapRegionSize is updated properly
|
||||
* @run main/othervm -Xmx64m TestG1HeapRegionSize 1048576
|
||||
* @run main/othervm -XX:G1HeapRegionSize=2m -Xmx64m TestG1HeapRegionSize 2097152
|
||||
* @run main/othervm -XX:G1HeapRegionSize=3m -Xmx64m TestG1HeapRegionSize 2097152
|
||||
* @run main/othervm -XX:G1HeapRegionSize=64m -Xmx256m TestG1HeapRegionSize 33554432
|
||||
*/
|
||||
|
||||
import sun.management.ManagementFactoryHelper;
|
||||
import com.sun.management.HotSpotDiagnosticMXBean;
|
||||
import com.sun.management.VMOption;
|
||||
|
||||
public class TestG1HeapRegionSize {
|
||||
|
||||
public static void main(String[] args) {
|
||||
HotSpotDiagnosticMXBean diagnostic = ManagementFactoryHelper.getDiagnosticMXBean();
|
||||
|
||||
VMOption option = diagnostic.getVMOption("UseG1GC");
|
||||
if (option.getValue().equals("false")) {
|
||||
System.out.println("Skipping this test. It is only a G1 test.");
|
||||
return;
|
||||
}
|
||||
|
||||
String expectedValue = getExpectedValue(args);
|
||||
option = diagnostic.getVMOption("G1HeapRegionSize");
|
||||
if (!expectedValue.equals(option.getValue())) {
|
||||
throw new RuntimeException("Wrong value for G1HeapRegionSize. Expected " + expectedValue + " but got " + option.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
private static String getExpectedValue(String[] args) {
|
||||
if (args.length != 1) {
|
||||
throw new RuntimeException("Wrong number of arguments. Expected 1 but got " + args.length);
|
||||
}
|
||||
return args[0];
|
||||
}
|
||||
|
||||
}
|
||||
@ -27,7 +27,7 @@
|
||||
* @bug 8014240
|
||||
* @summary Test output of G1PrintRegionRememberedSetInfo
|
||||
* @library /testlibrary
|
||||
* @build TestPrintRegionRememberedSetInfo
|
||||
* @run main TestPrintRegionRememberedSetInfo
|
||||
* @author thomas.schatzl@oracle.com
|
||||
*/
|
||||
|
||||
|
||||
@ -0,0 +1,44 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test TestDefaultMaxRAMFraction
|
||||
* @key gc
|
||||
* @bug 8021967
|
||||
* @summary Test that the deprecated TestDefaultMaxRAMFraction flag print a warning message
|
||||
* @library /testlibrary
|
||||
*/
|
||||
|
||||
import com.oracle.java.testlibrary.OutputAnalyzer;
|
||||
import com.oracle.java.testlibrary.ProcessTools;
|
||||
|
||||
public class TestDefaultMaxRAMFraction {
|
||||
public static void main(String[] args) throws Exception {
|
||||
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder("-XX:DefaultMaxRAMFraction=4", "-version");
|
||||
OutputAnalyzer output = new OutputAnalyzer(pb.start());
|
||||
output.shouldContain("warning: DefaultMaxRAMFraction is deprecated and will likely be removed in a future release. Use MaxRAMFraction instead.");
|
||||
output.shouldNotContain("error");
|
||||
output.shouldHaveExitValue(0);
|
||||
}
|
||||
|
||||
}
|
||||
@ -3,6 +3,7 @@
|
||||
##
|
||||
## @test Test6929067.sh
|
||||
## @bug 6929067
|
||||
## @bug 8021296
|
||||
## @summary Stack guard pages should be removed when thread is detached
|
||||
## @compile T.java
|
||||
## @run shell Test6929067.sh
|
||||
@ -21,6 +22,11 @@ echo "TESTSRC=${TESTSRC}"
|
||||
OS=`uname -s`
|
||||
case "$OS" in
|
||||
Linux)
|
||||
gcc_cmd=`which gcc`
|
||||
if [ "x$gcc_cmd" == "x" ]; then
|
||||
echo "WARNING: gcc not found. Cannot execute test." 2>&1
|
||||
exit 0;
|
||||
fi
|
||||
NULL=/dev/null
|
||||
PS=":"
|
||||
FS="/"
|
||||
@ -119,10 +125,10 @@ echo "VM type: ${VMTYPE}"
|
||||
# Check to ensure you have a /usr/lib/libpthread.so if you don't please look
|
||||
# for /usr/lib/`uname -m`-linux-gnu version ensure to add that path to below compilation.
|
||||
|
||||
gcc -DLINUX ${COMP_FLAG} -o invoke \
|
||||
-I${COMPILEJAVA}/include -I${COMPILEJAVA}/include/linux \
|
||||
-L${COMPILEJAVA}/jre/lib/${ARCH}/${VMTYPE} \
|
||||
-ljvm -lpthread invoke.c
|
||||
$gcc_cmd -DLINUX ${COMP_FLAG} -o invoke \
|
||||
-I${COMPILEJAVA}/include -I${COMPILEJAVA}/include/linux \
|
||||
-L${COMPILEJAVA}/jre/lib/${ARCH}/${VMTYPE} \
|
||||
-ljvm -lpthread invoke.c
|
||||
|
||||
./invoke
|
||||
exit $?
|
||||
|
||||
@ -27,6 +27,7 @@
|
||||
##
|
||||
## @test Test7107135.sh
|
||||
## @bug 7107135
|
||||
## @bug 8021296
|
||||
## @summary Stack guard pages lost after loading library with executable stack.
|
||||
## @run shell Test7107135.sh
|
||||
##
|
||||
@ -45,6 +46,11 @@ OS=`uname -s`
|
||||
case "$OS" in
|
||||
Linux)
|
||||
echo "Testing on Linux"
|
||||
gcc_cmd=`which gcc`
|
||||
if [ "x$gcc_cmd" == "x" ]; then
|
||||
echo "WARNING: gcc not found. Cannot execute test." 2>&1
|
||||
exit 0;
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
NULL=NUL
|
||||
@ -62,7 +68,10 @@ THIS_DIR=.
|
||||
cp ${TESTSRC}${FS}*.java ${THIS_DIR}
|
||||
${TESTJAVA}${FS}bin${FS}javac *.java
|
||||
|
||||
gcc -fPIC -shared -c -o test.o -I${TESTJAVA}${FS}include -I${TESTJAVA}${FS}include${FS}linux ${TESTSRC}${FS}test.c
|
||||
$gcc_cmd -fPIC -shared -c -o test.o \
|
||||
-I${TESTJAVA}${FS}include -I${TESTJAVA}${FS}include${FS}linux \
|
||||
${TESTSRC}${FS}test.c
|
||||
|
||||
ld -shared -z execstack -o libtest-rwx.so test.o
|
||||
ld -shared -z noexecstack -o libtest-rw.so test.o
|
||||
|
||||
|
||||
@ -27,6 +27,7 @@
|
||||
## @test Test8017498.sh
|
||||
## @bug 8017498
|
||||
## @bug 8020791
|
||||
## @bug 8021296
|
||||
## @summary sigaction(sig) results in process hang/timed-out if sig is much greater than SIGRTMAX
|
||||
## @run shell/timeout=30 Test8017498.sh
|
||||
##
|
||||
@ -45,6 +46,11 @@ OS=`uname -s`
|
||||
case "$OS" in
|
||||
Linux)
|
||||
echo "Testing on Linux"
|
||||
gcc_cmd=`which gcc`
|
||||
if [ "x$gcc_cmd" == "x" ]; then
|
||||
echo "WARNING: gcc not found. Cannot execute test." 2>&1
|
||||
exit 0;
|
||||
fi
|
||||
if [ "$VM_BITS" = "64" ]
|
||||
then
|
||||
MY_LD_PRELOAD=${TESTJAVA}${FS}jre${FS}lib${FS}amd64${FS}libjsig.so
|
||||
@ -64,15 +70,11 @@ THIS_DIR=.
|
||||
cp ${TESTSRC}${FS}*.java ${THIS_DIR}
|
||||
${TESTJAVA}${FS}bin${FS}javac *.java
|
||||
|
||||
gcc -DLINUX -fPIC -shared \
|
||||
$gcc_cmd -DLINUX -fPIC -shared \
|
||||
-o ${TESTSRC}${FS}libTestJNI.so \
|
||||
-I${TESTJAVA}${FS}include \
|
||||
-I${TESTJAVA}${FS}include${FS}linux \
|
||||
${TESTSRC}${FS}TestJNI.c
|
||||
if [ $? != 0 ]
|
||||
then
|
||||
echo "WARNING: the gcc command failed." 2>&1
|
||||
fi
|
||||
|
||||
# run the java test in the background
|
||||
cmd="LD_PRELOAD=$MY_LD_PRELOAD \
|
||||
|
||||
@ -21,7 +21,6 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
#define _GNU_SOURCE // for the definition of REG_RIP in ucontext.h
|
||||
#include <stdio.h>
|
||||
#include <jni.h>
|
||||
#include <signal.h>
|
||||
@ -32,11 +31,8 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
void sig_handler(int sig, siginfo_t *info, ucontext_t *context) {
|
||||
int thrNum;
|
||||
|
||||
printf( " HANDLER (1) " );
|
||||
// Move forward RIP to skip failing instruction
|
||||
context->uc_mcontext.gregs[REG_RIP] += 6;
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_TestJNI_doSomething(JNIEnv *env, jclass klass, jint val) {
|
||||
|
||||
@ -222,3 +222,4 @@ b8c5f4b6f0fffb44618fc609a584953c4ed67c0b jdk8-b95
|
||||
15e5bb51bc0cd89304dc2f7f29b4c8002e632353 jdk8-b98
|
||||
adf49c3ef83c160d53ece623049b2cdccaf78fc7 jdk8-b99
|
||||
5d1974c1d7b9a86431bc253dc5a6a52d4586622e jdk8-b100
|
||||
0a7432f898e579ea35e8c51e3edab37f949168e4 jdk8-b101
|
||||
|
||||
@ -112,7 +112,7 @@ public class SAXParserImpl extends javax.xml.parsers.SAXParser
|
||||
/** Initial EntityResolver */
|
||||
private final EntityResolver fInitEntityResolver;
|
||||
|
||||
private XMLSecurityPropertyManager fSecurityPropertyMgr;
|
||||
private final XMLSecurityPropertyManager fSecurityPropertyMgr;
|
||||
|
||||
/**
|
||||
* Create a SAX parser with the associated features
|
||||
@ -130,8 +130,10 @@ public class SAXParserImpl extends javax.xml.parsers.SAXParser
|
||||
SAXParserImpl(SAXParserFactoryImpl spf, Hashtable features, boolean secureProcessing)
|
||||
throws SAXException
|
||||
{
|
||||
fSecurityPropertyMgr = new XMLSecurityPropertyManager();
|
||||
|
||||
// Instantiate a SAXParser directly and not through SAX so that we use the right ClassLoader
|
||||
xmlReader = new JAXPSAXParser(this);
|
||||
xmlReader = new JAXPSAXParser(this, fSecurityPropertyMgr);
|
||||
|
||||
// JAXP "namespaceAware" == SAX Namespaces feature
|
||||
// Note: there is a compatibility problem here with default values:
|
||||
@ -150,7 +152,6 @@ public class SAXParserImpl extends javax.xml.parsers.SAXParser
|
||||
xmlReader.setFeature0(XINCLUDE_FEATURE, true);
|
||||
}
|
||||
|
||||
fSecurityPropertyMgr = new XMLSecurityPropertyManager();
|
||||
xmlReader.setProperty0(XML_SECURITY_PROPERTY_MANAGER, fSecurityPropertyMgr);
|
||||
|
||||
// If the secure processing feature is on set a security manager.
|
||||
@ -397,14 +398,30 @@ public class SAXParserImpl extends javax.xml.parsers.SAXParser
|
||||
private final HashMap fInitFeatures = new HashMap();
|
||||
private final HashMap fInitProperties = new HashMap();
|
||||
private final SAXParserImpl fSAXParser;
|
||||
private XMLSecurityPropertyManager fSecurityPropertyMgr;
|
||||
|
||||
|
||||
public JAXPSAXParser() {
|
||||
this(null);
|
||||
this(null, null);
|
||||
}
|
||||
|
||||
JAXPSAXParser(SAXParserImpl saxParser) {
|
||||
JAXPSAXParser(SAXParserImpl saxParser, XMLSecurityPropertyManager spm) {
|
||||
super();
|
||||
fSAXParser = saxParser;
|
||||
fSecurityPropertyMgr = spm;
|
||||
|
||||
/**
|
||||
* This class may be used directly. So initialize the security manager if
|
||||
* it is null.
|
||||
*/
|
||||
if (fSecurityPropertyMgr == null) {
|
||||
fSecurityPropertyMgr = new XMLSecurityPropertyManager();
|
||||
try {
|
||||
super.setProperty(XML_SECURITY_PROPERTY_MANAGER, fSecurityPropertyMgr);
|
||||
} catch (Exception ex) {
|
||||
//shall not happen
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -542,9 +559,9 @@ public class SAXParserImpl extends javax.xml.parsers.SAXParser
|
||||
setSchemaValidatorProperty(name, value);
|
||||
}
|
||||
/** Check to see if the property is managed by the property manager **/
|
||||
int index = fSAXParser.fSecurityPropertyMgr.getIndex(name);
|
||||
int index = (fSecurityPropertyMgr != null) ? fSecurityPropertyMgr.getIndex(name) : -1;
|
||||
if (index > -1) {
|
||||
fSAXParser.fSecurityPropertyMgr.setValue(index,
|
||||
fSecurityPropertyMgr.setValue(index,
|
||||
XMLSecurityPropertyManager.State.APIPROPERTY, (String)value);
|
||||
} else {
|
||||
if (!fInitProperties.containsKey(name)) {
|
||||
@ -564,9 +581,9 @@ public class SAXParserImpl extends javax.xml.parsers.SAXParser
|
||||
// JAXP 1.2 support
|
||||
return fSAXParser.schemaLanguage;
|
||||
}
|
||||
int index = fSAXParser.fSecurityPropertyMgr.getIndex(name);
|
||||
int index = (fSecurityPropertyMgr != null) ? fSecurityPropertyMgr.getIndex(name) : -1;
|
||||
if (index > -1) {
|
||||
return fSAXParser.fSecurityPropertyMgr.getValueByIndex(index);
|
||||
return fSecurityPropertyMgr.getValueByIndex(index);
|
||||
}
|
||||
|
||||
return super.getProperty(name);
|
||||
|
||||
@ -222,3 +222,4 @@ dcde7f049111353ad23175f54985a4f6bfea720c jdk8-b97
|
||||
b1fb4612a2caea52b5661b87509e560fa044b194 jdk8-b98
|
||||
8ef83d4b23c933935e28f59b282cea920b1b1f5f jdk8-b99
|
||||
4fd722afae5c02f00bbd44c3a34425ee474afb1c jdk8-b100
|
||||
60b623a361642a0f5aef5f06dad9e5f279b9d9a9 jdk8-b101
|
||||
|
||||
@ -222,3 +222,4 @@ a2a2a91075ad85becbe10a39d7fd04ef9bea8df5 jdk8-b92
|
||||
c4908732fef5235f1b98cafe0ce507771ef7892c jdk8-b98
|
||||
6a099a36589bd933957272ba63e5263bede29971 jdk8-b99
|
||||
5be9c5bfcfe9b2a40412b4fb364377d49de014eb jdk8-b100
|
||||
6901612328239fbd471d20823113c1cf3fdaebee jdk8-b101
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2011, 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
|
||||
@ -31,7 +31,7 @@ import java.util.*;
|
||||
|
||||
import sun.awt.SunHints;
|
||||
|
||||
public class CStrike extends FontStrike {
|
||||
public final class CStrike extends FontStrike {
|
||||
|
||||
// Creates the native strike
|
||||
private static native long createNativeStrikePtr(long nativeFontPtr,
|
||||
@ -68,10 +68,10 @@ public class CStrike extends FontStrike {
|
||||
Rectangle2D.Float result,
|
||||
double x, double y);
|
||||
|
||||
private CFont nativeFont;
|
||||
private final CFont nativeFont;
|
||||
private AffineTransform invDevTx;
|
||||
private GlyphInfoCache glyphInfoCache;
|
||||
private GlyphAdvanceCache glyphAdvanceCache;
|
||||
private final GlyphInfoCache glyphInfoCache;
|
||||
private final GlyphAdvanceCache glyphAdvanceCache;
|
||||
private long nativeStrikePtr;
|
||||
|
||||
CStrike(final CFont font, final FontStrikeDesc inDesc) {
|
||||
@ -84,11 +84,11 @@ public class CStrike extends FontStrike {
|
||||
// Normally the device transform should be the identity transform
|
||||
// for screen operations. The device transform only becomes
|
||||
// interesting when we are outputting between different dpi surfaces,
|
||||
// like when we are printing to postscript.
|
||||
// like when we are printing to postscript or use retina.
|
||||
if (inDesc.devTx != null && !inDesc.devTx.isIdentity()) {
|
||||
try {
|
||||
invDevTx = inDesc.devTx.createInverse();
|
||||
} catch (NoninvertibleTransformException e) {
|
||||
} catch (NoninvertibleTransformException ignored) {
|
||||
// ignored, since device transforms should not be that
|
||||
// complicated, and if they are - there is nothing we can do,
|
||||
// so we won't worry about it.
|
||||
@ -134,15 +134,13 @@ public class CStrike extends FontStrike {
|
||||
nativeStrikePtr = 0;
|
||||
}
|
||||
|
||||
// the fractional metrics default on our platform is OFF
|
||||
private boolean useFractionalMetrics() {
|
||||
return desc.fmHint == SunHints.INTVAL_FRACTIONALMETRICS_ON;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getNumGlyphs() {
|
||||
return nativeFont.getNumGlyphs();
|
||||
}
|
||||
|
||||
@Override
|
||||
StrikeMetrics getFontMetrics() {
|
||||
if (strikeMetrics == null) {
|
||||
StrikeMetrics metrics = getFontMetrics(getNativeStrikePtr());
|
||||
@ -155,74 +153,24 @@ public class CStrike extends FontStrike {
|
||||
return strikeMetrics;
|
||||
}
|
||||
|
||||
float getGlyphAdvance(int glyphCode) {
|
||||
return getScaledAdvanceForAdvance(getCachedNativeGlyphAdvance(glyphCode));
|
||||
@Override
|
||||
float getGlyphAdvance(final int glyphCode) {
|
||||
return getCachedNativeGlyphAdvance(glyphCode);
|
||||
}
|
||||
|
||||
float getCodePointAdvance(int cp) {
|
||||
float advance = getCachedNativeGlyphAdvance(nativeFont.getMapper().charToGlyph(cp));
|
||||
|
||||
double glyphScaleX = desc.glyphTx.getScaleX();
|
||||
double devScaleX = desc.devTx.getScaleX();
|
||||
|
||||
if (devScaleX == 0) {
|
||||
glyphScaleX = Math.sqrt(desc.glyphTx.getDeterminant());
|
||||
devScaleX = Math.sqrt(desc.devTx.getDeterminant());
|
||||
}
|
||||
|
||||
if (devScaleX == 0) {
|
||||
devScaleX = Double.NaN; // this an undefined graphics state
|
||||
}
|
||||
advance = (float) (advance * glyphScaleX / devScaleX);
|
||||
return useFractionalMetrics() ? advance : Math.round(advance);
|
||||
@Override
|
||||
float getCodePointAdvance(final int cp) {
|
||||
return getGlyphAdvance(nativeFont.getMapper().charToGlyph(cp));
|
||||
}
|
||||
|
||||
// calculate an advance, and round if not using fractional metrics
|
||||
private float getScaledAdvanceForAdvance(float advance) {
|
||||
if (invDevTx != null) {
|
||||
advance *= invDevTx.getScaleX();
|
||||
}
|
||||
advance *= desc.glyphTx.getScaleX();
|
||||
return useFractionalMetrics() ? advance : Math.round(advance);
|
||||
@Override
|
||||
Point2D.Float getCharMetrics(final char ch) {
|
||||
return getGlyphMetrics(nativeFont.getMapper().charToGlyph(ch));
|
||||
}
|
||||
|
||||
Point2D.Float getCharMetrics(char ch) {
|
||||
return getScaledPointForAdvance(getCachedNativeGlyphAdvance(nativeFont.getMapper().charToGlyph(ch)));
|
||||
}
|
||||
|
||||
Point2D.Float getGlyphMetrics(int glyphCode) {
|
||||
return getScaledPointForAdvance(getCachedNativeGlyphAdvance(glyphCode));
|
||||
}
|
||||
|
||||
// calculate an advance point, and round if not using fractional metrics
|
||||
private Point2D.Float getScaledPointForAdvance(float advance) {
|
||||
Point2D.Float pt = new Point2D.Float(advance, 0);
|
||||
|
||||
if (!desc.glyphTx.isIdentity()) {
|
||||
return scalePoint(pt);
|
||||
}
|
||||
|
||||
if (!useFractionalMetrics()) {
|
||||
pt.x = Math.round(pt.x);
|
||||
}
|
||||
return pt;
|
||||
}
|
||||
|
||||
private Point2D.Float scalePoint(Point2D.Float pt) {
|
||||
if (invDevTx != null) {
|
||||
// transform the point out of the device space first
|
||||
invDevTx.transform(pt, pt);
|
||||
}
|
||||
desc.glyphTx.transform(pt, pt);
|
||||
pt.x -= desc.glyphTx.getTranslateX();
|
||||
pt.y -= desc.glyphTx.getTranslateY();
|
||||
|
||||
if (!useFractionalMetrics()) {
|
||||
pt.x = Math.round(pt.x);
|
||||
pt.y = Math.round(pt.y);
|
||||
}
|
||||
|
||||
return pt;
|
||||
@Override
|
||||
Point2D.Float getGlyphMetrics(final int glyphCode) {
|
||||
return new Point2D.Float(getGlyphAdvance(glyphCode), 0.0f);
|
||||
}
|
||||
|
||||
Rectangle2D.Float getGlyphOutlineBounds(int glyphCode) {
|
||||
@ -414,9 +362,7 @@ public class CStrike extends FontStrike {
|
||||
private SparseBitShiftingTwoLayerArray secondLayerCache;
|
||||
private HashMap<Integer, Long> generalCache;
|
||||
|
||||
public GlyphInfoCache(final Font2D nativeFont,
|
||||
final FontStrikeDesc desc)
|
||||
{
|
||||
GlyphInfoCache(final Font2D nativeFont, final FontStrikeDesc desc) {
|
||||
super(nativeFont, desc);
|
||||
firstLayerCache = new long[FIRST_LAYER_SIZE];
|
||||
}
|
||||
@ -527,7 +473,7 @@ public class CStrike extends FontStrike {
|
||||
final int shift;
|
||||
final int secondLayerLength;
|
||||
|
||||
public SparseBitShiftingTwoLayerArray(final int size, final int shift) {
|
||||
SparseBitShiftingTwoLayerArray(final int size, final int shift) {
|
||||
this.shift = shift;
|
||||
this.cache = new long[1 << shift][];
|
||||
this.secondLayerLength = size >> shift;
|
||||
@ -559,6 +505,12 @@ public class CStrike extends FontStrike {
|
||||
private SparseBitShiftingTwoLayerArray secondLayerCache;
|
||||
private HashMap<Integer, Float> generalCache;
|
||||
|
||||
// Empty non private constructor was added because access to this
|
||||
// class shouldn't be emulated by a synthetic accessor method.
|
||||
GlyphAdvanceCache() {
|
||||
super();
|
||||
}
|
||||
|
||||
public synchronized float get(final int index) {
|
||||
if (index < 0) {
|
||||
if (-index < SECOND_LAYER_SIZE) {
|
||||
@ -609,9 +561,7 @@ public class CStrike extends FontStrike {
|
||||
final int shift;
|
||||
final int secondLayerLength;
|
||||
|
||||
public SparseBitShiftingTwoLayerArray(final int size,
|
||||
final int shift)
|
||||
{
|
||||
SparseBitShiftingTwoLayerArray(final int size, final int shift) {
|
||||
this.shift = shift;
|
||||
this.cache = new float[1 << shift][];
|
||||
this.secondLayerLength = size >> shift;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2011, 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
|
||||
@ -31,11 +31,12 @@
|
||||
@interface AWTStrike : NSObject {
|
||||
@public
|
||||
AWTFont * fAWTFont;
|
||||
CGFloat fSize;
|
||||
CGFloat fSize;
|
||||
JRSFontRenderingStyle fStyle;
|
||||
jint fAAStyle;
|
||||
jint fAAStyle;
|
||||
|
||||
CGAffineTransform fTx;
|
||||
CGAffineTransform fDevTx;
|
||||
CGAffineTransform fAltTx; // alternate strike tx used for Sun2D
|
||||
CGAffineTransform fFontTx;
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2011, 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
|
||||
@ -65,6 +65,7 @@ static CGAffineTransform sInverseTX = { 1, 0, 0, -1, 0, 0 };
|
||||
invDevTx.b *= -1;
|
||||
invDevTx.c *= -1;
|
||||
fFontTx = CGAffineTransformConcat(CGAffineTransformConcat(tx, invDevTx), sInverseTX);
|
||||
fDevTx = CGAffineTransformInvert(invDevTx);
|
||||
|
||||
// the "font size" is the square root of the determinant of the matrix
|
||||
fSize = sqrt(abs(fFontTx.a * fFontTx.d - fFontTx.b * fFontTx.c));
|
||||
@ -148,7 +149,8 @@ Java_sun_font_CStrike_getNativeGlyphAdvance
|
||||
{
|
||||
CGSize advance;
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWTFont *awtFont = ((AWTStrike *)jlong_to_ptr(awtStrikePtr))->fAWTFont;
|
||||
AWTStrike *awtStrike = (AWTStrike *)jlong_to_ptr(awtStrikePtr);
|
||||
AWTFont *awtFont = awtStrike->fAWTFont;
|
||||
|
||||
// negative glyph codes are really unicodes, which were placed there by the mapper
|
||||
// to indicate we should use CoreText to substitute the character
|
||||
@ -156,6 +158,10 @@ JNF_COCOA_ENTER(env);
|
||||
const CTFontRef fallback = CTS_CopyCTFallbackFontAndGlyphForJavaGlyphCode(awtFont, glyphCode, &glyph);
|
||||
CTFontGetAdvancesForGlyphs(fallback, kCTFontDefaultOrientation, &glyph, &advance, 1);
|
||||
CFRelease(fallback);
|
||||
advance = CGSizeApplyAffineTransform(advance, awtStrike->fFontTx);
|
||||
if (!JRSFontStyleUsesFractionalMetrics(awtStrike->fStyle)) {
|
||||
advance.width = round(advance.width);
|
||||
}
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
return advance.width;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2011, 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
|
||||
@ -455,6 +455,7 @@ CGGI_ClearCanvas(CGGI_GlyphCanvas *canvas, GlyphInfo *info)
|
||||
#define CGGI_GLYPH_BBOX_PADDING 2.0f
|
||||
static inline GlyphInfo *
|
||||
CGGI_CreateNewGlyphInfoFrom(CGSize advance, CGRect bbox,
|
||||
const AWTStrike *strike,
|
||||
const CGGI_RenderingMode *mode)
|
||||
{
|
||||
size_t pixelSize = mode->glyphDescriptor->pixelSize;
|
||||
@ -477,6 +478,12 @@ CGGI_CreateNewGlyphInfoFrom(CGSize advance, CGRect bbox,
|
||||
width = 1;
|
||||
height = 1;
|
||||
}
|
||||
advance = CGSizeApplyAffineTransform(advance, strike->fFontTx);
|
||||
if (!JRSFontStyleUsesFractionalMetrics(strike->fStyle)) {
|
||||
advance.width = round(advance.width);
|
||||
advance.height = round(advance.height);
|
||||
}
|
||||
advance = CGSizeApplyAffineTransform(advance, strike->fDevTx);
|
||||
|
||||
#ifdef USE_IMAGE_ALIGNED_MEMORY
|
||||
// create separate memory
|
||||
@ -564,10 +571,10 @@ CGGI_CreateImageForUnicode
|
||||
JRSFontGetBoundingBoxesForGlyphsAndStyle(fallback, &tx, style, &glyph, 1, &bbox);
|
||||
|
||||
CGSize advance;
|
||||
JRSFontGetAdvancesForGlyphsAndStyle(fallback, &tx, strike->fStyle, &glyph, 1, &advance);
|
||||
CTFontGetAdvancesForGlyphs(fallback, kCTFontDefaultOrientation, &glyph, &advance, 1);
|
||||
|
||||
// create the Sun2D GlyphInfo we are going to strike into
|
||||
GlyphInfo *info = CGGI_CreateNewGlyphInfoFrom(advance, bbox, mode);
|
||||
GlyphInfo *info = CGGI_CreateNewGlyphInfoFrom(advance, bbox, strike, mode);
|
||||
|
||||
// fix the context size, just in case the substituted character is unexpectedly large
|
||||
CGGI_SizeCanvas(canvas, info->width, info->height, mode->cgFontMode);
|
||||
@ -715,7 +722,7 @@ CGGI_CreateGlyphInfos(jlong *glyphInfos, const AWTStrike *strike,
|
||||
JRSFontRenderingStyle bboxCGMode = JRSFontAlignStyleForFractionalMeasurement(strike->fStyle);
|
||||
|
||||
JRSFontGetBoundingBoxesForGlyphsAndStyle((CTFontRef)font->fFont, &tx, bboxCGMode, glyphs, len, bboxes);
|
||||
JRSFontGetAdvancesForGlyphsAndStyle((CTFontRef)font->fFont, &tx, strike->fStyle, glyphs, len, advances);
|
||||
CTFontGetAdvancesForGlyphs((CTFontRef)font->fFont, kCTFontDefaultOrientation, glyphs, advances, len);
|
||||
|
||||
size_t maxWidth = 1;
|
||||
size_t maxHeight = 1;
|
||||
@ -732,7 +739,7 @@ CGGI_CreateGlyphInfos(jlong *glyphInfos, const AWTStrike *strike,
|
||||
CGSize advance = advances[i];
|
||||
CGRect bbox = bboxes[i];
|
||||
|
||||
GlyphInfo *glyphInfo = CGGI_CreateNewGlyphInfoFrom(advance, bbox, mode);
|
||||
GlyphInfo *glyphInfo = CGGI_CreateNewGlyphInfoFrom(advance, bbox, strike, mode);
|
||||
|
||||
if (maxWidth < glyphInfo->width) maxWidth = glyphInfo->width;
|
||||
if (maxHeight < glyphInfo->height) maxHeight = glyphInfo->height;
|
||||
|
||||
@ -332,7 +332,7 @@ function streamClose(stream) {
|
||||
* @param str input from which script is loaded and evaluated
|
||||
*/
|
||||
if (typeof(load) == 'undefined') {
|
||||
var load = function(str) {
|
||||
this.load = function(str) {
|
||||
var stream = inStream(str);
|
||||
var bstream = new BufferedInputStream(stream);
|
||||
var reader = new BufferedReader(new InputStreamReader(bstream));
|
||||
@ -712,7 +712,7 @@ if (typeof(exit) == 'undefined') {
|
||||
* @param exitCode integer code returned to OS shell.
|
||||
* optional, defaults to 0
|
||||
*/
|
||||
var exit = function (code) {
|
||||
this.exit = function (code) {
|
||||
if (code) {
|
||||
java.lang.System.exit(code + 0);
|
||||
} else {
|
||||
@ -725,7 +725,7 @@ if (typeof(quit) == 'undefined') {
|
||||
/**
|
||||
* synonym for exit
|
||||
*/
|
||||
var quit = function (code) {
|
||||
this.quit = function (code) {
|
||||
exit(code);
|
||||
}
|
||||
}
|
||||
@ -881,7 +881,7 @@ if (typeof(printf) == 'undefined') {
|
||||
* @param format string to format the rest of the print items
|
||||
* @param args variadic argument list
|
||||
*/
|
||||
var printf = function (format, args/*, more args*/) {
|
||||
this.printf = function (format, args/*, more args*/) {
|
||||
var array = java.lang.reflect.Array.newInstance(java.lang.Object,
|
||||
arguments.length - 1);
|
||||
for (var i = 0; i < array.length; i++) {
|
||||
@ -921,25 +921,7 @@ function read(prompt, multiline) {
|
||||
}
|
||||
|
||||
if (typeof(println) == 'undefined') {
|
||||
var print = function(str, newline) {
|
||||
if (typeof(str) == 'undefined') {
|
||||
str = 'undefined';
|
||||
} else if (str == null) {
|
||||
str = 'null';
|
||||
}
|
||||
|
||||
if (!(out instanceof java.io.PrintWriter)) {
|
||||
out = new java.io.PrintWriter(out);
|
||||
}
|
||||
|
||||
out.print(String(str));
|
||||
if (newline) {
|
||||
out.print('\n');
|
||||
}
|
||||
out.flush();
|
||||
}
|
||||
|
||||
var println = function(str) {
|
||||
print(str, true);
|
||||
};
|
||||
// just synonym to print
|
||||
this.println = print;
|
||||
}
|
||||
|
||||
|
||||
@ -48,132 +48,87 @@ package java.io;
|
||||
* may be thrown if the input stream has been
|
||||
* closed.
|
||||
*
|
||||
* <h4><a name="modified-utf-8">Modified UTF-8</a></h4>
|
||||
* <h3><a name="modified-utf-8">Modified UTF-8</a></h3>
|
||||
* <p>
|
||||
* Implementations of the DataInput and DataOutput interfaces represent
|
||||
* Unicode strings in a format that is a slight modification of UTF-8.
|
||||
* (For information regarding the standard UTF-8 format, see section
|
||||
* <i>3.9 Unicode Encoding Forms</i> of <i>The Unicode Standard, Version
|
||||
* 4.0</i>).
|
||||
* Note that in the following tables, the most significant bit appears in the
|
||||
* Note that in the following table, the most significant bit appears in the
|
||||
* far left-hand column.
|
||||
* <p>
|
||||
* All characters in the range {@code '\u005Cu0001'} to
|
||||
* {@code '\u005Cu007F'} are represented by a single byte:
|
||||
*
|
||||
* <blockquote>
|
||||
* <table border="1" cellspacing="0" cellpadding="8" width="50%"
|
||||
* <table border="1" cellspacing="0" cellpadding="8"
|
||||
* summary="Bit values and bytes">
|
||||
* <tr>
|
||||
* <th colspan="9"><span style="font-weight:normal">
|
||||
* All characters in the range {@code '\u005Cu0001'} to
|
||||
* {@code '\u005Cu007F'} are represented by a single byte:</span></th>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td></td>
|
||||
* <th id="bit_a">Bit Values</th>
|
||||
* <th colspan="8" id="bit_a">Bit Values</th>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <th id="byte1_a">Byte 1</th>
|
||||
* <td>
|
||||
* <table border="1" cellspacing="0" width="100%">
|
||||
* <tr>
|
||||
* <td width="12%"><center>0</center>
|
||||
* <td colspan="7"><center>bits 6-0</center>
|
||||
* </tr>
|
||||
* </table>
|
||||
* </td>
|
||||
* <td><center>0</center>
|
||||
* <td colspan="7"><center>bits 6-0</center>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <th colspan="9"><span style="font-weight:normal">
|
||||
* The null character {@code '\u005Cu0000'} and characters
|
||||
* in the range {@code '\u005Cu0080'} to {@code '\u005Cu07FF'} are
|
||||
* represented by a pair of bytes:</span></th>
|
||||
* </tr>
|
||||
* </table>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p>
|
||||
* The null character {@code '\u005Cu0000'} and characters in the
|
||||
* range {@code '\u005Cu0080'} to {@code '\u005Cu07FF'} are
|
||||
* represented by a pair of bytes:
|
||||
*
|
||||
* <blockquote>
|
||||
* <table border="1" cellspacing="0" cellpadding="8" width="50%"
|
||||
* summary="Bit values and bytes">
|
||||
* <tr>
|
||||
* <td></td>
|
||||
* <th id="bit_b">Bit Values</th>
|
||||
* <th colspan="8" id="bit_b">Bit Values</th>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <th id="byte1_b">Byte 1</th>
|
||||
* <td>
|
||||
* <table border="1" cellspacing="0" width="100%">
|
||||
* <tr>
|
||||
* <td width="12%"><center>1</center>
|
||||
* <td width="13%"><center>1</center>
|
||||
* <td width="12%"><center>0</center>
|
||||
* <td colspan="5"><center>bits 10-6</center>
|
||||
* </tr>
|
||||
* </table>
|
||||
* </td>
|
||||
* <td><center>1</center>
|
||||
* <td><center>1</center>
|
||||
* <td><center>0</center>
|
||||
* <td colspan="5"><center>bits 10-6</center>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <th id="byte2_a">Byte 2</th>
|
||||
* <td>
|
||||
* <table border="1" cellspacing="0" width="100%">
|
||||
* <tr>
|
||||
* <td width="12%"><center>1</center>
|
||||
* <td width="13%"><center>0</center>
|
||||
* <td colspan="6"><center>bits 5-0</center>
|
||||
* </tr>
|
||||
* </table>
|
||||
* </td>
|
||||
* <td><center>1</center>
|
||||
* <td><center>0</center>
|
||||
* <td colspan="6"><center>bits 5-0</center>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <th colspan="9"><span style="font-weight:normal">
|
||||
* {@code char} values in the range {@code '\u005Cu0800'}
|
||||
* to {@code '\u005CuFFFF'} are represented by three bytes:</span></th>
|
||||
* </tr>
|
||||
* </table>
|
||||
* </blockquote>
|
||||
*
|
||||
* <br>
|
||||
* {@code char} values in the range {@code '\u005Cu0800'} to
|
||||
* {@code '\u005CuFFFF'} are represented by three bytes:
|
||||
*
|
||||
* <blockquote>
|
||||
* <table border="1" cellspacing="0" cellpadding="8" width="50%"
|
||||
* summary="Bit values and bytes">
|
||||
* <tr>
|
||||
* <td></td>
|
||||
* <th id="bit_c">Bit Values</th>
|
||||
* <th colspan="8"id="bit_c">Bit Values</th>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <th id="byte1_c">Byte 1</th>
|
||||
* <td>
|
||||
* <table border="1" cellspacing="0" width="100%">
|
||||
* <tr>
|
||||
* <td width="12%"><center>1</center>
|
||||
* <td width="13%"><center>1</center>
|
||||
* <td width="12%"><center>1</center>
|
||||
* <td width="13%"><center>0</center>
|
||||
* <td colspan="4"><center>bits 15-12</center>
|
||||
* </tr>
|
||||
* </table>
|
||||
* </td>
|
||||
* <td><center>1</center>
|
||||
* <td><center>1</center>
|
||||
* <td><center>1</center>
|
||||
* <td><center>0</center>
|
||||
* <td colspan="4"><center>bits 15-12</center>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <th id="byte2_b">Byte 2</th>
|
||||
* <td>
|
||||
* <table border="1" cellspacing="0" width="100%">
|
||||
* <tr>
|
||||
* <td width="12%"><center>1</center>
|
||||
* <td width="13%"><center>0</center>
|
||||
* <td colspan="6"><center>bits 11-6</center>
|
||||
* </tr>
|
||||
* </table>
|
||||
* </td>
|
||||
* <td><center>1</center>
|
||||
* <td><center>0</center>
|
||||
* <td colspan="6"><center>bits 11-6</center>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <th id="byte3">Byte 3</th>
|
||||
* <td>
|
||||
* <table border="1" cellspacing="0" width="100%">
|
||||
* <tr>
|
||||
* <td width="12%"><center>1</center>
|
||||
* <td width="13%"><center>0</center>
|
||||
* <td colspan="6"><center>bits 5-0</center>
|
||||
* </tr>
|
||||
* </table>
|
||||
* </td>
|
||||
* <td><center>1</center>
|
||||
* <td><center>0</center>
|
||||
* <td colspan="6"><center>bits 5-0</center>
|
||||
* </tr>
|
||||
* </table>
|
||||
* </blockquote>
|
||||
*
|
||||
* </blockquote>
|
||||
* <p>
|
||||
* The differences between this format and the
|
||||
* standard UTF-8 format are the following:
|
||||
|
||||
@ -129,7 +129,7 @@ import sun.security.action.GetPropertyAction;
|
||||
* created, the abstract pathname represented by a <code>File</code> object
|
||||
* will never change.
|
||||
*
|
||||
* <h4>Interoperability with {@code java.nio.file} package</h4>
|
||||
* <h3>Interoperability with {@code java.nio.file} package</h3>
|
||||
*
|
||||
* <p> The <a href="../../java/nio/file/package-summary.html">{@code java.nio.file}</a>
|
||||
* package defines interfaces and classes for the Java virtual machine to access
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1996, 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
|
||||
@ -313,6 +313,7 @@ public class ObjectInputStream
|
||||
* @throws SecurityException if a security manager exists and its
|
||||
* <code>checkPermission</code> method denies enabling
|
||||
* subclassing.
|
||||
* @throws IOException if an I/O error occurs while creating this stream
|
||||
* @see SecurityManager#checkPermission
|
||||
* @see java.io.SerializablePermission
|
||||
*/
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1996, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1996, 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
|
||||
@ -265,6 +265,7 @@ public class ObjectOutputStream
|
||||
* @throws SecurityException if a security manager exists and its
|
||||
* <code>checkPermission</code> method denies enabling
|
||||
* subclassing.
|
||||
* @throws IOException if an I/O error occurs while creating this stream
|
||||
* @see SecurityManager#checkPermission
|
||||
* @see java.io.SerializablePermission
|
||||
*/
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1996, 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
|
||||
@ -240,6 +240,8 @@ public class ObjectStreamField
|
||||
* Returns boolean value indicating whether or not the serializable field
|
||||
* represented by this ObjectStreamField instance is unshared.
|
||||
*
|
||||
* @return {@code true} if this field is unshared
|
||||
*
|
||||
* @since 1.4
|
||||
*/
|
||||
public boolean isUnshared() {
|
||||
|
||||
@ -128,7 +128,7 @@ public class RandomAccessFile implements DataOutput, DataInput, Closeable {
|
||||
* meanings are:
|
||||
*
|
||||
* <table summary="Access mode permitted values and meanings">
|
||||
* <tr><th><p align="left">Value</p></th><th><p align="left">Meaning</p></th></tr>
|
||||
* <tr><th align="left">Value</th><th align="left">Meaning</th></tr>
|
||||
* <tr><td valign="top"><tt>"r"</tt></td>
|
||||
* <td> Open for reading only. Invoking any of the <tt>write</tt>
|
||||
* methods of the resulting object will cause an {@link
|
||||
|
||||
@ -157,10 +157,10 @@ public final class Class<T> implements java.io.Serializable,
|
||||
*
|
||||
* The string is formatted as a list of type modifiers, if any,
|
||||
* followed by the kind of type (empty string for primitive types
|
||||
* and {@code class}, {@code enum}, {@code interface}, or {@code
|
||||
* @interface}, as appropriate), followed by the type's name,
|
||||
* followed by an angle-bracketed comma-separated list of the
|
||||
* type's type parameters, if any.
|
||||
* and {@code class}, {@code enum}, {@code interface}, or
|
||||
* <code>@</code>{@code interface}, as appropriate), followed
|
||||
* by the type's name, followed by an angle-bracketed
|
||||
* comma-separated list of the type's type parameters, if any.
|
||||
*
|
||||
* A space is used to separate modifiers from one another and to
|
||||
* separate any modifiers from the kind of type. The modifiers
|
||||
|
||||
@ -29,6 +29,8 @@ package java.lang.invoke;
|
||||
* LambdaConversionException
|
||||
*/
|
||||
public class LambdaConversionException extends Exception {
|
||||
private static final long serialVersionUID = 292L + 8L;
|
||||
|
||||
/**
|
||||
* Constructs a {@code LambdaConversionException}.
|
||||
*/
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 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
|
||||
@ -25,13 +25,12 @@
|
||||
|
||||
package java.lang.ref;
|
||||
|
||||
|
||||
/* Final references, used to implement finalization */
|
||||
|
||||
/**
|
||||
* Final references, used to implement finalization
|
||||
*/
|
||||
class FinalReference<T> extends Reference<T> {
|
||||
|
||||
public FinalReference(T referent, ReferenceQueue<? super T> q) {
|
||||
super(referent, q);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 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
|
||||
@ -29,16 +29,16 @@ import java.security.PrivilegedAction;
|
||||
import java.security.AccessController;
|
||||
|
||||
|
||||
final class Finalizer extends FinalReference { /* Package-private; must be in
|
||||
same package as the Reference
|
||||
class */
|
||||
final class Finalizer extends FinalReference<Object> { /* Package-private; must be in
|
||||
same package as the Reference
|
||||
class */
|
||||
|
||||
/* A native method that invokes an arbitrary object's finalize method is
|
||||
required since the finalize method is protected
|
||||
*/
|
||||
static native void invokeFinalizeMethod(Object o) throws Throwable;
|
||||
|
||||
private static ReferenceQueue queue = new ReferenceQueue();
|
||||
private static ReferenceQueue<Object> queue = new ReferenceQueue<>();
|
||||
private static Finalizer unfinalized = null;
|
||||
private static final Object lock = new Object();
|
||||
|
||||
|
||||
@ -96,6 +96,7 @@ public abstract class Reference<T> {
|
||||
* Enqueued: next reference in queue (or this if last)
|
||||
* Inactive: this
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
Reference next;
|
||||
|
||||
/* When active: next element in a discovered reference list maintained by GC (or this if last)
|
||||
@ -119,7 +120,7 @@ public abstract class Reference<T> {
|
||||
* them. This list is protected by the above lock object. The
|
||||
* list uses the discovered field to link its elements.
|
||||
*/
|
||||
private static Reference pending = null;
|
||||
private static Reference<Object> pending = null;
|
||||
|
||||
/* High-priority thread to enqueue pending References
|
||||
*/
|
||||
@ -131,7 +132,7 @@ public abstract class Reference<T> {
|
||||
|
||||
public void run() {
|
||||
for (;;) {
|
||||
Reference r;
|
||||
Reference<Object> r;
|
||||
synchronized (lock) {
|
||||
if (pending != null) {
|
||||
r = pending;
|
||||
@ -166,7 +167,7 @@ public abstract class Reference<T> {
|
||||
continue;
|
||||
}
|
||||
|
||||
ReferenceQueue q = r.queue;
|
||||
ReferenceQueue<Object> q = r.queue;
|
||||
if (q != ReferenceQueue.NULL) q.enqueue(r);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 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
|
||||
@ -40,14 +40,14 @@ public class ReferenceQueue<T> {
|
||||
*/
|
||||
public ReferenceQueue() { }
|
||||
|
||||
private static class Null extends ReferenceQueue {
|
||||
boolean enqueue(Reference r) {
|
||||
private static class Null<S> extends ReferenceQueue<S> {
|
||||
boolean enqueue(Reference<? extends S> r) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static ReferenceQueue NULL = new Null();
|
||||
static ReferenceQueue ENQUEUED = new Null();
|
||||
static ReferenceQueue<Object> NULL = new Null<>();
|
||||
static ReferenceQueue<Object> ENQUEUED = new Null<>();
|
||||
|
||||
static private class Lock { };
|
||||
private Lock lock = new Lock();
|
||||
@ -58,7 +58,7 @@ public class ReferenceQueue<T> {
|
||||
synchronized (lock) {
|
||||
// Check that since getting the lock this reference hasn't already been
|
||||
// enqueued (and even then removed)
|
||||
ReferenceQueue queue = r.queue;
|
||||
ReferenceQueue<?> queue = r.queue;
|
||||
if ((queue == NULL) || (queue == ENQUEUED)) {
|
||||
return false;
|
||||
}
|
||||
@ -75,10 +75,13 @@ public class ReferenceQueue<T> {
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private Reference<? extends T> reallyPoll() { /* Must hold lock */
|
||||
Reference<? extends T> r = head;
|
||||
if (r != null) {
|
||||
head = (r.next == r) ? null : r.next;
|
||||
head = (r.next == r) ?
|
||||
null :
|
||||
r.next; // Unchecked due to the next field having a raw type in Reference
|
||||
r.queue = NULL;
|
||||
r.next = r;
|
||||
queueLength--;
|
||||
|
||||
@ -162,7 +162,7 @@ public final class Parameter implements AnnotatedElement {
|
||||
|
||||
/**
|
||||
* Returns the name of the parameter. If the parameter's name is
|
||||
* {@linkplain isNamePresent() present}, then this method returns
|
||||
* {@linkplain #isNamePresent() present}, then this method returns
|
||||
* the name provided by the class file. Otherwise, this method
|
||||
* synthesizes a name of the form argN, where N is the index of
|
||||
* the parameter in the descriptor of the method which declares
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1999, 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
|
||||
@ -38,13 +38,13 @@ package java.math;
|
||||
*
|
||||
* @see BigInteger
|
||||
* @author Michael McCloskey
|
||||
* @author Timothy Buktu
|
||||
* @since 1.3
|
||||
*/
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import static java.math.BigInteger.LONG_MASK;
|
||||
import static java.math.BigDecimal.INFLATED;
|
||||
import static java.math.BigInteger.LONG_MASK;
|
||||
import java.util.Arrays;
|
||||
|
||||
class MutableBigInteger {
|
||||
/**
|
||||
@ -75,6 +75,24 @@ class MutableBigInteger {
|
||||
*/
|
||||
static final MutableBigInteger ONE = new MutableBigInteger(1);
|
||||
|
||||
/**
|
||||
* The minimum {@code intLen} for cancelling powers of two before
|
||||
* dividing.
|
||||
* If the number of ints is less than this threshold,
|
||||
* {@code divideKnuth} does not eliminate common powers of two from
|
||||
* the dividend and divisor.
|
||||
*/
|
||||
static final int KNUTH_POW2_THRESH_LEN = 6;
|
||||
|
||||
/**
|
||||
* The minimum number of trailing zero ints for cancelling powers of two
|
||||
* before dividing.
|
||||
* If the dividend and divisor don't share at least this many zero ints
|
||||
* at the end, {@code divideKnuth} does not eliminate common powers
|
||||
* of two from the dividend and divisor.
|
||||
*/
|
||||
static final int KNUTH_POW2_THRESH_ZEROS = 3;
|
||||
|
||||
// Constructors
|
||||
|
||||
/**
|
||||
@ -123,6 +141,20 @@ class MutableBigInteger {
|
||||
value = Arrays.copyOfRange(val.value, val.offset, val.offset + intLen);
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes this number an {@code n}-int number all of whose bits are ones.
|
||||
* Used by Burnikel-Ziegler division.
|
||||
* @param n number of ints in the {@code value} array
|
||||
* @return a number equal to {@code ((1<<(32*n)))-1}
|
||||
*/
|
||||
private void ones(int n) {
|
||||
if (n > value.length)
|
||||
value = new int[n];
|
||||
Arrays.fill(value, -1);
|
||||
offset = 0;
|
||||
intLen = n;
|
||||
}
|
||||
|
||||
/**
|
||||
* Internal helper method to return the magnitude array. The caller is not
|
||||
* supposed to modify the returned array.
|
||||
@ -154,6 +186,14 @@ class MutableBigInteger {
|
||||
return new BigInteger(getMagnitudeArray(), sign);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts this number to a nonnegative {@code BigInteger}.
|
||||
*/
|
||||
BigInteger toBigInteger() {
|
||||
normalize();
|
||||
return toBigInteger(isZero() ? 0 : 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert this MutableBigInteger to BigDecimal object with the specified sign
|
||||
* and scale.
|
||||
@ -237,6 +277,32 @@ class MutableBigInteger {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a value equal to what {@code b.leftShift(32*ints); return compare(b);}
|
||||
* would return, but doesn't change the value of {@code b}.
|
||||
*/
|
||||
private int compareShifted(MutableBigInteger b, int ints) {
|
||||
int blen = b.intLen;
|
||||
int alen = intLen - ints;
|
||||
if (alen < blen)
|
||||
return -1;
|
||||
if (alen > blen)
|
||||
return 1;
|
||||
|
||||
// Add Integer.MIN_VALUE to make the comparison act as unsigned integer
|
||||
// comparison.
|
||||
int[] bval = b.value;
|
||||
for (int i = offset, j = b.offset; i < alen + offset; i++, j++) {
|
||||
int b1 = value[i] + 0x80000000;
|
||||
int b2 = bval[j] + 0x80000000;
|
||||
if (b1 < b2)
|
||||
return -1;
|
||||
if (b1 > b2)
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Compare this against half of a MutableBigInteger object (Needed for
|
||||
* remainder tests).
|
||||
@ -247,7 +313,7 @@ class MutableBigInteger {
|
||||
int blen = b.intLen;
|
||||
int len = intLen;
|
||||
if (len <= 0)
|
||||
return blen <=0 ? 0 : -1;
|
||||
return blen <= 0 ? 0 : -1;
|
||||
if (len > blen)
|
||||
return 1;
|
||||
if (len < blen - 1)
|
||||
@ -274,7 +340,7 @@ class MutableBigInteger {
|
||||
return v < hb ? -1 : 1;
|
||||
carry = (bv & 1) << 31; // carray will be either 0x80000000 or 0
|
||||
}
|
||||
return carry == 0? 0 : -1;
|
||||
return carry == 0 ? 0 : -1;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -285,10 +351,10 @@ class MutableBigInteger {
|
||||
if (intLen == 0)
|
||||
return -1;
|
||||
int j, b;
|
||||
for (j=intLen-1; (j>0) && (value[j+offset]==0); j--)
|
||||
for (j=intLen-1; (j > 0) && (value[j+offset] == 0); j--)
|
||||
;
|
||||
b = value[j+offset];
|
||||
if (b==0)
|
||||
if (b == 0)
|
||||
return -1;
|
||||
return ((intLen-1-j)<<5) + Integer.numberOfTrailingZeros(b);
|
||||
}
|
||||
@ -329,11 +395,11 @@ class MutableBigInteger {
|
||||
int indexBound = index+intLen;
|
||||
do {
|
||||
index++;
|
||||
} while(index < indexBound && value[index]==0);
|
||||
} while(index < indexBound && value[index] == 0);
|
||||
|
||||
int numZeros = index - offset;
|
||||
intLen -= numZeros;
|
||||
offset = (intLen==0 ? 0 : offset+numZeros);
|
||||
offset = (intLen == 0 ? 0 : offset+numZeros);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -354,7 +420,7 @@ class MutableBigInteger {
|
||||
*/
|
||||
int[] toIntArray() {
|
||||
int[] result = new int[intLen];
|
||||
for(int i=0; i<intLen; i++)
|
||||
for(int i=0; i < intLen; i++)
|
||||
result[i] = value[offset+i];
|
||||
return result;
|
||||
}
|
||||
@ -440,7 +506,7 @@ class MutableBigInteger {
|
||||
boolean isNormal() {
|
||||
if (intLen + offset > value.length)
|
||||
return false;
|
||||
if (intLen ==0)
|
||||
if (intLen == 0)
|
||||
return true;
|
||||
return (value[offset] != 0);
|
||||
}
|
||||
@ -453,6 +519,17 @@ class MutableBigInteger {
|
||||
return b.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Like {@link #rightShift(int)} but {@code n} can be greater than the length of the number.
|
||||
*/
|
||||
void safeRightShift(int n) {
|
||||
if (n/32 >= intLen) {
|
||||
reset();
|
||||
} else {
|
||||
rightShift(n);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Right shift this MutableBigInteger n bits. The MutableBigInteger is left
|
||||
* in normal form.
|
||||
@ -474,6 +551,15 @@ class MutableBigInteger {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Like {@link #leftShift(int)} but {@code n} can be zero.
|
||||
*/
|
||||
void safeLeftShift(int n) {
|
||||
if (n > 0) {
|
||||
leftShift(n);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Left shift this MutableBigInteger n bits.
|
||||
*/
|
||||
@ -502,18 +588,18 @@ class MutableBigInteger {
|
||||
if (value.length < newLen) {
|
||||
// The array must grow
|
||||
int[] result = new int[newLen];
|
||||
for (int i=0; i<intLen; i++)
|
||||
for (int i=0; i < intLen; i++)
|
||||
result[i] = value[offset+i];
|
||||
setValue(result, newLen);
|
||||
} else if (value.length - offset >= newLen) {
|
||||
// Use space on right
|
||||
for(int i=0; i<newLen - intLen; i++)
|
||||
for(int i=0; i < newLen - intLen; i++)
|
||||
value[offset+intLen+i] = 0;
|
||||
} else {
|
||||
// Must use space on left
|
||||
for (int i=0; i<intLen; i++)
|
||||
for (int i=0; i < intLen; i++)
|
||||
value[i] = value[offset+i];
|
||||
for (int i=intLen; i<newLen; i++)
|
||||
for (int i=intLen; i < newLen; i++)
|
||||
value[i] = 0;
|
||||
offset = 0;
|
||||
}
|
||||
@ -590,7 +676,7 @@ class MutableBigInteger {
|
||||
private final void primitiveRightShift(int n) {
|
||||
int[] val = value;
|
||||
int n2 = 32 - n;
|
||||
for (int i=offset+intLen-1, c=val[i]; i>offset; i--) {
|
||||
for (int i=offset+intLen-1, c=val[i]; i > offset; i--) {
|
||||
int b = c;
|
||||
c = val[i-1];
|
||||
val[i] = (c << n2) | (b >>> n);
|
||||
@ -606,7 +692,7 @@ class MutableBigInteger {
|
||||
private final void primitiveLeftShift(int n) {
|
||||
int[] val = value;
|
||||
int n2 = 32 - n;
|
||||
for (int i=offset, c=val[i], m=i+intLen-1; i<m; i++) {
|
||||
for (int i=offset, c=val[i], m=i+intLen-1; i < m; i++) {
|
||||
int b = c;
|
||||
c = val[i+1];
|
||||
val[i] = (b << n) | (c >>> n2);
|
||||
@ -614,6 +700,35 @@ class MutableBigInteger {
|
||||
val[offset+intLen-1] <<= n;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a {@code BigInteger} equal to the {@code n}
|
||||
* low ints of this number.
|
||||
*/
|
||||
private BigInteger getLower(int n) {
|
||||
if (isZero()) {
|
||||
return BigInteger.ZERO;
|
||||
} else if (intLen < n) {
|
||||
return toBigInteger(1);
|
||||
} else {
|
||||
// strip zeros
|
||||
int len = n;
|
||||
while (len > 0 && value[offset+intLen-len] == 0)
|
||||
len--;
|
||||
int sign = len > 0 ? 1 : 0;
|
||||
return new BigInteger(Arrays.copyOfRange(value, offset+intLen-len, offset+intLen), sign);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Discards all ints whose index is greater than {@code n}.
|
||||
*/
|
||||
private void keepLower(int n) {
|
||||
if (intLen >= n) {
|
||||
offset += intLen - n;
|
||||
intLen = n;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the contents of two MutableBigInteger objects.The result
|
||||
* is placed within this MutableBigInteger.
|
||||
@ -630,7 +745,7 @@ class MutableBigInteger {
|
||||
long carry = 0;
|
||||
|
||||
// Add common parts of both numbers
|
||||
while(x>0 && y>0) {
|
||||
while(x > 0 && y > 0) {
|
||||
x--; y--;
|
||||
sum = (value[x+offset] & LONG_MASK) +
|
||||
(addend.value[y+addend.offset] & LONG_MASK) + carry;
|
||||
@ -639,7 +754,7 @@ class MutableBigInteger {
|
||||
}
|
||||
|
||||
// Add remainder of the longer number
|
||||
while(x>0) {
|
||||
while(x > 0) {
|
||||
x--;
|
||||
if (carry == 0 && result == value && rstart == (x + offset))
|
||||
return;
|
||||
@ -647,7 +762,7 @@ class MutableBigInteger {
|
||||
result[rstart--] = (int)sum;
|
||||
carry = sum >>> 32;
|
||||
}
|
||||
while(y>0) {
|
||||
while(y > 0) {
|
||||
y--;
|
||||
sum = (addend.value[y+addend.offset] & LONG_MASK) + carry;
|
||||
result[rstart--] = (int)sum;
|
||||
@ -673,6 +788,123 @@ class MutableBigInteger {
|
||||
offset = result.length - resultLen;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the value of {@code addend} shifted {@code n} ints to the left.
|
||||
* Has the same effect as {@code addend.leftShift(32*ints); add(addend);}
|
||||
* but doesn't change the value of {@code addend}.
|
||||
*/
|
||||
void addShifted(MutableBigInteger addend, int n) {
|
||||
if (addend.isZero()) {
|
||||
return;
|
||||
}
|
||||
|
||||
int x = intLen;
|
||||
int y = addend.intLen + n;
|
||||
int resultLen = (intLen > y ? intLen : y);
|
||||
int[] result = (value.length < resultLen ? new int[resultLen] : value);
|
||||
|
||||
int rstart = result.length-1;
|
||||
long sum;
|
||||
long carry = 0;
|
||||
|
||||
// Add common parts of both numbers
|
||||
while (x > 0 && y > 0) {
|
||||
x--; y--;
|
||||
int bval = y+addend.offset < addend.value.length ? addend.value[y+addend.offset] : 0;
|
||||
sum = (value[x+offset] & LONG_MASK) +
|
||||
(bval & LONG_MASK) + carry;
|
||||
result[rstart--] = (int)sum;
|
||||
carry = sum >>> 32;
|
||||
}
|
||||
|
||||
// Add remainder of the longer number
|
||||
while (x > 0) {
|
||||
x--;
|
||||
if (carry == 0 && result == value && rstart == (x + offset)) {
|
||||
return;
|
||||
}
|
||||
sum = (value[x+offset] & LONG_MASK) + carry;
|
||||
result[rstart--] = (int)sum;
|
||||
carry = sum >>> 32;
|
||||
}
|
||||
while (y > 0) {
|
||||
y--;
|
||||
int bval = y+addend.offset < addend.value.length ? addend.value[y+addend.offset] : 0;
|
||||
sum = (bval & LONG_MASK) + carry;
|
||||
result[rstart--] = (int)sum;
|
||||
carry = sum >>> 32;
|
||||
}
|
||||
|
||||
if (carry > 0) { // Result must grow in length
|
||||
resultLen++;
|
||||
if (result.length < resultLen) {
|
||||
int temp[] = new int[resultLen];
|
||||
// Result one word longer from carry-out; copy low-order
|
||||
// bits into new result.
|
||||
System.arraycopy(result, 0, temp, 1, result.length);
|
||||
temp[0] = 1;
|
||||
result = temp;
|
||||
} else {
|
||||
result[rstart--] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
value = result;
|
||||
intLen = resultLen;
|
||||
offset = result.length - resultLen;
|
||||
}
|
||||
|
||||
/**
|
||||
* Like {@link #addShifted(MutableBigInteger, int)} but {@code this.intLen} must
|
||||
* not be greater than {@code n}. In other words, concatenates {@code this}
|
||||
* and {@code addend}.
|
||||
*/
|
||||
void addDisjoint(MutableBigInteger addend, int n) {
|
||||
if (addend.isZero())
|
||||
return;
|
||||
|
||||
int x = intLen;
|
||||
int y = addend.intLen + n;
|
||||
int resultLen = (intLen > y ? intLen : y);
|
||||
int[] result;
|
||||
if (value.length < resultLen)
|
||||
result = new int[resultLen];
|
||||
else {
|
||||
result = value;
|
||||
Arrays.fill(value, offset+intLen, value.length, 0);
|
||||
}
|
||||
|
||||
int rstart = result.length-1;
|
||||
|
||||
// copy from this if needed
|
||||
System.arraycopy(value, offset, result, rstart+1-x, x);
|
||||
y -= x;
|
||||
rstart -= x;
|
||||
|
||||
int len = Math.min(y, addend.value.length-addend.offset);
|
||||
System.arraycopy(addend.value, addend.offset, result, rstart+1-y, len);
|
||||
|
||||
// zero the gap
|
||||
for (int i=rstart+1-y+len; i < rstart+1; i++)
|
||||
result[i] = 0;
|
||||
|
||||
value = result;
|
||||
intLen = resultLen;
|
||||
offset = result.length - resultLen;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the low {@code n} ints of {@code addend}.
|
||||
*/
|
||||
void addLower(MutableBigInteger addend, int n) {
|
||||
MutableBigInteger a = new MutableBigInteger(addend);
|
||||
if (a.offset + a.intLen >= n) {
|
||||
a.offset = a.offset + a.intLen - n;
|
||||
a.intLen = n;
|
||||
}
|
||||
a.normalize();
|
||||
add(a);
|
||||
}
|
||||
|
||||
/**
|
||||
* Subtracts the smaller of this and b from the larger and places the
|
||||
@ -704,7 +936,7 @@ class MutableBigInteger {
|
||||
int rstart = result.length - 1;
|
||||
|
||||
// Subtract common parts of both numbers
|
||||
while (y>0) {
|
||||
while (y > 0) {
|
||||
x--; y--;
|
||||
|
||||
diff = (a.value[x+a.offset] & LONG_MASK) -
|
||||
@ -712,7 +944,7 @@ class MutableBigInteger {
|
||||
result[rstart--] = (int)diff;
|
||||
}
|
||||
// Subtract remainder of longer number
|
||||
while (x>0) {
|
||||
while (x > 0) {
|
||||
x--;
|
||||
diff = (a.value[x+a.offset] & LONG_MASK) - ((int)-(diff>>32));
|
||||
result[rstart--] = (int)diff;
|
||||
@ -733,7 +965,7 @@ class MutableBigInteger {
|
||||
private int difference(MutableBigInteger b) {
|
||||
MutableBigInteger a = this;
|
||||
int sign = a.compare(b);
|
||||
if (sign ==0)
|
||||
if (sign == 0)
|
||||
return 0;
|
||||
if (sign < 0) {
|
||||
MutableBigInteger tmp = a;
|
||||
@ -746,14 +978,14 @@ class MutableBigInteger {
|
||||
int y = b.intLen;
|
||||
|
||||
// Subtract common parts of both numbers
|
||||
while (y>0) {
|
||||
while (y > 0) {
|
||||
x--; y--;
|
||||
diff = (a.value[a.offset+ x] & LONG_MASK) -
|
||||
(b.value[b.offset+ y] & LONG_MASK) - ((int)-(diff>>32));
|
||||
a.value[a.offset+x] = (int)diff;
|
||||
}
|
||||
// Subtract remainder of longer number
|
||||
while (x>0) {
|
||||
while (x > 0) {
|
||||
x--;
|
||||
diff = (a.value[a.offset+ x] & LONG_MASK) - ((int)-(diff>>32));
|
||||
a.value[a.offset+x] = (int)diff;
|
||||
@ -822,7 +1054,7 @@ class MutableBigInteger {
|
||||
|
||||
// Perform the multiplication word by word
|
||||
long ylong = y & LONG_MASK;
|
||||
int[] zval = (z.value.length<intLen+1 ? new int[intLen + 1]
|
||||
int[] zval = (z.value.length < intLen+1 ? new int[intLen + 1]
|
||||
: z.value);
|
||||
long carry = 0;
|
||||
for (int i = intLen-1; i >= 0; i--) {
|
||||
@ -906,6 +1138,31 @@ class MutableBigInteger {
|
||||
return rem;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the quotient of this div b and places the quotient in the
|
||||
* provided MutableBigInteger objects and the remainder object is returned.
|
||||
*
|
||||
*/
|
||||
MutableBigInteger divide(MutableBigInteger b, MutableBigInteger quotient) {
|
||||
return divide(b,quotient,true);
|
||||
}
|
||||
|
||||
MutableBigInteger divide(MutableBigInteger b, MutableBigInteger quotient, boolean needRemainder) {
|
||||
if (intLen < BigInteger.BURNIKEL_ZIEGLER_THRESHOLD ||
|
||||
b.intLen < BigInteger.BURNIKEL_ZIEGLER_THRESHOLD) {
|
||||
return divideKnuth(b, quotient, needRemainder);
|
||||
} else {
|
||||
return divideAndRemainderBurnikelZiegler(b, quotient);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see #divideKnuth(MutableBigInteger, MutableBigInteger, boolean)
|
||||
*/
|
||||
MutableBigInteger divideKnuth(MutableBigInteger b, MutableBigInteger quotient) {
|
||||
return divideKnuth(b,quotient,true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculates the quotient of this div b and places the quotient in the
|
||||
* provided MutableBigInteger objects and the remainder object is returned.
|
||||
@ -917,38 +1174,34 @@ class MutableBigInteger {
|
||||
* changed.
|
||||
*
|
||||
*/
|
||||
MutableBigInteger divide(MutableBigInteger b, MutableBigInteger quotient) {
|
||||
return divide(b,quotient,true);
|
||||
}
|
||||
|
||||
MutableBigInteger divide(MutableBigInteger b, MutableBigInteger quotient, boolean needReminder) {
|
||||
MutableBigInteger divideKnuth(MutableBigInteger b, MutableBigInteger quotient, boolean needRemainder) {
|
||||
if (b.intLen == 0)
|
||||
throw new ArithmeticException("BigInteger divide by zero");
|
||||
|
||||
// Dividend is zero
|
||||
if (intLen == 0) {
|
||||
quotient.intLen = quotient.offset;
|
||||
return needReminder ? new MutableBigInteger() : null;
|
||||
quotient.intLen = quotient.offset = 0;
|
||||
return needRemainder ? new MutableBigInteger() : null;
|
||||
}
|
||||
|
||||
int cmp = compare(b);
|
||||
// Dividend less than divisor
|
||||
if (cmp < 0) {
|
||||
quotient.intLen = quotient.offset = 0;
|
||||
return needReminder ? new MutableBigInteger(this) : null;
|
||||
return needRemainder ? new MutableBigInteger(this) : null;
|
||||
}
|
||||
// Dividend equal to divisor
|
||||
if (cmp == 0) {
|
||||
quotient.value[0] = quotient.intLen = 1;
|
||||
quotient.offset = 0;
|
||||
return needReminder ? new MutableBigInteger() : null;
|
||||
return needRemainder ? new MutableBigInteger() : null;
|
||||
}
|
||||
|
||||
quotient.clear();
|
||||
// Special case one word divisor
|
||||
if (b.intLen == 1) {
|
||||
int r = divideOneWord(b.value[b.offset], quotient);
|
||||
if(needReminder) {
|
||||
if(needRemainder) {
|
||||
if (r == 0)
|
||||
return new MutableBigInteger();
|
||||
return new MutableBigInteger(r);
|
||||
@ -956,7 +1209,220 @@ class MutableBigInteger {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
return divideMagnitude(b, quotient, needReminder);
|
||||
|
||||
// Cancel common powers of two if we're above the KNUTH_POW2_* thresholds
|
||||
if (intLen >= KNUTH_POW2_THRESH_LEN) {
|
||||
int trailingZeroBits = Math.min(getLowestSetBit(), b.getLowestSetBit());
|
||||
if (trailingZeroBits >= KNUTH_POW2_THRESH_ZEROS*32) {
|
||||
MutableBigInteger a = new MutableBigInteger(this);
|
||||
b = new MutableBigInteger(b);
|
||||
a.rightShift(trailingZeroBits);
|
||||
b.rightShift(trailingZeroBits);
|
||||
MutableBigInteger r = a.divideKnuth(b, quotient);
|
||||
r.leftShift(trailingZeroBits);
|
||||
return r;
|
||||
}
|
||||
}
|
||||
|
||||
return divideMagnitude(b, quotient, needRemainder);
|
||||
}
|
||||
|
||||
/**
|
||||
* Computes {@code this/b} and {@code this%b} using the
|
||||
* <a href="http://cr.yp.to/bib/1998/burnikel.ps"> Burnikel-Ziegler algorithm</a>.
|
||||
* This method implements algorithm 3 from pg. 9 of the Burnikel-Ziegler paper.
|
||||
* The parameter beta was chosen to b 2<sup>32</sup> so almost all shifts are
|
||||
* multiples of 32 bits.<br/>
|
||||
* {@code this} and {@code b} must be nonnegative.
|
||||
* @param b the divisor
|
||||
* @param quotient output parameter for {@code this/b}
|
||||
* @return the remainder
|
||||
*/
|
||||
MutableBigInteger divideAndRemainderBurnikelZiegler(MutableBigInteger b, MutableBigInteger quotient) {
|
||||
int r = intLen;
|
||||
int s = b.intLen;
|
||||
|
||||
if (r < s) {
|
||||
return this;
|
||||
} else {
|
||||
// Unlike Knuth division, we don't check for common powers of two here because
|
||||
// BZ already runs faster if both numbers contain powers of two and cancelling them has no
|
||||
// additional benefit.
|
||||
|
||||
// step 1: let m = min{2^k | (2^k)*BURNIKEL_ZIEGLER_THRESHOLD > s}
|
||||
int m = 1 << (32-Integer.numberOfLeadingZeros(s/BigInteger.BURNIKEL_ZIEGLER_THRESHOLD));
|
||||
|
||||
int j = (s+m-1) / m; // step 2a: j = ceil(s/m)
|
||||
int n = j * m; // step 2b: block length in 32-bit units
|
||||
int n32 = 32 * n; // block length in bits
|
||||
int sigma = Math.max(0, n32 - b.bitLength()); // step 3: sigma = max{T | (2^T)*B < beta^n}
|
||||
MutableBigInteger bShifted = new MutableBigInteger(b);
|
||||
bShifted.safeLeftShift(sigma); // step 4a: shift b so its length is a multiple of n
|
||||
safeLeftShift(sigma); // step 4b: shift this by the same amount
|
||||
|
||||
// step 5: t is the number of blocks needed to accommodate this plus one additional bit
|
||||
int t = (bitLength()+n32) / n32;
|
||||
if (t < 2) {
|
||||
t = 2;
|
||||
}
|
||||
|
||||
// step 6: conceptually split this into blocks a[t-1], ..., a[0]
|
||||
MutableBigInteger a1 = getBlock(t-1, t, n); // the most significant block of this
|
||||
|
||||
// step 7: z[t-2] = [a[t-1], a[t-2]]
|
||||
MutableBigInteger z = getBlock(t-2, t, n); // the second to most significant block
|
||||
z.addDisjoint(a1, n); // z[t-2]
|
||||
|
||||
// do schoolbook division on blocks, dividing 2-block numbers by 1-block numbers
|
||||
MutableBigInteger qi = new MutableBigInteger();
|
||||
MutableBigInteger ri;
|
||||
quotient.offset = quotient.intLen = 0;
|
||||
for (int i=t-2; i > 0; i--) {
|
||||
// step 8a: compute (qi,ri) such that z=b*qi+ri
|
||||
ri = z.divide2n1n(bShifted, qi);
|
||||
|
||||
// step 8b: z = [ri, a[i-1]]
|
||||
z = getBlock(i-1, t, n); // a[i-1]
|
||||
z.addDisjoint(ri, n);
|
||||
quotient.addShifted(qi, i*n); // update q (part of step 9)
|
||||
}
|
||||
// final iteration of step 8: do the loop one more time for i=0 but leave z unchanged
|
||||
ri = z.divide2n1n(bShifted, qi);
|
||||
quotient.add(qi);
|
||||
|
||||
ri.rightShift(sigma); // step 9: this and b were shifted, so shift back
|
||||
return ri;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method implements algorithm 1 from pg. 4 of the Burnikel-Ziegler paper.
|
||||
* It divides a 2n-digit number by a n-digit number.<br/>
|
||||
* The parameter beta is 2<sup>32</sup> so all shifts are multiples of 32 bits.
|
||||
* <br/>
|
||||
* {@code this} must be a nonnegative number such that {@code this.bitLength() <= 2*b.bitLength()}
|
||||
* @param b a positive number such that {@code b.bitLength()} is even
|
||||
* @param quotient output parameter for {@code this/b}
|
||||
* @return {@code this%b}
|
||||
*/
|
||||
private MutableBigInteger divide2n1n(MutableBigInteger b, MutableBigInteger quotient) {
|
||||
int n = b.intLen;
|
||||
|
||||
// step 1: base case
|
||||
if (n%2 != 0 || n < BigInteger.BURNIKEL_ZIEGLER_THRESHOLD) {
|
||||
return divideKnuth(b, quotient);
|
||||
}
|
||||
|
||||
// step 2: view this as [a1,a2,a3,a4] where each ai is n/2 ints or less
|
||||
MutableBigInteger aUpper = new MutableBigInteger(this);
|
||||
aUpper.safeRightShift(32*(n/2)); // aUpper = [a1,a2,a3]
|
||||
keepLower(n/2); // this = a4
|
||||
|
||||
// step 3: q1=aUpper/b, r1=aUpper%b
|
||||
MutableBigInteger q1 = new MutableBigInteger();
|
||||
MutableBigInteger r1 = aUpper.divide3n2n(b, q1);
|
||||
|
||||
// step 4: quotient=[r1,this]/b, r2=[r1,this]%b
|
||||
addDisjoint(r1, n/2); // this = [r1,this]
|
||||
MutableBigInteger r2 = divide3n2n(b, quotient);
|
||||
|
||||
// step 5: let quotient=[q1,quotient] and return r2
|
||||
quotient.addDisjoint(q1, n/2);
|
||||
return r2;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method implements algorithm 2 from pg. 5 of the Burnikel-Ziegler paper.
|
||||
* It divides a 3n-digit number by a 2n-digit number.<br/>
|
||||
* The parameter beta is 2<sup>32</sup> so all shifts are multiples of 32 bits.<br/>
|
||||
* <br/>
|
||||
* {@code this} must be a nonnegative number such that {@code 2*this.bitLength() <= 3*b.bitLength()}
|
||||
* @param quotient output parameter for {@code this/b}
|
||||
* @return {@code this%b}
|
||||
*/
|
||||
private MutableBigInteger divide3n2n(MutableBigInteger b, MutableBigInteger quotient) {
|
||||
int n = b.intLen / 2; // half the length of b in ints
|
||||
|
||||
// step 1: view this as [a1,a2,a3] where each ai is n ints or less; let a12=[a1,a2]
|
||||
MutableBigInteger a12 = new MutableBigInteger(this);
|
||||
a12.safeRightShift(32*n);
|
||||
|
||||
// step 2: view b as [b1,b2] where each bi is n ints or less
|
||||
MutableBigInteger b1 = new MutableBigInteger(b);
|
||||
b1.safeRightShift(n * 32);
|
||||
BigInteger b2 = b.getLower(n);
|
||||
|
||||
MutableBigInteger r;
|
||||
MutableBigInteger d;
|
||||
if (compareShifted(b, n) < 0) {
|
||||
// step 3a: if a1<b1, let quotient=a12/b1 and r=a12%b1
|
||||
r = a12.divide2n1n(b1, quotient);
|
||||
|
||||
// step 4: d=quotient*b2
|
||||
d = new MutableBigInteger(quotient.toBigInteger().multiply(b2));
|
||||
} else {
|
||||
// step 3b: if a1>=b1, let quotient=beta^n-1 and r=a12-b1*2^n+b1
|
||||
quotient.ones(n);
|
||||
a12.add(b1);
|
||||
b1.leftShift(32*n);
|
||||
a12.subtract(b1);
|
||||
r = a12;
|
||||
|
||||
// step 4: d=quotient*b2=(b2 << 32*n) - b2
|
||||
d = new MutableBigInteger(b2);
|
||||
d.leftShift(32 * n);
|
||||
d.subtract(new MutableBigInteger(b2));
|
||||
}
|
||||
|
||||
// step 5: r = r*beta^n + a3 - d (paper says a4)
|
||||
// However, don't subtract d until after the while loop so r doesn't become negative
|
||||
r.leftShift(32 * n);
|
||||
r.addLower(this, n);
|
||||
|
||||
// step 6: add b until r>=d
|
||||
while (r.compare(d) < 0) {
|
||||
r.add(b);
|
||||
quotient.subtract(MutableBigInteger.ONE);
|
||||
}
|
||||
r.subtract(d);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a {@code MutableBigInteger} containing {@code blockLength} ints from
|
||||
* {@code this} number, starting at {@code index*blockLength}.<br/>
|
||||
* Used by Burnikel-Ziegler division.
|
||||
* @param index the block index
|
||||
* @param numBlocks the total number of blocks in {@code this} number
|
||||
* @param blockLength length of one block in units of 32 bits
|
||||
* @return
|
||||
*/
|
||||
private MutableBigInteger getBlock(int index, int numBlocks, int blockLength) {
|
||||
int blockStart = index * blockLength;
|
||||
if (blockStart >= intLen) {
|
||||
return new MutableBigInteger();
|
||||
}
|
||||
|
||||
int blockEnd;
|
||||
if (index == numBlocks-1) {
|
||||
blockEnd = intLen;
|
||||
} else {
|
||||
blockEnd = (index+1) * blockLength;
|
||||
}
|
||||
if (blockEnd > intLen) {
|
||||
return new MutableBigInteger();
|
||||
}
|
||||
|
||||
int[] newVal = Arrays.copyOfRange(value, offset+intLen-blockEnd, offset+intLen-blockStart);
|
||||
return new MutableBigInteger(newVal);
|
||||
}
|
||||
|
||||
/** @see BigInteger#bitLength() */
|
||||
int bitLength() {
|
||||
if (intLen == 0)
|
||||
return 0;
|
||||
return intLen*32 - Integer.numberOfLeadingZeros(value[offset]);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1006,7 +1472,7 @@ class MutableBigInteger {
|
||||
*/
|
||||
private MutableBigInteger divideMagnitude(MutableBigInteger div,
|
||||
MutableBigInteger quotient,
|
||||
boolean needReminder ) {
|
||||
boolean needRemainder ) {
|
||||
// assert div.intLen > 1
|
||||
// D1 normalize the divisor
|
||||
int shift = Integer.numberOfLeadingZeros(div.value[div.offset]);
|
||||
@ -1017,7 +1483,7 @@ class MutableBigInteger {
|
||||
if (shift > 0) {
|
||||
divisor = new int[dlen];
|
||||
copyAndShift(div.value,div.offset,dlen,divisor,0,shift);
|
||||
if(Integer.numberOfLeadingZeros(value[offset])>=shift) {
|
||||
if (Integer.numberOfLeadingZeros(value[offset]) >= shift) {
|
||||
int[] remarr = new int[intLen + 1];
|
||||
rem = new MutableBigInteger(remarr);
|
||||
rem.intLen = intLen;
|
||||
@ -1070,7 +1536,7 @@ class MutableBigInteger {
|
||||
int dl = divisor[1];
|
||||
|
||||
// D2 Initialize j
|
||||
for(int j=0; j<limit-1; j++) {
|
||||
for (int j=0; j < limit-1; j++) {
|
||||
// D3 Calculate qhat
|
||||
// estimate qhat
|
||||
int qhat = 0;
|
||||
@ -1176,7 +1642,7 @@ class MutableBigInteger {
|
||||
// D4 Multiply and subtract
|
||||
int borrow;
|
||||
rem.value[limit - 1 + rem.offset] = 0;
|
||||
if(needReminder)
|
||||
if(needRemainder)
|
||||
borrow = mulsub(rem.value, divisor, qhat, dlen, limit - 1 + rem.offset);
|
||||
else
|
||||
borrow = mulsubBorrow(rem.value, divisor, qhat, dlen, limit - 1 + rem.offset);
|
||||
@ -1184,7 +1650,7 @@ class MutableBigInteger {
|
||||
// D5 Test remainder
|
||||
if (borrow + 0x80000000 > nh2) {
|
||||
// D6 Add back
|
||||
if(needReminder)
|
||||
if(needRemainder)
|
||||
divadd(divisor, rem.value, limit - 1 + 1 + rem.offset);
|
||||
qhat--;
|
||||
}
|
||||
@ -1194,14 +1660,14 @@ class MutableBigInteger {
|
||||
}
|
||||
|
||||
|
||||
if(needReminder) {
|
||||
if (needRemainder) {
|
||||
// D8 Unnormalize
|
||||
if (shift > 0)
|
||||
rem.rightShift(shift);
|
||||
rem.normalize();
|
||||
}
|
||||
quotient.normalize();
|
||||
return needReminder ? rem : null;
|
||||
return needRemainder ? rem : null;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1367,7 +1833,7 @@ class MutableBigInteger {
|
||||
* This method divides a long quantity by an int to estimate
|
||||
* qhat for two multi precision numbers. It is used when
|
||||
* the signed value of n is less than zero.
|
||||
* Returns long value where high 32 bits contain reminder value and
|
||||
* Returns long value where high 32 bits contain remainder value and
|
||||
* low 32 bits contain quotient value.
|
||||
*/
|
||||
static long divWord(long n, int d) {
|
||||
@ -1436,7 +1902,7 @@ class MutableBigInteger {
|
||||
}
|
||||
|
||||
// step B2
|
||||
boolean uOdd = (k==s1);
|
||||
boolean uOdd = (k == s1);
|
||||
MutableBigInteger t = uOdd ? v: u;
|
||||
int tsign = uOdd ? -1 : 1;
|
||||
|
||||
@ -1478,9 +1944,9 @@ class MutableBigInteger {
|
||||
* Calculate GCD of a and b interpreted as unsigned integers.
|
||||
*/
|
||||
static int binaryGcd(int a, int b) {
|
||||
if (b==0)
|
||||
if (b == 0)
|
||||
return a;
|
||||
if (a==0)
|
||||
if (a == 0)
|
||||
return b;
|
||||
|
||||
// Right shift a & b till their last bits equal to 1.
|
||||
@ -1582,7 +2048,7 @@ class MutableBigInteger {
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
/**
|
||||
* Returns the multiplicative inverse of val mod 2^32. Assumes val is odd.
|
||||
*/
|
||||
static int inverseMod32(int val) {
|
||||
@ -1595,7 +2061,7 @@ class MutableBigInteger {
|
||||
return t;
|
||||
}
|
||||
|
||||
/*
|
||||
/**
|
||||
* Calculate the multiplicative inverse of 2^k mod mod, where mod is odd.
|
||||
*/
|
||||
static MutableBigInteger modInverseBP2(MutableBigInteger mod, int k) {
|
||||
@ -1631,7 +2097,7 @@ class MutableBigInteger {
|
||||
}
|
||||
|
||||
// The Almost Inverse Algorithm
|
||||
while(!f.isOne()) {
|
||||
while (!f.isOne()) {
|
||||
// If gcd(f, g) != 1, number is not invertible modulo mod
|
||||
if (f.isZero())
|
||||
throw new ArithmeticException("BigInteger not invertible.");
|
||||
@ -1665,7 +2131,7 @@ class MutableBigInteger {
|
||||
return fixup(c, p, k);
|
||||
}
|
||||
|
||||
/*
|
||||
/**
|
||||
* The Fixup Algorithm
|
||||
* Calculates X such that X = C * 2^(-k) (mod P)
|
||||
* Assumes C<P and P is odd.
|
||||
@ -1676,7 +2142,7 @@ class MutableBigInteger {
|
||||
// Set r to the multiplicative inverse of p mod 2^32
|
||||
int r = -inverseMod32(p.value[p.offset+p.intLen-1]);
|
||||
|
||||
for(int i=0, numWords = k >> 5; i<numWords; i++) {
|
||||
for (int i=0, numWords = k >> 5; i < numWords; i++) {
|
||||
// V = R * c (mod 2^j)
|
||||
int v = r * c.value[c.offset + c.intLen-1];
|
||||
// c = c + (v * p)
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 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
|
||||
@ -103,17 +103,17 @@ class Authenticator {
|
||||
* Sets the authenticator that will be used by the networking code
|
||||
* when a proxy or an HTTP server asks for authentication.
|
||||
* <p>
|
||||
* First, if there is a security manager, its <code>checkPermission</code>
|
||||
* First, if there is a security manager, its {@code checkPermission}
|
||||
* method is called with a
|
||||
* <code>NetPermission("setDefaultAuthenticator")</code> permission.
|
||||
* {@code NetPermission("setDefaultAuthenticator")} permission.
|
||||
* This may result in a java.lang.SecurityException.
|
||||
*
|
||||
* @param a The authenticator to be set. If a is <code>null</code> then
|
||||
* @param a The authenticator to be set. If a is {@code null} then
|
||||
* any previously set authenticator is removed.
|
||||
*
|
||||
* @throws SecurityException
|
||||
* if a security manager exists and its
|
||||
* <code>checkPermission</code> method doesn't allow
|
||||
* {@code checkPermission} method doesn't allow
|
||||
* setting the default authenticator.
|
||||
*
|
||||
* @see SecurityManager#checkPermission
|
||||
@ -134,9 +134,9 @@ class Authenticator {
|
||||
* Ask the authenticator that has been registered with the system
|
||||
* for a password.
|
||||
* <p>
|
||||
* First, if there is a security manager, its <code>checkPermission</code>
|
||||
* First, if there is a security manager, its {@code checkPermission}
|
||||
* method is called with a
|
||||
* <code>NetPermission("requestPasswordAuthentication")</code> permission.
|
||||
* {@code NetPermission("requestPasswordAuthentication")} permission.
|
||||
* This may result in a java.lang.SecurityException.
|
||||
*
|
||||
* @param addr The InetAddress of the site requesting authorization,
|
||||
@ -151,7 +151,7 @@ class Authenticator {
|
||||
*
|
||||
* @throws SecurityException
|
||||
* if a security manager exists and its
|
||||
* <code>checkPermission</code> method doesn't allow
|
||||
* {@code checkPermission} method doesn't allow
|
||||
* the password authentication request.
|
||||
*
|
||||
* @see SecurityManager#checkPermission
|
||||
@ -193,9 +193,9 @@ class Authenticator {
|
||||
* because the hostname can be provided in cases where the InetAddress
|
||||
* is not available.
|
||||
* <p>
|
||||
* First, if there is a security manager, its <code>checkPermission</code>
|
||||
* First, if there is a security manager, its {@code checkPermission}
|
||||
* method is called with a
|
||||
* <code>NetPermission("requestPasswordAuthentication")</code> permission.
|
||||
* {@code NetPermission("requestPasswordAuthentication")} permission.
|
||||
* This may result in a java.lang.SecurityException.
|
||||
*
|
||||
* @param host The hostname of the site requesting authentication.
|
||||
@ -211,7 +211,7 @@ class Authenticator {
|
||||
*
|
||||
* @throws SecurityException
|
||||
* if a security manager exists and its
|
||||
* <code>checkPermission</code> method doesn't allow
|
||||
* {@code checkPermission} method doesn't allow
|
||||
* the password authentication request.
|
||||
*
|
||||
* @see SecurityManager#checkPermission
|
||||
@ -254,9 +254,9 @@ class Authenticator {
|
||||
* Ask the authenticator that has been registered with the system
|
||||
* for a password.
|
||||
* <p>
|
||||
* First, if there is a security manager, its <code>checkPermission</code>
|
||||
* First, if there is a security manager, its {@code checkPermission}
|
||||
* method is called with a
|
||||
* <code>NetPermission("requestPasswordAuthentication")</code> permission.
|
||||
* {@code NetPermission("requestPasswordAuthentication")} permission.
|
||||
* This may result in a java.lang.SecurityException.
|
||||
*
|
||||
* @param host The hostname of the site requesting authentication.
|
||||
@ -275,7 +275,7 @@ class Authenticator {
|
||||
*
|
||||
* @throws SecurityException
|
||||
* if a security manager exists and its
|
||||
* <code>checkPermission</code> method doesn't allow
|
||||
* {@code checkPermission} method doesn't allow
|
||||
* the password authentication request.
|
||||
*
|
||||
* @see SecurityManager#checkPermission
|
||||
@ -320,8 +320,8 @@ class Authenticator {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the <code>hostname</code> of the
|
||||
* site or proxy requesting authentication, or <code>null</code>
|
||||
* Gets the {@code hostname} of the
|
||||
* site or proxy requesting authentication, or {@code null}
|
||||
* if not available.
|
||||
*
|
||||
* @return the hostname of the connection requiring authentication, or null
|
||||
@ -333,8 +333,8 @@ class Authenticator {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the <code>InetAddress</code> of the
|
||||
* site requesting authorization, or <code>null</code>
|
||||
* Gets the {@code InetAddress} of the
|
||||
* site requesting authorization, or {@code null}
|
||||
* if not available.
|
||||
*
|
||||
* @return the InetAddress of the site requesting authorization, or null
|
||||
@ -346,7 +346,7 @@ class Authenticator {
|
||||
|
||||
/**
|
||||
* Gets the port number for the requested connection.
|
||||
* @return an <code>int</code> indicating the
|
||||
* @return an {@code int} indicating the
|
||||
* port for the requested connection.
|
||||
*/
|
||||
protected final int getRequestingPort() {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 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
|
||||
@ -28,21 +28,21 @@ package java.net;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* The abstract class <code>ContentHandler</code> is the superclass
|
||||
* of all classes that read an <code>Object</code> from a
|
||||
* <code>URLConnection</code>.
|
||||
* The abstract class {@code ContentHandler} is the superclass
|
||||
* of all classes that read an {@code Object} from a
|
||||
* {@code URLConnection}.
|
||||
* <p>
|
||||
* An application does not generally call the
|
||||
* <code>getContent</code> method in this class directly. Instead, an
|
||||
* application calls the <code>getContent</code> method in class
|
||||
* <code>URL</code> or in <code>URLConnection</code>.
|
||||
* {@code getContent} method in this class directly. Instead, an
|
||||
* application calls the {@code getContent} method in class
|
||||
* {@code URL} or in {@code URLConnection}.
|
||||
* The application's content handler factory (an instance of a class that
|
||||
* implements the interface <code>ContentHandlerFactory</code> set
|
||||
* up by a call to <code>setContentHandler</code>) is
|
||||
* called with a <code>String</code> giving the MIME type of the
|
||||
* implements the interface {@code ContentHandlerFactory} set
|
||||
* up by a call to {@code setContentHandler}) is
|
||||
* called with a {@code String} giving the MIME type of the
|
||||
* object being received on the socket. The factory returns an
|
||||
* instance of a subclass of <code>ContentHandler</code>, and its
|
||||
* <code>getContent</code> method is called to create the object.
|
||||
* instance of a subclass of {@code ContentHandler}, and its
|
||||
* {@code getContent} method is called to create the object.
|
||||
* <p>
|
||||
* If no content handler could be found, URLConnection will
|
||||
* look for a content handler in a user-defineable set of places.
|
||||
@ -75,7 +75,7 @@ abstract public class ContentHandler {
|
||||
* creates an object from it.
|
||||
*
|
||||
* @param urlc a URL connection.
|
||||
* @return the object read by the <code>ContentHandler</code>.
|
||||
* @return the object read by the {@code ContentHandler}.
|
||||
* @exception IOException if an I/O error occurs while reading the object.
|
||||
*/
|
||||
abstract public Object getContent(URLConnection urlc) throws IOException;
|
||||
@ -90,7 +90,7 @@ abstract public class ContentHandler {
|
||||
*
|
||||
* @param urlc a URL connection.
|
||||
* @param classes an array of types requested
|
||||
* @return the object read by the <code>ContentHandler</code> that is
|
||||
* @return the object read by the {@code ContentHandler} that is
|
||||
* the first match of the suggested types.
|
||||
* null if none of the requested are supported.
|
||||
* @exception IOException if an I/O error occurs while reading the object.
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 1997, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 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
|
||||
@ -28,10 +28,10 @@ package java.net;
|
||||
/**
|
||||
* This interface defines a factory for content handlers. An
|
||||
* implementation of this interface should map a MIME type into an
|
||||
* instance of <code>ContentHandler</code>.
|
||||
* instance of {@code ContentHandler}.
|
||||
* <p>
|
||||
* This interface is used by the <code>URLStreamHandler</code> class
|
||||
* to create a <code>ContentHandler</code> for a MIME type.
|
||||
* This interface is used by the {@code URLStreamHandler} class
|
||||
* to create a {@code ContentHandler} for a MIME type.
|
||||
*
|
||||
* @author James Gosling
|
||||
* @see java.net.ContentHandler
|
||||
@ -40,13 +40,13 @@ package java.net;
|
||||
*/
|
||||
public interface ContentHandlerFactory {
|
||||
/**
|
||||
* Creates a new <code>ContentHandler</code> to read an object from
|
||||
* a <code>URLStreamHandler</code>.
|
||||
* Creates a new {@code ContentHandler} to read an object from
|
||||
* a {@code URLStreamHandler}.
|
||||
*
|
||||
* @param mimetype the MIME type for which a content handler is desired.
|
||||
|
||||
* @return a new <code>ContentHandler</code> to read an object from a
|
||||
* <code>URLStreamHandler</code>.
|
||||
* @return a new {@code ContentHandler} to read an object from a
|
||||
* {@code URLStreamHandler}.
|
||||
* @see java.net.ContentHandler
|
||||
* @see java.net.URLStreamHandler
|
||||
*/
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 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
|
||||
@ -66,7 +66,7 @@ public abstract class CookieHandler {
|
||||
* there is no system-wide cookie handler currently set.
|
||||
* @throws SecurityException
|
||||
* If a security manager has been installed and it denies
|
||||
* {@link NetPermission}<tt>("getCookieHandler")</tt>
|
||||
* {@link NetPermission}{@code ("getCookieHandler")}
|
||||
* @see #setDefault(CookieHandler)
|
||||
*/
|
||||
public synchronized static CookieHandler getDefault() {
|
||||
@ -83,10 +83,10 @@ public abstract class CookieHandler {
|
||||
* Note: non-standard http protocol handlers may ignore this setting.
|
||||
*
|
||||
* @param cHandler The HTTP cookie handler, or
|
||||
* <code>null</code> to unset.
|
||||
* {@code null} to unset.
|
||||
* @throws SecurityException
|
||||
* If a security manager has been installed and it denies
|
||||
* {@link NetPermission}<tt>("setCookieHandler")</tt>
|
||||
* {@link NetPermission}{@code ("setCookieHandler")}
|
||||
* @see #getDefault()
|
||||
*/
|
||||
public synchronized static void setDefault(CookieHandler cHandler) {
|
||||
@ -114,7 +114,7 @@ public abstract class CookieHandler {
|
||||
* called after all request headers related to choosing cookies
|
||||
* are added, and before the request is sent.</P>
|
||||
*
|
||||
* @param uri a <code>URI</code> representing the intended use for the
|
||||
* @param uri a {@code URI} representing the intended use for the
|
||||
* cookies
|
||||
* @param requestHeaders - a Map from request header
|
||||
* field names to lists of field values representing
|
||||
@ -136,7 +136,7 @@ public abstract class CookieHandler {
|
||||
* fields that are named Set-Cookie2, present in the response
|
||||
* headers into a cookie cache.
|
||||
*
|
||||
* @param uri a <code>URI</code> where the cookies come from
|
||||
* @param uri a {@code URI} where the cookies come from
|
||||
* @param responseHeaders an immutable map from field names to
|
||||
* lists of field values representing the response
|
||||
* header fields returned
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 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
|
||||
@ -131,7 +131,7 @@ public class CookieManager extends CookieHandler
|
||||
*
|
||||
* <p>This constructor will create new cookie manager with default
|
||||
* cookie store and accept policy. The effect is same as
|
||||
* <tt>CookieManager(null, null)</tt>.
|
||||
* {@code CookieManager(null, null)}.
|
||||
*/
|
||||
public CookieManager() {
|
||||
this(null, null);
|
||||
@ -141,12 +141,12 @@ public class CookieManager extends CookieHandler
|
||||
/**
|
||||
* Create a new cookie manager with specified cookie store and cookie policy.
|
||||
*
|
||||
* @param store a <tt>CookieStore</tt> to be used by cookie manager.
|
||||
* if <tt>null</tt>, cookie manager will use a default one,
|
||||
* @param store a {@code CookieStore} to be used by cookie manager.
|
||||
* if {@code null}, cookie manager will use a default one,
|
||||
* which is an in-memory CookieStore implmentation.
|
||||
* @param cookiePolicy a <tt>CookiePolicy</tt> instance
|
||||
* @param cookiePolicy a {@code CookiePolicy} instance
|
||||
* to be used by cookie manager as policy callback.
|
||||
* if <tt>null</tt>, ACCEPT_ORIGINAL_SERVER will
|
||||
* if {@code null}, ACCEPT_ORIGINAL_SERVER will
|
||||
* be used.
|
||||
*/
|
||||
public CookieManager(CookieStore store,
|
||||
@ -170,11 +170,11 @@ public class CookieManager extends CookieHandler
|
||||
/**
|
||||
* To set the cookie policy of this cookie manager.
|
||||
*
|
||||
* <p> A instance of <tt>CookieManager</tt> will have
|
||||
* <p> A instance of {@code CookieManager} will have
|
||||
* cookie policy ACCEPT_ORIGINAL_SERVER by default. Users always
|
||||
* can call this method to set another cookie policy.
|
||||
*
|
||||
* @param cookiePolicy the cookie policy. Can be <tt>null</tt>, which
|
||||
* @param cookiePolicy the cookie policy. Can be {@code null}, which
|
||||
* has no effects on current cookie policy.
|
||||
*/
|
||||
public void setCookiePolicy(CookiePolicy cookiePolicy) {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 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
|
||||
@ -71,8 +71,8 @@ public interface CookiePolicy {
|
||||
*
|
||||
* @param uri the URI to consult accept policy with
|
||||
* @param cookie the HttpCookie object in question
|
||||
* @return <tt>true</tt> if this cookie should be accepted;
|
||||
* otherwise, <tt>false</tt>
|
||||
* @return {@code true} if this cookie should be accepted;
|
||||
* otherwise, {@code false}
|
||||
*/
|
||||
public boolean shouldAccept(URI uri, HttpCookie cookie);
|
||||
}
|
||||
|
||||
@ -32,8 +32,8 @@ import java.util.Map;
|
||||
* A CookieStore object represents a storage for cookie. Can store and retrieve
|
||||
* cookies.
|
||||
*
|
||||
* <p>{@link CookieManager} will call <tt>CookieStore.add</tt> to save cookies
|
||||
* for every incoming HTTP response, and call <tt>CookieStore.get</tt> to
|
||||
* <p>{@link CookieManager} will call {@code CookieStore.add} to save cookies
|
||||
* for every incoming HTTP response, and call {@code CookieStore.get} to
|
||||
* retrieve cookie for every outgoing HTTP request. A CookieStore
|
||||
* is responsible for removing HttpCookie instances which have expired.
|
||||
*
|
||||
@ -55,11 +55,11 @@ public interface CookieStore {
|
||||
* then it is replaced with the new one.
|
||||
*
|
||||
* @param uri the uri this cookie associated with.
|
||||
* if <tt>null</tt>, this cookie will not be associated
|
||||
* if {@code null}, this cookie will not be associated
|
||||
* with an URI
|
||||
* @param cookie the cookie to store
|
||||
*
|
||||
* @throws NullPointerException if <tt>cookie</tt> is <tt>null</tt>
|
||||
* @throws NullPointerException if {@code cookie} is {@code null}
|
||||
*
|
||||
* @see #get
|
||||
*
|
||||
@ -77,7 +77,7 @@ public interface CookieStore {
|
||||
*
|
||||
* @param uri the uri associated with the cookies to be returned
|
||||
*
|
||||
* @throws NullPointerException if <tt>uri</tt> is <tt>null</tt>
|
||||
* @throws NullPointerException if {@code uri} is {@code null}
|
||||
*
|
||||
* @see #add
|
||||
*
|
||||
@ -108,14 +108,14 @@ public interface CookieStore {
|
||||
* Remove a cookie from store.
|
||||
*
|
||||
* @param uri the uri this cookie associated with.
|
||||
* if <tt>null</tt>, the cookie to be removed is not associated
|
||||
* with an URI when added; if not <tt>null</tt>, the cookie
|
||||
* if {@code null}, the cookie to be removed is not associated
|
||||
* with an URI when added; if not {@code null}, the cookie
|
||||
* to be removed is associated with the given URI when added.
|
||||
* @param cookie the cookie to remove
|
||||
*
|
||||
* @return <tt>true</tt> if this store contained the specified cookie
|
||||
* @return {@code true} if this store contained the specified cookie
|
||||
*
|
||||
* @throws NullPointerException if <tt>cookie</tt> is <tt>null</tt>
|
||||
* @throws NullPointerException if {@code cookie} is {@code null}
|
||||
*/
|
||||
public boolean remove(URI uri, HttpCookie cookie);
|
||||
|
||||
@ -123,7 +123,7 @@ public interface CookieStore {
|
||||
/**
|
||||
* Remove all cookies in this cookie store.
|
||||
*
|
||||
* @return <tt>true</tt> if this store changed as a result of the call
|
||||
* @return {@code true} if this store changed as a result of the call
|
||||
*/
|
||||
public boolean removeAll();
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 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
|
||||
@ -68,11 +68,11 @@ class DatagramPacket {
|
||||
int port;
|
||||
|
||||
/**
|
||||
* Constructs a <code>DatagramPacket</code> for receiving packets of
|
||||
* length <code>length</code>, specifying an offset into the buffer.
|
||||
* Constructs a {@code DatagramPacket} for receiving packets of
|
||||
* length {@code length}, specifying an offset into the buffer.
|
||||
* <p>
|
||||
* The <code>length</code> argument must be less than or equal to
|
||||
* <code>buf.length</code>.
|
||||
* The {@code length} argument must be less than or equal to
|
||||
* {@code buf.length}.
|
||||
*
|
||||
* @param buf buffer for holding the incoming datagram.
|
||||
* @param offset the offset for the buffer
|
||||
@ -87,11 +87,11 @@ class DatagramPacket {
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a <code>DatagramPacket</code> for receiving packets of
|
||||
* length <code>length</code>.
|
||||
* Constructs a {@code DatagramPacket} for receiving packets of
|
||||
* length {@code length}.
|
||||
* <p>
|
||||
* The <code>length</code> argument must be less than or equal to
|
||||
* <code>buf.length</code>.
|
||||
* The {@code length} argument must be less than or equal to
|
||||
* {@code buf.length}.
|
||||
*
|
||||
* @param buf buffer for holding the incoming datagram.
|
||||
* @param length the number of bytes to read.
|
||||
@ -102,10 +102,10 @@ class DatagramPacket {
|
||||
|
||||
/**
|
||||
* Constructs a datagram packet for sending packets of length
|
||||
* <code>length</code> with offset <code>ioffset</code>to the
|
||||
* {@code length} with offset {@code ioffset}to the
|
||||
* specified port number on the specified host. The
|
||||
* <code>length</code> argument must be less than or equal to
|
||||
* <code>buf.length</code>.
|
||||
* {@code length} argument must be less than or equal to
|
||||
* {@code buf.length}.
|
||||
*
|
||||
* @param buf the packet data.
|
||||
* @param offset the packet data offset.
|
||||
@ -125,10 +125,10 @@ class DatagramPacket {
|
||||
|
||||
/**
|
||||
* Constructs a datagram packet for sending packets of length
|
||||
* <code>length</code> with offset <code>ioffset</code>to the
|
||||
* {@code length} with offset {@code ioffset}to the
|
||||
* specified port number on the specified host. The
|
||||
* <code>length</code> argument must be less than or equal to
|
||||
* <code>buf.length</code>.
|
||||
* {@code length} argument must be less than or equal to
|
||||
* {@code buf.length}.
|
||||
*
|
||||
* @param buf the packet data.
|
||||
* @param offset the packet data offset.
|
||||
@ -147,9 +147,9 @@ class DatagramPacket {
|
||||
|
||||
/**
|
||||
* Constructs a datagram packet for sending packets of length
|
||||
* <code>length</code> to the specified port number on the specified
|
||||
* host. The <code>length</code> argument must be less than or equal
|
||||
* to <code>buf.length</code>.
|
||||
* {@code length} to the specified port number on the specified
|
||||
* host. The {@code length} argument must be less than or equal
|
||||
* to {@code buf.length}.
|
||||
*
|
||||
* @param buf the packet data.
|
||||
* @param length the packet length.
|
||||
@ -164,9 +164,9 @@ class DatagramPacket {
|
||||
|
||||
/**
|
||||
* Constructs a datagram packet for sending packets of length
|
||||
* <code>length</code> to the specified port number on the specified
|
||||
* host. The <code>length</code> argument must be less than or equal
|
||||
* to <code>buf.length</code>.
|
||||
* {@code length} to the specified port number on the specified
|
||||
* host. The {@code length} argument must be less than or equal
|
||||
* to {@code buf.length}.
|
||||
*
|
||||
* @param buf the packet data.
|
||||
* @param length the packet length.
|
||||
@ -207,8 +207,8 @@ class DatagramPacket {
|
||||
|
||||
/**
|
||||
* Returns the data buffer. The data received or the data to be sent
|
||||
* starts from the <code>offset</code> in the buffer,
|
||||
* and runs for <code>length</code> long.
|
||||
* starts from the {@code offset} in the buffer,
|
||||
* and runs for {@code length} long.
|
||||
*
|
||||
* @return the buffer used to receive or send data
|
||||
* @see #setData(byte[], int, int)
|
||||
@ -277,7 +277,7 @@ class DatagramPacket {
|
||||
/**
|
||||
* Sets the IP address of the machine to which this datagram
|
||||
* is being sent.
|
||||
* @param iaddr the <code>InetAddress</code>
|
||||
* @param iaddr the {@code InetAddress}
|
||||
* @since JDK1.1
|
||||
* @see #getAddress()
|
||||
*/
|
||||
@ -303,7 +303,7 @@ class DatagramPacket {
|
||||
* Sets the SocketAddress (usually IP address + port number) of the remote
|
||||
* host to which this datagram is being sent.
|
||||
*
|
||||
* @param address the <code>SocketAddress</code>
|
||||
* @param address the {@code SocketAddress}
|
||||
* @throws IllegalArgumentException if address is null or is a
|
||||
* SocketAddress subclass not supported by this socket
|
||||
*
|
||||
@ -324,7 +324,7 @@ class DatagramPacket {
|
||||
* Gets the SocketAddress (usually IP address + port number) of the remote
|
||||
* host that this packet is being sent to or is coming from.
|
||||
*
|
||||
* @return the <code>SocketAddress</code>
|
||||
* @return the {@code SocketAddress}
|
||||
* @since 1.4
|
||||
* @see #setSocketAddress
|
||||
*/
|
||||
@ -335,7 +335,7 @@ class DatagramPacket {
|
||||
/**
|
||||
* Set the data buffer for this packet. With the offset of
|
||||
* this DatagramPacket set to 0, and the length set to
|
||||
* the length of <code>buf</code>.
|
||||
* the length of {@code buf}.
|
||||
*
|
||||
* @param buf the buffer to set for this packet.
|
||||
*
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 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
|
||||
@ -47,14 +47,14 @@ import java.security.PrivilegedExceptionAction;
|
||||
* a DatagramSocket is bound to a more specific address.
|
||||
* <p>
|
||||
* Example:
|
||||
* <code>
|
||||
* {@code
|
||||
* DatagramSocket s = new DatagramSocket(null);
|
||||
* s.bind(new InetSocketAddress(8888));
|
||||
* </code>
|
||||
* }
|
||||
* Which is equivalent to:
|
||||
* <code>
|
||||
* {@code
|
||||
* DatagramSocket s = new DatagramSocket(8888);
|
||||
* </code>
|
||||
* }
|
||||
* Both cases will create a DatagramSocket able to receive broadcasts on
|
||||
* UDP port 8888.
|
||||
*
|
||||
@ -161,14 +161,14 @@ class DatagramSocket implements java.io.Closeable {
|
||||
* an IP address chosen by the kernel.
|
||||
*
|
||||
* <p>If there is a security manager,
|
||||
* its <code>checkListen</code> method is first called
|
||||
* its {@code checkListen} method is first called
|
||||
* with 0 as its argument to ensure the operation is allowed.
|
||||
* This could result in a SecurityException.
|
||||
*
|
||||
* @exception SocketException if the socket could not be opened,
|
||||
* or the socket could not bind to the specified local port.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkListen</code> method doesn't allow the operation.
|
||||
* {@code checkListen} method doesn't allow the operation.
|
||||
*
|
||||
* @see SecurityManager#checkListen
|
||||
*/
|
||||
@ -195,21 +195,21 @@ class DatagramSocket implements java.io.Closeable {
|
||||
* Creates a datagram socket, bound to the specified local
|
||||
* socket address.
|
||||
* <p>
|
||||
* If, if the address is <code>null</code>, creates an unbound socket.
|
||||
* If, if the address is {@code null}, creates an unbound socket.
|
||||
* <p>
|
||||
* <p>If there is a security manager,
|
||||
* its <code>checkListen</code> method is first called
|
||||
* its {@code checkListen} method is first called
|
||||
* with the port from the socket address
|
||||
* as its argument to ensure the operation is allowed.
|
||||
* This could result in a SecurityException.
|
||||
*
|
||||
* @param bindaddr local socket address to bind, or <code>null</code>
|
||||
* @param bindaddr local socket address to bind, or {@code null}
|
||||
* for an unbound socket.
|
||||
*
|
||||
* @exception SocketException if the socket could not be opened,
|
||||
* or the socket could not bind to the specified local port.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkListen</code> method doesn't allow the operation.
|
||||
* {@code checkListen} method doesn't allow the operation.
|
||||
*
|
||||
* @see SecurityManager#checkListen
|
||||
* @since 1.4
|
||||
@ -234,8 +234,8 @@ class DatagramSocket implements java.io.Closeable {
|
||||
* an IP address chosen by the kernel.
|
||||
*
|
||||
* <p>If there is a security manager,
|
||||
* its <code>checkListen</code> method is first called
|
||||
* with the <code>port</code> argument
|
||||
* its {@code checkListen} method is first called
|
||||
* with the {@code port} argument
|
||||
* as its argument to ensure the operation is allowed.
|
||||
* This could result in a SecurityException.
|
||||
*
|
||||
@ -243,7 +243,7 @@ class DatagramSocket implements java.io.Closeable {
|
||||
* @exception SocketException if the socket could not be opened,
|
||||
* or the socket could not bind to the specified local port.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkListen</code> method doesn't allow the operation.
|
||||
* {@code checkListen} method doesn't allow the operation.
|
||||
*
|
||||
* @see SecurityManager#checkListen
|
||||
*/
|
||||
@ -259,8 +259,8 @@ class DatagramSocket implements java.io.Closeable {
|
||||
* an IP address chosen by the kernel.
|
||||
*
|
||||
* <p>If there is a security manager,
|
||||
* its <code>checkListen</code> method is first called
|
||||
* with the <code>port</code> argument
|
||||
* its {@code checkListen} method is first called
|
||||
* with the {@code port} argument
|
||||
* as its argument to ensure the operation is allowed.
|
||||
* This could result in a SecurityException.
|
||||
*
|
||||
@ -270,7 +270,7 @@ class DatagramSocket implements java.io.Closeable {
|
||||
* @exception SocketException if the socket could not be opened,
|
||||
* or the socket could not bind to the specified local port.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkListen</code> method doesn't allow the operation.
|
||||
* {@code checkListen} method doesn't allow the operation.
|
||||
*
|
||||
* @see SecurityManager#checkListen
|
||||
* @since JDK1.1
|
||||
@ -319,10 +319,10 @@ class DatagramSocket implements java.io.Closeable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the <code>DatagramSocketImpl</code> attached to this socket,
|
||||
* Get the {@code DatagramSocketImpl} attached to this socket,
|
||||
* creating it if necessary.
|
||||
*
|
||||
* @return the <code>DatagramSocketImpl</code> attached to that
|
||||
* @return the {@code DatagramSocketImpl} attached to that
|
||||
* DatagramSocket
|
||||
* @throws SocketException if creation fails.
|
||||
* @since 1.4
|
||||
@ -336,14 +336,14 @@ class DatagramSocket implements java.io.Closeable {
|
||||
/**
|
||||
* Binds this DatagramSocket to a specific address and port.
|
||||
* <p>
|
||||
* If the address is <code>null</code>, then the system will pick up
|
||||
* If the address is {@code null}, then the system will pick up
|
||||
* an ephemeral port and a valid local address to bind the socket.
|
||||
*<p>
|
||||
* @param addr The address and port to bind to.
|
||||
* @throws SocketException if any error happens during the bind, or if the
|
||||
* socket is already bound.
|
||||
* @throws SecurityException if a security manager exists and its
|
||||
* <code>checkListen</code> method doesn't allow the operation.
|
||||
* {@code checkListen} method doesn't allow the operation.
|
||||
* @throws IllegalArgumentException if addr is a SocketAddress subclass
|
||||
* not supported by this socket.
|
||||
* @since 1.4
|
||||
@ -496,7 +496,7 @@ class DatagramSocket implements java.io.Closeable {
|
||||
* Returns the binding state of the socket.
|
||||
* <p>
|
||||
* If the socket was bound prior to being {@link #close closed},
|
||||
* then this method will continue to return <code>true</code>
|
||||
* then this method will continue to return {@code true}
|
||||
* after the socket is closed.
|
||||
*
|
||||
* @return true if the socket successfully bound to an address
|
||||
@ -510,7 +510,7 @@ class DatagramSocket implements java.io.Closeable {
|
||||
* Returns the connection state of the socket.
|
||||
* <p>
|
||||
* If the socket was connected prior to being {@link #close closed},
|
||||
* then this method will continue to return <code>true</code>
|
||||
* then this method will continue to return {@code true}
|
||||
* after the socket is closed.
|
||||
*
|
||||
* @return true if the socket successfully connected to a server
|
||||
@ -522,7 +522,7 @@ class DatagramSocket implements java.io.Closeable {
|
||||
|
||||
/**
|
||||
* Returns the address to which this socket is connected. Returns
|
||||
* <code>null</code> if the socket is not connected.
|
||||
* {@code null} if the socket is not connected.
|
||||
* <p>
|
||||
* If the socket was connected prior to being {@link #close closed},
|
||||
* then this method will continue to return the connected address
|
||||
@ -536,7 +536,7 @@ class DatagramSocket implements java.io.Closeable {
|
||||
|
||||
/**
|
||||
* Returns the port number to which this socket is connected.
|
||||
* Returns <code>-1</code> if the socket is not connected.
|
||||
* Returns {@code -1} if the socket is not connected.
|
||||
* <p>
|
||||
* If the socket was connected prior to being {@link #close closed},
|
||||
* then this method will continue to return the connected port number
|
||||
@ -550,14 +550,14 @@ class DatagramSocket implements java.io.Closeable {
|
||||
|
||||
/**
|
||||
* Returns the address of the endpoint this socket is connected to, or
|
||||
* <code>null</code> if it is unconnected.
|
||||
* {@code null} if it is unconnected.
|
||||
* <p>
|
||||
* If the socket was connected prior to being {@link #close closed},
|
||||
* then this method will continue to return the connected address
|
||||
* after the socket is closed.
|
||||
*
|
||||
* @return a <code>SocketAddress</code> representing the remote
|
||||
* endpoint of this socket, or <code>null</code> if it is
|
||||
* @return a {@code SocketAddress} representing the remote
|
||||
* endpoint of this socket, or {@code null} if it is
|
||||
* not connected yet.
|
||||
* @see #getInetAddress()
|
||||
* @see #getPort()
|
||||
@ -573,8 +573,8 @@ class DatagramSocket implements java.io.Closeable {
|
||||
/**
|
||||
* Returns the address of the endpoint this socket is bound to.
|
||||
*
|
||||
* @return a <code>SocketAddress</code> representing the local endpoint of this
|
||||
* socket, or <code>null</code> if it is closed or not bound yet.
|
||||
* @return a {@code SocketAddress} representing the local endpoint of this
|
||||
* socket, or {@code null} if it is closed or not bound yet.
|
||||
* @see #getLocalAddress()
|
||||
* @see #getLocalPort()
|
||||
* @see #bind(SocketAddress)
|
||||
@ -591,28 +591,28 @@ class DatagramSocket implements java.io.Closeable {
|
||||
|
||||
/**
|
||||
* Sends a datagram packet from this socket. The
|
||||
* <code>DatagramPacket</code> includes information indicating the
|
||||
* {@code DatagramPacket} includes information indicating the
|
||||
* data to be sent, its length, the IP address of the remote host,
|
||||
* and the port number on the remote host.
|
||||
*
|
||||
* <p>If there is a security manager, and the socket is not currently
|
||||
* connected to a remote address, this method first performs some
|
||||
* security checks. First, if <code>p.getAddress().isMulticastAddress()</code>
|
||||
* security checks. First, if {@code p.getAddress().isMulticastAddress()}
|
||||
* is true, this method calls the
|
||||
* security manager's <code>checkMulticast</code> method
|
||||
* with <code>p.getAddress()</code> as its argument.
|
||||
* security manager's {@code checkMulticast} method
|
||||
* with {@code p.getAddress()} as its argument.
|
||||
* If the evaluation of that expression is false,
|
||||
* this method instead calls the security manager's
|
||||
* <code>checkConnect</code> method with arguments
|
||||
* <code>p.getAddress().getHostAddress()</code> and
|
||||
* <code>p.getPort()</code>. Each call to a security manager method
|
||||
* {@code checkConnect} method with arguments
|
||||
* {@code p.getAddress().getHostAddress()} and
|
||||
* {@code p.getPort()}. Each call to a security manager method
|
||||
* could result in a SecurityException if the operation is not allowed.
|
||||
*
|
||||
* @param p the <code>DatagramPacket</code> to be sent.
|
||||
* @param p the {@code DatagramPacket} to be sent.
|
||||
*
|
||||
* @exception IOException if an I/O error occurs.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkMulticast</code> or <code>checkConnect</code>
|
||||
* {@code checkMulticast} or {@code checkConnect}
|
||||
* method doesn't allow the send.
|
||||
* @exception PortUnreachableException may be thrown if the socket is connected
|
||||
* to a currently unreachable destination. Note, there is no
|
||||
@ -674,20 +674,20 @@ class DatagramSocket implements java.io.Closeable {
|
||||
|
||||
/**
|
||||
* Receives a datagram packet from this socket. When this method
|
||||
* returns, the <code>DatagramPacket</code>'s buffer is filled with
|
||||
* returns, the {@code DatagramPacket}'s buffer is filled with
|
||||
* the data received. The datagram packet also contains the sender's
|
||||
* IP address, and the port number on the sender's machine.
|
||||
* <p>
|
||||
* This method blocks until a datagram is received. The
|
||||
* <code>length</code> field of the datagram packet object contains
|
||||
* {@code length} field of the datagram packet object contains
|
||||
* the length of the received message. If the message is longer than
|
||||
* the packet's length, the message is truncated.
|
||||
* <p>
|
||||
* If there is a security manager, a packet cannot be received if the
|
||||
* security manager's <code>checkAccept</code> method
|
||||
* security manager's {@code checkAccept} method
|
||||
* does not allow it.
|
||||
*
|
||||
* @param p the <code>DatagramPacket</code> into which to place
|
||||
* @param p the {@code DatagramPacket} into which to place
|
||||
* the incoming data.
|
||||
* @exception IOException if an I/O error occurs.
|
||||
* @exception SocketTimeoutException if setSoTimeout was previously called
|
||||
@ -786,17 +786,17 @@ class DatagramSocket implements java.io.Closeable {
|
||||
* Gets the local address to which the socket is bound.
|
||||
*
|
||||
* <p>If there is a security manager, its
|
||||
* <code>checkConnect</code> method is first called
|
||||
* with the host address and <code>-1</code>
|
||||
* {@code checkConnect} method is first called
|
||||
* with the host address and {@code -1}
|
||||
* as its arguments to see if the operation is allowed.
|
||||
*
|
||||
* @see SecurityManager#checkConnect
|
||||
* @return the local address to which the socket is bound,
|
||||
* <code>null</code> if the socket is closed, or
|
||||
* an <code>InetAddress</code> representing
|
||||
* {@code null} if the socket is closed, or
|
||||
* an {@code InetAddress} representing
|
||||
* {@link InetAddress#isAnyLocalAddress wildcard}
|
||||
* address if either the socket is not bound, or
|
||||
* the security manager <code>checkConnect</code>
|
||||
* the security manager {@code checkConnect}
|
||||
* method does not allow the operation
|
||||
* @since 1.1
|
||||
*/
|
||||
@ -824,8 +824,8 @@ class DatagramSocket implements java.io.Closeable {
|
||||
* is bound.
|
||||
*
|
||||
* @return the port number on the local host to which this socket is bound,
|
||||
<code>-1</code> if the socket is closed, or
|
||||
<code>0</code> if it is not bound yet.
|
||||
{@code -1} if the socket is closed, or
|
||||
{@code 0} if it is not bound yet.
|
||||
*/
|
||||
public int getLocalPort() {
|
||||
if (isClosed())
|
||||
@ -883,7 +883,7 @@ class DatagramSocket implements java.io.Closeable {
|
||||
|
||||
/**
|
||||
* Sets the SO_SNDBUF option to the specified value for this
|
||||
* <tt>DatagramSocket</tt>. The SO_SNDBUF option is used by the
|
||||
* {@code DatagramSocket}. The SO_SNDBUF option is used by the
|
||||
* network implementation as a hint to size the underlying
|
||||
* network I/O buffers. The SO_SNDBUF setting may also be used
|
||||
* by the network implementation to determine the maximum size
|
||||
@ -897,7 +897,7 @@ class DatagramSocket implements java.io.Closeable {
|
||||
* is high.
|
||||
* <p>
|
||||
* Note: If {@link #send(DatagramPacket)} is used to send a
|
||||
* <code>DatagramPacket</code> that is larger than the setting
|
||||
* {@code DatagramPacket} that is larger than the setting
|
||||
* of SO_SNDBUF then it is implementation specific if the
|
||||
* packet is sent or discarded.
|
||||
*
|
||||
@ -921,10 +921,10 @@ class DatagramSocket implements java.io.Closeable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get value of the SO_SNDBUF option for this <tt>DatagramSocket</tt>, that is the
|
||||
* buffer size used by the platform for output on this <tt>DatagramSocket</tt>.
|
||||
* Get value of the SO_SNDBUF option for this {@code DatagramSocket}, that is the
|
||||
* buffer size used by the platform for output on this {@code DatagramSocket}.
|
||||
*
|
||||
* @return the value of the SO_SNDBUF option for this <tt>DatagramSocket</tt>
|
||||
* @return the value of the SO_SNDBUF option for this {@code DatagramSocket}
|
||||
* @exception SocketException if there is an error in
|
||||
* the underlying protocol, such as an UDP error.
|
||||
* @see #setSendBufferSize
|
||||
@ -942,7 +942,7 @@ class DatagramSocket implements java.io.Closeable {
|
||||
|
||||
/**
|
||||
* Sets the SO_RCVBUF option to the specified value for this
|
||||
* <tt>DatagramSocket</tt>. The SO_RCVBUF option is used by the
|
||||
* {@code DatagramSocket}. The SO_RCVBUF option is used by the
|
||||
* the network implementation as a hint to size the underlying
|
||||
* network I/O buffers. The SO_RCVBUF setting may also be used
|
||||
* by the network implementation to determine the maximum size
|
||||
@ -979,10 +979,10 @@ class DatagramSocket implements java.io.Closeable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get value of the SO_RCVBUF option for this <tt>DatagramSocket</tt>, that is the
|
||||
* buffer size used by the platform for input on this <tt>DatagramSocket</tt>.
|
||||
* Get value of the SO_RCVBUF option for this {@code DatagramSocket}, that is the
|
||||
* buffer size used by the platform for input on this {@code DatagramSocket}.
|
||||
*
|
||||
* @return the value of the SO_RCVBUF option for this <tt>DatagramSocket</tt>
|
||||
* @return the value of the SO_RCVBUF option for this {@code DatagramSocket}
|
||||
* @exception SocketException if there is an error in the underlying protocol, such as an UDP error.
|
||||
* @see #setReceiveBufferSize(int)
|
||||
*/
|
||||
@ -1005,26 +1005,26 @@ class DatagramSocket implements java.io.Closeable {
|
||||
* socket to the same socket address. This is typically for the
|
||||
* purpose of receiving multicast packets
|
||||
* (See {@link java.net.MulticastSocket}). The
|
||||
* <tt>SO_REUSEADDR</tt> socket option allows multiple
|
||||
* {@code SO_REUSEADDR} socket option allows multiple
|
||||
* sockets to be bound to the same socket address if the
|
||||
* <tt>SO_REUSEADDR</tt> socket option is enabled prior
|
||||
* {@code SO_REUSEADDR} socket option is enabled prior
|
||||
* to binding the socket using {@link #bind(SocketAddress)}.
|
||||
* <p>
|
||||
* Note: This functionality is not supported by all existing platforms,
|
||||
* so it is implementation specific whether this option will be ignored
|
||||
* or not. However, if it is not supported then
|
||||
* {@link #getReuseAddress()} will always return <code>false</code>.
|
||||
* {@link #getReuseAddress()} will always return {@code false}.
|
||||
* <p>
|
||||
* When a <tt>DatagramSocket</tt> is created the initial setting
|
||||
* of <tt>SO_REUSEADDR</tt> is disabled.
|
||||
* When a {@code DatagramSocket} is created the initial setting
|
||||
* of {@code SO_REUSEADDR} is disabled.
|
||||
* <p>
|
||||
* The behaviour when <tt>SO_REUSEADDR</tt> is enabled or
|
||||
* The behaviour when {@code SO_REUSEADDR} is enabled or
|
||||
* disabled after a socket is bound (See {@link #isBound()})
|
||||
* is not defined.
|
||||
*
|
||||
* @param on whether to enable or disable the
|
||||
* @exception SocketException if an error occurs enabling or
|
||||
* disabling the <tt>SO_RESUEADDR</tt> socket option,
|
||||
* disabling the {@code SO_RESUEADDR} socket option,
|
||||
* or the socket is closed.
|
||||
* @since 1.4
|
||||
* @see #getReuseAddress()
|
||||
@ -1045,7 +1045,7 @@ class DatagramSocket implements java.io.Closeable {
|
||||
/**
|
||||
* Tests if SO_REUSEADDR is enabled.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating whether or not SO_REUSEADDR is enabled.
|
||||
* @return a {@code boolean} indicating whether or not SO_REUSEADDR is enabled.
|
||||
* @exception SocketException if there is an error
|
||||
* in the underlying protocol, such as an UDP error.
|
||||
* @since 1.4
|
||||
@ -1083,7 +1083,7 @@ class DatagramSocket implements java.io.Closeable {
|
||||
|
||||
/**
|
||||
* Tests if SO_BROADCAST is enabled.
|
||||
* @return a <code>boolean</code> indicating whether or not SO_BROADCAST is enabled.
|
||||
* @return a {@code boolean} indicating whether or not SO_BROADCAST is enabled.
|
||||
* @exception SocketException if there is an error
|
||||
* in the underlying protocol, such as an UDP error.
|
||||
* @since 1.4
|
||||
@ -1105,7 +1105,7 @@ class DatagramSocket implements java.io.Closeable {
|
||||
* 255} or an IllegalArgumentException will be thrown.
|
||||
* <p>Notes:
|
||||
* <p>For Internet Protocol v4 the value consists of an
|
||||
* <code>integer</code>, the least significant 8 bits of which
|
||||
* {@code integer}, the least significant 8 bits of which
|
||||
* represent the value of the TOS octet in IP packets sent by
|
||||
* the socket.
|
||||
* RFC 1349 defines the TOS values as follows:
|
||||
@ -1123,10 +1123,10 @@ class DatagramSocket implements java.io.Closeable {
|
||||
* SocketException indicating that the operation is not
|
||||
* permitted.
|
||||
* <p>
|
||||
* for Internet Protocol v6 <code>tc</code> is the value that
|
||||
* for Internet Protocol v6 {@code tc} is the value that
|
||||
* would be placed into the sin6_flowinfo field of the IP header.
|
||||
*
|
||||
* @param tc an <code>int</code> value for the bitset.
|
||||
* @param tc an {@code int} value for the bitset.
|
||||
* @throws SocketException if there is an error setting the
|
||||
* traffic class or type-of-service
|
||||
* @since 1.4
|
||||
@ -1205,7 +1205,7 @@ class DatagramSocket implements java.io.Closeable {
|
||||
* DatagramChannel.open} method.
|
||||
*
|
||||
* @return the datagram channel associated with this datagram socket,
|
||||
* or <tt>null</tt> if this socket was not created for a channel
|
||||
* or {@code null} if this socket was not created for a channel
|
||||
*
|
||||
* @since 1.4
|
||||
* @spec JSR-51
|
||||
@ -1224,14 +1224,14 @@ class DatagramSocket implements java.io.Closeable {
|
||||
* application. The factory can be specified only once.
|
||||
* <p>
|
||||
* When an application creates a new datagram socket, the socket
|
||||
* implementation factory's <code>createDatagramSocketImpl</code> method is
|
||||
* implementation factory's {@code createDatagramSocketImpl} method is
|
||||
* called to create the actual datagram socket implementation.
|
||||
* <p>
|
||||
* Passing <code>null</code> to the method is a no-op unless the factory
|
||||
* Passing {@code null} to the method is a no-op unless the factory
|
||||
* was already set.
|
||||
*
|
||||
* <p>If there is a security manager, this method first calls
|
||||
* the security manager's <code>checkSetFactory</code> method
|
||||
* the security manager's {@code checkSetFactory} method
|
||||
* to ensure the operation is allowed.
|
||||
* This could result in a SecurityException.
|
||||
*
|
||||
@ -1240,7 +1240,7 @@ class DatagramSocket implements java.io.Closeable {
|
||||
* datagram socket factory.
|
||||
* @exception SocketException if the factory is already defined.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkSetFactory</code> method doesn't allow the
|
||||
* {@code checkSetFactory} method doesn't allow the
|
||||
operation.
|
||||
* @see
|
||||
java.net.DatagramSocketImplFactory#createDatagramSocketImpl()
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1996, 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
|
||||
@ -101,7 +101,7 @@ public abstract class DatagramSocketImpl implements SocketOptions {
|
||||
protected void disconnect() {}
|
||||
|
||||
/**
|
||||
* Peek at the packet to see who it is from. Updates the specified <code>InetAddress</code>
|
||||
* Peek at the packet to see who it is from. Updates the specified {@code InetAddress}
|
||||
* to the address which the packet came from.
|
||||
* @param i an InetAddress object
|
||||
* @return the port number which the packet came from.
|
||||
@ -114,7 +114,7 @@ public abstract class DatagramSocketImpl implements SocketOptions {
|
||||
|
||||
/**
|
||||
* Peek at the packet to see who it is from. The data is copied into the specified
|
||||
* <code>DatagramPacket</code>. The data is returned,
|
||||
* {@code DatagramPacket}. The data is returned,
|
||||
* but not consumed, so that a subsequent peekData/receive operation
|
||||
* will see the same data.
|
||||
* @param p the Packet Received.
|
||||
@ -163,7 +163,7 @@ public abstract class DatagramSocketImpl implements SocketOptions {
|
||||
|
||||
/**
|
||||
* Set the TTL (time-to-live) option.
|
||||
* @param ttl an <tt>int</tt> specifying the time-to-live value
|
||||
* @param ttl an {@code int} specifying the time-to-live value
|
||||
* @exception IOException if an I/O exception occurs
|
||||
* while setting the time-to-live option.
|
||||
* @see #getTimeToLive()
|
||||
@ -174,7 +174,7 @@ public abstract class DatagramSocketImpl implements SocketOptions {
|
||||
* Retrieve the TTL (time-to-live) option.
|
||||
* @exception IOException if an I/O exception occurs
|
||||
* while retrieving the time-to-live option
|
||||
* @return an <tt>int</tt> representing the time-to-live value
|
||||
* @return an {@code int} representing the time-to-live value
|
||||
* @see #setTimeToLive(int)
|
||||
*/
|
||||
protected abstract int getTimeToLive() throws IOException;
|
||||
@ -227,7 +227,7 @@ public abstract class DatagramSocketImpl implements SocketOptions {
|
||||
|
||||
/**
|
||||
* Gets the local port.
|
||||
* @return an <tt>int</tt> representing the local port value
|
||||
* @return an {@code int} representing the local port value
|
||||
*/
|
||||
protected int getLocalPort() {
|
||||
return localPort;
|
||||
@ -235,7 +235,7 @@ public abstract class DatagramSocketImpl implements SocketOptions {
|
||||
|
||||
/**
|
||||
* Gets the datagram socket file descriptor.
|
||||
* @return a <tt>FileDescriptor</tt> object representing the datagram socket
|
||||
* @return a {@code FileDescriptor} object representing the datagram socket
|
||||
* file descriptor
|
||||
*/
|
||||
protected FileDescriptor getFileDescriptor() {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1999, 2002, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1999, 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
|
||||
@ -27,7 +27,7 @@ package java.net;
|
||||
|
||||
/**
|
||||
* This interface defines a factory for datagram socket implementations. It
|
||||
* is used by the classes <code>DatagramSocket</code> to create actual socket
|
||||
* is used by the classes {@code DatagramSocket} to create actual socket
|
||||
* implementations.
|
||||
*
|
||||
* @author Yingxian Wang
|
||||
@ -37,9 +37,9 @@ package java.net;
|
||||
public
|
||||
interface DatagramSocketImplFactory {
|
||||
/**
|
||||
* Creates a new <code>DatagramSocketImpl</code> instance.
|
||||
* Creates a new {@code DatagramSocketImpl} instance.
|
||||
*
|
||||
* @return a new instance of <code>DatagramSocketImpl</code>.
|
||||
* @return a new instance of {@code DatagramSocketImpl}.
|
||||
* @see java.net.DatagramSocketImpl
|
||||
*/
|
||||
DatagramSocketImpl createDatagramSocketImpl();
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1996, 1999, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1996, 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
|
||||
@ -37,7 +37,7 @@ public interface FileNameMap {
|
||||
/**
|
||||
* Gets the MIME type for the specified file name.
|
||||
* @param fileName the specified file name
|
||||
* @return a <code>String</code> indicating the MIME
|
||||
* @return a {@code String} indicating the MIME
|
||||
* type for the specified file name.
|
||||
*/
|
||||
public String getContentTypeFor(String fileName);
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 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
|
||||
@ -470,7 +470,7 @@ public final class HttpCookie implements Cloneable {
|
||||
* protocol.
|
||||
*
|
||||
* @return {@code false} if the cookie can be sent over any standard
|
||||
* protocol; otherwise, <code>true</code>
|
||||
* protocol; otherwise, {@code true}
|
||||
*
|
||||
* @see #setSecure
|
||||
*/
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2004, 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
|
||||
@ -43,7 +43,7 @@ class HttpRetryException extends IOException {
|
||||
private String location;
|
||||
|
||||
/**
|
||||
* Constructs a new <code>HttpRetryException</code> from the
|
||||
* Constructs a new {@code HttpRetryException} from the
|
||||
* specified response code and exception detail message
|
||||
*
|
||||
* @param detail the detail message.
|
||||
@ -55,7 +55,7 @@ class HttpRetryException extends IOException {
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new <code>HttpRetryException</code> with detail message
|
||||
* Constructs a new {@code HttpRetryException} with detail message
|
||||
* responseCode and the contents of the Location response header field.
|
||||
*
|
||||
* @param detail the detail message.
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1996, 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
|
||||
@ -76,14 +76,14 @@ abstract public class HttpURLConnection extends URLConnection {
|
||||
|
||||
/**
|
||||
* The chunk-length when using chunked encoding streaming mode for output.
|
||||
* A value of <code>-1</code> means chunked encoding is disabled for output.
|
||||
* A value of {@code -1} means chunked encoding is disabled for output.
|
||||
* @since 1.5
|
||||
*/
|
||||
protected int chunkLength = -1;
|
||||
|
||||
/**
|
||||
* The fixed content-length when using fixed-length streaming mode.
|
||||
* A value of <code>-1</code> means fixed-length streaming mode is disabled
|
||||
* A value of {@code -1} means fixed-length streaming mode is disabled
|
||||
* for output.
|
||||
*
|
||||
* <P> <B>NOTE:</B> {@link #fixedContentLengthLong} is recommended instead
|
||||
@ -103,15 +103,15 @@ abstract public class HttpURLConnection extends URLConnection {
|
||||
protected long fixedContentLengthLong = -1;
|
||||
|
||||
/**
|
||||
* Returns the key for the <code>n</code><sup>th</sup> header field.
|
||||
* Some implementations may treat the <code>0</code><sup>th</sup>
|
||||
* Returns the key for the {@code n}<sup>th</sup> header field.
|
||||
* Some implementations may treat the {@code 0}<sup>th</sup>
|
||||
* header field as special, i.e. as the status line returned by the HTTP
|
||||
* server. In this case, {@link #getHeaderField(int) getHeaderField(0)} returns the status
|
||||
* line, but <code>getHeaderFieldKey(0)</code> returns null.
|
||||
* line, but {@code getHeaderFieldKey(0)} returns null.
|
||||
*
|
||||
* @param n an index, where {@code n >=0}.
|
||||
* @return the key for the <code>n</code><sup>th</sup> header field,
|
||||
* or <code>null</code> if the key does not exist.
|
||||
* @return the key for the {@code n}<sup>th</sup> header field,
|
||||
* or {@code null} if the key does not exist.
|
||||
*/
|
||||
public String getHeaderFieldKey (int n) {
|
||||
return null;
|
||||
@ -251,8 +251,8 @@ abstract public class HttpURLConnection extends URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value for the <code>n</code><sup>th</sup> header field.
|
||||
* Some implementations may treat the <code>0</code><sup>th</sup>
|
||||
* Returns the value for the {@code n}<sup>th</sup> header field.
|
||||
* Some implementations may treat the {@code 0}<sup>th</sup>
|
||||
* header field as special, i.e. as the status line returned by the HTTP
|
||||
* server.
|
||||
* <p>
|
||||
@ -261,8 +261,8 @@ abstract public class HttpURLConnection extends URLConnection {
|
||||
* the headers in the message.
|
||||
*
|
||||
* @param n an index, where {@code n>=0}.
|
||||
* @return the value of the <code>n</code><sup>th</sup> header field,
|
||||
* or <code>null</code> if the value does not exist.
|
||||
* @return the value of the {@code n}<sup>th</sup> header field,
|
||||
* or {@code null} if the value does not exist.
|
||||
* @see java.net.HttpURLConnection#getHeaderFieldKey(int)
|
||||
*/
|
||||
public String getHeaderField(int n) {
|
||||
@ -270,7 +270,7 @@ abstract public class HttpURLConnection extends URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* An <code>int</code> representing the three digit HTTP Status-Code.
|
||||
* An {@code int} representing the three digit HTTP Status-Code.
|
||||
* <ul>
|
||||
* <li> 1xx: Informational
|
||||
* <li> 2xx: Success
|
||||
@ -292,12 +292,12 @@ abstract public class HttpURLConnection extends URLConnection {
|
||||
private static boolean followRedirects = true;
|
||||
|
||||
/**
|
||||
* If <code>true</code>, the protocol will automatically follow redirects.
|
||||
* If <code>false</code>, the protocol will not automatically follow
|
||||
* If {@code true}, the protocol will automatically follow redirects.
|
||||
* If {@code false}, the protocol will not automatically follow
|
||||
* redirects.
|
||||
* <p>
|
||||
* This field is set by the <code>setInstanceFollowRedirects</code>
|
||||
* method. Its value is returned by the <code>getInstanceFollowRedirects</code>
|
||||
* This field is set by the {@code setInstanceFollowRedirects}
|
||||
* method. Its value is returned by the {@code getInstanceFollowRedirects}
|
||||
* method.
|
||||
* <p>
|
||||
* Its default value is based on the value of the static followRedirects
|
||||
@ -328,14 +328,14 @@ abstract public class HttpURLConnection extends URLConnection {
|
||||
* cannot change this variable.
|
||||
* <p>
|
||||
* If there is a security manager, this method first calls
|
||||
* the security manager's <code>checkSetFactory</code> method
|
||||
* the security manager's {@code checkSetFactory} method
|
||||
* to ensure the operation is allowed.
|
||||
* This could result in a SecurityException.
|
||||
*
|
||||
* @param set a <code>boolean</code> indicating whether or not
|
||||
* @param set a {@code boolean} indicating whether or not
|
||||
* to follow HTTP redirects.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkSetFactory</code> method doesn't
|
||||
* {@code checkSetFactory} method doesn't
|
||||
* allow the operation.
|
||||
* @see SecurityManager#checkSetFactory
|
||||
* @see #getFollowRedirects()
|
||||
@ -350,12 +350,12 @@ abstract public class HttpURLConnection extends URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a <code>boolean</code> indicating
|
||||
* Returns a {@code boolean} indicating
|
||||
* whether or not HTTP redirects (3xx) should
|
||||
* be automatically followed.
|
||||
*
|
||||
* @return <code>true</code> if HTTP redirects should
|
||||
* be automatically followed, <tt>false</tt> if not.
|
||||
* @return {@code true} if HTTP redirects should
|
||||
* be automatically followed, {@code false} if not.
|
||||
* @see #setFollowRedirects(boolean)
|
||||
*/
|
||||
public static boolean getFollowRedirects() {
|
||||
@ -364,13 +364,13 @@ abstract public class HttpURLConnection extends URLConnection {
|
||||
|
||||
/**
|
||||
* Sets whether HTTP redirects (requests with response code 3xx) should
|
||||
* be automatically followed by this <code>HttpURLConnection</code>
|
||||
* be automatically followed by this {@code HttpURLConnection}
|
||||
* instance.
|
||||
* <p>
|
||||
* The default value comes from followRedirects, which defaults to
|
||||
* true.
|
||||
*
|
||||
* @param followRedirects a <code>boolean</code> indicating
|
||||
* @param followRedirects a {@code boolean} indicating
|
||||
* whether or not to follow HTTP redirects.
|
||||
*
|
||||
* @see java.net.HttpURLConnection#instanceFollowRedirects
|
||||
@ -382,11 +382,11 @@ abstract public class HttpURLConnection extends URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of this <code>HttpURLConnection</code>'s
|
||||
* <code>instanceFollowRedirects</code> field.
|
||||
* Returns the value of this {@code HttpURLConnection}'s
|
||||
* {@code instanceFollowRedirects} field.
|
||||
*
|
||||
* @return the value of this <code>HttpURLConnection</code>'s
|
||||
* <code>instanceFollowRedirects</code> field.
|
||||
* @return the value of this {@code HttpURLConnection}'s
|
||||
* {@code instanceFollowRedirects} field.
|
||||
* @see java.net.HttpURLConnection#instanceFollowRedirects
|
||||
* @see #setInstanceFollowRedirects(boolean)
|
||||
* @since 1.3
|
||||
@ -540,7 +540,7 @@ abstract public class HttpURLConnection extends URLConnection {
|
||||
* Returns null if none could be discerned from the responses
|
||||
* (the result was not valid HTTP).
|
||||
* @throws IOException if an error occurred connecting to the server.
|
||||
* @return the HTTP response message, or <code>null</code>
|
||||
* @return the HTTP response message, or {@code null}
|
||||
*/
|
||||
public String getResponseMessage() throws IOException {
|
||||
getResponseCode();
|
||||
@ -583,7 +583,7 @@ abstract public class HttpURLConnection extends URLConnection {
|
||||
* @exception IOException if an error occurs while computing
|
||||
* the permission.
|
||||
*
|
||||
* @return a <code>SocketPermission</code> object representing the
|
||||
* @return a {@code SocketPermission} object representing the
|
||||
* permission necessary to connect to the destination
|
||||
* host and port.
|
||||
*/
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 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
|
||||
@ -104,7 +104,7 @@ public final class IDN {
|
||||
* @param input the string to be processed
|
||||
* @param flag process flag; can be 0 or any logical OR of possible flags
|
||||
*
|
||||
* @return the translated <tt>String</tt>
|
||||
* @return the translated {@code String}
|
||||
*
|
||||
* @throws IllegalArgumentException if the input string doesn't conform to RFC 3490 specification
|
||||
*/
|
||||
@ -130,13 +130,13 @@ public final class IDN {
|
||||
*
|
||||
* <p> This convenience method works as if by invoking the
|
||||
* two-argument counterpart as follows:
|
||||
* <blockquote><tt>
|
||||
* <blockquote>
|
||||
* {@link #toASCII(String, int) toASCII}(input, 0);
|
||||
* </tt></blockquote>
|
||||
* </blockquote>
|
||||
*
|
||||
* @param input the string to be processed
|
||||
*
|
||||
* @return the translated <tt>String</tt>
|
||||
* @return the translated {@code String}
|
||||
*
|
||||
* @throws IllegalArgumentException if the input string doesn't conform to RFC 3490 specification
|
||||
*/
|
||||
@ -161,7 +161,7 @@ public final class IDN {
|
||||
* @param input the string to be processed
|
||||
* @param flag process flag; can be 0 or any logical OR of possible flags
|
||||
*
|
||||
* @return the translated <tt>String</tt>
|
||||
* @return the translated {@code String}
|
||||
*/
|
||||
public static String toUnicode(String input, int flag) {
|
||||
int p = 0, q = 0;
|
||||
@ -184,13 +184,13 @@ public final class IDN {
|
||||
*
|
||||
* <p> This convenience method works as if by invoking the
|
||||
* two-argument counterpart as follows:
|
||||
* <blockquote><tt>
|
||||
* <blockquote>
|
||||
* {@link #toUnicode(String, int) toUnicode}(input, 0);
|
||||
* </tt></blockquote>
|
||||
* </blockquote>
|
||||
*
|
||||
* @param input the string to be processed
|
||||
*
|
||||
* @return the translated <tt>String</tt>
|
||||
* @return the translated {@code String}
|
||||
*/
|
||||
public static String toUnicode(String input) {
|
||||
return toUnicode(input, 0);
|
||||
|
||||
@ -42,10 +42,10 @@ import java.io.ObjectStreamException;
|
||||
* takes one of the following forms:
|
||||
*
|
||||
* <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
|
||||
* <tr><td><tt>d.d.d.d</tt></td></tr>
|
||||
* <tr><td><tt>d.d.d</tt></td></tr>
|
||||
* <tr><td><tt>d.d</tt></td></tr>
|
||||
* <tr><td><tt>d</tt></td></tr>
|
||||
* <tr><td>{@code d.d.d.d}</td></tr>
|
||||
* <tr><td>{@code d.d.d}</td></tr>
|
||||
* <tr><td>{@code d.d}</td></tr>
|
||||
* <tr><td>{@code d}</td></tr>
|
||||
* </table></blockquote>
|
||||
*
|
||||
* <p> When four parts are specified, each is interpreted as a byte of
|
||||
@ -153,7 +153,7 @@ class Inet4Address extends InetAddress {
|
||||
* Utility routine to check if the InetAddress is an
|
||||
* IP multicast address. IP multicast address is a Class D
|
||||
* address i.e first four bits of the address are 1110.
|
||||
* @return a <code>boolean</code> indicating if the InetAddress is
|
||||
* @return a {@code boolean} indicating if the InetAddress is
|
||||
* an IP multicast address
|
||||
* @since JDK1.1
|
||||
*/
|
||||
@ -163,7 +163,7 @@ class Inet4Address extends InetAddress {
|
||||
|
||||
/**
|
||||
* Utility routine to check if the InetAddress in a wildcard address.
|
||||
* @return a <code>boolean</code> indicating if the Inetaddress is
|
||||
* @return a {@code boolean} indicating if the Inetaddress is
|
||||
* a wildcard address.
|
||||
* @since 1.4
|
||||
*/
|
||||
@ -174,7 +174,7 @@ class Inet4Address extends InetAddress {
|
||||
/**
|
||||
* Utility routine to check if the InetAddress is a loopback address.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating if the InetAddress is
|
||||
* @return a {@code boolean} indicating if the InetAddress is
|
||||
* a loopback address; or false otherwise.
|
||||
* @since 1.4
|
||||
*/
|
||||
@ -187,7 +187,7 @@ class Inet4Address extends InetAddress {
|
||||
/**
|
||||
* Utility routine to check if the InetAddress is an link local address.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating if the InetAddress is
|
||||
* @return a {@code boolean} indicating if the InetAddress is
|
||||
* a link local address; or false if address is not a link local unicast address.
|
||||
* @since 1.4
|
||||
*/
|
||||
@ -204,7 +204,7 @@ class Inet4Address extends InetAddress {
|
||||
/**
|
||||
* Utility routine to check if the InetAddress is a site local address.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating if the InetAddress is
|
||||
* @return a {@code boolean} indicating if the InetAddress is
|
||||
* a site local address; or false if address is not a site local unicast address.
|
||||
* @since 1.4
|
||||
*/
|
||||
@ -224,7 +224,7 @@ class Inet4Address extends InetAddress {
|
||||
/**
|
||||
* Utility routine to check if the multicast address has global scope.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating if the address has
|
||||
* @return a {@code boolean} indicating if the address has
|
||||
* is a multicast address of global scope, false if it is not
|
||||
* of global scope or it is not a multicast address
|
||||
* @since 1.4
|
||||
@ -240,7 +240,7 @@ class Inet4Address extends InetAddress {
|
||||
/**
|
||||
* Utility routine to check if the multicast address has node scope.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating if the address has
|
||||
* @return a {@code boolean} indicating if the address has
|
||||
* is a multicast address of node-local scope, false if it is not
|
||||
* of node-local scope or it is not a multicast address
|
||||
* @since 1.4
|
||||
@ -253,7 +253,7 @@ class Inet4Address extends InetAddress {
|
||||
/**
|
||||
* Utility routine to check if the multicast address has link scope.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating if the address has
|
||||
* @return a {@code boolean} indicating if the address has
|
||||
* is a multicast address of link-local scope, false if it is not
|
||||
* of link-local scope or it is not a multicast address
|
||||
* @since 1.4
|
||||
@ -269,7 +269,7 @@ class Inet4Address extends InetAddress {
|
||||
/**
|
||||
* Utility routine to check if the multicast address has site scope.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating if the address has
|
||||
* @return a {@code boolean} indicating if the address has
|
||||
* is a multicast address of site-local scope, false if it is not
|
||||
* of site-local scope or it is not a multicast address
|
||||
* @since 1.4
|
||||
@ -284,7 +284,7 @@ class Inet4Address extends InetAddress {
|
||||
/**
|
||||
* Utility routine to check if the multicast address has organization scope.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating if the address has
|
||||
* @return a {@code boolean} indicating if the address has
|
||||
* is a multicast address of organization-local scope,
|
||||
* false if it is not of organization-local scope
|
||||
* or it is not a multicast address
|
||||
@ -299,9 +299,9 @@ class Inet4Address extends InetAddress {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the raw IP address of this <code>InetAddress</code>
|
||||
* Returns the raw IP address of this {@code InetAddress}
|
||||
* object. The result is in network byte order: the highest order
|
||||
* byte of the address is in <code>getAddress()[0]</code>.
|
||||
* byte of the address is in {@code getAddress()[0]}.
|
||||
*
|
||||
* @return the raw IP address of this object.
|
||||
*/
|
||||
@ -337,18 +337,18 @@ class Inet4Address extends InetAddress {
|
||||
|
||||
/**
|
||||
* Compares this object against the specified object.
|
||||
* The result is <code>true</code> if and only if the argument is
|
||||
* not <code>null</code> and it represents the same IP address as
|
||||
* The result is {@code true} if and only if the argument is
|
||||
* not {@code null} and it represents the same IP address as
|
||||
* this object.
|
||||
* <p>
|
||||
* Two instances of <code>InetAddress</code> represent the same IP
|
||||
* Two instances of {@code InetAddress} represent the same IP
|
||||
* address if the length of the byte arrays returned by
|
||||
* <code>getAddress</code> is the same for both, and each of the
|
||||
* {@code getAddress} is the same for both, and each of the
|
||||
* array components is the same for the byte arrays.
|
||||
*
|
||||
* @param obj the object to compare against.
|
||||
* @return <code>true</code> if the objects are the same;
|
||||
* <code>false</code> otherwise.
|
||||
* @return {@code true} if the objects are the same;
|
||||
* {@code false} otherwise.
|
||||
* @see java.net.InetAddress#getAddress()
|
||||
*/
|
||||
public boolean equals(Object obj) {
|
||||
|
||||
@ -47,7 +47,7 @@ import java.util.Enumeration;
|
||||
* address. This is the full form. For example,
|
||||
*
|
||||
* <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
|
||||
* <tr><td><tt>1080:0:0:0:8:800:200C:417A</tt><td></tr>
|
||||
* <tr><td>{@code 1080:0:0:0:8:800:200C:417A}<td></tr>
|
||||
* </table></blockquote>
|
||||
*
|
||||
* <p> Note that it is not necessary to write the leading zeros in
|
||||
@ -64,7 +64,7 @@ import java.util.Enumeration;
|
||||
* zeros in an address. For example,
|
||||
*
|
||||
* <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
|
||||
* <tr><td><tt>1080::8:800:200C:417A</tt><td></tr>
|
||||
* <tr><td>{@code 1080::8:800:200C:417A}<td></tr>
|
||||
* </table></blockquote>
|
||||
*
|
||||
* <li><p> An alternative form that is sometimes more convenient
|
||||
@ -75,8 +75,8 @@ import java.util.Enumeration;
|
||||
* standard IPv4 representation address, for example,
|
||||
*
|
||||
* <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
|
||||
* <tr><td><tt>::FFFF:129.144.52.38</tt><td></tr>
|
||||
* <tr><td><tt>::129.144.52.38</tt><td></tr>
|
||||
* <tr><td>{@code ::FFFF:129.144.52.38}<td></tr>
|
||||
* <tr><td>{@code ::129.144.52.38}<td></tr>
|
||||
* </table></blockquote>
|
||||
*
|
||||
* <p> where "::FFFF:d.d.d.d" and "::d.d.d.d" are, respectively, the
|
||||
@ -85,23 +85,23 @@ import java.util.Enumeration;
|
||||
* in the "d.d.d.d" form. The following forms are invalid:
|
||||
*
|
||||
* <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
|
||||
* <tr><td><tt>::FFFF:d.d.d</tt><td></tr>
|
||||
* <tr><td><tt>::FFFF:d.d</tt><td></tr>
|
||||
* <tr><td><tt>::d.d.d</tt><td></tr>
|
||||
* <tr><td><tt>::d.d</tt><td></tr>
|
||||
* <tr><td>{@code ::FFFF:d.d.d}<td></tr>
|
||||
* <tr><td>{@code ::FFFF:d.d}<td></tr>
|
||||
* <tr><td>{@code ::d.d.d}<td></tr>
|
||||
* <tr><td>{@code ::d.d}<td></tr>
|
||||
* </table></blockquote>
|
||||
*
|
||||
* <p> The following form:
|
||||
*
|
||||
* <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
|
||||
* <tr><td><tt>::FFFF:d</tt><td></tr>
|
||||
* <tr><td>{@code ::FFFF:d}<td></tr>
|
||||
* </table></blockquote>
|
||||
*
|
||||
* <p> is valid, however it is an unconventional representation of
|
||||
* the IPv4-compatible IPv6 address,
|
||||
*
|
||||
* <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
|
||||
* <tr><td><tt>::255.255.0.d</tt><td></tr>
|
||||
* <tr><td>{@code ::255.255.0.d}<td></tr>
|
||||
* </table></blockquote>
|
||||
*
|
||||
* <p> while "::d" corresponds to the general IPv6 address
|
||||
@ -258,7 +258,7 @@ class Inet6Address extends InetAddress {
|
||||
* Create an Inet6Address in the exact manner of {@link
|
||||
* InetAddress#getByAddress(String,byte[])} except that the IPv6 scope_id is
|
||||
* set to the value corresponding to the given interface for the address
|
||||
* type specified in <code>addr</code>. The call will fail with an
|
||||
* type specified in {@code addr}. The call will fail with an
|
||||
* UnknownHostException if the given interface does not have a numeric
|
||||
* scope_id assigned for the given address type (eg. link-local or site-local).
|
||||
* See <a href="Inet6Address.html#scoped">here</a> for a description of IPv6
|
||||
|
||||
@ -296,7 +296,7 @@ class InetAddress implements java.io.Serializable {
|
||||
/**
|
||||
* Utility routine to check if the InetAddress is an
|
||||
* IP multicast address.
|
||||
* @return a <code>boolean</code> indicating if the InetAddress is
|
||||
* @return a {@code boolean} indicating if the InetAddress is
|
||||
* an IP multicast address
|
||||
* @since JDK1.1
|
||||
*/
|
||||
@ -306,7 +306,7 @@ class InetAddress implements java.io.Serializable {
|
||||
|
||||
/**
|
||||
* Utility routine to check if the InetAddress in a wildcard address.
|
||||
* @return a <code>boolean</code> indicating if the Inetaddress is
|
||||
* @return a {@code boolean} indicating if the Inetaddress is
|
||||
* a wildcard address.
|
||||
* @since 1.4
|
||||
*/
|
||||
@ -317,7 +317,7 @@ class InetAddress implements java.io.Serializable {
|
||||
/**
|
||||
* Utility routine to check if the InetAddress is a loopback address.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating if the InetAddress is
|
||||
* @return a {@code boolean} indicating if the InetAddress is
|
||||
* a loopback address; or false otherwise.
|
||||
* @since 1.4
|
||||
*/
|
||||
@ -328,7 +328,7 @@ class InetAddress implements java.io.Serializable {
|
||||
/**
|
||||
* Utility routine to check if the InetAddress is an link local address.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating if the InetAddress is
|
||||
* @return a {@code boolean} indicating if the InetAddress is
|
||||
* a link local address; or false if address is not a link local unicast address.
|
||||
* @since 1.4
|
||||
*/
|
||||
@ -339,7 +339,7 @@ class InetAddress implements java.io.Serializable {
|
||||
/**
|
||||
* Utility routine to check if the InetAddress is a site local address.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating if the InetAddress is
|
||||
* @return a {@code boolean} indicating if the InetAddress is
|
||||
* a site local address; or false if address is not a site local unicast address.
|
||||
* @since 1.4
|
||||
*/
|
||||
@ -350,7 +350,7 @@ class InetAddress implements java.io.Serializable {
|
||||
/**
|
||||
* Utility routine to check if the multicast address has global scope.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating if the address has
|
||||
* @return a {@code boolean} indicating if the address has
|
||||
* is a multicast address of global scope, false if it is not
|
||||
* of global scope or it is not a multicast address
|
||||
* @since 1.4
|
||||
@ -362,7 +362,7 @@ class InetAddress implements java.io.Serializable {
|
||||
/**
|
||||
* Utility routine to check if the multicast address has node scope.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating if the address has
|
||||
* @return a {@code boolean} indicating if the address has
|
||||
* is a multicast address of node-local scope, false if it is not
|
||||
* of node-local scope or it is not a multicast address
|
||||
* @since 1.4
|
||||
@ -374,7 +374,7 @@ class InetAddress implements java.io.Serializable {
|
||||
/**
|
||||
* Utility routine to check if the multicast address has link scope.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating if the address has
|
||||
* @return a {@code boolean} indicating if the address has
|
||||
* is a multicast address of link-local scope, false if it is not
|
||||
* of link-local scope or it is not a multicast address
|
||||
* @since 1.4
|
||||
@ -386,7 +386,7 @@ class InetAddress implements java.io.Serializable {
|
||||
/**
|
||||
* Utility routine to check if the multicast address has site scope.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating if the address has
|
||||
* @return a {@code boolean} indicating if the address has
|
||||
* is a multicast address of site-local scope, false if it is not
|
||||
* of site-local scope or it is not a multicast address
|
||||
* @since 1.4
|
||||
@ -398,7 +398,7 @@ class InetAddress implements java.io.Serializable {
|
||||
/**
|
||||
* Utility routine to check if the multicast address has organization scope.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating if the address has
|
||||
* @return a {@code boolean} indicating if the address has
|
||||
* is a multicast address of organization-local scope,
|
||||
* false if it is not of organization-local scope
|
||||
* or it is not a multicast address
|
||||
@ -424,9 +424,9 @@ class InetAddress implements java.io.Serializable {
|
||||
* in an IllegalArgumentException being thrown.
|
||||
*
|
||||
* @param timeout the time, in milliseconds, before the call aborts
|
||||
* @return a <code>boolean</code> indicating if the address is reachable.
|
||||
* @return a {@code boolean} indicating if the address is reachable.
|
||||
* @throws IOException if a network error occurs
|
||||
* @throws IllegalArgumentException if <code>timeout</code> is negative.
|
||||
* @throws IllegalArgumentException if {@code timeout} is negative.
|
||||
* @since 1.5
|
||||
*/
|
||||
public boolean isReachable(int timeout) throws IOException {
|
||||
@ -442,10 +442,10 @@ class InetAddress implements java.io.Serializable {
|
||||
* privilege can be obtained, otherwise it will try to establish
|
||||
* a TCP connection on port 7 (Echo) of the destination host.
|
||||
* <p>
|
||||
* The <code>network interface</code> and <code>ttl</code> parameters
|
||||
* The {@code network interface} and {@code ttl} parameters
|
||||
* let the caller specify which network interface the test will go through
|
||||
* and the maximum number of hops the packets should go through.
|
||||
* A negative value for the <code>ttl</code> will result in an
|
||||
* A negative value for the {@code ttl} will result in an
|
||||
* IllegalArgumentException being thrown.
|
||||
* <p>
|
||||
* The timeout value, in milliseconds, indicates the maximum amount of time
|
||||
@ -458,9 +458,9 @@ class InetAddress implements java.io.Serializable {
|
||||
* @param ttl the maximum numbers of hops to try or 0 for the
|
||||
* default
|
||||
* @param timeout the time, in milliseconds, before the call aborts
|
||||
* @throws IllegalArgumentException if either <code>timeout</code>
|
||||
* or <code>ttl</code> are negative.
|
||||
* @return a <code>boolean</code>indicating if the address is reachable.
|
||||
* @throws IllegalArgumentException if either {@code timeout}
|
||||
* or {@code ttl} are negative.
|
||||
* @return a {@code boolean}indicating if the address is reachable.
|
||||
* @throws IOException if a network error occurs
|
||||
* @since 1.5
|
||||
*/
|
||||
@ -486,8 +486,8 @@ class InetAddress implements java.io.Serializable {
|
||||
* {@link #getCanonicalHostName() getCanonicalHostName}.
|
||||
*
|
||||
* <p>If there is a security manager, its
|
||||
* <code>checkConnect</code> method is first called
|
||||
* with the hostname and <code>-1</code>
|
||||
* {@code checkConnect} method is first called
|
||||
* with the hostname and {@code -1}
|
||||
* as its arguments to see if the operation is allowed.
|
||||
* If the operation is not allowed, it will return
|
||||
* the textual representation of the IP address.
|
||||
@ -511,8 +511,8 @@ class InetAddress implements java.io.Serializable {
|
||||
* here without a security check.
|
||||
*
|
||||
* <p>If there is a security manager, this method first
|
||||
* calls its <code>checkConnect</code> method
|
||||
* with the hostname and <code>-1</code>
|
||||
* calls its {@code checkConnect} method
|
||||
* with the hostname and {@code -1}
|
||||
* as its arguments to see if the calling code is allowed to know
|
||||
* the hostname for this IP address, i.e., to connect to the host.
|
||||
* If the operation is not allowed, it will return
|
||||
@ -539,8 +539,8 @@ class InetAddress implements java.io.Serializable {
|
||||
* the FQDN depending on the underlying system configuration.
|
||||
*
|
||||
* <p>If there is a security manager, this method first
|
||||
* calls its <code>checkConnect</code> method
|
||||
* with the hostname and <code>-1</code>
|
||||
* calls its {@code checkConnect} method
|
||||
* with the hostname and {@code -1}
|
||||
* as its arguments to see if the calling code is allowed to know
|
||||
* the hostname for this IP address, i.e., to connect to the host.
|
||||
* If the operation is not allowed, it will return
|
||||
@ -566,8 +566,8 @@ class InetAddress implements java.io.Serializable {
|
||||
* Returns the hostname for this address.
|
||||
*
|
||||
* <p>If there is a security manager, this method first
|
||||
* calls its <code>checkConnect</code> method
|
||||
* with the hostname and <code>-1</code>
|
||||
* calls its {@code checkConnect} method
|
||||
* with the hostname and {@code -1}
|
||||
* as its arguments to see if the calling code is allowed to know
|
||||
* the hostname for this IP address, i.e., to connect to the host.
|
||||
* If the operation is not allowed, it will return
|
||||
@ -633,9 +633,9 @@ class InetAddress implements java.io.Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the raw IP address of this <code>InetAddress</code>
|
||||
* Returns the raw IP address of this {@code InetAddress}
|
||||
* object. The result is in network byte order: the highest order
|
||||
* byte of the address is in <code>getAddress()[0]</code>.
|
||||
* byte of the address is in {@code getAddress()[0]}.
|
||||
*
|
||||
* @return the raw IP address of this object.
|
||||
*/
|
||||
@ -664,18 +664,18 @@ class InetAddress implements java.io.Serializable {
|
||||
|
||||
/**
|
||||
* Compares this object against the specified object.
|
||||
* The result is <code>true</code> if and only if the argument is
|
||||
* not <code>null</code> and it represents the same IP address as
|
||||
* The result is {@code true} if and only if the argument is
|
||||
* not {@code null} and it represents the same IP address as
|
||||
* this object.
|
||||
* <p>
|
||||
* Two instances of <code>InetAddress</code> represent the same IP
|
||||
* Two instances of {@code InetAddress} represent the same IP
|
||||
* address if the length of the byte arrays returned by
|
||||
* <code>getAddress</code> is the same for both, and each of the
|
||||
* {@code getAddress} is the same for both, and each of the
|
||||
* array components is the same for the byte arrays.
|
||||
*
|
||||
* @param obj the object to compare against.
|
||||
* @return <code>true</code> if the objects are the same;
|
||||
* <code>false</code> otherwise.
|
||||
* @return {@code true} if the objects are the same;
|
||||
* {@code false} otherwise.
|
||||
* @see java.net.InetAddress#getAddress()
|
||||
*/
|
||||
public boolean equals(Object obj) {
|
||||
@ -683,7 +683,7 @@ class InetAddress implements java.io.Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts this IP address to a <code>String</code>. The
|
||||
* Converts this IP address to a {@code String}. The
|
||||
* string returned is of the form: hostname / literal IP
|
||||
* address.
|
||||
*
|
||||
@ -974,7 +974,7 @@ class InetAddress implements java.io.Serializable {
|
||||
* No name service is checked for the validity of the address.
|
||||
*
|
||||
* <p> The host name can either be a machine name, such as
|
||||
* "<code>java.sun.com</code>", or a textual representation of its IP
|
||||
* "{@code java.sun.com}", or a textual representation of its IP
|
||||
* address.
|
||||
* <p> No validity checking is done on the host name either.
|
||||
*
|
||||
@ -1019,26 +1019,26 @@ class InetAddress implements java.io.Serializable {
|
||||
* Determines the IP address of a host, given the host's name.
|
||||
*
|
||||
* <p> The host name can either be a machine name, such as
|
||||
* "<code>java.sun.com</code>", or a textual representation of its
|
||||
* "{@code java.sun.com}", or a textual representation of its
|
||||
* IP address. If a literal IP address is supplied, only the
|
||||
* validity of the address format is checked.
|
||||
*
|
||||
* <p> For <code>host</code> specified in literal IPv6 address,
|
||||
* <p> For {@code host} specified in literal IPv6 address,
|
||||
* either the form defined in RFC 2732 or the literal IPv6 address
|
||||
* format defined in RFC 2373 is accepted. IPv6 scoped addresses are also
|
||||
* supported. See <a href="Inet6Address.html#scoped">here</a> for a description of IPv6
|
||||
* scoped addresses.
|
||||
*
|
||||
* <p> If the host is <tt>null</tt> then an <tt>InetAddress</tt>
|
||||
* <p> If the host is {@code null} then an {@code InetAddress}
|
||||
* representing an address of the loopback interface is returned.
|
||||
* See <a href="http://www.ietf.org/rfc/rfc3330.txt">RFC 3330</a>
|
||||
* section 2 and <a href="http://www.ietf.org/rfc/rfc2373.txt">RFC 2373</a>
|
||||
* section 2.5.3. </p>
|
||||
*
|
||||
* @param host the specified host, or <code>null</code>.
|
||||
* @param host the specified host, or {@code null}.
|
||||
* @return an IP address for the given host name.
|
||||
* @exception UnknownHostException if no IP address for the
|
||||
* <code>host</code> could be found, or if a scope_id was specified
|
||||
* {@code host} could be found, or if a scope_id was specified
|
||||
* for a global IPv6 address.
|
||||
* @exception SecurityException if a security manager exists
|
||||
* and its checkConnect method doesn't allow the operation
|
||||
@ -1059,37 +1059,37 @@ class InetAddress implements java.io.Serializable {
|
||||
* based on the configured name service on the system.
|
||||
*
|
||||
* <p> The host name can either be a machine name, such as
|
||||
* "<code>java.sun.com</code>", or a textual representation of its IP
|
||||
* "{@code java.sun.com}", or a textual representation of its IP
|
||||
* address. If a literal IP address is supplied, only the
|
||||
* validity of the address format is checked.
|
||||
*
|
||||
* <p> For <code>host</code> specified in <i>literal IPv6 address</i>,
|
||||
* <p> For {@code host} specified in <i>literal IPv6 address</i>,
|
||||
* either the form defined in RFC 2732 or the literal IPv6 address
|
||||
* format defined in RFC 2373 is accepted. A literal IPv6 address may
|
||||
* also be qualified by appending a scoped zone identifier or scope_id.
|
||||
* The syntax and usage of scope_ids is described
|
||||
* <a href="Inet6Address.html#scoped">here</a>.
|
||||
* <p> If the host is <tt>null</tt> then an <tt>InetAddress</tt>
|
||||
* <p> If the host is {@code null} then an {@code InetAddress}
|
||||
* representing an address of the loopback interface is returned.
|
||||
* See <a href="http://www.ietf.org/rfc/rfc3330.txt">RFC 3330</a>
|
||||
* section 2 and <a href="http://www.ietf.org/rfc/rfc2373.txt">RFC 2373</a>
|
||||
* section 2.5.3. </p>
|
||||
*
|
||||
* <p> If there is a security manager and <code>host</code> is not
|
||||
* null and <code>host.length() </code> is not equal to zero, the
|
||||
* <p> If there is a security manager and {@code host} is not
|
||||
* null and {@code host.length() } is not equal to zero, the
|
||||
* security manager's
|
||||
* <code>checkConnect</code> method is called
|
||||
* with the hostname and <code>-1</code>
|
||||
* {@code checkConnect} method is called
|
||||
* with the hostname and {@code -1}
|
||||
* as its arguments to see if the operation is allowed.
|
||||
*
|
||||
* @param host the name of the host, or <code>null</code>.
|
||||
* @param host the name of the host, or {@code null}.
|
||||
* @return an array of all the IP addresses for a given host name.
|
||||
*
|
||||
* @exception UnknownHostException if no IP address for the
|
||||
* <code>host</code> could be found, or if a scope_id was specified
|
||||
* {@code host} could be found, or if a scope_id was specified
|
||||
* for a global IPv6 address.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkConnect</code> method doesn't allow the operation.
|
||||
* {@code checkConnect} method doesn't allow the operation.
|
||||
*
|
||||
* @see SecurityManager#checkConnect
|
||||
*/
|
||||
@ -1389,9 +1389,9 @@ class InetAddress implements java.io.Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an <code>InetAddress</code> object given the raw IP address .
|
||||
* Returns an {@code InetAddress} object given the raw IP address .
|
||||
* The argument is in network byte order: the highest order
|
||||
* byte of the address is in <code>getAddress()[0]</code>.
|
||||
* byte of the address is in {@code getAddress()[0]}.
|
||||
*
|
||||
* <p> This method doesn't block, i.e. no reverse name service lookup
|
||||
* is performed.
|
||||
@ -1417,14 +1417,14 @@ class InetAddress implements java.io.Serializable {
|
||||
/**
|
||||
* Returns the address of the local host. This is achieved by retrieving
|
||||
* the name of the host from the system, then resolving that name into
|
||||
* an <code>InetAddress</code>.
|
||||
* an {@code InetAddress}.
|
||||
*
|
||||
* <P>Note: The resolved address may be cached for a short period of time.
|
||||
* </P>
|
||||
*
|
||||
* <p>If there is a security manager, its
|
||||
* <code>checkConnect</code> method is called
|
||||
* with the local host name and <code>-1</code>
|
||||
* {@code checkConnect} method is called
|
||||
* with the local host name and {@code -1}
|
||||
* as its arguments to see if the operation is allowed.
|
||||
* If the operation is not allowed, an InetAddress representing
|
||||
* the loopback address is returned.
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 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
|
||||
@ -43,7 +43,7 @@ import java.io.ObjectStreamField;
|
||||
* as returned values.
|
||||
* <p>
|
||||
* The <i>wildcard</i> is a special local IP address. It usually means "any"
|
||||
* and can only be used for <code>bind</code> operations.
|
||||
* and can only be used for {@code bind} operations.
|
||||
*
|
||||
* @see java.net.Socket
|
||||
* @see java.net.ServerSocket
|
||||
@ -155,8 +155,8 @@ public class InetSocketAddress
|
||||
* and the port number a specified value.
|
||||
* <p>
|
||||
* A valid port value is between 0 and 65535.
|
||||
* A port number of <code>zero</code> will let the system pick up an
|
||||
* ephemeral port in a <code>bind</code> operation.
|
||||
* A port number of {@code zero} will let the system pick up an
|
||||
* ephemeral port in a {@code bind} operation.
|
||||
* <p>
|
||||
* @param port The port number
|
||||
* @throws IllegalArgumentException if the port parameter is outside the specified
|
||||
@ -171,10 +171,10 @@ public class InetSocketAddress
|
||||
* Creates a socket address from an IP address and a port number.
|
||||
* <p>
|
||||
* A valid port value is between 0 and 65535.
|
||||
* A port number of <code>zero</code> will let the system pick up an
|
||||
* ephemeral port in a <code>bind</code> operation.
|
||||
* A port number of {@code zero} will let the system pick up an
|
||||
* ephemeral port in a {@code bind} operation.
|
||||
* <P>
|
||||
* A <code>null</code> address will assign the <i>wildcard</i> address.
|
||||
* A {@code null} address will assign the <i>wildcard</i> address.
|
||||
* <p>
|
||||
* @param addr The IP address
|
||||
* @param port The port number
|
||||
@ -195,13 +195,13 @@ public class InetSocketAddress
|
||||
* An attempt will be made to resolve the hostname into an InetAddress.
|
||||
* If that attempt fails, the address will be flagged as <I>unresolved</I>.
|
||||
* <p>
|
||||
* If there is a security manager, its <code>checkConnect</code> method
|
||||
* If there is a security manager, its {@code checkConnect} method
|
||||
* is called with the host name as its argument to check the permissiom
|
||||
* to resolve it. This could result in a SecurityException.
|
||||
* <P>
|
||||
* A valid port value is between 0 and 65535.
|
||||
* A port number of <code>zero</code> will let the system pick up an
|
||||
* ephemeral port in a <code>bind</code> operation.
|
||||
* A port number of {@code zero} will let the system pick up an
|
||||
* ephemeral port in a {@code bind} operation.
|
||||
* <P>
|
||||
* @param hostname the Host name
|
||||
* @param port The port number
|
||||
@ -237,8 +237,8 @@ public class InetSocketAddress
|
||||
* The address will be flagged as <I>unresolved</I>.
|
||||
* <p>
|
||||
* A valid port value is between 0 and 65535.
|
||||
* A port number of <code>zero</code> will let the system pick up an
|
||||
* ephemeral port in a <code>bind</code> operation.
|
||||
* A port number of {@code zero} will let the system pick up an
|
||||
* ephemeral port in a {@code bind} operation.
|
||||
* <P>
|
||||
* @param host the Host name
|
||||
* @param port The port number
|
||||
@ -246,7 +246,7 @@ public class InetSocketAddress
|
||||
* the range of valid port values, or if the hostname
|
||||
* parameter is <TT>null</TT>.
|
||||
* @see #isUnresolved()
|
||||
* @return a <code>InetSocketAddress</code> representing the unresolved
|
||||
* @return a {@code InetSocketAddress} representing the unresolved
|
||||
* socket address
|
||||
* @since 1.5
|
||||
*/
|
||||
@ -326,16 +326,16 @@ public class InetSocketAddress
|
||||
|
||||
/**
|
||||
*
|
||||
* Gets the <code>InetAddress</code>.
|
||||
* Gets the {@code InetAddress}.
|
||||
*
|
||||
* @return the InetAdress or <code>null</code> if it is unresolved.
|
||||
* @return the InetAdress or {@code null} if it is unresolved.
|
||||
*/
|
||||
public final InetAddress getAddress() {
|
||||
return holder.getAddress();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the <code>hostname</code>.
|
||||
* Gets the {@code hostname}.
|
||||
* Note: This method may trigger a name service reverse lookup if the
|
||||
* address was created with a literal IP address.
|
||||
*
|
||||
@ -360,8 +360,8 @@ public class InetSocketAddress
|
||||
/**
|
||||
* Checks whether the address has been resolved or not.
|
||||
*
|
||||
* @return <code>true</code> if the hostname couldn't be resolved into
|
||||
* an <code>InetAddress</code>.
|
||||
* @return {@code true} if the hostname couldn't be resolved into
|
||||
* an {@code InetAddress}.
|
||||
*/
|
||||
public final boolean isUnresolved() {
|
||||
return holder.isUnresolved();
|
||||
@ -382,11 +382,11 @@ public class InetSocketAddress
|
||||
|
||||
/**
|
||||
* Compares this object against the specified object.
|
||||
* The result is <code>true</code> if and only if the argument is
|
||||
* not <code>null</code> and it represents the same address as
|
||||
* The result is {@code true} if and only if the argument is
|
||||
* not {@code null} and it represents the same address as
|
||||
* this object.
|
||||
* <p>
|
||||
* Two instances of <code>InetSocketAddress</code> represent the same
|
||||
* Two instances of {@code InetSocketAddress} represent the same
|
||||
* address if both the InetAddresses (or hostnames if it is unresolved) and port
|
||||
* numbers are equal.
|
||||
* If both addresses are unresolved, then the hostname and the port number
|
||||
@ -396,8 +396,8 @@ public class InetSocketAddress
|
||||
* considered equal.
|
||||
*
|
||||
* @param obj the object to compare against.
|
||||
* @return <code>true</code> if the objects are the same;
|
||||
* <code>false</code> otherwise.
|
||||
* @return {@code true} if the objects are the same;
|
||||
* {@code false} otherwise.
|
||||
* @see java.net.InetAddress#equals(java.lang.Object)
|
||||
*/
|
||||
@Override
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2005, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2005, 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
|
||||
@ -47,23 +47,23 @@ public class InterfaceAddress {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an <code>InetAddress</code> for this address.
|
||||
* Returns an {@code InetAddress} for this address.
|
||||
*
|
||||
* @return the <code>InetAddress</code> for this address.
|
||||
* @return the {@code InetAddress} for this address.
|
||||
*/
|
||||
public InetAddress getAddress() {
|
||||
return address;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an <code>InetAddress</code> for the brodcast address
|
||||
* Returns an {@code InetAddress} for the brodcast address
|
||||
* for this InterfaceAddress.
|
||||
* <p>
|
||||
* Only IPv4 networks have broadcast address therefore, in the case
|
||||
* of an IPv6 network, <code>null</code> will be returned.
|
||||
* of an IPv6 network, {@code null} will be returned.
|
||||
*
|
||||
* @return the <code>InetAddress</code> representing the broadcast
|
||||
* address or <code>null</code> if there is no broadcast address.
|
||||
* @return the {@code InetAddress} representing the broadcast
|
||||
* address or {@code null} if there is no broadcast address.
|
||||
*/
|
||||
public InetAddress getBroadcast() {
|
||||
return broadcast;
|
||||
@ -76,7 +76,7 @@ public class InterfaceAddress {
|
||||
* or 24 (255.255.255.0). <p>
|
||||
* Typical IPv6 values would be 128 (::1/128) or 10 (fe80::203:baff:fe27:1243/10)
|
||||
*
|
||||
* @return a <code>short</code> representing the prefix length for the
|
||||
* @return a {@code short} representing the prefix length for the
|
||||
* subnet of that address.
|
||||
*/
|
||||
public short getNetworkPrefixLength() {
|
||||
@ -85,17 +85,17 @@ public class InterfaceAddress {
|
||||
|
||||
/**
|
||||
* Compares this object against the specified object.
|
||||
* The result is <code>true</code> if and only if the argument is
|
||||
* not <code>null</code> and it represents the same interface address as
|
||||
* The result is {@code true} if and only if the argument is
|
||||
* not {@code null} and it represents the same interface address as
|
||||
* this object.
|
||||
* <p>
|
||||
* Two instances of <code>InterfaceAddress</code> represent the same
|
||||
* Two instances of {@code InterfaceAddress} represent the same
|
||||
* address if the InetAddress, the prefix length and the broadcast are
|
||||
* the same for both.
|
||||
*
|
||||
* @param obj the object to compare against.
|
||||
* @return <code>true</code> if the objects are the same;
|
||||
* <code>false</code> otherwise.
|
||||
* @return {@code true} if the objects are the same;
|
||||
* {@code false} otherwise.
|
||||
* @see java.net.InterfaceAddress#hashCode()
|
||||
*/
|
||||
public boolean equals(Object obj) {
|
||||
@ -122,7 +122,7 @@ public class InterfaceAddress {
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts this Interface address to a <code>String</code>. The
|
||||
* Converts this Interface address to a {@code String}. The
|
||||
* string returned is of the form: InetAddress / prefix length [ broadcast address ].
|
||||
*
|
||||
* @return a string representation of this Interface address.
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 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
|
||||
@ -45,18 +45,14 @@ import sun.net.www.ParseUtil;
|
||||
*
|
||||
* <p>for example:
|
||||
*
|
||||
* <p><code>
|
||||
* jar:http://www.foo.com/bar/baz.jar!/COM/foo/Quux.class<br>
|
||||
* </code>
|
||||
* <p>{@code jar:http://www.foo.com/bar/baz.jar!/COM/foo/Quux.class}
|
||||
*
|
||||
* <p>Jar URLs should be used to refer to a JAR file or entries in
|
||||
* a JAR file. The example above is a JAR URL which refers to a JAR
|
||||
* entry. If the entry name is omitted, the URL refers to the whole
|
||||
* JAR file:
|
||||
*
|
||||
* <code>
|
||||
* jar:http://www.foo.com/bar/baz.jar!/
|
||||
* </code>
|
||||
* {@code jar:http://www.foo.com/bar/baz.jar!/}
|
||||
*
|
||||
* <p>Users should cast the generic URLConnection to a
|
||||
* JarURLConnection when they know that the URL they created is a JAR
|
||||
@ -76,19 +72,19 @@ import sun.net.www.ParseUtil;
|
||||
* <dl>
|
||||
*
|
||||
* <dt>A Jar entry
|
||||
* <dd><code>jar:http://www.foo.com/bar/baz.jar!/COM/foo/Quux.class</code>
|
||||
* <dd>{@code jar:http://www.foo.com/bar/baz.jar!/COM/foo/Quux.class}
|
||||
*
|
||||
* <dt>A Jar file
|
||||
* <dd><code>jar:http://www.foo.com/bar/baz.jar!/</code>
|
||||
* <dd>{@code jar:http://www.foo.com/bar/baz.jar!/}
|
||||
*
|
||||
* <dt>A Jar directory
|
||||
* <dd><code>jar:http://www.foo.com/bar/baz.jar!/COM/foo/</code>
|
||||
* <dd>{@code jar:http://www.foo.com/bar/baz.jar!/COM/foo/}
|
||||
*
|
||||
* </dl>
|
||||
*
|
||||
* <p><code>!/</code> is refered to as the <em>separator</em>.
|
||||
* <p>{@code !/} is refered to as the <em>separator</em>.
|
||||
*
|
||||
* <p>When constructing a JAR url via <code>new URL(context, spec)</code>,
|
||||
* <p>When constructing a JAR url via {@code new URL(context, spec)},
|
||||
* the following rules apply:
|
||||
*
|
||||
* <ul>
|
||||
@ -294,7 +290,7 @@ public abstract class JarURLConnection extends URLConnection {
|
||||
* can only be called once
|
||||
* the connection has been completely verified by reading
|
||||
* from the input stream until the end of the stream has been
|
||||
* reached. Otherwise, this method will return <code>null</code>
|
||||
* reached. Otherwise, this method will return {@code null}
|
||||
*
|
||||
* @return the Certificate object for this connection if the URL
|
||||
* for it points to a JAR file entry, null otherwise.
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 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
|
||||
@ -39,13 +39,13 @@ public class MalformedURLException extends IOException {
|
||||
private static final long serialVersionUID = -182787522200415866L;
|
||||
|
||||
/**
|
||||
* Constructs a <code>MalformedURLException</code> with no detail message.
|
||||
* Constructs a {@code MalformedURLException} with no detail message.
|
||||
*/
|
||||
public MalformedURLException() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a <code>MalformedURLException</code> with the
|
||||
* Constructs a {@code MalformedURLException} with the
|
||||
* specified detail message.
|
||||
*
|
||||
* @param msg the detail message.
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 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
|
||||
@ -92,7 +92,7 @@ class MulticastSocket extends DatagramSocket {
|
||||
* Create a multicast socket.
|
||||
*
|
||||
* <p>If there is a security manager,
|
||||
* its <code>checkListen</code> method is first called
|
||||
* its {@code checkListen} method is first called
|
||||
* with 0 as its argument to ensure the operation is allowed.
|
||||
* This could result in a SecurityException.
|
||||
* <p>
|
||||
@ -103,7 +103,7 @@ class MulticastSocket extends DatagramSocket {
|
||||
* @exception IOException if an I/O exception occurs
|
||||
* while creating the MulticastSocket
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkListen</code> method doesn't allow the operation.
|
||||
* {@code checkListen} method doesn't allow the operation.
|
||||
* @see SecurityManager#checkListen
|
||||
* @see java.net.DatagramSocket#setReuseAddress(boolean)
|
||||
*/
|
||||
@ -115,8 +115,8 @@ class MulticastSocket extends DatagramSocket {
|
||||
* Create a multicast socket and bind it to a specific port.
|
||||
*
|
||||
* <p>If there is a security manager,
|
||||
* its <code>checkListen</code> method is first called
|
||||
* with the <code>port</code> argument
|
||||
* its {@code checkListen} method is first called
|
||||
* with the {@code port} argument
|
||||
* as its argument to ensure the operation is allowed.
|
||||
* This could result in a SecurityException.
|
||||
* <p>
|
||||
@ -128,7 +128,7 @@ class MulticastSocket extends DatagramSocket {
|
||||
* @exception IOException if an I/O exception occurs
|
||||
* while creating the MulticastSocket
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkListen</code> method doesn't allow the operation.
|
||||
* {@code checkListen} method doesn't allow the operation.
|
||||
* @see SecurityManager#checkListen
|
||||
* @see java.net.DatagramSocket#setReuseAddress(boolean)
|
||||
*/
|
||||
@ -139,10 +139,10 @@ class MulticastSocket extends DatagramSocket {
|
||||
/**
|
||||
* Create a MulticastSocket bound to the specified socket address.
|
||||
* <p>
|
||||
* Or, if the address is <code>null</code>, create an unbound socket.
|
||||
* Or, if the address is {@code null}, create an unbound socket.
|
||||
* <p>
|
||||
* <p>If there is a security manager,
|
||||
* its <code>checkListen</code> method is first called
|
||||
* its {@code checkListen} method is first called
|
||||
* with the SocketAddress port as its argument to ensure the operation is allowed.
|
||||
* This could result in a SecurityException.
|
||||
* <p>
|
||||
@ -150,12 +150,12 @@ class MulticastSocket extends DatagramSocket {
|
||||
* {@link DatagramSocket#setReuseAddress(boolean)} method is
|
||||
* called to enable the SO_REUSEADDR socket option.
|
||||
*
|
||||
* @param bindaddr Socket address to bind to, or <code>null</code> for
|
||||
* @param bindaddr Socket address to bind to, or {@code null} for
|
||||
* an unbound socket.
|
||||
* @exception IOException if an I/O exception occurs
|
||||
* while creating the MulticastSocket
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkListen</code> method doesn't allow the operation.
|
||||
* {@code checkListen} method doesn't allow the operation.
|
||||
* @see SecurityManager#checkListen
|
||||
* @see java.net.DatagramSocket#setReuseAddress(boolean)
|
||||
*
|
||||
@ -197,7 +197,7 @@ class MulticastSocket extends DatagramSocket {
|
||||
|
||||
/**
|
||||
* Set the default time-to-live for multicast packets sent out
|
||||
* on this <code>MulticastSocket</code> in order to control the
|
||||
* on this {@code MulticastSocket} in order to control the
|
||||
* scope of the multicasts.
|
||||
*
|
||||
* <p>The ttl is an <b>unsigned</b> 8-bit quantity, and so <B>must</B> be
|
||||
@ -279,11 +279,11 @@ class MulticastSocket extends DatagramSocket {
|
||||
|
||||
/**
|
||||
* Joins a multicast group. Its behavior may be affected by
|
||||
* <code>setInterface</code> or <code>setNetworkInterface</code>.
|
||||
* {@code setInterface} or {@code setNetworkInterface}.
|
||||
*
|
||||
* <p>If there is a security manager, this method first
|
||||
* calls its <code>checkMulticast</code> method
|
||||
* with the <code>mcastaddr</code> argument
|
||||
* calls its {@code checkMulticast} method
|
||||
* with the {@code mcastaddr} argument
|
||||
* as its argument.
|
||||
*
|
||||
* @param mcastaddr is the multicast address to join
|
||||
@ -291,7 +291,7 @@ class MulticastSocket extends DatagramSocket {
|
||||
* @exception IOException if there is an error joining
|
||||
* or when the address is not a multicast address.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkMulticast</code> method doesn't allow the join.
|
||||
* {@code checkMulticast} method doesn't allow the join.
|
||||
*
|
||||
* @see SecurityManager#checkMulticast(InetAddress)
|
||||
*/
|
||||
@ -325,18 +325,18 @@ class MulticastSocket extends DatagramSocket {
|
||||
|
||||
/**
|
||||
* Leave a multicast group. Its behavior may be affected by
|
||||
* <code>setInterface</code> or <code>setNetworkInterface</code>.
|
||||
* {@code setInterface} or {@code setNetworkInterface}.
|
||||
*
|
||||
* <p>If there is a security manager, this method first
|
||||
* calls its <code>checkMulticast</code> method
|
||||
* with the <code>mcastaddr</code> argument
|
||||
* calls its {@code checkMulticast} method
|
||||
* with the {@code mcastaddr} argument
|
||||
* as its argument.
|
||||
*
|
||||
* @param mcastaddr is the multicast address to leave
|
||||
* @exception IOException if there is an error leaving
|
||||
* or when the address is not a multicast address.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkMulticast</code> method doesn't allow the operation.
|
||||
* {@code checkMulticast} method doesn't allow the operation.
|
||||
*
|
||||
* @see SecurityManager#checkMulticast(InetAddress)
|
||||
*/
|
||||
@ -362,8 +362,8 @@ class MulticastSocket extends DatagramSocket {
|
||||
* Joins the specified multicast group at the specified interface.
|
||||
*
|
||||
* <p>If there is a security manager, this method first
|
||||
* calls its <code>checkMulticast</code> method
|
||||
* with the <code>mcastaddr</code> argument
|
||||
* calls its {@code checkMulticast} method
|
||||
* with the {@code mcastaddr} argument
|
||||
* as its argument.
|
||||
*
|
||||
* @param mcastaddr is the multicast address to join
|
||||
@ -375,7 +375,7 @@ class MulticastSocket extends DatagramSocket {
|
||||
* @exception IOException if there is an error joining
|
||||
* or when the address is not a multicast address.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkMulticast</code> method doesn't allow the join.
|
||||
* {@code checkMulticast} method doesn't allow the join.
|
||||
* @throws IllegalArgumentException if mcastaddr is null or is a
|
||||
* SocketAddress subclass not supported by this socket
|
||||
*
|
||||
@ -410,8 +410,8 @@ class MulticastSocket extends DatagramSocket {
|
||||
* Leave a multicast group on a specified local interface.
|
||||
*
|
||||
* <p>If there is a security manager, this method first
|
||||
* calls its <code>checkMulticast</code> method
|
||||
* with the <code>mcastaddr</code> argument
|
||||
* calls its {@code checkMulticast} method
|
||||
* with the {@code mcastaddr} argument
|
||||
* as its argument.
|
||||
*
|
||||
* @param mcastaddr is the multicast address to leave
|
||||
@ -422,7 +422,7 @@ class MulticastSocket extends DatagramSocket {
|
||||
* @exception IOException if there is an error leaving
|
||||
* or when the address is not a multicast address.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkMulticast</code> method doesn't allow the operation.
|
||||
* {@code checkMulticast} method doesn't allow the operation.
|
||||
* @throws IllegalArgumentException if mcastaddr is null or is a
|
||||
* SocketAddress subclass not supported by this socket
|
||||
*
|
||||
@ -478,7 +478,7 @@ class MulticastSocket extends DatagramSocket {
|
||||
* Retrieve the address of the network interface used for
|
||||
* multicast packets.
|
||||
*
|
||||
* @return An <code>InetAddress</code> representing
|
||||
* @return An {@code InetAddress} representing
|
||||
* the address of the network interface used for
|
||||
* multicast packets.
|
||||
*
|
||||
@ -562,7 +562,7 @@ class MulticastSocket extends DatagramSocket {
|
||||
*
|
||||
* @exception SocketException if there is an error in
|
||||
* the underlying protocol, such as a TCP error.
|
||||
* @return the multicast <code>NetworkInterface</code> currently set
|
||||
* @return the multicast {@code NetworkInterface} currently set
|
||||
* @see #setNetworkInterface(NetworkInterface)
|
||||
* @since 1.4
|
||||
*/
|
||||
@ -587,7 +587,7 @@ class MulticastSocket extends DatagramSocket {
|
||||
* <p>Because this option is a hint, applications that want to
|
||||
* verify what loopback mode is set to should call
|
||||
* {@link #getLoopbackMode()}
|
||||
* @param disable <code>true</code> to disable the LoopbackMode
|
||||
* @param disable {@code true} to disable the LoopbackMode
|
||||
* @throws SocketException if an error occurs while setting the value
|
||||
* @since 1.4
|
||||
* @see #getLoopbackMode
|
||||
@ -615,18 +615,18 @@ class MulticastSocket extends DatagramSocket {
|
||||
* otherwise it is preferable to set a TTL once on the socket, and
|
||||
* use that default TTL for all packets. This method does <B>not
|
||||
* </B> alter the default TTL for the socket. Its behavior may be
|
||||
* affected by <code>setInterface</code>.
|
||||
* affected by {@code setInterface}.
|
||||
*
|
||||
* <p>If there is a security manager, this method first performs some
|
||||
* security checks. First, if <code>p.getAddress().isMulticastAddress()</code>
|
||||
* security checks. First, if {@code p.getAddress().isMulticastAddress()}
|
||||
* is true, this method calls the
|
||||
* security manager's <code>checkMulticast</code> method
|
||||
* with <code>p.getAddress()</code> and <code>ttl</code> as its arguments.
|
||||
* security manager's {@code checkMulticast} method
|
||||
* with {@code p.getAddress()} and {@code ttl} as its arguments.
|
||||
* If the evaluation of that expression is false,
|
||||
* this method instead calls the security manager's
|
||||
* <code>checkConnect</code> method with arguments
|
||||
* <code>p.getAddress().getHostAddress()</code> and
|
||||
* <code>p.getPort()</code>. Each call to a security manager method
|
||||
* {@code checkConnect} method with arguments
|
||||
* {@code p.getAddress().getHostAddress()} and
|
||||
* {@code p.getPort()}. Each call to a security manager method
|
||||
* could result in a SecurityException if the operation is not allowed.
|
||||
*
|
||||
* @param p is the packet to be sent. The packet should contain
|
||||
@ -639,7 +639,7 @@ class MulticastSocket extends DatagramSocket {
|
||||
* @exception IOException is raised if an error occurs i.e
|
||||
* error while setting ttl.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkMulticast</code> or <code>checkConnect</code>
|
||||
* {@code checkMulticast} or {@code checkConnect}
|
||||
* method doesn't allow the send.
|
||||
*
|
||||
* @deprecated Use the following code or its equivalent instead:
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 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
|
||||
@ -177,8 +177,8 @@ public final class NetPermission extends BasicPermission {
|
||||
*
|
||||
* @param name the name of the NetPermission.
|
||||
*
|
||||
* @throws NullPointerException if <code>name</code> is <code>null</code>.
|
||||
* @throws IllegalArgumentException if <code>name</code> is empty.
|
||||
* @throws NullPointerException if {@code name} is {@code null}.
|
||||
* @throws IllegalArgumentException if {@code name} is empty.
|
||||
*/
|
||||
|
||||
public NetPermission(String name)
|
||||
@ -194,8 +194,8 @@ public final class NetPermission extends BasicPermission {
|
||||
* @param name the name of the NetPermission.
|
||||
* @param actions should be null.
|
||||
*
|
||||
* @throws NullPointerException if <code>name</code> is <code>null</code>.
|
||||
* @throws IllegalArgumentException if <code>name</code> is empty.
|
||||
* @throws NullPointerException if {@code name} is {@code null}.
|
||||
* @throws IllegalArgumentException if {@code name} is empty.
|
||||
*/
|
||||
|
||||
public NetPermission(String name, String actions)
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 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
|
||||
@ -98,9 +98,9 @@ public final class NetworkInterface {
|
||||
* Convenience method to return an Enumeration with all or a
|
||||
* subset of the InetAddresses bound to this network interface.
|
||||
* <p>
|
||||
* If there is a security manager, its <code>checkConnect</code>
|
||||
* If there is a security manager, its {@code checkConnect}
|
||||
* method is called for each InetAddress. Only InetAddresses where
|
||||
* the <code>checkConnect</code> doesn't throw a SecurityException
|
||||
* the {@code checkConnect} doesn't throw a SecurityException
|
||||
* will be returned in the Enumeration. However, if the caller has the
|
||||
* {@link NetPermission}("getNetworkInformation") permission, then all
|
||||
* InetAddresses are returned.
|
||||
@ -154,15 +154,15 @@ public final class NetworkInterface {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a List of all or a subset of the <code>InterfaceAddresses</code>
|
||||
* Get a List of all or a subset of the {@code InterfaceAddresses}
|
||||
* of this network interface.
|
||||
* <p>
|
||||
* If there is a security manager, its <code>checkConnect</code>
|
||||
* If there is a security manager, its {@code checkConnect}
|
||||
* method is called with the InetAddress for each InterfaceAddress.
|
||||
* Only InterfaceAddresses where the <code>checkConnect</code> doesn't throw
|
||||
* Only InterfaceAddresses where the {@code checkConnect} doesn't throw
|
||||
* a SecurityException will be returned in the List.
|
||||
*
|
||||
* @return a <code>List</code> object with all or a subset of the
|
||||
* @return a {@code List} object with all or a subset of the
|
||||
* InterfaceAddresss of this network interface
|
||||
* @since 1.6
|
||||
*/
|
||||
@ -216,10 +216,10 @@ public final class NetworkInterface {
|
||||
|
||||
/**
|
||||
* Returns the parent NetworkInterface of this interface if this is
|
||||
* a subinterface, or <code>null</code> if it is a physical
|
||||
* a subinterface, or {@code null} if it is a physical
|
||||
* (non virtual) interface or has no parent.
|
||||
*
|
||||
* @return The <code>NetworkInterface</code> this interface is attached to.
|
||||
* @return The {@code NetworkInterface} this interface is attached to.
|
||||
* @since 1.6
|
||||
*/
|
||||
public NetworkInterface getParent() {
|
||||
@ -260,15 +260,15 @@ public final class NetworkInterface {
|
||||
* @param name
|
||||
* The name of the network interface.
|
||||
*
|
||||
* @return A <tt>NetworkInterface</tt> with the specified name,
|
||||
* or <tt>null</tt> if there is no network interface
|
||||
* @return A {@code NetworkInterface} with the specified name,
|
||||
* or {@code null} if there is no network interface
|
||||
* with the specified name.
|
||||
*
|
||||
* @throws SocketException
|
||||
* If an I/O error occurs.
|
||||
*
|
||||
* @throws NullPointerException
|
||||
* If the specified name is <tt>null</tt>.
|
||||
* If the specified name is {@code null}.
|
||||
*/
|
||||
public static NetworkInterface getByName(String name) throws SocketException {
|
||||
if (name == null)
|
||||
@ -303,17 +303,17 @@ public final class NetworkInterface {
|
||||
* returned.
|
||||
*
|
||||
* @param addr
|
||||
* The <tt>InetAddress</tt> to search with.
|
||||
* The {@code InetAddress} to search with.
|
||||
*
|
||||
* @return A <tt>NetworkInterface</tt>
|
||||
* or <tt>null</tt> if there is no network interface
|
||||
* @return A {@code NetworkInterface}
|
||||
* or {@code null} if there is no network interface
|
||||
* with the specified IP address.
|
||||
*
|
||||
* @throws SocketException
|
||||
* If an I/O error occurs.
|
||||
*
|
||||
* @throws NullPointerException
|
||||
* If the specified address is <tt>null</tt>.
|
||||
* If the specified address is {@code null}.
|
||||
*/
|
||||
public static NetworkInterface getByInetAddress(InetAddress addr) throws SocketException {
|
||||
if (addr == null) {
|
||||
@ -378,7 +378,7 @@ public final class NetworkInterface {
|
||||
/**
|
||||
* Returns whether a network interface is up and running.
|
||||
*
|
||||
* @return <code>true</code> if the interface is up and running.
|
||||
* @return {@code true} if the interface is up and running.
|
||||
* @exception SocketException if an I/O error occurs.
|
||||
* @since 1.6
|
||||
*/
|
||||
@ -390,7 +390,7 @@ public final class NetworkInterface {
|
||||
/**
|
||||
* Returns whether a network interface is a loopback interface.
|
||||
*
|
||||
* @return <code>true</code> if the interface is a loopback interface.
|
||||
* @return {@code true} if the interface is a loopback interface.
|
||||
* @exception SocketException if an I/O error occurs.
|
||||
* @since 1.6
|
||||
*/
|
||||
@ -404,7 +404,7 @@ public final class NetworkInterface {
|
||||
* A typical point to point interface would be a PPP connection through
|
||||
* a modem.
|
||||
*
|
||||
* @return <code>true</code> if the interface is a point to point
|
||||
* @return {@code true} if the interface is a point to point
|
||||
* interface.
|
||||
* @exception SocketException if an I/O error occurs.
|
||||
* @since 1.6
|
||||
@ -417,7 +417,7 @@ public final class NetworkInterface {
|
||||
/**
|
||||
* Returns whether a network interface supports multicasting or not.
|
||||
*
|
||||
* @return <code>true</code> if the interface supports Multicasting.
|
||||
* @return {@code true} if the interface supports Multicasting.
|
||||
* @exception SocketException if an I/O error occurs.
|
||||
* @since 1.6
|
||||
*/
|
||||
@ -432,7 +432,7 @@ public final class NetworkInterface {
|
||||
* If a security manager is set, then the caller must have
|
||||
* the permission {@link NetPermission}("getNetworkInformation").
|
||||
*
|
||||
* @return a byte array containing the address, or <code>null</code> if
|
||||
* @return a byte array containing the address, or {@code null} if
|
||||
* the address doesn't exist, is not accessible or a security
|
||||
* manager is set and the caller does not have the permission
|
||||
* NetPermission("getNetworkInformation")
|
||||
@ -481,7 +481,7 @@ public final class NetworkInterface {
|
||||
* can be several virtual interfaces attached to a single physical
|
||||
* interface.
|
||||
*
|
||||
* @return <code>true</code> if this interface is a virtual interface.
|
||||
* @return {@code true} if this interface is a virtual interface.
|
||||
* @since 1.6
|
||||
*/
|
||||
public boolean isVirtual() {
|
||||
@ -497,16 +497,16 @@ public final class NetworkInterface {
|
||||
|
||||
/**
|
||||
* Compares this object against the specified object.
|
||||
* The result is <code>true</code> if and only if the argument is
|
||||
* not <code>null</code> and it represents the same NetworkInterface
|
||||
* The result is {@code true} if and only if the argument is
|
||||
* not {@code null} and it represents the same NetworkInterface
|
||||
* as this object.
|
||||
* <p>
|
||||
* Two instances of <code>NetworkInterface</code> represent the same
|
||||
* Two instances of {@code NetworkInterface} represent the same
|
||||
* NetworkInterface if both name and addrs are the same for both.
|
||||
*
|
||||
* @param obj the object to compare against.
|
||||
* @return <code>true</code> if the objects are the same;
|
||||
* <code>false</code> otherwise.
|
||||
* @return {@code true} if the objects are the same;
|
||||
* {@code false} otherwise.
|
||||
* @see java.net.InetAddress#getAddress()
|
||||
*/
|
||||
public boolean equals(Object obj) {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2001, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 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
|
||||
@ -43,11 +43,11 @@ public final class PasswordAuthentication {
|
||||
private char[] password;
|
||||
|
||||
/**
|
||||
* Creates a new <code>PasswordAuthentication</code> object from the given
|
||||
* Creates a new {@code PasswordAuthentication} object from the given
|
||||
* user name and password.
|
||||
*
|
||||
* <p> Note that the given user password is cloned before it is stored in
|
||||
* the new <code>PasswordAuthentication</code> object.
|
||||
* the new {@code PasswordAuthentication} object.
|
||||
*
|
||||
* @param userName the user name
|
||||
* @param password the user's password
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2001, 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
|
||||
@ -36,7 +36,7 @@ public class PortUnreachableException extends SocketException {
|
||||
private static final long serialVersionUID = 8462541992376507323L;
|
||||
|
||||
/**
|
||||
* Constructs a new <code>PortUnreachableException</code> with a
|
||||
* Constructs a new {@code PortUnreachableException} with a
|
||||
* detail message.
|
||||
* @param msg the detail message
|
||||
*/
|
||||
@ -45,7 +45,7 @@ public class PortUnreachableException extends SocketException {
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a new <code>PortUnreachableException</code> with no
|
||||
* Construct a new {@code PortUnreachableException} with no
|
||||
* detailed message.
|
||||
*/
|
||||
public PortUnreachableException() {}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 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
|
||||
@ -39,7 +39,7 @@ class ProtocolException extends IOException {
|
||||
private static final long serialVersionUID = -6098449442062388080L;
|
||||
|
||||
/**
|
||||
* Constructs a new <code>ProtocolException</code> with the
|
||||
* Constructs a new {@code ProtocolException} with the
|
||||
* specified detail message.
|
||||
*
|
||||
* @param host the detail message.
|
||||
@ -49,7 +49,7 @@ class ProtocolException extends IOException {
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new <code>ProtocolException</code> with no detail message.
|
||||
* Constructs a new {@code ProtocolException} with no detail message.
|
||||
*/
|
||||
public ProtocolException() {
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 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
|
||||
@ -28,7 +28,7 @@ package java.net;
|
||||
/**
|
||||
* This class represents a proxy setting, typically a type (http, socks) and
|
||||
* a socket address.
|
||||
* A <code>Proxy</code> is an immutable object.
|
||||
* A {@code Proxy} is an immutable object.
|
||||
*
|
||||
* @see java.net.ProxySelector
|
||||
* @author Yingxian Wang
|
||||
@ -61,17 +61,17 @@ public class Proxy {
|
||||
private SocketAddress sa;
|
||||
|
||||
/**
|
||||
* A proxy setting that represents a <code>DIRECT</code> connection,
|
||||
* A proxy setting that represents a {@code DIRECT} connection,
|
||||
* basically telling the protocol handler not to use any proxying.
|
||||
* Used, for instance, to create sockets bypassing any other global
|
||||
* proxy settings (like SOCKS):
|
||||
* <P>
|
||||
* <code>Socket s = new Socket(Proxy.NO_PROXY);</code><br>
|
||||
* {@code Socket s = new Socket(Proxy.NO_PROXY);}<br>
|
||||
* <P>
|
||||
*/
|
||||
public final static Proxy NO_PROXY = new Proxy();
|
||||
|
||||
// Creates the proxy that represents a <code>DIRECT</code> connection.
|
||||
// Creates the proxy that represents a {@code DIRECT} connection.
|
||||
private Proxy() {
|
||||
type = Type.DIRECT;
|
||||
sa = null;
|
||||
@ -82,11 +82,11 @@ public class Proxy {
|
||||
* Certain combinations are illegal. For instance, for types Http, and
|
||||
* Socks, a SocketAddress <b>must</b> be provided.
|
||||
* <P>
|
||||
* Use the <code>Proxy.NO_PROXY</code> constant
|
||||
* Use the {@code Proxy.NO_PROXY} constant
|
||||
* for representing a direct connection.
|
||||
*
|
||||
* @param type the <code>Type</code> of the proxy
|
||||
* @param sa the <code>SocketAddress</code> for that proxy
|
||||
* @param type the {@code Type} of the proxy
|
||||
* @param sa the {@code SocketAddress} for that proxy
|
||||
* @throws IllegalArgumentException when the type and the address are
|
||||
* incompatible
|
||||
*/
|
||||
@ -108,9 +108,9 @@ public class Proxy {
|
||||
|
||||
/**
|
||||
* Returns the socket address of the proxy, or
|
||||
* <code>null</code> if its a direct connection.
|
||||
* {@code null} if its a direct connection.
|
||||
*
|
||||
* @return a <code>SocketAddress</code> representing the socket end
|
||||
* @return a {@code SocketAddress} representing the socket end
|
||||
* point of the proxy
|
||||
*/
|
||||
public SocketAddress address() {
|
||||
@ -121,7 +121,7 @@ public class Proxy {
|
||||
* Constructs a string representation of this Proxy.
|
||||
* This String is constructed by calling toString() on its type
|
||||
* and concatenating " @ " and the toString() result from its address
|
||||
* if its type is not <code>DIRECT</code>.
|
||||
* if its type is not {@code DIRECT}.
|
||||
*
|
||||
* @return a string representation of this object.
|
||||
*/
|
||||
@ -133,16 +133,16 @@ public class Proxy {
|
||||
|
||||
/**
|
||||
* Compares this object against the specified object.
|
||||
* The result is <code>true</code> if and only if the argument is
|
||||
* not <code>null</code> and it represents the same proxy as
|
||||
* The result is {@code true} if and only if the argument is
|
||||
* not {@code null} and it represents the same proxy as
|
||||
* this object.
|
||||
* <p>
|
||||
* Two instances of <code>Proxy</code> represent the same
|
||||
* Two instances of {@code Proxy} represent the same
|
||||
* address if both the SocketAddresses and type are equal.
|
||||
*
|
||||
* @param obj the object to compare against.
|
||||
* @return <code>true</code> if the objects are the same;
|
||||
* <code>false</code> otherwise.
|
||||
* @return {@code true} if the objects are the same;
|
||||
* {@code false} otherwise.
|
||||
* @see java.net.InetSocketAddress#equals(java.lang.Object)
|
||||
*/
|
||||
public final boolean equals(Object obj) {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 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
|
||||
@ -83,9 +83,9 @@ public abstract class ProxySelector {
|
||||
*
|
||||
* @throws SecurityException
|
||||
* If a security manager has been installed and it denies
|
||||
* {@link NetPermission}<tt>("getProxySelector")</tt>
|
||||
* {@link NetPermission}{@code ("getProxySelector")}
|
||||
* @see #setDefault(ProxySelector)
|
||||
* @return the system-wide <code>ProxySelector</code>
|
||||
* @return the system-wide {@code ProxySelector}
|
||||
* @since 1.5
|
||||
*/
|
||||
public static ProxySelector getDefault() {
|
||||
@ -102,11 +102,11 @@ public abstract class ProxySelector {
|
||||
* Note: non-standard protocol handlers may ignore this setting.
|
||||
*
|
||||
* @param ps The HTTP proxy selector, or
|
||||
* <code>null</code> to unset the proxy selector.
|
||||
* {@code null} to unset the proxy selector.
|
||||
*
|
||||
* @throws SecurityException
|
||||
* If a security manager has been installed and it denies
|
||||
* {@link NetPermission}<tt>("setProxySelector")</tt>
|
||||
* {@link NetPermission}{@code ("setProxySelector")}
|
||||
*
|
||||
* @see #getDefault()
|
||||
* @since 1.5
|
||||
@ -127,7 +127,7 @@ public abstract class ProxySelector {
|
||||
* <UL>
|
||||
* <LI>http URI for http connections</LI>
|
||||
* <LI>https URI for https connections
|
||||
* <LI><code>socket://host:port</code><br>
|
||||
* <LI>{@code socket://host:port}<br>
|
||||
* for tcp client sockets connections</LI>
|
||||
* </UL>
|
||||
*
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 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
|
||||
@ -74,10 +74,10 @@ public abstract class ResponseCache {
|
||||
*
|
||||
* @throws SecurityException
|
||||
* If a security manager has been installed and it denies
|
||||
* {@link NetPermission}<tt>("getResponseCache")</tt>
|
||||
* {@link NetPermission}{@code ("getResponseCache")}
|
||||
*
|
||||
* @see #setDefault(ResponseCache)
|
||||
* @return the system-wide <code>ResponseCache</code>
|
||||
* @return the system-wide {@code ResponseCache}
|
||||
* @since 1.5
|
||||
*/
|
||||
public synchronized static ResponseCache getDefault() {
|
||||
@ -94,11 +94,11 @@ public abstract class ResponseCache {
|
||||
* Note: non-standard procotol handlers may ignore this setting.
|
||||
*
|
||||
* @param responseCache The response cache, or
|
||||
* <code>null</code> to unset the cache.
|
||||
* {@code null} to unset the cache.
|
||||
*
|
||||
* @throws SecurityException
|
||||
* If a security manager has been installed and it denies
|
||||
* {@link NetPermission}<tt>("setResponseCache")</tt>
|
||||
* {@link NetPermission}{@code ("setResponseCache")}
|
||||
*
|
||||
* @see #getDefault()
|
||||
* @since 1.5
|
||||
@ -118,14 +118,14 @@ public abstract class ResponseCache {
|
||||
* to get the network resource. If a cached response is returned,
|
||||
* that resource is used instead.
|
||||
*
|
||||
* @param uri a <code>URI</code> used to reference the requested
|
||||
* @param uri a {@code URI} used to reference the requested
|
||||
* network resource
|
||||
* @param rqstMethod a <code>String</code> representing the request
|
||||
* @param rqstMethod a {@code String} representing the request
|
||||
* method
|
||||
* @param rqstHeaders - a Map from request header
|
||||
* field names to lists of field values representing
|
||||
* the current request headers
|
||||
* @return a <code>CacheResponse</code> instance if available
|
||||
* @return a {@code CacheResponse} instance if available
|
||||
* from cache, or null otherwise
|
||||
* @throws IOException if an I/O error occurs
|
||||
* @throws IllegalArgumentException if any one of the arguments is null
|
||||
@ -148,11 +148,11 @@ public abstract class ResponseCache {
|
||||
* use to write the resource into the cache. If the resource is
|
||||
* not to be cached, then put must return null.
|
||||
*
|
||||
* @param uri a <code>URI</code> used to reference the requested
|
||||
* @param uri a {@code URI} used to reference the requested
|
||||
* network resource
|
||||
* @param conn - a URLConnection instance that is used to fetch
|
||||
* the response to be cached
|
||||
* @return a <code>CacheRequest</code> for recording the
|
||||
* @return a {@code CacheRequest} for recording the
|
||||
* response to be cached. Null return indicates that
|
||||
* the caller does not intend to cache the response.
|
||||
* @throws IOException if an I/O error occurs
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 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
|
||||
@ -37,7 +37,7 @@ import java.security.PrivilegedExceptionAction;
|
||||
* based on that request, and then possibly returns a result to the requester.
|
||||
* <p>
|
||||
* The actual work of the server socket is performed by an instance
|
||||
* of the <code>SocketImpl</code> class. An application can
|
||||
* of the {@code SocketImpl} class. An application can
|
||||
* change the socket factory that creates the socket
|
||||
* implementation to configure itself to create sockets
|
||||
* appropriate to the local firewall.
|
||||
@ -89,31 +89,31 @@ class ServerSocket implements java.io.Closeable {
|
||||
|
||||
/**
|
||||
* Creates a server socket, bound to the specified port. A port number
|
||||
* of <code>0</code> means that the port number is automatically
|
||||
* of {@code 0} means that the port number is automatically
|
||||
* allocated, typically from an ephemeral port range. This port
|
||||
* number can then be retrieved by calling {@link #getLocalPort getLocalPort}.
|
||||
* <p>
|
||||
* The maximum queue length for incoming connection indications (a
|
||||
* request to connect) is set to <code>50</code>. If a connection
|
||||
* request to connect) is set to {@code 50}. If a connection
|
||||
* indication arrives when the queue is full, the connection is refused.
|
||||
* <p>
|
||||
* If the application has specified a server socket factory, that
|
||||
* factory's <code>createSocketImpl</code> method is called to create
|
||||
* factory's {@code createSocketImpl} method is called to create
|
||||
* the actual socket implementation. Otherwise a "plain" socket is created.
|
||||
* <p>
|
||||
* If there is a security manager,
|
||||
* its <code>checkListen</code> method is called
|
||||
* with the <code>port</code> argument
|
||||
* its {@code checkListen} method is called
|
||||
* with the {@code port} argument
|
||||
* as its argument to ensure the operation is allowed.
|
||||
* This could result in a SecurityException.
|
||||
*
|
||||
*
|
||||
* @param port the port number, or <code>0</code> to use a port
|
||||
* @param port the port number, or {@code 0} to use a port
|
||||
* number that is automatically allocated.
|
||||
*
|
||||
* @exception IOException if an I/O error occurs when opening the socket.
|
||||
* @exception SecurityException
|
||||
* if a security manager exists and its <code>checkListen</code>
|
||||
* if a security manager exists and its {@code checkListen}
|
||||
* method doesn't allow the operation.
|
||||
* @exception IllegalArgumentException if the port parameter is outside
|
||||
* the specified range of valid port values, which is between
|
||||
@ -131,42 +131,42 @@ class ServerSocket implements java.io.Closeable {
|
||||
/**
|
||||
* Creates a server socket and binds it to the specified local port
|
||||
* number, with the specified backlog.
|
||||
* A port number of <code>0</code> means that the port number is
|
||||
* A port number of {@code 0} means that the port number is
|
||||
* automatically allocated, typically from an ephemeral port range.
|
||||
* This port number can then be retrieved by calling
|
||||
* {@link #getLocalPort getLocalPort}.
|
||||
* <p>
|
||||
* The maximum queue length for incoming connection indications (a
|
||||
* request to connect) is set to the <code>backlog</code> parameter. If
|
||||
* request to connect) is set to the {@code backlog} parameter. If
|
||||
* a connection indication arrives when the queue is full, the
|
||||
* connection is refused.
|
||||
* <p>
|
||||
* If the application has specified a server socket factory, that
|
||||
* factory's <code>createSocketImpl</code> method is called to create
|
||||
* factory's {@code createSocketImpl} method is called to create
|
||||
* the actual socket implementation. Otherwise a "plain" socket is created.
|
||||
* <p>
|
||||
* If there is a security manager,
|
||||
* its <code>checkListen</code> method is called
|
||||
* with the <code>port</code> argument
|
||||
* its {@code checkListen} method is called
|
||||
* with the {@code port} argument
|
||||
* as its argument to ensure the operation is allowed.
|
||||
* This could result in a SecurityException.
|
||||
*
|
||||
* The <code>backlog</code> argument is the requested maximum number of
|
||||
* The {@code backlog} argument is the requested maximum number of
|
||||
* pending connections on the socket. Its exact semantics are implementation
|
||||
* specific. In particular, an implementation may impose a maximum length
|
||||
* or may choose to ignore the parameter altogther. The value provided
|
||||
* should be greater than <code>0</code>. If it is less than or equal to
|
||||
* <code>0</code>, then an implementation specific default will be used.
|
||||
* should be greater than {@code 0}. If it is less than or equal to
|
||||
* {@code 0}, then an implementation specific default will be used.
|
||||
* <P>
|
||||
*
|
||||
* @param port the port number, or <code>0</code> to use a port
|
||||
* @param port the port number, or {@code 0} to use a port
|
||||
* number that is automatically allocated.
|
||||
* @param backlog requested maximum length of the queue of incoming
|
||||
* connections.
|
||||
*
|
||||
* @exception IOException if an I/O error occurs when opening the socket.
|
||||
* @exception SecurityException
|
||||
* if a security manager exists and its <code>checkListen</code>
|
||||
* if a security manager exists and its {@code checkListen}
|
||||
* method doesn't allow the operation.
|
||||
* @exception IllegalArgumentException if the port parameter is outside
|
||||
* the specified range of valid port values, which is between
|
||||
@ -189,32 +189,32 @@ class ServerSocket implements java.io.Closeable {
|
||||
* If <i>bindAddr</i> is null, it will default accepting
|
||||
* connections on any/all local addresses.
|
||||
* The port must be between 0 and 65535, inclusive.
|
||||
* A port number of <code>0</code> means that the port number is
|
||||
* A port number of {@code 0} means that the port number is
|
||||
* automatically allocated, typically from an ephemeral port range.
|
||||
* This port number can then be retrieved by calling
|
||||
* {@link #getLocalPort getLocalPort}.
|
||||
*
|
||||
* <P>If there is a security manager, this method
|
||||
* calls its <code>checkListen</code> method
|
||||
* with the <code>port</code> argument
|
||||
* calls its {@code checkListen} method
|
||||
* with the {@code port} argument
|
||||
* as its argument to ensure the operation is allowed.
|
||||
* This could result in a SecurityException.
|
||||
*
|
||||
* The <code>backlog</code> argument is the requested maximum number of
|
||||
* The {@code backlog} argument is the requested maximum number of
|
||||
* pending connections on the socket. Its exact semantics are implementation
|
||||
* specific. In particular, an implementation may impose a maximum length
|
||||
* or may choose to ignore the parameter altogther. The value provided
|
||||
* should be greater than <code>0</code>. If it is less than or equal to
|
||||
* <code>0</code>, then an implementation specific default will be used.
|
||||
* should be greater than {@code 0}. If it is less than or equal to
|
||||
* {@code 0}, then an implementation specific default will be used.
|
||||
* <P>
|
||||
* @param port the port number, or <code>0</code> to use a port
|
||||
* @param port the port number, or {@code 0} to use a port
|
||||
* number that is automatically allocated.
|
||||
* @param backlog requested maximum length of the queue of incoming
|
||||
* connections.
|
||||
* @param bindAddr the local InetAddress the server will bind to
|
||||
*
|
||||
* @throws SecurityException if a security manager exists and
|
||||
* its <code>checkListen</code> method doesn't allow the operation.
|
||||
* its {@code checkListen} method doesn't allow the operation.
|
||||
*
|
||||
* @throws IOException if an I/O error occurs when opening the socket.
|
||||
* @exception IllegalArgumentException if the port parameter is outside
|
||||
@ -245,10 +245,10 @@ class ServerSocket implements java.io.Closeable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the <code>SocketImpl</code> attached to this socket, creating
|
||||
* Get the {@code SocketImpl} attached to this socket, creating
|
||||
* it if necessary.
|
||||
*
|
||||
* @return the <code>SocketImpl</code> attached to that ServerSocket.
|
||||
* @return the {@code SocketImpl} attached to that ServerSocket.
|
||||
* @throws SocketException if creation fails.
|
||||
* @since 1.4
|
||||
*/
|
||||
@ -310,17 +310,17 @@ class ServerSocket implements java.io.Closeable {
|
||||
|
||||
/**
|
||||
*
|
||||
* Binds the <code>ServerSocket</code> to a specific address
|
||||
* Binds the {@code ServerSocket} to a specific address
|
||||
* (IP address and port number).
|
||||
* <p>
|
||||
* If the address is <code>null</code>, then the system will pick up
|
||||
* If the address is {@code null}, then the system will pick up
|
||||
* an ephemeral port and a valid local address to bind the socket.
|
||||
* <p>
|
||||
* @param endpoint The IP address and port number to bind to.
|
||||
* @throws IOException if the bind operation fails, or if the socket
|
||||
* is already bound.
|
||||
* @throws SecurityException if a <code>SecurityManager</code> is present and
|
||||
* its <code>checkListen</code> method doesn't allow the operation.
|
||||
* @throws SecurityException if a {@code SecurityManager} is present and
|
||||
* its {@code checkListen} method doesn't allow the operation.
|
||||
* @throws IllegalArgumentException if endpoint is a
|
||||
* SocketAddress subclass not supported by this socket
|
||||
* @since 1.4
|
||||
@ -331,25 +331,25 @@ class ServerSocket implements java.io.Closeable {
|
||||
|
||||
/**
|
||||
*
|
||||
* Binds the <code>ServerSocket</code> to a specific address
|
||||
* Binds the {@code ServerSocket} to a specific address
|
||||
* (IP address and port number).
|
||||
* <p>
|
||||
* If the address is <code>null</code>, then the system will pick up
|
||||
* If the address is {@code null}, then the system will pick up
|
||||
* an ephemeral port and a valid local address to bind the socket.
|
||||
* <P>
|
||||
* The <code>backlog</code> argument is the requested maximum number of
|
||||
* The {@code backlog} argument is the requested maximum number of
|
||||
* pending connections on the socket. Its exact semantics are implementation
|
||||
* specific. In particular, an implementation may impose a maximum length
|
||||
* or may choose to ignore the parameter altogther. The value provided
|
||||
* should be greater than <code>0</code>. If it is less than or equal to
|
||||
* <code>0</code>, then an implementation specific default will be used.
|
||||
* should be greater than {@code 0}. If it is less than or equal to
|
||||
* {@code 0}, then an implementation specific default will be used.
|
||||
* @param endpoint The IP address and port number to bind to.
|
||||
* @param backlog requested maximum length of the queue of
|
||||
* incoming connections.
|
||||
* @throws IOException if the bind operation fails, or if the socket
|
||||
* is already bound.
|
||||
* @throws SecurityException if a <code>SecurityManager</code> is present and
|
||||
* its <code>checkListen</code> method doesn't allow the operation.
|
||||
* @throws SecurityException if a {@code SecurityManager} is present and
|
||||
* its {@code checkListen} method doesn't allow the operation.
|
||||
* @throws IllegalArgumentException if endpoint is a
|
||||
* SocketAddress subclass not supported by this socket
|
||||
* @since 1.4
|
||||
@ -480,18 +480,18 @@ class ServerSocket implements java.io.Closeable {
|
||||
* Listens for a connection to be made to this socket and accepts
|
||||
* it. The method blocks until a connection is made.
|
||||
*
|
||||
* <p>A new Socket <code>s</code> is created and, if there
|
||||
* <p>A new Socket {@code s} is created and, if there
|
||||
* is a security manager,
|
||||
* the security manager's <code>checkAccept</code> method is called
|
||||
* with <code>s.getInetAddress().getHostAddress()</code> and
|
||||
* <code>s.getPort()</code>
|
||||
* the security manager's {@code checkAccept} method is called
|
||||
* with {@code s.getInetAddress().getHostAddress()} and
|
||||
* {@code s.getPort()}
|
||||
* as its arguments to ensure the operation is allowed.
|
||||
* This could result in a SecurityException.
|
||||
*
|
||||
* @exception IOException if an I/O error occurs when waiting for a
|
||||
* connection.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkAccept</code> method doesn't allow the operation.
|
||||
* {@code checkAccept} method doesn't allow the operation.
|
||||
* @exception SocketTimeoutException if a timeout was previously set with setSoTimeout and
|
||||
* the timeout has been reached.
|
||||
* @exception java.nio.channels.IllegalBlockingModeException
|
||||
@ -597,7 +597,7 @@ class ServerSocket implements java.io.Closeable {
|
||||
* method.
|
||||
*
|
||||
* @return the server-socket channel associated with this socket,
|
||||
* or <tt>null</tt> if this socket was not created
|
||||
* or {@code null} if this socket was not created
|
||||
* for a channel
|
||||
*
|
||||
* @since 1.4
|
||||
@ -678,18 +678,18 @@ class ServerSocket implements java.io.Closeable {
|
||||
* <p>
|
||||
* When a TCP connection is closed the connection may remain
|
||||
* in a timeout state for a period of time after the connection
|
||||
* is closed (typically known as the <tt>TIME_WAIT</tt> state
|
||||
* or <tt>2MSL</tt> wait state).
|
||||
* is closed (typically known as the {@code TIME_WAIT} state
|
||||
* or {@code 2MSL} wait state).
|
||||
* For applications using a well known socket address or port
|
||||
* it may not be possible to bind a socket to the required
|
||||
* <tt>SocketAddress</tt> if there is a connection in the
|
||||
* {@code SocketAddress} if there is a connection in the
|
||||
* timeout state involving the socket address or port.
|
||||
* <p>
|
||||
* Enabling {@link SocketOptions#SO_REUSEADDR SO_REUSEADDR} prior to
|
||||
* binding the socket using {@link #bind(SocketAddress)} allows the socket
|
||||
* to be bound even though a previous connection is in a timeout state.
|
||||
* <p>
|
||||
* When a <tt>ServerSocket</tt> is created the initial setting
|
||||
* When a {@code ServerSocket} is created the initial setting
|
||||
* of {@link SocketOptions#SO_REUSEADDR SO_REUSEADDR} is not defined.
|
||||
* Applications can use {@link #getReuseAddress()} to determine the initial
|
||||
* setting of {@link SocketOptions#SO_REUSEADDR SO_REUSEADDR}.
|
||||
@ -717,7 +717,7 @@ class ServerSocket implements java.io.Closeable {
|
||||
/**
|
||||
* Tests if {@link SocketOptions#SO_REUSEADDR SO_REUSEADDR} is enabled.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating whether or not
|
||||
* @return a {@code boolean} indicating whether or not
|
||||
* {@link SocketOptions#SO_REUSEADDR SO_REUSEADDR} is enabled.
|
||||
* @exception SocketException if there is an error
|
||||
* in the underlying protocol, such as a TCP error.
|
||||
@ -732,7 +732,7 @@ class ServerSocket implements java.io.Closeable {
|
||||
|
||||
/**
|
||||
* Returns the implementation address and implementation port of
|
||||
* this socket as a <code>String</code>.
|
||||
* this socket as a {@code String}.
|
||||
* <p>
|
||||
* If there is a security manager set, its {@code checkConnect} method is
|
||||
* called with the local address and {@code -1} as its arguments to see
|
||||
@ -773,14 +773,14 @@ class ServerSocket implements java.io.Closeable {
|
||||
* application. The factory can be specified only once.
|
||||
* <p>
|
||||
* When an application creates a new server socket, the socket
|
||||
* implementation factory's <code>createSocketImpl</code> method is
|
||||
* implementation factory's {@code createSocketImpl} method is
|
||||
* called to create the actual socket implementation.
|
||||
* <p>
|
||||
* Passing <code>null</code> to the method is a no-op unless the factory
|
||||
* Passing {@code null} to the method is a no-op unless the factory
|
||||
* was already set.
|
||||
* <p>
|
||||
* If there is a security manager, this method first calls
|
||||
* the security manager's <code>checkSetFactory</code> method
|
||||
* the security manager's {@code checkSetFactory} method
|
||||
* to ensure the operation is allowed.
|
||||
* This could result in a SecurityException.
|
||||
*
|
||||
@ -789,7 +789,7 @@ class ServerSocket implements java.io.Closeable {
|
||||
* socket factory.
|
||||
* @exception SocketException if the factory has already been defined.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkSetFactory</code> method doesn't allow the operation.
|
||||
* {@code checkSetFactory} method doesn't allow the operation.
|
||||
* @see java.net.SocketImplFactory#createSocketImpl()
|
||||
* @see SecurityManager#checkSetFactory
|
||||
*/
|
||||
@ -807,7 +807,7 @@ class ServerSocket implements java.io.Closeable {
|
||||
/**
|
||||
* Sets a default proposed value for the
|
||||
* {@link SocketOptions#SO_RCVBUF SO_RCVBUF} option for sockets
|
||||
* accepted from this <tt>ServerSocket</tt>. The value actually set
|
||||
* accepted from this {@code ServerSocket}. The value actually set
|
||||
* in the accepted socket must be determined by calling
|
||||
* {@link Socket#getReceiveBufferSize()} after the socket
|
||||
* is returned by {@link #accept()}.
|
||||
@ -851,13 +851,13 @@ class ServerSocket implements java.io.Closeable {
|
||||
|
||||
/**
|
||||
* Gets the value of the {@link SocketOptions#SO_RCVBUF SO_RCVBUF} option
|
||||
* for this <tt>ServerSocket</tt>, that is the proposed buffer size that
|
||||
* will be used for Sockets accepted from this <tt>ServerSocket</tt>.
|
||||
* for this {@code ServerSocket}, that is the proposed buffer size that
|
||||
* will be used for Sockets accepted from this {@code ServerSocket}.
|
||||
*
|
||||
* <p>Note, the value actually set in the accepted socket is determined by
|
||||
* calling {@link Socket#getReceiveBufferSize()}.
|
||||
* @return the value of the {@link SocketOptions#SO_RCVBUF SO_RCVBUF}
|
||||
* option for this <tt>Socket</tt>.
|
||||
* option for this {@code Socket}.
|
||||
* @exception SocketException if there is an error
|
||||
* in the underlying protocol, such as a TCP error.
|
||||
* @see #setReceiveBufferSize(int)
|
||||
@ -891,24 +891,24 @@ class ServerSocket implements java.io.Closeable {
|
||||
* compared, with larger values indicating stronger preferences. If the
|
||||
* application prefers short connection time over both low latency and high
|
||||
* bandwidth, for example, then it could invoke this method with the values
|
||||
* <tt>(1, 0, 0)</tt>. If the application prefers high bandwidth above low
|
||||
* {@code (1, 0, 0)}. If the application prefers high bandwidth above low
|
||||
* latency, and low latency above short connection time, then it could
|
||||
* invoke this method with the values <tt>(0, 1, 2)</tt>.
|
||||
* invoke this method with the values {@code (0, 1, 2)}.
|
||||
*
|
||||
* <p> Invoking this method after this socket has been bound
|
||||
* will have no effect. This implies that in order to use this capability
|
||||
* requires the socket to be created with the no-argument constructor.
|
||||
*
|
||||
* @param connectionTime
|
||||
* An <tt>int</tt> expressing the relative importance of a short
|
||||
* An {@code int} expressing the relative importance of a short
|
||||
* connection time
|
||||
*
|
||||
* @param latency
|
||||
* An <tt>int</tt> expressing the relative importance of low
|
||||
* An {@code int} expressing the relative importance of low
|
||||
* latency
|
||||
*
|
||||
* @param bandwidth
|
||||
* An <tt>int</tt> expressing the relative importance of high
|
||||
* An {@code int} expressing the relative importance of high
|
||||
* bandwidth
|
||||
*
|
||||
* @since 1.5
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 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
|
||||
@ -39,7 +39,7 @@ import java.security.PrivilegedAction;
|
||||
* between two machines.
|
||||
* <p>
|
||||
* The actual work of the socket is performed by an instance of the
|
||||
* <code>SocketImpl</code> class. An application, by changing
|
||||
* {@code SocketImpl} class. An application, by changing
|
||||
* the socket factory that creates the socket implementation,
|
||||
* can configure itself to create sockets appropriate to the local
|
||||
* firewall.
|
||||
@ -88,14 +88,14 @@ class Socket implements java.io.Closeable {
|
||||
* Creates an unconnected socket, specifying the type of proxy, if any,
|
||||
* that should be used regardless of any other settings.
|
||||
* <P>
|
||||
* If there is a security manager, its <code>checkConnect</code> method
|
||||
* If there is a security manager, its {@code checkConnect} method
|
||||
* is called with the proxy host address and port number
|
||||
* as its arguments. This could result in a SecurityException.
|
||||
* <P>
|
||||
* Examples:
|
||||
* <UL> <LI><code>Socket s = new Socket(Proxy.NO_PROXY);</code> will create
|
||||
* <UL> <LI>{@code Socket s = new Socket(Proxy.NO_PROXY);} will create
|
||||
* a plain socket ignoring any other proxy configuration.</LI>
|
||||
* <LI><code>Socket s = new Socket(new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("socks.mydom.com", 1080)));</code>
|
||||
* <LI>{@code Socket s = new Socket(new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("socks.mydom.com", 1080)));}
|
||||
* will create a socket connecting through the specified SOCKS proxy
|
||||
* server.</LI>
|
||||
* </UL>
|
||||
@ -103,7 +103,7 @@ class Socket implements java.io.Closeable {
|
||||
* @param proxy a {@link java.net.Proxy Proxy} object specifying what kind
|
||||
* of proxying should be used.
|
||||
* @throws IllegalArgumentException if the proxy is of an invalid type
|
||||
* or <code>null</code>.
|
||||
* or {@code null}.
|
||||
* @throws SecurityException if a security manager is present and
|
||||
* permission to connect to the proxy is
|
||||
* denied.
|
||||
@ -173,21 +173,22 @@ class Socket implements java.io.Closeable {
|
||||
* Creates a stream socket and connects it to the specified port
|
||||
* number on the named host.
|
||||
* <p>
|
||||
* If the specified host is <tt>null</tt> it is the equivalent of
|
||||
* specifying the address as <tt>{@link java.net.InetAddress#getByName InetAddress.getByName}(null)</tt>.
|
||||
* If the specified host is {@code null} it is the equivalent of
|
||||
* specifying the address as
|
||||
* {@link java.net.InetAddress#getByName InetAddress.getByName}{@code (null)}.
|
||||
* In other words, it is equivalent to specifying an address of the
|
||||
* loopback interface. </p>
|
||||
* <p>
|
||||
* If the application has specified a server socket factory, that
|
||||
* factory's <code>createSocketImpl</code> method is called to create
|
||||
* factory's {@code createSocketImpl} method is called to create
|
||||
* the actual socket implementation. Otherwise a "plain" socket is created.
|
||||
* <p>
|
||||
* If there is a security manager, its
|
||||
* <code>checkConnect</code> method is called
|
||||
* with the host address and <code>port</code>
|
||||
* {@code checkConnect} method is called
|
||||
* with the host address and {@code port}
|
||||
* as its arguments. This could result in a SecurityException.
|
||||
*
|
||||
* @param host the host name, or <code>null</code> for the loopback address.
|
||||
* @param host the host name, or {@code null} for the loopback address.
|
||||
* @param port the port number.
|
||||
*
|
||||
* @exception UnknownHostException if the IP address of
|
||||
@ -195,7 +196,7 @@ class Socket implements java.io.Closeable {
|
||||
*
|
||||
* @exception IOException if an I/O error occurs when creating the socket.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkConnect</code> method doesn't allow the operation.
|
||||
* {@code checkConnect} method doesn't allow the operation.
|
||||
* @exception IllegalArgumentException if the port parameter is outside
|
||||
* the specified range of valid port values, which is between
|
||||
* 0 and 65535, inclusive.
|
||||
@ -217,23 +218,23 @@ class Socket implements java.io.Closeable {
|
||||
* number at the specified IP address.
|
||||
* <p>
|
||||
* If the application has specified a socket factory, that factory's
|
||||
* <code>createSocketImpl</code> method is called to create the
|
||||
* {@code createSocketImpl} method is called to create the
|
||||
* actual socket implementation. Otherwise a "plain" socket is created.
|
||||
* <p>
|
||||
* If there is a security manager, its
|
||||
* <code>checkConnect</code> method is called
|
||||
* with the host address and <code>port</code>
|
||||
* {@code checkConnect} method is called
|
||||
* with the host address and {@code port}
|
||||
* as its arguments. This could result in a SecurityException.
|
||||
*
|
||||
* @param address the IP address.
|
||||
* @param port the port number.
|
||||
* @exception IOException if an I/O error occurs when creating the socket.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkConnect</code> method doesn't allow the operation.
|
||||
* {@code checkConnect} method doesn't allow the operation.
|
||||
* @exception IllegalArgumentException if the port parameter is outside
|
||||
* the specified range of valid port values, which is between
|
||||
* 0 and 65535, inclusive.
|
||||
* @exception NullPointerException if <code>address</code> is null.
|
||||
* @exception NullPointerException if {@code address} is null.
|
||||
* @see java.net.Socket#setSocketImplFactory(java.net.SocketImplFactory)
|
||||
* @see java.net.SocketImpl
|
||||
* @see java.net.SocketImplFactory#createSocketImpl()
|
||||
@ -249,28 +250,29 @@ class Socket implements java.io.Closeable {
|
||||
* the specified remote port. The Socket will also bind() to the local
|
||||
* address and port supplied.
|
||||
* <p>
|
||||
* If the specified host is <tt>null</tt> it is the equivalent of
|
||||
* specifying the address as <tt>{@link java.net.InetAddress#getByName InetAddress.getByName}(null)</tt>.
|
||||
* If the specified host is {@code null} it is the equivalent of
|
||||
* specifying the address as
|
||||
* {@link java.net.InetAddress#getByName InetAddress.getByName}{@code (null)}.
|
||||
* In other words, it is equivalent to specifying an address of the
|
||||
* loopback interface. </p>
|
||||
* <p>
|
||||
* A local port number of <code>zero</code> will let the system pick up a
|
||||
* free port in the <code>bind</code> operation.</p>
|
||||
* A local port number of {@code zero} will let the system pick up a
|
||||
* free port in the {@code bind} operation.</p>
|
||||
* <p>
|
||||
* If there is a security manager, its
|
||||
* <code>checkConnect</code> method is called
|
||||
* with the host address and <code>port</code>
|
||||
* {@code checkConnect} method is called
|
||||
* with the host address and {@code port}
|
||||
* as its arguments. This could result in a SecurityException.
|
||||
*
|
||||
* @param host the name of the remote host, or <code>null</code> for the loopback address.
|
||||
* @param host the name of the remote host, or {@code null} for the loopback address.
|
||||
* @param port the remote port
|
||||
* @param localAddr the local address the socket is bound to, or
|
||||
* <code>null</code> for the <code>anyLocal</code> address.
|
||||
* {@code null} for the {@code anyLocal} address.
|
||||
* @param localPort the local port the socket is bound to, or
|
||||
* <code>zero</code> for a system selected free port.
|
||||
* {@code zero} for a system selected free port.
|
||||
* @exception IOException if an I/O error occurs when creating the socket.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkConnect</code> method doesn't allow the operation.
|
||||
* {@code checkConnect} method doesn't allow the operation.
|
||||
* @exception IllegalArgumentException if the port parameter or localPort
|
||||
* parameter is outside the specified range of valid port values,
|
||||
* which is between 0 and 65535, inclusive.
|
||||
@ -289,30 +291,31 @@ class Socket implements java.io.Closeable {
|
||||
* the specified remote port. The Socket will also bind() to the local
|
||||
* address and port supplied.
|
||||
* <p>
|
||||
* If the specified local address is <tt>null</tt> it is the equivalent of
|
||||
* specifying the address as the AnyLocal address (see <tt>{@link java.net.InetAddress#isAnyLocalAddress InetAddress.isAnyLocalAddress}()</tt>).
|
||||
* If the specified local address is {@code null} it is the equivalent of
|
||||
* specifying the address as the AnyLocal address
|
||||
* (see {@link java.net.InetAddress#isAnyLocalAddress InetAddress.isAnyLocalAddress}{@code ()}).
|
||||
* <p>
|
||||
* A local port number of <code>zero</code> will let the system pick up a
|
||||
* free port in the <code>bind</code> operation.</p>
|
||||
* A local port number of {@code zero} will let the system pick up a
|
||||
* free port in the {@code bind} operation.</p>
|
||||
* <p>
|
||||
* If there is a security manager, its
|
||||
* <code>checkConnect</code> method is called
|
||||
* with the host address and <code>port</code>
|
||||
* {@code checkConnect} method is called
|
||||
* with the host address and {@code port}
|
||||
* as its arguments. This could result in a SecurityException.
|
||||
*
|
||||
* @param address the remote address
|
||||
* @param port the remote port
|
||||
* @param localAddr the local address the socket is bound to, or
|
||||
* <code>null</code> for the <code>anyLocal</code> address.
|
||||
* {@code null} for the {@code anyLocal} address.
|
||||
* @param localPort the local port the socket is bound to or
|
||||
* <code>zero</code> for a system selected free port.
|
||||
* {@code zero} for a system selected free port.
|
||||
* @exception IOException if an I/O error occurs when creating the socket.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkConnect</code> method doesn't allow the operation.
|
||||
* {@code checkConnect} method doesn't allow the operation.
|
||||
* @exception IllegalArgumentException if the port parameter or localPort
|
||||
* parameter is outside the specified range of valid port values,
|
||||
* which is between 0 and 65535, inclusive.
|
||||
* @exception NullPointerException if <code>address</code> is null.
|
||||
* @exception NullPointerException if {@code address} is null.
|
||||
* @see SecurityManager#checkConnect
|
||||
* @since JDK1.1
|
||||
*/
|
||||
@ -326,33 +329,34 @@ class Socket implements java.io.Closeable {
|
||||
* Creates a stream socket and connects it to the specified port
|
||||
* number on the named host.
|
||||
* <p>
|
||||
* If the specified host is <tt>null</tt> it is the equivalent of
|
||||
* specifying the address as <tt>{@link java.net.InetAddress#getByName InetAddress.getByName}(null)</tt>.
|
||||
* If the specified host is {@code null} it is the equivalent of
|
||||
* specifying the address as
|
||||
* {@link java.net.InetAddress#getByName InetAddress.getByName}{@code (null)}.
|
||||
* In other words, it is equivalent to specifying an address of the
|
||||
* loopback interface. </p>
|
||||
* <p>
|
||||
* If the stream argument is <code>true</code>, this creates a
|
||||
* stream socket. If the stream argument is <code>false</code>, it
|
||||
* If the stream argument is {@code true}, this creates a
|
||||
* stream socket. If the stream argument is {@code false}, it
|
||||
* creates a datagram socket.
|
||||
* <p>
|
||||
* If the application has specified a server socket factory, that
|
||||
* factory's <code>createSocketImpl</code> method is called to create
|
||||
* factory's {@code createSocketImpl} method is called to create
|
||||
* the actual socket implementation. Otherwise a "plain" socket is created.
|
||||
* <p>
|
||||
* If there is a security manager, its
|
||||
* <code>checkConnect</code> method is called
|
||||
* with the host address and <code>port</code>
|
||||
* {@code checkConnect} method is called
|
||||
* with the host address and {@code port}
|
||||
* as its arguments. This could result in a SecurityException.
|
||||
* <p>
|
||||
* If a UDP socket is used, TCP/IP related socket options will not apply.
|
||||
*
|
||||
* @param host the host name, or <code>null</code> for the loopback address.
|
||||
* @param host the host name, or {@code null} for the loopback address.
|
||||
* @param port the port number.
|
||||
* @param stream a <code>boolean</code> indicating whether this is
|
||||
* @param stream a {@code boolean} indicating whether this is
|
||||
* a stream socket or a datagram socket.
|
||||
* @exception IOException if an I/O error occurs when creating the socket.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkConnect</code> method doesn't allow the operation.
|
||||
* {@code checkConnect} method doesn't allow the operation.
|
||||
* @exception IllegalArgumentException if the port parameter is outside
|
||||
* the specified range of valid port values, which is between
|
||||
* 0 and 65535, inclusive.
|
||||
@ -373,32 +377,32 @@ class Socket implements java.io.Closeable {
|
||||
* Creates a socket and connects it to the specified port number at
|
||||
* the specified IP address.
|
||||
* <p>
|
||||
* If the stream argument is <code>true</code>, this creates a
|
||||
* stream socket. If the stream argument is <code>false</code>, it
|
||||
* If the stream argument is {@code true}, this creates a
|
||||
* stream socket. If the stream argument is {@code false}, it
|
||||
* creates a datagram socket.
|
||||
* <p>
|
||||
* If the application has specified a server socket factory, that
|
||||
* factory's <code>createSocketImpl</code> method is called to create
|
||||
* factory's {@code createSocketImpl} method is called to create
|
||||
* the actual socket implementation. Otherwise a "plain" socket is created.
|
||||
*
|
||||
* <p>If there is a security manager, its
|
||||
* <code>checkConnect</code> method is called
|
||||
* with <code>host.getHostAddress()</code> and <code>port</code>
|
||||
* {@code checkConnect} method is called
|
||||
* with {@code host.getHostAddress()} and {@code port}
|
||||
* as its arguments. This could result in a SecurityException.
|
||||
* <p>
|
||||
* If UDP socket is used, TCP/IP related socket options will not apply.
|
||||
*
|
||||
* @param host the IP address.
|
||||
* @param port the port number.
|
||||
* @param stream if <code>true</code>, create a stream socket;
|
||||
* @param stream if {@code true}, create a stream socket;
|
||||
* otherwise, create a datagram socket.
|
||||
* @exception IOException if an I/O error occurs when creating the socket.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkConnect</code> method doesn't allow the operation.
|
||||
* {@code checkConnect} method doesn't allow the operation.
|
||||
* @exception IllegalArgumentException if the port parameter is outside
|
||||
* the specified range of valid port values, which is between
|
||||
* 0 and 65535, inclusive.
|
||||
* @exception NullPointerException if <code>host</code> is null.
|
||||
* @exception NullPointerException if {@code host} is null.
|
||||
* @see java.net.Socket#setSocketImplFactory(java.net.SocketImplFactory)
|
||||
* @see java.net.SocketImpl
|
||||
* @see java.net.SocketImplFactory#createSocketImpl()
|
||||
@ -437,8 +441,8 @@ class Socket implements java.io.Closeable {
|
||||
/**
|
||||
* Creates the socket implementation.
|
||||
*
|
||||
* @param stream a <code>boolean</code> value : <code>true</code> for a TCP socket,
|
||||
* <code>false</code> for UDP.
|
||||
* @param stream a {@code boolean} value : {@code true} for a TCP socket,
|
||||
* {@code false} for UDP.
|
||||
* @throws IOException if creation fails
|
||||
* @since 1.4
|
||||
*/
|
||||
@ -500,10 +504,10 @@ class Socket implements java.io.Closeable {
|
||||
|
||||
|
||||
/**
|
||||
* Get the <code>SocketImpl</code> attached to this socket, creating
|
||||
* Get the {@code SocketImpl} attached to this socket, creating
|
||||
* it if necessary.
|
||||
*
|
||||
* @return the <code>SocketImpl</code> attached to that ServerSocket.
|
||||
* @return the {@code SocketImpl} attached to that ServerSocket.
|
||||
* @throws SocketException if creation fails
|
||||
* @since 1.4
|
||||
*/
|
||||
@ -516,7 +520,7 @@ class Socket implements java.io.Closeable {
|
||||
/**
|
||||
* Connects this socket to the server.
|
||||
*
|
||||
* @param endpoint the <code>SocketAddress</code>
|
||||
* @param endpoint the {@code SocketAddress}
|
||||
* @throws IOException if an error occurs during the connection
|
||||
* @throws java.nio.channels.IllegalBlockingModeException
|
||||
* if this socket has an associated channel,
|
||||
@ -535,7 +539,7 @@ class Socket implements java.io.Closeable {
|
||||
* A timeout of zero is interpreted as an infinite timeout. The connection
|
||||
* will then block until established or an error occurs.
|
||||
*
|
||||
* @param endpoint the <code>SocketAddress</code>
|
||||
* @param endpoint the {@code SocketAddress}
|
||||
* @param timeout the timeout value to be used in milliseconds.
|
||||
* @throws IOException if an error occurs during the connection
|
||||
* @throws SocketTimeoutException if timeout expires before connecting
|
||||
@ -597,10 +601,10 @@ class Socket implements java.io.Closeable {
|
||||
/**
|
||||
* Binds the socket to a local address.
|
||||
* <P>
|
||||
* If the address is <code>null</code>, then the system will pick up
|
||||
* If the address is {@code null}, then the system will pick up
|
||||
* an ephemeral port and a valid local address to bind the socket.
|
||||
*
|
||||
* @param bindpoint the <code>SocketAddress</code> to bind to
|
||||
* @param bindpoint the {@code SocketAddress} to bind to
|
||||
* @throws IOException if the bind operation fails, or if the socket
|
||||
* is already bound.
|
||||
* @throws IllegalArgumentException if bindpoint is a
|
||||
@ -668,7 +672,7 @@ class Socket implements java.io.Closeable {
|
||||
* after the socket is closed.
|
||||
*
|
||||
* @return the remote IP address to which this socket is connected,
|
||||
* or <code>null</code> if the socket is not connected.
|
||||
* or {@code null} if the socket is not connected.
|
||||
*/
|
||||
public InetAddress getInetAddress() {
|
||||
if (!isConnected())
|
||||
@ -760,15 +764,15 @@ class Socket implements java.io.Closeable {
|
||||
|
||||
/**
|
||||
* Returns the address of the endpoint this socket is connected to, or
|
||||
* <code>null</code> if it is unconnected.
|
||||
* {@code null} if it is unconnected.
|
||||
* <p>
|
||||
* If the socket was connected prior to being {@link #close closed},
|
||||
* then this method will continue to return the connected address
|
||||
* after the socket is closed.
|
||||
*
|
||||
|
||||
* @return a <code>SocketAddress</code> representing the remote endpoint of this
|
||||
* socket, or <code>null</code> if it is not connected yet.
|
||||
* @return a {@code SocketAddress} representing the remote endpoint of this
|
||||
* socket, or {@code null} if it is not connected yet.
|
||||
* @see #getInetAddress()
|
||||
* @see #getPort()
|
||||
* @see #connect(SocketAddress, int)
|
||||
@ -785,10 +789,10 @@ class Socket implements java.io.Closeable {
|
||||
* Returns the address of the endpoint this socket is bound to.
|
||||
* <p>
|
||||
* If a socket bound to an endpoint represented by an
|
||||
* <code>InetSocketAddress </code> is {@link #close closed},
|
||||
* then this method will continue to return an <code>InetSocketAddress</code>
|
||||
* {@code InetSocketAddress } is {@link #close closed},
|
||||
* then this method will continue to return an {@code InetSocketAddress}
|
||||
* after the socket is closed. In that case the returned
|
||||
* <code>InetSocketAddress</code>'s address is the
|
||||
* {@code InetSocketAddress}'s address is the
|
||||
* {@link InetAddress#isAnyLocalAddress wildcard} address
|
||||
* and its port is the local port that it was bound to.
|
||||
* <p>
|
||||
@ -828,7 +832,7 @@ class Socket implements java.io.Closeable {
|
||||
* methods.
|
||||
*
|
||||
* @return the socket channel associated with this socket,
|
||||
* or <tt>null</tt> if this socket was not created
|
||||
* or {@code null} if this socket was not created
|
||||
* for a channel
|
||||
*
|
||||
* @since 1.4
|
||||
@ -843,7 +847,7 @@ class Socket implements java.io.Closeable {
|
||||
*
|
||||
* <p> If this socket has an associated channel then the resulting input
|
||||
* stream delegates all of its operations to the channel. If the channel
|
||||
* is in non-blocking mode then the input stream's <tt>read</tt> operations
|
||||
* is in non-blocking mode then the input stream's {@code read} operations
|
||||
* will throw an {@link java.nio.channels.IllegalBlockingModeException}.
|
||||
*
|
||||
* <p>Under abnormal conditions the underlying connection may be
|
||||
@ -867,7 +871,7 @@ class Socket implements java.io.Closeable {
|
||||
* <li><p>If there are no bytes buffered on the socket, and the
|
||||
* socket has not been closed using {@link #close close}, then
|
||||
* {@link java.io.InputStream#available available} will
|
||||
* return <code>0</code>.
|
||||
* return {@code 0}.
|
||||
*
|
||||
* </ul>
|
||||
*
|
||||
@ -910,7 +914,7 @@ class Socket implements java.io.Closeable {
|
||||
*
|
||||
* <p> If this socket has an associated channel then the resulting output
|
||||
* stream delegates all of its operations to the channel. If the channel
|
||||
* is in non-blocking mode then the output stream's <tt>write</tt>
|
||||
* is in non-blocking mode then the output stream's {@code write}
|
||||
* operations will throw an {@link
|
||||
* java.nio.channels.IllegalBlockingModeException}.
|
||||
*
|
||||
@ -949,8 +953,8 @@ class Socket implements java.io.Closeable {
|
||||
* Enable/disable {@link SocketOptions#TCP_NODELAY TCP_NODELAY}
|
||||
* (disable/enable Nagle's algorithm).
|
||||
*
|
||||
* @param on <code>true</code> to enable TCP_NODELAY,
|
||||
* <code>false</code> to disable.
|
||||
* @param on {@code true} to enable TCP_NODELAY,
|
||||
* {@code false} to disable.
|
||||
*
|
||||
* @exception SocketException if there is an error
|
||||
* in the underlying protocol, such as a TCP error.
|
||||
@ -968,7 +972,7 @@ class Socket implements java.io.Closeable {
|
||||
/**
|
||||
* Tests if {@link SocketOptions#TCP_NODELAY TCP_NODELAY} is enabled.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating whether or not
|
||||
* @return a {@code boolean} indicating whether or not
|
||||
* {@link SocketOptions#TCP_NODELAY TCP_NODELAY} is enabled.
|
||||
* @exception SocketException if there is an error
|
||||
* in the underlying protocol, such as a TCP error.
|
||||
@ -1066,9 +1070,9 @@ class Socket implements java.io.Closeable {
|
||||
* and there is no capability to distinguish between normal data and urgent
|
||||
* data unless provided by a higher level protocol.
|
||||
*
|
||||
* @param on <code>true</code> to enable
|
||||
* @param on {@code true} to enable
|
||||
* {@link SocketOptions#SO_OOBINLINE SO_OOBINLINE},
|
||||
* <code>false</code> to disable.
|
||||
* {@code false} to disable.
|
||||
*
|
||||
* @exception SocketException if there is an error
|
||||
* in the underlying protocol, such as a TCP error.
|
||||
@ -1086,7 +1090,7 @@ class Socket implements java.io.Closeable {
|
||||
/**
|
||||
* Tests if {@link SocketOptions#SO_OOBINLINE SO_OOBINLINE} is enabled.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating whether or not
|
||||
* @return a {@code boolean} indicating whether or not
|
||||
* {@link SocketOptions#SO_OOBINLINE SO_OOBINLINE}is enabled.
|
||||
*
|
||||
* @exception SocketException if there is an error
|
||||
@ -1151,7 +1155,7 @@ class Socket implements java.io.Closeable {
|
||||
|
||||
/**
|
||||
* Sets the {@link SocketOptions#SO_SNDBUF SO_SNDBUF} option to the
|
||||
* specified value for this <tt>Socket</tt>.
|
||||
* specified value for this {@code Socket}.
|
||||
* The {@link SocketOptions#SO_SNDBUF SO_SNDBUF} option is used by the
|
||||
* platform's networking code as a hint for the size to set the underlying
|
||||
* network I/O buffers.
|
||||
@ -1184,10 +1188,10 @@ class Socket implements java.io.Closeable {
|
||||
|
||||
/**
|
||||
* Get value of the {@link SocketOptions#SO_SNDBUF SO_SNDBUF} option
|
||||
* for this <tt>Socket</tt>, that is the buffer size used by the platform
|
||||
* for output on this <tt>Socket</tt>.
|
||||
* for this {@code Socket}, that is the buffer size used by the platform
|
||||
* for output on this {@code Socket}.
|
||||
* @return the value of the {@link SocketOptions#SO_SNDBUF SO_SNDBUF}
|
||||
* option for this <tt>Socket</tt>.
|
||||
* option for this {@code Socket}.
|
||||
*
|
||||
* @exception SocketException if there is an error
|
||||
* in the underlying protocol, such as a TCP error.
|
||||
@ -1208,7 +1212,7 @@ class Socket implements java.io.Closeable {
|
||||
|
||||
/**
|
||||
* Sets the {@link SocketOptions#SO_RCVBUF SO_RCVBUF} option to the
|
||||
* specified value for this <tt>Socket</tt>. The
|
||||
* specified value for this {@code Socket}. The
|
||||
* {@link SocketOptions#SO_RCVBUF SO_RCVBUF} option is
|
||||
* used by the platform's networking code as a hint for the size to set
|
||||
* the underlying network I/O buffers.
|
||||
@ -1258,11 +1262,11 @@ class Socket implements java.io.Closeable {
|
||||
|
||||
/**
|
||||
* Gets the value of the {@link SocketOptions#SO_RCVBUF SO_RCVBUF} option
|
||||
* for this <tt>Socket</tt>, that is the buffer size used by the platform
|
||||
* for input on this <tt>Socket</tt>.
|
||||
* for this {@code Socket}, that is the buffer size used by the platform
|
||||
* for input on this {@code Socket}.
|
||||
*
|
||||
* @return the value of the {@link SocketOptions#SO_RCVBUF SO_RCVBUF}
|
||||
* option for this <tt>Socket</tt>.
|
||||
* option for this {@code Socket}.
|
||||
* @exception SocketException if there is an error
|
||||
* in the underlying protocol, such as a TCP error.
|
||||
* @see #setReceiveBufferSize(int)
|
||||
@ -1298,7 +1302,7 @@ class Socket implements java.io.Closeable {
|
||||
/**
|
||||
* Tests if {@link SocketOptions#SO_KEEPALIVE SO_KEEPALIVE} is enabled.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating whether or not
|
||||
* @return a {@code boolean} indicating whether or not
|
||||
* {@link SocketOptions#SO_KEEPALIVE SO_KEEPALIVE} is enabled.
|
||||
* @exception SocketException if there is an error
|
||||
* in the underlying protocol, such as a TCP error.
|
||||
@ -1321,7 +1325,7 @@ class Socket implements java.io.Closeable {
|
||||
* 255} or an IllegalArgumentException will be thrown.
|
||||
* <p>Notes:
|
||||
* <p>For Internet Protocol v4 the value consists of an
|
||||
* <code>integer</code>, the least significant 8 bits of which
|
||||
* {@code integer}, the least significant 8 bits of which
|
||||
* represent the value of the TOS octet in IP packets sent by
|
||||
* the socket.
|
||||
* RFC 1349 defines the TOS values as follows:
|
||||
@ -1347,10 +1351,10 @@ class Socket implements java.io.Closeable {
|
||||
* in the underlying platform. Applications should not assume that
|
||||
* they can change the TOS field after the connection.
|
||||
* <p>
|
||||
* For Internet Protocol v6 <code>tc</code> is the value that
|
||||
* For Internet Protocol v6 {@code tc} is the value that
|
||||
* would be placed into the sin6_flowinfo field of the IP header.
|
||||
*
|
||||
* @param tc an <code>int</code> value for the bitset.
|
||||
* @param tc an {@code int} value for the bitset.
|
||||
* @throws SocketException if there is an error setting the
|
||||
* traffic class or type-of-service
|
||||
* @since 1.4
|
||||
@ -1392,11 +1396,11 @@ class Socket implements java.io.Closeable {
|
||||
* <p>
|
||||
* When a TCP connection is closed the connection may remain
|
||||
* in a timeout state for a period of time after the connection
|
||||
* is closed (typically known as the <tt>TIME_WAIT</tt> state
|
||||
* or <tt>2MSL</tt> wait state).
|
||||
* is closed (typically known as the {@code TIME_WAIT} state
|
||||
* or {@code 2MSL} wait state).
|
||||
* For applications using a well known socket address or port
|
||||
* it may not be possible to bind a socket to the required
|
||||
* <tt>SocketAddress</tt> if there is a connection in the
|
||||
* {@code SocketAddress} if there is a connection in the
|
||||
* timeout state involving the socket address or port.
|
||||
* <p>
|
||||
* Enabling {@link SocketOptions#SO_REUSEADDR SO_REUSEADDR}
|
||||
@ -1404,7 +1408,7 @@ class Socket implements java.io.Closeable {
|
||||
* the socket to be bound even though a previous connection is in a timeout
|
||||
* state.
|
||||
* <p>
|
||||
* When a <tt>Socket</tt> is created the initial setting
|
||||
* When a {@code Socket} is created the initial setting
|
||||
* of {@link SocketOptions#SO_REUSEADDR SO_REUSEADDR} is disabled.
|
||||
* <p>
|
||||
* The behaviour when {@link SocketOptions#SO_REUSEADDR SO_REUSEADDR} is
|
||||
@ -1430,7 +1434,7 @@ class Socket implements java.io.Closeable {
|
||||
/**
|
||||
* Tests if {@link SocketOptions#SO_REUSEADDR SO_REUSEADDR} is enabled.
|
||||
*
|
||||
* @return a <code>boolean</code> indicating whether or not
|
||||
* @return a {@code boolean} indicating whether or not
|
||||
* {@link SocketOptions#SO_REUSEADDR SO_REUSEADDR} is enabled.
|
||||
* @exception SocketException if there is an error
|
||||
* in the underlying protocol, such as a TCP error.
|
||||
@ -1536,7 +1540,7 @@ class Socket implements java.io.Closeable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts this socket to a <code>String</code>.
|
||||
* Converts this socket to a {@code String}.
|
||||
*
|
||||
* @return a string representation of this socket.
|
||||
*/
|
||||
@ -1555,7 +1559,7 @@ class Socket implements java.io.Closeable {
|
||||
* Returns the connection state of the socket.
|
||||
* <p>
|
||||
* Note: Closing a socket doesn't clear its connection state, which means
|
||||
* this method will return <code>true</code> for a closed socket
|
||||
* this method will return {@code true} for a closed socket
|
||||
* (see {@link #isClosed()}) if it was successfuly connected prior
|
||||
* to being closed.
|
||||
*
|
||||
@ -1571,7 +1575,7 @@ class Socket implements java.io.Closeable {
|
||||
* Returns the binding state of the socket.
|
||||
* <p>
|
||||
* Note: Closing a socket doesn't clear its binding state, which means
|
||||
* this method will return <code>true</code> for a closed socket
|
||||
* this method will return {@code true} for a closed socket
|
||||
* (see {@link #isClosed()}) if it was successfuly bound prior
|
||||
* to being closed.
|
||||
*
|
||||
@ -1629,13 +1633,13 @@ class Socket implements java.io.Closeable {
|
||||
* application. The factory can be specified only once.
|
||||
* <p>
|
||||
* When an application creates a new client socket, the socket
|
||||
* implementation factory's <code>createSocketImpl</code> method is
|
||||
* implementation factory's {@code createSocketImpl} method is
|
||||
* called to create the actual socket implementation.
|
||||
* <p>
|
||||
* Passing <code>null</code> to the method is a no-op unless the factory
|
||||
* Passing {@code null} to the method is a no-op unless the factory
|
||||
* was already set.
|
||||
* <p>If there is a security manager, this method first calls
|
||||
* the security manager's <code>checkSetFactory</code> method
|
||||
* the security manager's {@code checkSetFactory} method
|
||||
* to ensure the operation is allowed.
|
||||
* This could result in a SecurityException.
|
||||
*
|
||||
@ -1644,7 +1648,7 @@ class Socket implements java.io.Closeable {
|
||||
* socket factory.
|
||||
* @exception SocketException if the factory is already defined.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkSetFactory</code> method doesn't allow the operation.
|
||||
* {@code checkSetFactory} method doesn't allow the operation.
|
||||
* @see java.net.SocketImplFactory#createSocketImpl()
|
||||
* @see SecurityManager#checkSetFactory
|
||||
*/
|
||||
@ -1678,23 +1682,23 @@ class Socket implements java.io.Closeable {
|
||||
* values represent a lower priority than positive values. If the
|
||||
* application prefers short connection time over both low latency and high
|
||||
* bandwidth, for example, then it could invoke this method with the values
|
||||
* <tt>(1, 0, 0)</tt>. If the application prefers high bandwidth above low
|
||||
* {@code (1, 0, 0)}. If the application prefers high bandwidth above low
|
||||
* latency, and low latency above short connection time, then it could
|
||||
* invoke this method with the values <tt>(0, 1, 2)</tt>.
|
||||
* invoke this method with the values {@code (0, 1, 2)}.
|
||||
*
|
||||
* <p> Invoking this method after this socket has been connected
|
||||
* will have no effect.
|
||||
*
|
||||
* @param connectionTime
|
||||
* An <tt>int</tt> expressing the relative importance of a short
|
||||
* An {@code int} expressing the relative importance of a short
|
||||
* connection time
|
||||
*
|
||||
* @param latency
|
||||
* An <tt>int</tt> expressing the relative importance of low
|
||||
* An {@code int} expressing the relative importance of low
|
||||
* latency
|
||||
*
|
||||
* @param bandwidth
|
||||
* An <tt>int</tt> expressing the relative importance of high
|
||||
* An {@code int} expressing the relative importance of high
|
||||
* bandwidth
|
||||
*
|
||||
* @since 1.5
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 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
|
||||
@ -38,7 +38,7 @@ class SocketException extends IOException {
|
||||
private static final long serialVersionUID = -5935874303556886934L;
|
||||
|
||||
/**
|
||||
* Constructs a new <code>SocketException</code> with the
|
||||
* Constructs a new {@code SocketException} with the
|
||||
* specified detail message.
|
||||
*
|
||||
* @param msg the detail message.
|
||||
@ -48,7 +48,7 @@ class SocketException extends IOException {
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new <code>SocketException</code> with no detail message.
|
||||
* Constructs a new {@code SocketException} with no detail message.
|
||||
*/
|
||||
public SocketException() {
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 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
|
||||
@ -31,7 +31,7 @@ import java.io.OutputStream;
|
||||
import java.io.FileDescriptor;
|
||||
|
||||
/**
|
||||
* The abstract class <code>SocketImpl</code> is a common superclass
|
||||
* The abstract class {@code SocketImpl} is a common superclass
|
||||
* of all classes that actually implement sockets. It is used to
|
||||
* create both client and server sockets.
|
||||
* <p>
|
||||
@ -71,7 +71,7 @@ public abstract class SocketImpl implements SocketOptions {
|
||||
/**
|
||||
* Creates either a stream or a datagram socket.
|
||||
*
|
||||
* @param stream if <code>true</code>, create a stream socket;
|
||||
* @param stream if {@code true}, create a stream socket;
|
||||
* otherwise, create a datagram socket.
|
||||
* @exception IOException if an I/O error occurs while creating the
|
||||
* socket.
|
||||
@ -122,7 +122,7 @@ public abstract class SocketImpl implements SocketOptions {
|
||||
|
||||
/**
|
||||
* Sets the maximum queue length for incoming connection indications
|
||||
* (a request to connect) to the <code>count</code> argument. If a
|
||||
* (a request to connect) to the {@code count} argument. If a
|
||||
* connection indication arrives when the queue is full, the
|
||||
* connection is refused.
|
||||
*
|
||||
@ -217,9 +217,9 @@ public abstract class SocketImpl implements SocketOptions {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of this socket's <code>fd</code> field.
|
||||
* Returns the value of this socket's {@code fd} field.
|
||||
*
|
||||
* @return the value of this socket's <code>fd</code> field.
|
||||
* @return the value of this socket's {@code fd} field.
|
||||
* @see java.net.SocketImpl#fd
|
||||
*/
|
||||
protected FileDescriptor getFileDescriptor() {
|
||||
@ -227,9 +227,9 @@ public abstract class SocketImpl implements SocketOptions {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of this socket's <code>address</code> field.
|
||||
* Returns the value of this socket's {@code address} field.
|
||||
*
|
||||
* @return the value of this socket's <code>address</code> field.
|
||||
* @return the value of this socket's {@code address} field.
|
||||
* @see java.net.SocketImpl#address
|
||||
*/
|
||||
protected InetAddress getInetAddress() {
|
||||
@ -237,9 +237,9 @@ public abstract class SocketImpl implements SocketOptions {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of this socket's <code>port</code> field.
|
||||
* Returns the value of this socket's {@code port} field.
|
||||
*
|
||||
* @return the value of this socket's <code>port</code> field.
|
||||
* @return the value of this socket's {@code port} field.
|
||||
* @see java.net.SocketImpl#port
|
||||
*/
|
||||
protected int getPort() {
|
||||
@ -270,9 +270,9 @@ public abstract class SocketImpl implements SocketOptions {
|
||||
protected abstract void sendUrgentData (int data) throws IOException;
|
||||
|
||||
/**
|
||||
* Returns the value of this socket's <code>localport</code> field.
|
||||
* Returns the value of this socket's {@code localport} field.
|
||||
*
|
||||
* @return the value of this socket's <code>localport</code> field.
|
||||
* @return the value of this socket's {@code localport} field.
|
||||
* @see java.net.SocketImpl#localport
|
||||
*/
|
||||
protected int getLocalPort() {
|
||||
@ -296,7 +296,7 @@ public abstract class SocketImpl implements SocketOptions {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the address and port of this socket as a <code>String</code>.
|
||||
* Returns the address and port of this socket as a {@code String}.
|
||||
*
|
||||
* @return a string representation of this socket.
|
||||
*/
|
||||
@ -328,23 +328,23 @@ public abstract class SocketImpl implements SocketOptions {
|
||||
* values represent a lower priority than positive values. If the
|
||||
* application prefers short connection time over both low latency and high
|
||||
* bandwidth, for example, then it could invoke this method with the values
|
||||
* <tt>(1, 0, 0)</tt>. If the application prefers high bandwidth above low
|
||||
* {@code (1, 0, 0)}. If the application prefers high bandwidth above low
|
||||
* latency, and low latency above short connection time, then it could
|
||||
* invoke this method with the values <tt>(0, 1, 2)</tt>.
|
||||
* invoke this method with the values {@code (0, 1, 2)}.
|
||||
*
|
||||
* By default, this method does nothing, unless it is overridden in a
|
||||
* a sub-class.
|
||||
*
|
||||
* @param connectionTime
|
||||
* An <tt>int</tt> expressing the relative importance of a short
|
||||
* An {@code int} expressing the relative importance of a short
|
||||
* connection time
|
||||
*
|
||||
* @param latency
|
||||
* An <tt>int</tt> expressing the relative importance of low
|
||||
* An {@code int} expressing the relative importance of low
|
||||
* latency
|
||||
*
|
||||
* @param bandwidth
|
||||
* An <tt>int</tt> expressing the relative importance of high
|
||||
* An {@code int} expressing the relative importance of high
|
||||
* bandwidth
|
||||
*
|
||||
* @since 1.5
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 1999, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 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
|
||||
@ -27,8 +27,8 @@ package java.net;
|
||||
|
||||
/**
|
||||
* This interface defines a factory for socket implementations. It
|
||||
* is used by the classes <code>Socket</code> and
|
||||
* <code>ServerSocket</code> to create actual socket
|
||||
* is used by the classes {@code Socket} and
|
||||
* {@code ServerSocket} to create actual socket
|
||||
* implementations.
|
||||
*
|
||||
* @author Arthur van Hoff
|
||||
@ -39,9 +39,9 @@ package java.net;
|
||||
public
|
||||
interface SocketImplFactory {
|
||||
/**
|
||||
* Creates a new <code>SocketImpl</code> instance.
|
||||
* Creates a new {@code SocketImpl} instance.
|
||||
*
|
||||
* @return a new instance of <code>SocketImpl</code>.
|
||||
* @return a new instance of {@code SocketImpl}.
|
||||
* @see java.net.SocketImpl
|
||||
*/
|
||||
SocketImpl createSocketImpl();
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 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
|
||||
@ -67,8 +67,8 @@ class SocketInputStream extends FileInputStream
|
||||
* Returns the unique {@link java.nio.channels.FileChannel FileChannel}
|
||||
* object associated with this file input stream.</p>
|
||||
*
|
||||
* The <code>getChannel</code> method of <code>SocketInputStream</code>
|
||||
* returns <code>null</code> since it is a socket based stream.</p>
|
||||
* The {@code getChannel} method of {@code SocketInputStream}
|
||||
* returns {@code null} since it is a socket based stream.</p>
|
||||
*
|
||||
* @return the file channel associated with this file input stream
|
||||
*
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1996, 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
|
||||
@ -115,7 +115,7 @@ public interface SocketOptions {
|
||||
* }
|
||||
* </PRE>
|
||||
*
|
||||
* @param optID an <code>int</code> identifying the option to fetch
|
||||
* @param optID an {@code int} identifying the option to fetch
|
||||
* @return the value of the option
|
||||
* @throws SocketException if the socket is closed
|
||||
* @throws SocketException if <I>optID</I> is unknown along the
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2007, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 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
|
||||
@ -64,8 +64,8 @@ class SocketOutputStream extends FileOutputStream
|
||||
* Returns the unique {@link java.nio.channels.FileChannel FileChannel}
|
||||
* object associated with this file output stream. </p>
|
||||
*
|
||||
* The <code>getChannel</code> method of <code>SocketOutputStream</code>
|
||||
* returns <code>null</code> since it is a socket based stream.</p>
|
||||
* The {@code getChannel} method of {@code SocketOutputStream}
|
||||
* returns {@code null} since it is a socket based stream.</p>
|
||||
*
|
||||
* @return the file channel associated with this file output stream
|
||||
*
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 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
|
||||
@ -110,7 +110,7 @@ import sun.security.util.Debug;
|
||||
* </pre>
|
||||
*
|
||||
* is granted to some code, it allows that code to connect to port 7777 on
|
||||
* <code>puffin.eng.sun.com</code>, and to accept connections on that port.
|
||||
* {@code puffin.eng.sun.com}, and to accept connections on that port.
|
||||
*
|
||||
* <p>Similarly, if the following permission:
|
||||
*
|
||||
@ -788,7 +788,7 @@ public final class SocketPermission extends Permission
|
||||
* port range is ignored when p only contains the action, 'resolve'.<p>
|
||||
* </ul>
|
||||
*
|
||||
* Then <code>implies</code> checks each of the following, in order,
|
||||
* Then {@code implies} checks each of the following, in order,
|
||||
* and for each returns true if the stated condition is true:<p>
|
||||
* <ul>
|
||||
* <li> If this object was initialized with a single IP address and one of <i>p</i>'s
|
||||
@ -802,7 +802,7 @@ public final class SocketPermission extends Permission
|
||||
* <li>If this canonical name equals <i>p</i>'s canonical name.<p>
|
||||
* </ul>
|
||||
*
|
||||
* If none of the above are true, <code>implies</code> returns false.
|
||||
* If none of the above are true, {@code implies} returns false.
|
||||
* @param p the permission to check against.
|
||||
*
|
||||
* @return true if the specified permission is implied by this object,
|
||||
@ -1131,7 +1131,7 @@ public final class SocketPermission extends Permission
|
||||
* <p>
|
||||
* SocketPermission objects must be stored in a manner that allows them
|
||||
* to be inserted into the collection in any order, but that also enables the
|
||||
* PermissionCollection <code>implies</code>
|
||||
* PermissionCollection {@code implies}
|
||||
* method to be implemented in an efficient (and consistent) manner.
|
||||
*
|
||||
* @return a new PermissionCollection object suitable for storing SocketPermissions.
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 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
|
||||
@ -315,7 +315,7 @@ class SocksSocketImpl extends PlainSocketImpl implements SocksConsts {
|
||||
* grants the connections, then the connect is successful and all
|
||||
* further traffic will go to the "real" endpoint.
|
||||
*
|
||||
* @param endpoint the <code>SocketAddress</code> to connect to.
|
||||
* @param endpoint the {@code SocketAddress} to connect to.
|
||||
* @param timeout the timeout value in milliseconds
|
||||
* @throws IOException if the connection can't be established.
|
||||
* @throws SecurityException if there is a security manager and it
|
||||
@ -1032,9 +1032,9 @@ class SocksSocketImpl extends PlainSocketImpl implements SocksConsts {
|
||||
|
||||
|
||||
/**
|
||||
* Returns the value of this socket's <code>address</code> field.
|
||||
* Returns the value of this socket's {@code address} field.
|
||||
*
|
||||
* @return the value of this socket's <code>address</code> field.
|
||||
* @return the value of this socket's {@code address} field.
|
||||
* @see java.net.SocketImpl#address
|
||||
*/
|
||||
@Override
|
||||
@ -1046,9 +1046,9 @@ class SocksSocketImpl extends PlainSocketImpl implements SocksConsts {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of this socket's <code>port</code> field.
|
||||
* Returns the value of this socket's {@code port} field.
|
||||
*
|
||||
* @return the value of this socket's <code>port</code> field.
|
||||
* @return the value of this socket's {@code port} field.
|
||||
* @see java.net.SocketImpl#port
|
||||
*/
|
||||
@Override
|
||||
|
||||
@ -67,24 +67,24 @@ import java.lang.NullPointerException; // for javadoc
|
||||
* form has the syntax
|
||||
*
|
||||
* <blockquote>
|
||||
* [<i>scheme</i><tt><b>:</b></tt>]<i>scheme-specific-part</i>[<tt><b>#</b></tt><i>fragment</i>]
|
||||
* [<i>scheme</i><b>{@code :}</b>]<i>scheme-specific-part</i>[<b>{@code #}</b><i>fragment</i>]
|
||||
* </blockquote>
|
||||
*
|
||||
* where square brackets [...] delineate optional components and the characters
|
||||
* <tt><b>:</b></tt> and <tt><b>#</b></tt> stand for themselves.
|
||||
* <b>{@code :}</b> and <b>{@code #}</b> stand for themselves.
|
||||
*
|
||||
* <p> An <i>absolute</i> URI specifies a scheme; a URI that is not absolute is
|
||||
* said to be <i>relative</i>. URIs are also classified according to whether
|
||||
* they are <i>opaque</i> or <i>hierarchical</i>.
|
||||
*
|
||||
* <p> An <i>opaque</i> URI is an absolute URI whose scheme-specific part does
|
||||
* not begin with a slash character (<tt>'/'</tt>). Opaque URIs are not
|
||||
* not begin with a slash character ({@code '/'}). Opaque URIs are not
|
||||
* subject to further parsing. Some examples of opaque URIs are:
|
||||
*
|
||||
* <blockquote><table cellpadding=0 cellspacing=0 summary="layout">
|
||||
* <tr><td><tt>mailto:java-net@java.sun.com</tt><td></tr>
|
||||
* <tr><td><tt>news:comp.lang.java</tt><td></tr>
|
||||
* <tr><td><tt>urn:isbn:096139210x</tt></td></tr>
|
||||
* <tr><td>{@code mailto:java-net@java.sun.com}<td></tr>
|
||||
* <tr><td>{@code news:comp.lang.java}<td></tr>
|
||||
* <tr><td>{@code urn:isbn:096139210x}</td></tr>
|
||||
* </table></blockquote>
|
||||
*
|
||||
* <p> A <i>hierarchical</i> URI is either an absolute URI whose
|
||||
@ -93,20 +93,20 @@ import java.lang.NullPointerException; // for javadoc
|
||||
* URIs are:
|
||||
*
|
||||
* <blockquote>
|
||||
* <tt>http://java.sun.com/j2se/1.3/</tt><br>
|
||||
* <tt>docs/guide/collections/designfaq.html#28</tt><br>
|
||||
* <tt>../../../demo/jfc/SwingSet2/src/SwingSet2.java</tt><br>
|
||||
* <tt>file:///~/calendar</tt>
|
||||
* {@code http://java.sun.com/j2se/1.3/}<br>
|
||||
* {@code docs/guide/collections/designfaq.html#28}<br>
|
||||
* {@code ../../../demo/jfc/SwingSet2/src/SwingSet2.java}<br>
|
||||
* {@code file:///~/calendar}
|
||||
* </blockquote>
|
||||
*
|
||||
* <p> A hierarchical URI is subject to further parsing according to the syntax
|
||||
*
|
||||
* <blockquote>
|
||||
* [<i>scheme</i><tt><b>:</b></tt>][<tt><b>//</b></tt><i>authority</i>][<i>path</i>][<tt><b>?</b></tt><i>query</i>][<tt><b>#</b></tt><i>fragment</i>]
|
||||
* [<i>scheme</i><b>{@code :}</b>][<b>{@code //}</b><i>authority</i>][<i>path</i>][<b>{@code ?}</b><i>query</i>][<b>{@code #}</b><i>fragment</i>]
|
||||
* </blockquote>
|
||||
*
|
||||
* where the characters <tt><b>:</b></tt>, <tt><b>/</b></tt>,
|
||||
* <tt><b>?</b></tt>, and <tt><b>#</b></tt> stand for themselves. The
|
||||
* where the characters <b>{@code :}</b>, <b>{@code /}</b>,
|
||||
* <b>{@code ?}</b>, and <b>{@code #}</b> stand for themselves. The
|
||||
* scheme-specific part of a hierarchical URI consists of the characters
|
||||
* between the scheme and fragment components.
|
||||
*
|
||||
@ -115,16 +115,16 @@ import java.lang.NullPointerException; // for javadoc
|
||||
* parses according to the familiar syntax
|
||||
*
|
||||
* <blockquote>
|
||||
* [<i>user-info</i><tt><b>@</b></tt>]<i>host</i>[<tt><b>:</b></tt><i>port</i>]
|
||||
* [<i>user-info</i><b>{@code @}</b>]<i>host</i>[<b>{@code :}</b><i>port</i>]
|
||||
* </blockquote>
|
||||
*
|
||||
* where the characters <tt><b>@</b></tt> and <tt><b>:</b></tt> stand for
|
||||
* where the characters <b>{@code @}</b> and <b>{@code :}</b> stand for
|
||||
* themselves. Nearly all URI schemes currently in use are server-based. An
|
||||
* authority component that does not parse in this way is considered to be
|
||||
* registry-based.
|
||||
*
|
||||
* <p> The path component of a hierarchical URI is itself said to be absolute
|
||||
* if it begins with a slash character (<tt>'/'</tt>); otherwise it is
|
||||
* if it begins with a slash character ({@code '/'}); otherwise it is
|
||||
* relative. The path of a hierarchical URI that is either absolute or
|
||||
* specifies an authority is always absolute.
|
||||
*
|
||||
@ -132,21 +132,21 @@ import java.lang.NullPointerException; // for javadoc
|
||||
*
|
||||
* <blockquote><table summary="Describes the components of a URI:scheme,scheme-specific-part,authority,user-info,host,port,path,query,fragment">
|
||||
* <tr><th><i>Component</i></th><th><i>Type</i></th></tr>
|
||||
* <tr><td>scheme</td><td><tt>String</tt></td></tr>
|
||||
* <tr><td>scheme-specific-part </td><td><tt>String</tt></td></tr>
|
||||
* <tr><td>authority</td><td><tt>String</tt></td></tr>
|
||||
* <tr><td>user-info</td><td><tt>String</tt></td></tr>
|
||||
* <tr><td>host</td><td><tt>String</tt></td></tr>
|
||||
* <tr><td>port</td><td><tt>int</tt></td></tr>
|
||||
* <tr><td>path</td><td><tt>String</tt></td></tr>
|
||||
* <tr><td>query</td><td><tt>String</tt></td></tr>
|
||||
* <tr><td>fragment</td><td><tt>String</tt></td></tr>
|
||||
* <tr><td>scheme</td><td>{@code String}</td></tr>
|
||||
* <tr><td>scheme-specific-part </td><td>{@code String}</td></tr>
|
||||
* <tr><td>authority</td><td>{@code String}</td></tr>
|
||||
* <tr><td>user-info</td><td>{@code String}</td></tr>
|
||||
* <tr><td>host</td><td>{@code String}</td></tr>
|
||||
* <tr><td>port</td><td>{@code int}</td></tr>
|
||||
* <tr><td>path</td><td>{@code String}</td></tr>
|
||||
* <tr><td>query</td><td>{@code String}</td></tr>
|
||||
* <tr><td>fragment</td><td>{@code String}</td></tr>
|
||||
* </table></blockquote>
|
||||
*
|
||||
* In a given instance any particular component is either <i>undefined</i> or
|
||||
* <i>defined</i> with a distinct value. Undefined string components are
|
||||
* represented by <tt>null</tt>, while undefined integer components are
|
||||
* represented by <tt>-1</tt>. A string component may be defined to have the
|
||||
* represented by {@code null}, while undefined integer components are
|
||||
* represented by {@code -1}. A string component may be defined to have the
|
||||
* empty string as its value; this is not equivalent to that component being
|
||||
* undefined.
|
||||
*
|
||||
@ -165,10 +165,10 @@ import java.lang.NullPointerException; // for javadoc
|
||||
* The key operations supported by this class are those of
|
||||
* <i>normalization</i>, <i>resolution</i>, and <i>relativization</i>.
|
||||
*
|
||||
* <p> <i>Normalization</i> is the process of removing unnecessary <tt>"."</tt>
|
||||
* and <tt>".."</tt> segments from the path component of a hierarchical URI.
|
||||
* Each <tt>"."</tt> segment is simply removed. A <tt>".."</tt> segment is
|
||||
* removed only if it is preceded by a non-<tt>".."</tt> segment.
|
||||
* <p> <i>Normalization</i> is the process of removing unnecessary {@code "."}
|
||||
* and {@code ".."} segments from the path component of a hierarchical URI.
|
||||
* Each {@code "."} segment is simply removed. A {@code ".."} segment is
|
||||
* removed only if it is preceded by a non-{@code ".."} segment.
|
||||
* Normalization has no effect upon opaque URIs.
|
||||
*
|
||||
* <p> <i>Resolution</i> is the process of resolving one URI against another,
|
||||
@ -179,45 +179,47 @@ import java.lang.NullPointerException; // for javadoc
|
||||
* normalized. The result, for example, of resolving
|
||||
*
|
||||
* <blockquote>
|
||||
* <tt>docs/guide/collections/designfaq.html#28 </tt>(1)
|
||||
* {@code docs/guide/collections/designfaq.html#28}
|
||||
*
|
||||
* (1)
|
||||
* </blockquote>
|
||||
*
|
||||
* against the base URI <tt>http://java.sun.com/j2se/1.3/</tt> is the result
|
||||
* against the base URI {@code http://java.sun.com/j2se/1.3/} is the result
|
||||
* URI
|
||||
*
|
||||
* <blockquote>
|
||||
* <tt>http://java.sun.com/j2se/1.3/docs/guide/collections/designfaq.html#28</tt>
|
||||
* {@code http://java.sun.com/j2se/1.3/docs/guide/collections/designfaq.html#28}
|
||||
* </blockquote>
|
||||
*
|
||||
* Resolving the relative URI
|
||||
*
|
||||
* <blockquote>
|
||||
* <tt>../../../demo/jfc/SwingSet2/src/SwingSet2.java </tt>(2)
|
||||
* {@code ../../../demo/jfc/SwingSet2/src/SwingSet2.java} (2)
|
||||
* </blockquote>
|
||||
*
|
||||
* against this result yields, in turn,
|
||||
*
|
||||
* <blockquote>
|
||||
* <tt>http://java.sun.com/j2se/1.3/demo/jfc/SwingSet2/src/SwingSet2.java</tt>
|
||||
* {@code http://java.sun.com/j2se/1.3/demo/jfc/SwingSet2/src/SwingSet2.java}
|
||||
* </blockquote>
|
||||
*
|
||||
* Resolution of both absolute and relative URIs, and of both absolute and
|
||||
* relative paths in the case of hierarchical URIs, is supported. Resolving
|
||||
* the URI <tt>file:///~calendar</tt> against any other URI simply yields the
|
||||
* the URI {@code file:///~calendar} against any other URI simply yields the
|
||||
* original URI, since it is absolute. Resolving the relative URI (2) above
|
||||
* against the relative base URI (1) yields the normalized, but still relative,
|
||||
* URI
|
||||
*
|
||||
* <blockquote>
|
||||
* <tt>demo/jfc/SwingSet2/src/SwingSet2.java</tt>
|
||||
* {@code demo/jfc/SwingSet2/src/SwingSet2.java}
|
||||
* </blockquote>
|
||||
*
|
||||
* <p> <i>Relativization</i>, finally, is the inverse of resolution: For any
|
||||
* two normalized URIs <i>u</i> and <i>v</i>,
|
||||
*
|
||||
* <blockquote>
|
||||
* <i>u</i><tt>.relativize(</tt><i>u</i><tt>.resolve(</tt><i>v</i><tt>)).equals(</tt><i>v</i><tt>)</tt> and<br>
|
||||
* <i>u</i><tt>.resolve(</tt><i>u</i><tt>.relativize(</tt><i>v</i><tt>)).equals(</tt><i>v</i><tt>)</tt> .<br>
|
||||
* <i>u</i>{@code .relativize(}<i>u</i>{@code .resolve(}<i>v</i>{@code )).equals(}<i>v</i>{@code )} and<br>
|
||||
* <i>u</i>{@code .resolve(}<i>u</i>{@code .relativize(}<i>v</i>{@code )).equals(}<i>v</i>{@code )} .<br>
|
||||
* </blockquote>
|
||||
*
|
||||
* This operation is often useful when constructing a document containing URIs
|
||||
@ -225,16 +227,16 @@ import java.lang.NullPointerException; // for javadoc
|
||||
* possible. For example, relativizing the URI
|
||||
*
|
||||
* <blockquote>
|
||||
* <tt>http://java.sun.com/j2se/1.3/docs/guide/index.html</tt>
|
||||
* {@code http://java.sun.com/j2se/1.3/docs/guide/index.html}
|
||||
* </blockquote>
|
||||
*
|
||||
* against the base URI
|
||||
*
|
||||
* <blockquote>
|
||||
* <tt>http://java.sun.com/j2se/1.3</tt>
|
||||
* {@code http://java.sun.com/j2se/1.3}
|
||||
* </blockquote>
|
||||
*
|
||||
* yields the relative URI <tt>docs/guide/index.html</tt>.
|
||||
* yields the relative URI {@code docs/guide/index.html}.
|
||||
*
|
||||
*
|
||||
* <h4> Character categories </h4>
|
||||
@ -247,26 +249,26 @@ import java.lang.NullPointerException; // for javadoc
|
||||
* <blockquote><table cellspacing=2 summary="Describes categories alpha,digit,alphanum,unreserved,punct,reserved,escaped,and other">
|
||||
* <tr><th valign=top><i>alpha</i></th>
|
||||
* <td>The US-ASCII alphabetic characters,
|
||||
* <tt>'A'</tt> through <tt>'Z'</tt>
|
||||
* and <tt>'a'</tt> through <tt>'z'</tt></td></tr>
|
||||
* {@code 'A'} through {@code 'Z'}
|
||||
* and {@code 'a'} through {@code 'z'}</td></tr>
|
||||
* <tr><th valign=top><i>digit</i></th>
|
||||
* <td>The US-ASCII decimal digit characters,
|
||||
* <tt>'0'</tt> through <tt>'9'</tt></td></tr>
|
||||
* {@code '0'} through {@code '9'}</td></tr>
|
||||
* <tr><th valign=top><i>alphanum</i></th>
|
||||
* <td>All <i>alpha</i> and <i>digit</i> characters</td></tr>
|
||||
* <tr><th valign=top><i>unreserved</i> </th>
|
||||
* <td>All <i>alphanum</i> characters together with those in the string
|
||||
* <tt>"_-!.~'()*"</tt></td></tr>
|
||||
* {@code "_-!.~'()*"}</td></tr>
|
||||
* <tr><th valign=top><i>punct</i></th>
|
||||
* <td>The characters in the string <tt>",;:$&+="</tt></td></tr>
|
||||
* <td>The characters in the string {@code ",;:$&+="}</td></tr>
|
||||
* <tr><th valign=top><i>reserved</i></th>
|
||||
* <td>All <i>punct</i> characters together with those in the string
|
||||
* <tt>"?/[]@"</tt></td></tr>
|
||||
* {@code "?/[]@"}</td></tr>
|
||||
* <tr><th valign=top><i>escaped</i></th>
|
||||
* <td>Escaped octets, that is, triplets consisting of the percent
|
||||
* character (<tt>'%'</tt>) followed by two hexadecimal digits
|
||||
* (<tt>'0'</tt>-<tt>'9'</tt>, <tt>'A'</tt>-<tt>'F'</tt>, and
|
||||
* <tt>'a'</tt>-<tt>'f'</tt>)</td></tr>
|
||||
* character ({@code '%'}) followed by two hexadecimal digits
|
||||
* ({@code '0'}-{@code '9'}, {@code 'A'}-{@code 'F'}, and
|
||||
* {@code 'a'}-{@code 'f'})</td></tr>
|
||||
* <tr><th valign=top><i>other</i></th>
|
||||
* <td>The Unicode characters that are not in the US-ASCII character set,
|
||||
* are not control characters (according to the {@link
|
||||
@ -306,14 +308,14 @@ import java.lang.NullPointerException; // for javadoc
|
||||
*
|
||||
* <li><p><a name="encode"></a> A character is <i>encoded</i> by replacing it
|
||||
* with the sequence of escaped octets that represent that character in the
|
||||
* UTF-8 character set. The Euro currency symbol (<tt>'\u20AC'</tt>),
|
||||
* for example, is encoded as <tt>"%E2%82%AC"</tt>. <i>(<b>Deviation from
|
||||
* UTF-8 character set. The Euro currency symbol ({@code '\u005Cu20AC'}),
|
||||
* for example, is encoded as {@code "%E2%82%AC"}. <i>(<b>Deviation from
|
||||
* RFC 2396</b>, which does not specify any particular character
|
||||
* set.)</i> </p></li>
|
||||
*
|
||||
* <li><p><a name="quote"></a> An illegal character is <i>quoted</i> simply by
|
||||
* encoding it. The space character, for example, is quoted by replacing it
|
||||
* with <tt>"%20"</tt>. UTF-8 contains US-ASCII, hence for US-ASCII
|
||||
* with {@code "%20"}. UTF-8 contains US-ASCII, hence for US-ASCII
|
||||
* characters this transformation has exactly the effect required by
|
||||
* RFC 2396. </p></li>
|
||||
*
|
||||
@ -325,7 +327,7 @@ import java.lang.NullPointerException; // for javadoc
|
||||
* decoding any encoded non-US-ASCII characters. If a <a
|
||||
* href="../nio/charset/CharsetDecoder.html#ce">decoding error</a> occurs
|
||||
* when decoding the escaped octets then the erroneous octets are replaced by
|
||||
* <tt>'\uFFFD'</tt>, the Unicode replacement character. </p></li>
|
||||
* {@code '\u005CuFFFD'}, the Unicode replacement character. </p></li>
|
||||
*
|
||||
* </ul>
|
||||
*
|
||||
@ -343,7 +345,7 @@ import java.lang.NullPointerException; // for javadoc
|
||||
* #URI(java.lang.String,java.lang.String,java.lang.String,int,java.lang.String,java.lang.String,java.lang.String)
|
||||
* multi-argument constructors} quote illegal characters as
|
||||
* required by the components in which they appear. The percent character
|
||||
* (<tt>'%'</tt>) is always quoted by these constructors. Any <i>other</i>
|
||||
* ({@code '%'}) is always quoted by these constructors. Any <i>other</i>
|
||||
* characters are preserved. </p></li>
|
||||
*
|
||||
* <li><p> The {@link #getRawUserInfo() getRawUserInfo}, {@link #getRawPath()
|
||||
@ -379,42 +381,33 @@ import java.lang.NullPointerException; // for javadoc
|
||||
* For any URI <i>u</i>, it is always the case that
|
||||
*
|
||||
* <blockquote>
|
||||
* <tt>new URI(</tt><i>u</i><tt>.toString()).equals(</tt><i>u</i><tt>)</tt> .
|
||||
* {@code new URI(}<i>u</i>{@code .toString()).equals(}<i>u</i>{@code )} .
|
||||
* </blockquote>
|
||||
*
|
||||
* For any URI <i>u</i> that does not contain redundant syntax such as two
|
||||
* slashes before an empty authority (as in <tt>file:///tmp/</tt> ) or a
|
||||
* slashes before an empty authority (as in {@code file:///tmp/} ) or a
|
||||
* colon following a host name but no port (as in
|
||||
* <tt>http://java.sun.com:</tt> ), and that does not encode characters
|
||||
* {@code http://java.sun.com:} ), and that does not encode characters
|
||||
* except those that must be quoted, the following identities also hold:
|
||||
*
|
||||
* <blockquote>
|
||||
* <tt>new URI(</tt><i>u</i><tt>.getScheme(),<br>
|
||||
* </tt><i>u</i><tt>.getSchemeSpecificPart(),<br>
|
||||
* </tt><i>u</i><tt>.getFragment())<br>
|
||||
* .equals(</tt><i>u</i><tt>)</tt>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p><pre>
|
||||
* new URI(<i>u</i>.getScheme(),
|
||||
* <i>u</i>.getSchemeSpecificPart(),
|
||||
* <i>u</i>.getFragment())
|
||||
* .equals(<i>u</i>)</pre>
|
||||
* in all cases,
|
||||
*
|
||||
* <blockquote>
|
||||
* <tt>new URI(</tt><i>u</i><tt>.getScheme(),<br>
|
||||
* </tt><i>u</i><tt>.getUserInfo(), </tt><i>u</i><tt>.getAuthority(),<br>
|
||||
* </tt><i>u</i><tt>.getPath(), </tt><i>u</i><tt>.getQuery(),<br>
|
||||
* </tt><i>u</i><tt>.getFragment())<br>
|
||||
* .equals(</tt><i>u</i><tt>)</tt>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p><pre>
|
||||
* new URI(<i>u</i>.getScheme(),
|
||||
* <i>u</i>.getUserInfo(), <i>u</i>.getAuthority(),
|
||||
* <i>u</i>.getPath(), <i>u</i>.getQuery(),
|
||||
* <i>u</i>.getFragment())
|
||||
* .equals(<i>u</i>)</pre>
|
||||
* if <i>u</i> is hierarchical, and
|
||||
*
|
||||
* <blockquote>
|
||||
* <tt>new URI(</tt><i>u</i><tt>.getScheme(),<br>
|
||||
* </tt><i>u</i><tt>.getUserInfo(), </tt><i>u</i><tt>.getHost(), </tt><i>u</i><tt>.getPort(),<br>
|
||||
* </tt><i>u</i><tt>.getPath(), </tt><i>u</i><tt>.getQuery(),<br>
|
||||
* </tt><i>u</i><tt>.getFragment())<br>
|
||||
* .equals(</tt><i>u</i><tt>)</tt>
|
||||
* </blockquote>
|
||||
*
|
||||
* <p><pre>
|
||||
* new URI(<i>u</i>.getScheme(),
|
||||
* <i>u</i>.getUserInfo(), <i>u</i>.getHost(), <i>u</i>.getPort(),
|
||||
* <i>u</i>.getPath(), <i>u</i>.getQuery(),
|
||||
* <i>u</i>.getFragment())
|
||||
* .equals(<i>u</i>)</pre>
|
||||
* if <i>u</i> is hierarchical and has either no authority or a server-based
|
||||
* authority.
|
||||
*
|
||||
@ -425,8 +418,8 @@ import java.lang.NullPointerException; // for javadoc
|
||||
* resource <i>locator</i>. Hence every URL is a URI, abstractly speaking, but
|
||||
* not every URI is a URL. This is because there is another subcategory of
|
||||
* URIs, uniform resource <i>names</i> (URNs), which name resources but do not
|
||||
* specify how to locate them. The <tt>mailto</tt>, <tt>news</tt>, and
|
||||
* <tt>isbn</tt> URIs shown above are examples of URNs.
|
||||
* specify how to locate them. The {@code mailto}, {@code news}, and
|
||||
* {@code isbn} URIs shown above are examples of URNs.
|
||||
*
|
||||
* <p> The conceptual distinction between URIs and URLs is reflected in the
|
||||
* differences between this class and the {@link URL} class.
|
||||
@ -530,12 +523,12 @@ public final class URI
|
||||
* href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a>,
|
||||
* Appendix A, <b><i>except for the following deviations:</i></b> </p>
|
||||
*
|
||||
* <ul type=disc>
|
||||
* <ul>
|
||||
*
|
||||
* <li><p> An empty authority component is permitted as long as it is
|
||||
* followed by a non-empty path, a query component, or a fragment
|
||||
* component. This allows the parsing of URIs such as
|
||||
* <tt>"file:///foo/bar"</tt>, which seems to be the intent of
|
||||
* {@code "file:///foo/bar"}, which seems to be the intent of
|
||||
* RFC 2396 although the grammar does not permit it. If the
|
||||
* authority component is empty then the user-information, host, and port
|
||||
* components are undefined. </p></li>
|
||||
@ -543,7 +536,7 @@ public final class URI
|
||||
* <li><p> Empty relative paths are permitted; this seems to be the
|
||||
* intent of RFC 2396 although the grammar does not permit it. The
|
||||
* primary consequence of this deviation is that a standalone fragment
|
||||
* such as <tt>"#foo"</tt> parses as a relative URI with an empty path
|
||||
* such as {@code "#foo"} parses as a relative URI with an empty path
|
||||
* and the given fragment, and can be usefully <a
|
||||
* href="#resolve-frag">resolved</a> against a base URI.
|
||||
*
|
||||
@ -560,12 +553,12 @@ public final class URI
|
||||
* href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a>
|
||||
* section 3.2.2 although the grammar does not permit it. The
|
||||
* consequence of this deviation is that the authority component of a
|
||||
* hierarchical URI such as <tt>s://123</tt>, will parse as a server-based
|
||||
* hierarchical URI such as {@code s://123}, will parse as a server-based
|
||||
* authority. </p></li>
|
||||
*
|
||||
* <li><p> IPv6 addresses are permitted for the host component. An IPv6
|
||||
* address must be enclosed in square brackets (<tt>'['</tt> and
|
||||
* <tt>']'</tt>) as specified by <a
|
||||
* address must be enclosed in square brackets ({@code '['} and
|
||||
* {@code ']'}) as specified by <a
|
||||
* href="http://www.ietf.org/rfc/rfc2732.txt">RFC 2732</a>. The
|
||||
* IPv6 address itself must parse according to <a
|
||||
* href="http://www.ietf.org/rfc/rfc2373.txt">RFC 2373</a>. IPv6
|
||||
@ -585,7 +578,7 @@ public final class URI
|
||||
* @param str The string to be parsed into a URI
|
||||
*
|
||||
* @throws NullPointerException
|
||||
* If <tt>str</tt> is <tt>null</tt>
|
||||
* If {@code str} is {@code null}
|
||||
*
|
||||
* @throws URISyntaxException
|
||||
* If the given string violates RFC 2396, as augmented
|
||||
@ -599,10 +592,10 @@ public final class URI
|
||||
* Constructs a hierarchical URI from the given components.
|
||||
*
|
||||
* <p> If a scheme is given then the path, if also given, must either be
|
||||
* empty or begin with a slash character (<tt>'/'</tt>). Otherwise a
|
||||
* component of the new URI may be left undefined by passing <tt>null</tt>
|
||||
* for the corresponding parameter or, in the case of the <tt>port</tt>
|
||||
* parameter, by passing <tt>-1</tt>.
|
||||
* empty or begin with a slash character ({@code '/'}). Otherwise a
|
||||
* component of the new URI may be left undefined by passing {@code null}
|
||||
* for the corresponding parameter or, in the case of the {@code port}
|
||||
* parameter, by passing {@code -1}.
|
||||
*
|
||||
* <p> This constructor first builds a URI string from the given components
|
||||
* according to the rules specified in <a
|
||||
@ -614,37 +607,37 @@ public final class URI
|
||||
* <li><p> Initially, the result string is empty. </p></li>
|
||||
*
|
||||
* <li><p> If a scheme is given then it is appended to the result,
|
||||
* followed by a colon character (<tt>':'</tt>). </p></li>
|
||||
* followed by a colon character ({@code ':'}). </p></li>
|
||||
*
|
||||
* <li><p> If user information, a host, or a port are given then the
|
||||
* string <tt>"//"</tt> is appended. </p></li>
|
||||
* string {@code "//"} is appended. </p></li>
|
||||
*
|
||||
* <li><p> If user information is given then it is appended, followed by
|
||||
* a commercial-at character (<tt>'@'</tt>). Any character not in the
|
||||
* a commercial-at character ({@code '@'}). Any character not in the
|
||||
* <i>unreserved</i>, <i>punct</i>, <i>escaped</i>, or <i>other</i>
|
||||
* categories is <a href="#quote">quoted</a>. </p></li>
|
||||
*
|
||||
* <li><p> If a host is given then it is appended. If the host is a
|
||||
* literal IPv6 address but is not enclosed in square brackets
|
||||
* (<tt>'['</tt> and <tt>']'</tt>) then the square brackets are added.
|
||||
* ({@code '['} and {@code ']'}) then the square brackets are added.
|
||||
* </p></li>
|
||||
*
|
||||
* <li><p> If a port number is given then a colon character
|
||||
* (<tt>':'</tt>) is appended, followed by the port number in decimal.
|
||||
* ({@code ':'}) is appended, followed by the port number in decimal.
|
||||
* </p></li>
|
||||
*
|
||||
* <li><p> If a path is given then it is appended. Any character not in
|
||||
* the <i>unreserved</i>, <i>punct</i>, <i>escaped</i>, or <i>other</i>
|
||||
* categories, and not equal to the slash character (<tt>'/'</tt>) or the
|
||||
* commercial-at character (<tt>'@'</tt>), is quoted. </p></li>
|
||||
* categories, and not equal to the slash character ({@code '/'}) or the
|
||||
* commercial-at character ({@code '@'}), is quoted. </p></li>
|
||||
*
|
||||
* <li><p> If a query is given then a question-mark character
|
||||
* (<tt>'?'</tt>) is appended, followed by the query. Any character that
|
||||
* ({@code '?'}) is appended, followed by the query. Any character that
|
||||
* is not a <a href="#legal-chars">legal URI character</a> is quoted.
|
||||
* </p></li>
|
||||
*
|
||||
* <li><p> Finally, if a fragment is given then a hash character
|
||||
* (<tt>'#'</tt>) is appended, followed by the fragment. Any character
|
||||
* ({@code '#'}) is appended, followed by the fragment. Any character
|
||||
* that is not a legal URI character is quoted. </p></li>
|
||||
*
|
||||
* </ol>
|
||||
@ -684,8 +677,8 @@ public final class URI
|
||||
* Constructs a hierarchical URI from the given components.
|
||||
*
|
||||
* <p> If a scheme is given then the path, if also given, must either be
|
||||
* empty or begin with a slash character (<tt>'/'</tt>). Otherwise a
|
||||
* component of the new URI may be left undefined by passing <tt>null</tt>
|
||||
* empty or begin with a slash character ({@code '/'}). Otherwise a
|
||||
* component of the new URI may be left undefined by passing {@code null}
|
||||
* for the corresponding parameter.
|
||||
*
|
||||
* <p> This constructor first builds a URI string from the given components
|
||||
@ -698,28 +691,28 @@ public final class URI
|
||||
* <li><p> Initially, the result string is empty. </p></li>
|
||||
*
|
||||
* <li><p> If a scheme is given then it is appended to the result,
|
||||
* followed by a colon character (<tt>':'</tt>). </p></li>
|
||||
* followed by a colon character ({@code ':'}). </p></li>
|
||||
*
|
||||
* <li><p> If an authority is given then the string <tt>"//"</tt> is
|
||||
* <li><p> If an authority is given then the string {@code "//"} is
|
||||
* appended, followed by the authority. If the authority contains a
|
||||
* literal IPv6 address then the address must be enclosed in square
|
||||
* brackets (<tt>'['</tt> and <tt>']'</tt>). Any character not in the
|
||||
* brackets ({@code '['} and {@code ']'}). Any character not in the
|
||||
* <i>unreserved</i>, <i>punct</i>, <i>escaped</i>, or <i>other</i>
|
||||
* categories, and not equal to the commercial-at character
|
||||
* (<tt>'@'</tt>), is <a href="#quote">quoted</a>. </p></li>
|
||||
* ({@code '@'}), is <a href="#quote">quoted</a>. </p></li>
|
||||
*
|
||||
* <li><p> If a path is given then it is appended. Any character not in
|
||||
* the <i>unreserved</i>, <i>punct</i>, <i>escaped</i>, or <i>other</i>
|
||||
* categories, and not equal to the slash character (<tt>'/'</tt>) or the
|
||||
* commercial-at character (<tt>'@'</tt>), is quoted. </p></li>
|
||||
* categories, and not equal to the slash character ({@code '/'}) or the
|
||||
* commercial-at character ({@code '@'}), is quoted. </p></li>
|
||||
*
|
||||
* <li><p> If a query is given then a question-mark character
|
||||
* (<tt>'?'</tt>) is appended, followed by the query. Any character that
|
||||
* ({@code '?'}) is appended, followed by the query. Any character that
|
||||
* is not a <a href="#legal-chars">legal URI character</a> is quoted.
|
||||
* </p></li>
|
||||
*
|
||||
* <li><p> Finally, if a fragment is given then a hash character
|
||||
* (<tt>'#'</tt>) is appended, followed by the fragment. Any character
|
||||
* ({@code '#'}) is appended, followed by the fragment. Any character
|
||||
* that is not a legal URI character is quoted. </p></li>
|
||||
*
|
||||
* </ol>
|
||||
@ -756,15 +749,15 @@ public final class URI
|
||||
/**
|
||||
* Constructs a hierarchical URI from the given components.
|
||||
*
|
||||
* <p> A component may be left undefined by passing <tt>null</tt>.
|
||||
* <p> A component may be left undefined by passing {@code null}.
|
||||
*
|
||||
* <p> This convenience constructor works as if by invoking the
|
||||
* seven-argument constructor as follows:
|
||||
*
|
||||
* <blockquote><tt>
|
||||
* new {@link #URI(String, String, String, int, String, String, String)
|
||||
* URI}(scheme, null, host, -1, path, null, fragment);
|
||||
* </tt></blockquote>
|
||||
* <blockquote>
|
||||
* {@code new} {@link #URI(String, String, String, int, String, String, String)
|
||||
* URI}{@code (scheme, null, host, -1, path, null, fragment);}
|
||||
* </blockquote>
|
||||
*
|
||||
* @param scheme Scheme name
|
||||
* @param host Host name
|
||||
@ -784,7 +777,7 @@ public final class URI
|
||||
/**
|
||||
* Constructs a URI from the given components.
|
||||
*
|
||||
* <p> A component may be left undefined by passing <tt>null</tt>.
|
||||
* <p> A component may be left undefined by passing {@code null}.
|
||||
*
|
||||
* <p> This constructor first builds a URI in string form using the given
|
||||
* components as follows: </p>
|
||||
@ -794,14 +787,14 @@ public final class URI
|
||||
* <li><p> Initially, the result string is empty. </p></li>
|
||||
*
|
||||
* <li><p> If a scheme is given then it is appended to the result,
|
||||
* followed by a colon character (<tt>':'</tt>). </p></li>
|
||||
* followed by a colon character ({@code ':'}). </p></li>
|
||||
*
|
||||
* <li><p> If a scheme-specific part is given then it is appended. Any
|
||||
* character that is not a <a href="#legal-chars">legal URI character</a>
|
||||
* is <a href="#quote">quoted</a>. </p></li>
|
||||
*
|
||||
* <li><p> Finally, if a fragment is given then a hash character
|
||||
* (<tt>'#'</tt>) is appended to the string, followed by the fragment.
|
||||
* ({@code '#'}) is appended to the string, followed by the fragment.
|
||||
* Any character that is not a legal URI character is quoted. </p></li>
|
||||
*
|
||||
* </ol>
|
||||
@ -847,7 +840,7 @@ public final class URI
|
||||
* @return The new URI
|
||||
*
|
||||
* @throws NullPointerException
|
||||
* If <tt>str</tt> is <tt>null</tt>
|
||||
* If {@code str} is {@code null}
|
||||
*
|
||||
* @throws IllegalArgumentException
|
||||
* If the given string violates RFC 2396
|
||||
@ -882,7 +875,7 @@ public final class URI
|
||||
* cannot always distinguish a malformed server-based authority from a
|
||||
* legitimate registry-based authority. It must therefore treat some
|
||||
* instances of the former as instances of the latter. The authority
|
||||
* component in the URI string <tt>"//foo:bar"</tt>, for example, is not a
|
||||
* component in the URI string {@code "//foo:bar"}, for example, is not a
|
||||
* legal server-based authority but it is legal as a registry-based
|
||||
* authority.
|
||||
*
|
||||
@ -892,7 +885,7 @@ public final class URI
|
||||
* treated as an error. In these cases a statement such as
|
||||
*
|
||||
* <blockquote>
|
||||
* <tt>URI </tt><i>u</i><tt> = new URI(str).parseServerAuthority();</tt>
|
||||
* {@code URI }<i>u</i>{@code = new URI(str).parseServerAuthority();}
|
||||
* </blockquote>
|
||||
*
|
||||
* <p> can be used to ensure that <i>u</i> always refers to a URI that, if
|
||||
@ -936,26 +929,26 @@ public final class URI
|
||||
*
|
||||
* <ol>
|
||||
*
|
||||
* <li><p> All <tt>"."</tt> segments are removed. </p></li>
|
||||
* <li><p> All {@code "."} segments are removed. </p></li>
|
||||
*
|
||||
* <li><p> If a <tt>".."</tt> segment is preceded by a non-<tt>".."</tt>
|
||||
* <li><p> If a {@code ".."} segment is preceded by a non-{@code ".."}
|
||||
* segment then both of these segments are removed. This step is
|
||||
* repeated until it is no longer applicable. </p></li>
|
||||
*
|
||||
* <li><p> If the path is relative, and if its first segment contains a
|
||||
* colon character (<tt>':'</tt>), then a <tt>"."</tt> segment is
|
||||
* colon character ({@code ':'}), then a {@code "."} segment is
|
||||
* prepended. This prevents a relative URI with a path such as
|
||||
* <tt>"a:b/c/d"</tt> from later being re-parsed as an opaque URI with a
|
||||
* scheme of <tt>"a"</tt> and a scheme-specific part of <tt>"b/c/d"</tt>.
|
||||
* {@code "a:b/c/d"} from later being re-parsed as an opaque URI with a
|
||||
* scheme of {@code "a"} and a scheme-specific part of {@code "b/c/d"}.
|
||||
* <b><i>(Deviation from RFC 2396)</i></b> </p></li>
|
||||
*
|
||||
* </ol>
|
||||
*
|
||||
* <p> A normalized path will begin with one or more <tt>".."</tt> segments
|
||||
* if there were insufficient non-<tt>".."</tt> segments preceding them to
|
||||
* allow their removal. A normalized path will begin with a <tt>"."</tt>
|
||||
* <p> A normalized path will begin with one or more {@code ".."} segments
|
||||
* if there were insufficient non-{@code ".."} segments preceding them to
|
||||
* allow their removal. A normalized path will begin with a {@code "."}
|
||||
* segment if one was inserted by step 3 above. Otherwise, a normalized
|
||||
* path will not contain any <tt>"."</tt> or <tt>".."</tt> segments. </p>
|
||||
* path will not contain any {@code "."} or {@code ".."} segments. </p>
|
||||
*
|
||||
* @return A URI equivalent to this URI,
|
||||
* but whose path is in normal form
|
||||
@ -975,7 +968,7 @@ public final class URI
|
||||
* query components are undefined, then a URI with the given fragment but
|
||||
* with all other components equal to those of this URI is returned. This
|
||||
* allows a URI representing a standalone fragment reference, such as
|
||||
* <tt>"#foo"</tt>, to be usefully resolved against a base URI.
|
||||
* {@code "#foo"}, to be usefully resolved against a base URI.
|
||||
*
|
||||
* <p> Otherwise this method constructs a new hierarchical URI in a manner
|
||||
* consistent with <a
|
||||
@ -993,7 +986,7 @@ public final class URI
|
||||
* <li><p> Otherwise the new URI's authority component is copied from
|
||||
* this URI, and its path is computed as follows: </p>
|
||||
*
|
||||
* <ol type=a>
|
||||
* <ol>
|
||||
*
|
||||
* <li><p> If the given URI's path is absolute then the new URI's path
|
||||
* is taken from the given URI. </p></li>
|
||||
@ -1016,7 +1009,7 @@ public final class URI
|
||||
* @return The resulting URI
|
||||
*
|
||||
* @throws NullPointerException
|
||||
* If <tt>uri</tt> is <tt>null</tt>
|
||||
* If {@code uri} is {@code null}
|
||||
*/
|
||||
public URI resolve(URI uri) {
|
||||
return resolve(this, uri);
|
||||
@ -1027,14 +1020,14 @@ public final class URI
|
||||
* against this URI.
|
||||
*
|
||||
* <p> This convenience method works as if invoking it were equivalent to
|
||||
* evaluating the expression <tt>{@link #resolve(java.net.URI)
|
||||
* resolve}(URI.{@link #create(String) create}(str))</tt>. </p>
|
||||
* evaluating the expression {@link #resolve(java.net.URI)
|
||||
* resolve}{@code (URI.}{@link #create(String) create}{@code (str))}. </p>
|
||||
*
|
||||
* @param str The string to be parsed into a URI
|
||||
* @return The resulting URI
|
||||
*
|
||||
* @throws NullPointerException
|
||||
* If <tt>str</tt> is <tt>null</tt>
|
||||
* If {@code str} is {@code null}
|
||||
*
|
||||
* @throws IllegalArgumentException
|
||||
* If the given string violates RFC 2396
|
||||
@ -1067,7 +1060,7 @@ public final class URI
|
||||
* @return The resulting URI
|
||||
*
|
||||
* @throws NullPointerException
|
||||
* If <tt>uri</tt> is <tt>null</tt>
|
||||
* If {@code uri} is {@code null}
|
||||
*/
|
||||
public URI relativize(URI uri) {
|
||||
return relativize(this, uri);
|
||||
@ -1077,7 +1070,7 @@ public final class URI
|
||||
* Constructs a URL from this URI.
|
||||
*
|
||||
* <p> This convenience method works as if invoking it were equivalent to
|
||||
* evaluating the expression <tt>new URL(this.toString())</tt> after
|
||||
* evaluating the expression {@code new URL(this.toString())} after
|
||||
* first checking that this URI is absolute. </p>
|
||||
*
|
||||
* @return A URL constructed from this URI
|
||||
@ -1102,14 +1095,14 @@ public final class URI
|
||||
* Returns the scheme component of this URI.
|
||||
*
|
||||
* <p> The scheme component of a URI, if defined, only contains characters
|
||||
* in the <i>alphanum</i> category and in the string <tt>"-.+"</tt>. A
|
||||
* in the <i>alphanum</i> category and in the string {@code "-.+"}. A
|
||||
* scheme always starts with an <i>alpha</i> character. <p>
|
||||
*
|
||||
* The scheme component of a URI cannot contain escaped octets, hence this
|
||||
* method does not perform any decoding.
|
||||
*
|
||||
* @return The scheme component of this URI,
|
||||
* or <tt>null</tt> if the scheme is undefined
|
||||
* or {@code null} if the scheme is undefined
|
||||
*/
|
||||
public String getScheme() {
|
||||
return scheme;
|
||||
@ -1120,7 +1113,7 @@ public final class URI
|
||||
*
|
||||
* <p> A URI is absolute if, and only if, it has a scheme component. </p>
|
||||
*
|
||||
* @return <tt>true</tt> if, and only if, this URI is absolute
|
||||
* @return {@code true} if, and only if, this URI is absolute
|
||||
*/
|
||||
public boolean isAbsolute() {
|
||||
return scheme != null;
|
||||
@ -1134,7 +1127,7 @@ public final class URI
|
||||
* An opaque URI has a scheme, a scheme-specific part, and possibly
|
||||
* a fragment; all other components are undefined. </p>
|
||||
*
|
||||
* @return <tt>true</tt> if, and only if, this URI is opaque
|
||||
* @return {@code true} if, and only if, this URI is opaque
|
||||
*/
|
||||
public boolean isOpaque() {
|
||||
return path == null;
|
||||
@ -1148,7 +1141,7 @@ public final class URI
|
||||
* characters. </p>
|
||||
*
|
||||
* @return The raw scheme-specific part of this URI
|
||||
* (never <tt>null</tt>)
|
||||
* (never {@code null})
|
||||
*/
|
||||
public String getRawSchemeSpecificPart() {
|
||||
defineSchemeSpecificPart();
|
||||
@ -1164,7 +1157,7 @@ public final class URI
|
||||
* href="#decode">decoded</a>. </p>
|
||||
*
|
||||
* @return The decoded scheme-specific part of this URI
|
||||
* (never <tt>null</tt>)
|
||||
* (never {@code null})
|
||||
*/
|
||||
public String getSchemeSpecificPart() {
|
||||
if (decodedSchemeSpecificPart == null)
|
||||
@ -1176,14 +1169,14 @@ public final class URI
|
||||
* Returns the raw authority component of this URI.
|
||||
*
|
||||
* <p> The authority component of a URI, if defined, only contains the
|
||||
* commercial-at character (<tt>'@'</tt>) and characters in the
|
||||
* commercial-at character ({@code '@'}) and characters in the
|
||||
* <i>unreserved</i>, <i>punct</i>, <i>escaped</i>, and <i>other</i>
|
||||
* categories. If the authority is server-based then it is further
|
||||
* constrained to have valid user-information, host, and port
|
||||
* components. </p>
|
||||
*
|
||||
* @return The raw authority component of this URI,
|
||||
* or <tt>null</tt> if the authority is undefined
|
||||
* or {@code null} if the authority is undefined
|
||||
*/
|
||||
public String getRawAuthority() {
|
||||
return authority;
|
||||
@ -1197,7 +1190,7 @@ public final class URI
|
||||
* sequences of escaped octets are <a href="#decode">decoded</a>. </p>
|
||||
*
|
||||
* @return The decoded authority component of this URI,
|
||||
* or <tt>null</tt> if the authority is undefined
|
||||
* or {@code null} if the authority is undefined
|
||||
*/
|
||||
public String getAuthority() {
|
||||
if (decodedAuthority == null)
|
||||
@ -1213,7 +1206,7 @@ public final class URI
|
||||
* <i>other</i> categories. </p>
|
||||
*
|
||||
* @return The raw user-information component of this URI,
|
||||
* or <tt>null</tt> if the user information is undefined
|
||||
* or {@code null} if the user information is undefined
|
||||
*/
|
||||
public String getRawUserInfo() {
|
||||
return userInfo;
|
||||
@ -1227,7 +1220,7 @@ public final class URI
|
||||
* sequences of escaped octets are <a href="#decode">decoded</a>. </p>
|
||||
*
|
||||
* @return The decoded user-information component of this URI,
|
||||
* or <tt>null</tt> if the user information is undefined
|
||||
* or {@code null} if the user information is undefined
|
||||
*/
|
||||
public String getUserInfo() {
|
||||
if ((decodedUserInfo == null) && (userInfo != null))
|
||||
@ -1241,24 +1234,24 @@ public final class URI
|
||||
* <p> The host component of a URI, if defined, will have one of the
|
||||
* following forms: </p>
|
||||
*
|
||||
* <ul type=disc>
|
||||
* <ul>
|
||||
*
|
||||
* <li><p> A domain name consisting of one or more <i>labels</i>
|
||||
* separated by period characters (<tt>'.'</tt>), optionally followed by
|
||||
* separated by period characters ({@code '.'}), optionally followed by
|
||||
* a period character. Each label consists of <i>alphanum</i> characters
|
||||
* as well as hyphen characters (<tt>'-'</tt>), though hyphens never
|
||||
* as well as hyphen characters ({@code '-'}), though hyphens never
|
||||
* occur as the first or last characters in a label. The rightmost
|
||||
* label of a domain name consisting of two or more labels, begins
|
||||
* with an <i>alpha</i> character. </li>
|
||||
*
|
||||
* <li><p> A dotted-quad IPv4 address of the form
|
||||
* <i>digit</i><tt>+.</tt><i>digit</i><tt>+.</tt><i>digit</i><tt>+.</tt><i>digit</i><tt>+</tt>,
|
||||
* <i>digit</i>{@code +.}<i>digit</i>{@code +.}<i>digit</i>{@code +.}<i>digit</i>{@code +},
|
||||
* where no <i>digit</i> sequence is longer than three characters and no
|
||||
* sequence has a value larger than 255. </p></li>
|
||||
*
|
||||
* <li><p> An IPv6 address enclosed in square brackets (<tt>'['</tt> and
|
||||
* <tt>']'</tt>) and consisting of hexadecimal digits, colon characters
|
||||
* (<tt>':'</tt>), and possibly an embedded IPv4 address. The full
|
||||
* <li><p> An IPv6 address enclosed in square brackets ({@code '['} and
|
||||
* {@code ']'}) and consisting of hexadecimal digits, colon characters
|
||||
* ({@code ':'}), and possibly an embedded IPv4 address. The full
|
||||
* syntax of IPv6 addresses is specified in <a
|
||||
* href="http://www.ietf.org/rfc/rfc2373.txt"><i>RFC 2373: IPv6
|
||||
* Addressing Architecture</i></a>. </p></li>
|
||||
@ -1269,7 +1262,7 @@ public final class URI
|
||||
* method does not perform any decoding.
|
||||
*
|
||||
* @return The host component of this URI,
|
||||
* or <tt>null</tt> if the host is undefined
|
||||
* or {@code null} if the host is undefined
|
||||
*/
|
||||
public String getHost() {
|
||||
return host;
|
||||
@ -1282,7 +1275,7 @@ public final class URI
|
||||
* integer. </p>
|
||||
*
|
||||
* @return The port component of this URI,
|
||||
* or <tt>-1</tt> if the port is undefined
|
||||
* or {@code -1} if the port is undefined
|
||||
*/
|
||||
public int getPort() {
|
||||
return port;
|
||||
@ -1292,12 +1285,12 @@ public final class URI
|
||||
* Returns the raw path component of this URI.
|
||||
*
|
||||
* <p> The path component of a URI, if defined, only contains the slash
|
||||
* character (<tt>'/'</tt>), the commercial-at character (<tt>'@'</tt>),
|
||||
* character ({@code '/'}), the commercial-at character ({@code '@'}),
|
||||
* and characters in the <i>unreserved</i>, <i>punct</i>, <i>escaped</i>,
|
||||
* and <i>other</i> categories. </p>
|
||||
*
|
||||
* @return The path component of this URI,
|
||||
* or <tt>null</tt> if the path is undefined
|
||||
* or {@code null} if the path is undefined
|
||||
*/
|
||||
public String getRawPath() {
|
||||
return path;
|
||||
@ -1311,7 +1304,7 @@ public final class URI
|
||||
* escaped octets are <a href="#decode">decoded</a>. </p>
|
||||
*
|
||||
* @return The decoded path component of this URI,
|
||||
* or <tt>null</tt> if the path is undefined
|
||||
* or {@code null} if the path is undefined
|
||||
*/
|
||||
public String getPath() {
|
||||
if ((decodedPath == null) && (path != null))
|
||||
@ -1326,7 +1319,7 @@ public final class URI
|
||||
* characters. </p>
|
||||
*
|
||||
* @return The raw query component of this URI,
|
||||
* or <tt>null</tt> if the query is undefined
|
||||
* or {@code null} if the query is undefined
|
||||
*/
|
||||
public String getRawQuery() {
|
||||
return query;
|
||||
@ -1340,7 +1333,7 @@ public final class URI
|
||||
* escaped octets are <a href="#decode">decoded</a>. </p>
|
||||
*
|
||||
* @return The decoded query component of this URI,
|
||||
* or <tt>null</tt> if the query is undefined
|
||||
* or {@code null} if the query is undefined
|
||||
*/
|
||||
public String getQuery() {
|
||||
if ((decodedQuery == null) && (query != null))
|
||||
@ -1355,7 +1348,7 @@ public final class URI
|
||||
* characters. </p>
|
||||
*
|
||||
* @return The raw fragment component of this URI,
|
||||
* or <tt>null</tt> if the fragment is undefined
|
||||
* or {@code null} if the fragment is undefined
|
||||
*/
|
||||
public String getRawFragment() {
|
||||
return fragment;
|
||||
@ -1369,7 +1362,7 @@ public final class URI
|
||||
* sequences of escaped octets are <a href="#decode">decoded</a>. </p>
|
||||
*
|
||||
* @return The decoded fragment component of this URI,
|
||||
* or <tt>null</tt> if the fragment is undefined
|
||||
* or {@code null} if the fragment is undefined
|
||||
*/
|
||||
public String getFragment() {
|
||||
if ((decodedFragment == null) && (fragment != null))
|
||||
@ -1384,7 +1377,7 @@ public final class URI
|
||||
* Tests this URI for equality with another object.
|
||||
*
|
||||
* <p> If the given object is not a URI then this method immediately
|
||||
* returns <tt>false</tt>.
|
||||
* returns {@code false}.
|
||||
*
|
||||
* <p> For two URIs to be considered equal requires that either both are
|
||||
* opaque or both are hierarchical. Their schemes must either both be
|
||||
@ -1414,7 +1407,7 @@ public final class URI
|
||||
*
|
||||
* @param ob The object to which this object is to be compared
|
||||
*
|
||||
* @return <tt>true</tt> if, and only if, the given object is a URI that
|
||||
* @return {@code true} if, and only if, the given object is a URI that
|
||||
* is identical to this URI
|
||||
*/
|
||||
public boolean equals(Object ob) {
|
||||
@ -1495,7 +1488,7 @@ public final class URI
|
||||
*
|
||||
* <p> The ordering of URIs is defined as follows: </p>
|
||||
*
|
||||
* <ul type=disc>
|
||||
* <ul>
|
||||
*
|
||||
* <li><p> Two URIs with different schemes are ordered according the
|
||||
* ordering of their schemes, without regard to case. </p></li>
|
||||
@ -1513,7 +1506,7 @@ public final class URI
|
||||
* <li><p> Two hierarchical URIs with identical schemes are ordered
|
||||
* according to the ordering of their authority components: </p>
|
||||
*
|
||||
* <ul type=disc>
|
||||
* <ul>
|
||||
*
|
||||
* <li><p> If both authority components are server-based then the URIs
|
||||
* are ordered according to their user-information components; if these
|
||||
@ -1635,7 +1628,7 @@ public final class URI
|
||||
/**
|
||||
* Saves the content of this URI to the given serial stream.
|
||||
*
|
||||
* <p> The only serializable field of a URI instance is its <tt>string</tt>
|
||||
* <p> The only serializable field of a URI instance is its {@code string}
|
||||
* field. That field is given a value, if it does not have one already,
|
||||
* and then the {@link java.io.ObjectOutputStream#defaultWriteObject()}
|
||||
* method of the given object-output stream is invoked. </p>
|
||||
@ -1654,7 +1647,7 @@ public final class URI
|
||||
* Reconstitutes a URI from the given serial stream.
|
||||
*
|
||||
* <p> The {@link java.io.ObjectInputStream#defaultReadObject()} method is
|
||||
* invoked to read the value of the <tt>string</tt> field. The result is
|
||||
* invoked to read the value of the {@code string} field. The result is
|
||||
* then parsed in the usual way.
|
||||
*
|
||||
* @param is The object-input stream from which this object
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2000, 2008, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2000, 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
|
||||
@ -50,13 +50,13 @@ public class URISyntaxException
|
||||
* @param input The input string
|
||||
* @param reason A string explaining why the input could not be parsed
|
||||
* @param index The index at which the parse error occurred,
|
||||
* or <tt>-1</tt> if the index is not known
|
||||
* or {@code -1} if the index is not known
|
||||
*
|
||||
* @throws NullPointerException
|
||||
* If either the input or reason strings are <tt>null</tt>
|
||||
* If either the input or reason strings are {@code null}
|
||||
*
|
||||
* @throws IllegalArgumentException
|
||||
* If the error index is less than <tt>-1</tt>
|
||||
* If the error index is less than {@code -1}
|
||||
*/
|
||||
public URISyntaxException(String input, String reason, int index) {
|
||||
super(reason);
|
||||
@ -70,13 +70,13 @@ public class URISyntaxException
|
||||
|
||||
/**
|
||||
* Constructs an instance from the given input string and reason. The
|
||||
* resulting object will have an error index of <tt>-1</tt>.
|
||||
* resulting object will have an error index of {@code -1}.
|
||||
*
|
||||
* @param input The input string
|
||||
* @param reason A string explaining why the input could not be parsed
|
||||
*
|
||||
* @throws NullPointerException
|
||||
* If either the input or reason strings are <tt>null</tt>
|
||||
* If either the input or reason strings are {@code null}
|
||||
*/
|
||||
public URISyntaxException(String input, String reason) {
|
||||
this(input, reason, -1);
|
||||
@ -102,7 +102,7 @@ public class URISyntaxException
|
||||
|
||||
/**
|
||||
* Returns an index into the input string of the position at which the
|
||||
* parse error occurred, or <tt>-1</tt> if this position is not known.
|
||||
* parse error occurred, or {@code -1} if this position is not known.
|
||||
*
|
||||
* @return The error index
|
||||
*/
|
||||
@ -113,8 +113,8 @@ public class URISyntaxException
|
||||
/**
|
||||
* Returns a string describing the parse error. The resulting string
|
||||
* consists of the reason string followed by a colon character
|
||||
* (<tt>':'</tt>), a space, and the input string. If the error index is
|
||||
* defined then the string <tt>" at index "</tt> followed by the index, in
|
||||
* ({@code ':'}), a space, and the input string. If the error index is
|
||||
* defined then the string {@code " at index "} followed by the index, in
|
||||
* decimal, is inserted after the reason string and before the colon
|
||||
* character.
|
||||
*
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 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
|
||||
@ -32,7 +32,7 @@ import java.util.StringTokenizer;
|
||||
import sun.security.util.SecurityConstants;
|
||||
|
||||
/**
|
||||
* Class <code>URL</code> represents a Uniform Resource
|
||||
* Class {@code URL} represents a Uniform Resource
|
||||
* Locator, a pointer to a "resource" on the World
|
||||
* Wide Web. A resource can be something as simple as a file or a
|
||||
* directory, or it can be a reference to a more complicated object,
|
||||
@ -49,10 +49,10 @@ import sun.security.util.SecurityConstants;
|
||||
* </pre></blockquote>
|
||||
* <p>
|
||||
* The URL above indicates that the protocol to use is
|
||||
* <code>http</code> (HyperText Transfer Protocol) and that the
|
||||
* {@code http} (HyperText Transfer Protocol) and that the
|
||||
* information resides on a host machine named
|
||||
* <code>www.example.com</code>. The information on that host
|
||||
* machine is named <code>/docs/resource1.html</code>. The exact
|
||||
* {@code www.example.com}. The information on that host
|
||||
* machine is named {@code /docs/resource1.html}. The exact
|
||||
* meaning of this name on the host machine is both protocol
|
||||
* dependent and host dependent. The information normally resides in
|
||||
* a file, but it could be generated on the fly. This component of
|
||||
@ -62,13 +62,13 @@ import sun.security.util.SecurityConstants;
|
||||
* port number to which the TCP connection is made on the remote host
|
||||
* machine. If the port is not specified, the default port for
|
||||
* the protocol is used instead. For example, the default port for
|
||||
* <code>http</code> is <code>80</code>. An alternative port could be
|
||||
* {@code http} is {@code 80}. An alternative port could be
|
||||
* specified as:
|
||||
* <blockquote><pre>
|
||||
* http://www.example.com:1080/docs/resource1.html
|
||||
* </pre></blockquote>
|
||||
* <p>
|
||||
* The syntax of <code>URL</code> is defined by <a
|
||||
* The syntax of {@code URL} is defined by <a
|
||||
* href="http://www.ietf.org/rfc/rfc2396.txt"><i>RFC 2396: Uniform
|
||||
* Resource Identifiers (URI): Generic Syntax</i></a>, amended by <a
|
||||
* href="http://www.ietf.org/rfc/rfc2732.txt"><i>RFC 2732: Format for
|
||||
@ -86,7 +86,7 @@ import sun.security.util.SecurityConstants;
|
||||
* This fragment is not technically part of the URL. Rather, it
|
||||
* indicates that after the specified resource is retrieved, the
|
||||
* application is specifically interested in that part of the
|
||||
* document that has the tag <code>chapter1</code> attached to it. The
|
||||
* document that has the tag {@code chapter1} attached to it. The
|
||||
* meaning of a tag is resource specific.
|
||||
* <p>
|
||||
* An application can also specify a "relative URL",
|
||||
@ -170,8 +170,8 @@ public final class URL implements java.io.Serializable {
|
||||
private int port = -1;
|
||||
|
||||
/**
|
||||
* The specified file name on that host. <code>file</code> is
|
||||
* defined as <code>path[?query]</code>
|
||||
* The specified file name on that host. {@code file} is
|
||||
* defined as {@code path[?query]}
|
||||
* @serial
|
||||
*/
|
||||
private String file;
|
||||
@ -220,42 +220,42 @@ public final class URL implements java.io.Serializable {
|
||||
private int hashCode = -1;
|
||||
|
||||
/**
|
||||
* Creates a <code>URL</code> object from the specified
|
||||
* <code>protocol</code>, <code>host</code>, <code>port</code>
|
||||
* number, and <code>file</code>.<p>
|
||||
* Creates a {@code URL} object from the specified
|
||||
* {@code protocol}, {@code host}, {@code port}
|
||||
* number, and {@code file}.<p>
|
||||
*
|
||||
* <code>host</code> can be expressed as a host name or a literal
|
||||
* {@code host} can be expressed as a host name or a literal
|
||||
* IP address. If IPv6 literal address is used, it should be
|
||||
* enclosed in square brackets (<tt>'['</tt> and <tt>']'</tt>), as
|
||||
* enclosed in square brackets ({@code '['} and {@code ']'}), as
|
||||
* specified by <a
|
||||
* href="http://www.ietf.org/rfc/rfc2732.txt">RFC 2732</a>;
|
||||
* However, the literal IPv6 address format defined in <a
|
||||
* href="http://www.ietf.org/rfc/rfc2373.txt"><i>RFC 2373: IP
|
||||
* Version 6 Addressing Architecture</i></a> is also accepted.<p>
|
||||
*
|
||||
* Specifying a <code>port</code> number of <code>-1</code>
|
||||
* Specifying a {@code port} number of {@code -1}
|
||||
* indicates that the URL should use the default port for the
|
||||
* protocol.<p>
|
||||
*
|
||||
* If this is the first URL object being created with the specified
|
||||
* protocol, a <i>stream protocol handler</i> object, an instance of
|
||||
* class <code>URLStreamHandler</code>, is created for that protocol:
|
||||
* class {@code URLStreamHandler}, is created for that protocol:
|
||||
* <ol>
|
||||
* <li>If the application has previously set up an instance of
|
||||
* <code>URLStreamHandlerFactory</code> as the stream handler factory,
|
||||
* then the <code>createURLStreamHandler</code> method of that instance
|
||||
* {@code URLStreamHandlerFactory} as the stream handler factory,
|
||||
* then the {@code createURLStreamHandler} method of that instance
|
||||
* is called with the protocol string as an argument to create the
|
||||
* stream protocol handler.
|
||||
* <li>If no <code>URLStreamHandlerFactory</code> has yet been set up,
|
||||
* or if the factory's <code>createURLStreamHandler</code> method
|
||||
* returns <code>null</code>, then the constructor finds the
|
||||
* <li>If no {@code URLStreamHandlerFactory} has yet been set up,
|
||||
* or if the factory's {@code createURLStreamHandler} method
|
||||
* returns {@code null}, then the constructor finds the
|
||||
* value of the system property:
|
||||
* <blockquote><pre>
|
||||
* java.protocol.handler.pkgs
|
||||
* </pre></blockquote>
|
||||
* If the value of that system property is not <code>null</code>,
|
||||
* If the value of that system property is not {@code null},
|
||||
* it is interpreted as a list of packages separated by a vertical
|
||||
* slash character '<code>|</code>'. The constructor tries to load
|
||||
* slash character '{@code |}'. The constructor tries to load
|
||||
* the class named:
|
||||
* <blockquote><pre>
|
||||
* <<i>package</i>>.<<i>protocol</i>>.Handler
|
||||
@ -263,7 +263,7 @@ public final class URL implements java.io.Serializable {
|
||||
* where <<i>package</i>> is replaced by the name of the package
|
||||
* and <<i>protocol</i>> is replaced by the name of the protocol.
|
||||
* If this class does not exist, or if the class exists but it is not
|
||||
* a subclass of <code>URLStreamHandler</code>, then the next package
|
||||
* a subclass of {@code URLStreamHandler}, then the next package
|
||||
* in the list is tried.
|
||||
* <li>If the previous step fails to find a protocol handler, then the
|
||||
* constructor tries to load from a system default package.
|
||||
@ -271,8 +271,8 @@ public final class URL implements java.io.Serializable {
|
||||
* <<i>system default package</i>>.<<i>protocol</i>>.Handler
|
||||
* </pre></blockquote>
|
||||
* If this class does not exist, or if the class exists but it is not a
|
||||
* subclass of <code>URLStreamHandler</code>, then a
|
||||
* <code>MalformedURLException</code> is thrown.
|
||||
* subclass of {@code URLStreamHandler}, then a
|
||||
* {@code MalformedURLException} is thrown.
|
||||
* </ol>
|
||||
*
|
||||
* <p>Protocol handlers for the following protocols are guaranteed
|
||||
@ -304,13 +304,13 @@ public final class URL implements java.io.Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a URL from the specified <code>protocol</code>
|
||||
* name, <code>host</code> name, and <code>file</code> name. The
|
||||
* Creates a URL from the specified {@code protocol}
|
||||
* name, {@code host} name, and {@code file} name. The
|
||||
* default port for the specified protocol is used.
|
||||
* <p>
|
||||
* This method is equivalent to calling the four-argument
|
||||
* constructor with the arguments being <code>protocol</code>,
|
||||
* <code>host</code>, <code>-1</code>, and <code>file</code>.
|
||||
* constructor with the arguments being {@code protocol},
|
||||
* {@code host}, {@code -1}, and {@code file}.
|
||||
*
|
||||
* No validation of the inputs is performed by this constructor.
|
||||
*
|
||||
@ -327,21 +327,21 @@ public final class URL implements java.io.Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a <code>URL</code> object from the specified
|
||||
* <code>protocol</code>, <code>host</code>, <code>port</code>
|
||||
* number, <code>file</code>, and <code>handler</code>. Specifying
|
||||
* a <code>port</code> number of <code>-1</code> indicates that
|
||||
* Creates a {@code URL} object from the specified
|
||||
* {@code protocol}, {@code host}, {@code port}
|
||||
* number, {@code file}, and {@code handler}. Specifying
|
||||
* a {@code port} number of {@code -1} indicates that
|
||||
* the URL should use the default port for the protocol. Specifying
|
||||
* a <code>handler</code> of <code>null</code> indicates that the URL
|
||||
* a {@code handler} of {@code null} indicates that the URL
|
||||
* should use a default stream handler for the protocol, as outlined
|
||||
* for:
|
||||
* java.net.URL#URL(java.lang.String, java.lang.String, int,
|
||||
* java.lang.String)
|
||||
*
|
||||
* <p>If the handler is not null and there is a security manager,
|
||||
* the security manager's <code>checkPermission</code>
|
||||
* the security manager's {@code checkPermission}
|
||||
* method is called with a
|
||||
* <code>NetPermission("specifyStreamHandler")</code> permission.
|
||||
* {@code NetPermission("specifyStreamHandler")} permission.
|
||||
* This may result in a SecurityException.
|
||||
*
|
||||
* No validation of the inputs is performed by this constructor.
|
||||
@ -354,7 +354,7 @@ public final class URL implements java.io.Serializable {
|
||||
* @exception MalformedURLException if an unknown protocol is specified.
|
||||
* @exception SecurityException
|
||||
* if a security manager exists and its
|
||||
* <code>checkPermission</code> method doesn't allow
|
||||
* {@code checkPermission} method doesn't allow
|
||||
* specifying a stream handler explicitly.
|
||||
* @see java.lang.System#getProperty(java.lang.String)
|
||||
* @see java.net.URL#setURLStreamHandlerFactory(
|
||||
@ -417,15 +417,15 @@ public final class URL implements java.io.Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a <code>URL</code> object from the <code>String</code>
|
||||
* Creates a {@code URL} object from the {@code String}
|
||||
* representation.
|
||||
* <p>
|
||||
* This constructor is equivalent to a call to the two-argument
|
||||
* constructor with a <code>null</code> first argument.
|
||||
* constructor with a {@code null} first argument.
|
||||
*
|
||||
* @param spec the <code>String</code> to parse as a URL.
|
||||
* @param spec the {@code String} to parse as a URL.
|
||||
* @exception MalformedURLException if no protocol is specified, or an
|
||||
* unknown protocol is found, or <tt>spec</tt> is <tt>null</tt>.
|
||||
* unknown protocol is found, or {@code spec} is {@code null}.
|
||||
* @see java.net.URL#URL(java.net.URL, java.lang.String)
|
||||
*/
|
||||
public URL(String spec) throws MalformedURLException {
|
||||
@ -470,9 +470,9 @@ public final class URL implements java.io.Serializable {
|
||||
* For a more detailed description of URL parsing, refer to RFC2396.
|
||||
*
|
||||
* @param context the context in which to parse the specification.
|
||||
* @param spec the <code>String</code> to parse as a URL.
|
||||
* @param spec the {@code String} to parse as a URL.
|
||||
* @exception MalformedURLException if no protocol is specified, or an
|
||||
* unknown protocol is found, or <tt>spec</tt> is <tt>null</tt>.
|
||||
* unknown protocol is found, or {@code spec} is {@code null}.
|
||||
* @see java.net.URL#URL(java.lang.String, java.lang.String,
|
||||
* int, java.lang.String)
|
||||
* @see java.net.URLStreamHandler
|
||||
@ -489,13 +489,13 @@ public final class URL implements java.io.Serializable {
|
||||
* occurs as with the two argument constructor.
|
||||
*
|
||||
* @param context the context in which to parse the specification.
|
||||
* @param spec the <code>String</code> to parse as a URL.
|
||||
* @param spec the {@code String} to parse as a URL.
|
||||
* @param handler the stream handler for the URL.
|
||||
* @exception MalformedURLException if no protocol is specified, or an
|
||||
* unknown protocol is found, or <tt>spec</tt> is <tt>null</tt>.
|
||||
* unknown protocol is found, or {@code spec} is {@code null}.
|
||||
* @exception SecurityException
|
||||
* if a security manager exists and its
|
||||
* <code>checkPermission</code> method doesn't allow
|
||||
* {@code checkPermission} method doesn't allow
|
||||
* specifying a stream handler.
|
||||
* @see java.net.URL#URL(java.lang.String, java.lang.String,
|
||||
* int, java.lang.String)
|
||||
@ -719,9 +719,9 @@ public final class URL implements java.io.Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the query part of this <code>URL</code>.
|
||||
* Gets the query part of this {@code URL}.
|
||||
*
|
||||
* @return the query part of this <code>URL</code>,
|
||||
* @return the query part of this {@code URL},
|
||||
* or <CODE>null</CODE> if one does not exist
|
||||
* @since 1.3
|
||||
*/
|
||||
@ -730,9 +730,9 @@ public final class URL implements java.io.Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the path part of this <code>URL</code>.
|
||||
* Gets the path part of this {@code URL}.
|
||||
*
|
||||
* @return the path part of this <code>URL</code>, or an
|
||||
* @return the path part of this {@code URL}, or an
|
||||
* empty string if one does not exist
|
||||
* @since 1.3
|
||||
*/
|
||||
@ -741,9 +741,9 @@ public final class URL implements java.io.Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the userInfo part of this <code>URL</code>.
|
||||
* Gets the userInfo part of this {@code URL}.
|
||||
*
|
||||
* @return the userInfo part of this <code>URL</code>, or
|
||||
* @return the userInfo part of this {@code URL}, or
|
||||
* <CODE>null</CODE> if one does not exist
|
||||
* @since 1.3
|
||||
*/
|
||||
@ -752,9 +752,9 @@ public final class URL implements java.io.Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the authority part of this <code>URL</code>.
|
||||
* Gets the authority part of this {@code URL}.
|
||||
*
|
||||
* @return the authority part of this <code>URL</code>
|
||||
* @return the authority part of this {@code URL}
|
||||
* @since 1.3
|
||||
*/
|
||||
public String getAuthority() {
|
||||
@ -762,7 +762,7 @@ public final class URL implements java.io.Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the port number of this <code>URL</code>.
|
||||
* Gets the port number of this {@code URL}.
|
||||
*
|
||||
* @return the port number, or -1 if the port is not set
|
||||
*/
|
||||
@ -772,7 +772,7 @@ public final class URL implements java.io.Serializable {
|
||||
|
||||
/**
|
||||
* Gets the default port number of the protocol associated
|
||||
* with this <code>URL</code>. If the URL scheme or the URLStreamHandler
|
||||
* with this {@code URL}. If the URL scheme or the URLStreamHandler
|
||||
* for the URL do not define a default port number,
|
||||
* then -1 is returned.
|
||||
*
|
||||
@ -784,35 +784,35 @@ public final class URL implements java.io.Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the protocol name of this <code>URL</code>.
|
||||
* Gets the protocol name of this {@code URL}.
|
||||
*
|
||||
* @return the protocol of this <code>URL</code>.
|
||||
* @return the protocol of this {@code URL}.
|
||||
*/
|
||||
public String getProtocol() {
|
||||
return protocol;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the host name of this <code>URL</code>, if applicable.
|
||||
* Gets the host name of this {@code URL}, if applicable.
|
||||
* The format of the host conforms to RFC 2732, i.e. for a
|
||||
* literal IPv6 address, this method will return the IPv6 address
|
||||
* enclosed in square brackets (<tt>'['</tt> and <tt>']'</tt>).
|
||||
* enclosed in square brackets ({@code '['} and {@code ']'}).
|
||||
*
|
||||
* @return the host name of this <code>URL</code>.
|
||||
* @return the host name of this {@code URL}.
|
||||
*/
|
||||
public String getHost() {
|
||||
return host;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the file name of this <code>URL</code>.
|
||||
* Gets the file name of this {@code URL}.
|
||||
* The returned file portion will be
|
||||
* the same as <CODE>getPath()</CODE>, plus the concatenation of
|
||||
* the value of <CODE>getQuery()</CODE>, if any. If there is
|
||||
* no query portion, this method and <CODE>getPath()</CODE> will
|
||||
* return identical results.
|
||||
*
|
||||
* @return the file name of this <code>URL</code>,
|
||||
* @return the file name of this {@code URL},
|
||||
* or an empty string if one does not exist
|
||||
*/
|
||||
public String getFile() {
|
||||
@ -821,10 +821,10 @@ public final class URL implements java.io.Serializable {
|
||||
|
||||
/**
|
||||
* Gets the anchor (also known as the "reference") of this
|
||||
* <code>URL</code>.
|
||||
* {@code URL}.
|
||||
*
|
||||
* @return the anchor (also known as the "reference") of this
|
||||
* <code>URL</code>, or <CODE>null</CODE> if one does not exist
|
||||
* {@code URL}, or <CODE>null</CODE> if one does not exist
|
||||
*/
|
||||
public String getRef() {
|
||||
return ref;
|
||||
@ -834,7 +834,7 @@ public final class URL implements java.io.Serializable {
|
||||
* Compares this URL for equality with another object.<p>
|
||||
*
|
||||
* If the given object is not a URL then this method immediately returns
|
||||
* <code>false</code>.<p>
|
||||
* {@code false}.<p>
|
||||
*
|
||||
* Two URL objects are equal if they have the same protocol, reference
|
||||
* equivalent hosts, have the same port number on the host, and the same
|
||||
@ -848,12 +848,12 @@ public final class URL implements java.io.Serializable {
|
||||
* Since hosts comparison requires name resolution, this operation is a
|
||||
* blocking operation. <p>
|
||||
*
|
||||
* Note: The defined behavior for <code>equals</code> is known to
|
||||
* Note: The defined behavior for {@code equals} is known to
|
||||
* be inconsistent with virtual hosting in HTTP.
|
||||
*
|
||||
* @param obj the URL to compare against.
|
||||
* @return <code>true</code> if the objects are the same;
|
||||
* <code>false</code> otherwise.
|
||||
* @return {@code true} if the objects are the same;
|
||||
* {@code false} otherwise.
|
||||
*/
|
||||
public boolean equals(Object obj) {
|
||||
if (!(obj instanceof URL))
|
||||
@ -869,7 +869,7 @@ public final class URL implements java.io.Serializable {
|
||||
* The hash code is based upon all the URL components relevant for URL
|
||||
* comparison. As such, this operation is a blocking operation.<p>
|
||||
*
|
||||
* @return a hash code for this <code>URL</code>.
|
||||
* @return a hash code for this {@code URL}.
|
||||
*/
|
||||
public synchronized int hashCode() {
|
||||
if (hashCode != -1)
|
||||
@ -882,21 +882,21 @@ public final class URL implements java.io.Serializable {
|
||||
/**
|
||||
* Compares two URLs, excluding the fragment component.<p>
|
||||
*
|
||||
* Returns <code>true</code> if this <code>URL</code> and the
|
||||
* <code>other</code> argument are equal without taking the
|
||||
* Returns {@code true} if this {@code URL} and the
|
||||
* {@code other} argument are equal without taking the
|
||||
* fragment component into consideration.
|
||||
*
|
||||
* @param other the <code>URL</code> to compare against.
|
||||
* @return <code>true</code> if they reference the same remote object;
|
||||
* <code>false</code> otherwise.
|
||||
* @param other the {@code URL} to compare against.
|
||||
* @return {@code true} if they reference the same remote object;
|
||||
* {@code false} otherwise.
|
||||
*/
|
||||
public boolean sameFile(URL other) {
|
||||
return handler.sameFile(this, other);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a string representation of this <code>URL</code>. The
|
||||
* string is created by calling the <code>toExternalForm</code>
|
||||
* Constructs a string representation of this {@code URL}. The
|
||||
* string is created by calling the {@code toExternalForm}
|
||||
* method of the stream protocol handler for this object.
|
||||
*
|
||||
* @return a string representation of this object.
|
||||
@ -909,8 +909,8 @@ public final class URL implements java.io.Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a string representation of this <code>URL</code>. The
|
||||
* string is created by calling the <code>toExternalForm</code>
|
||||
* Constructs a string representation of this {@code URL}. The
|
||||
* string is created by calling the {@code toExternalForm}
|
||||
* method of the stream protocol handler for this object.
|
||||
*
|
||||
* @return a string representation of this object.
|
||||
@ -924,7 +924,7 @@ public final class URL implements java.io.Serializable {
|
||||
|
||||
/**
|
||||
* Returns a {@link java.net.URI} equivalent to this URL.
|
||||
* This method functions in the same way as <code>new URI (this.toString())</code>.
|
||||
* This method functions in the same way as {@code new URI (this.toString())}.
|
||||
* <p>Note, any URL instance that complies with RFC 2396 can be converted
|
||||
* to a URI. However, some URLs that are not strictly in compliance
|
||||
* can not be converted to a URI.
|
||||
@ -984,7 +984,7 @@ public final class URL implements java.io.Serializable {
|
||||
* @param proxy the Proxy through which this connection
|
||||
* will be made. If direct connection is desired,
|
||||
* Proxy.NO_PROXY should be specified.
|
||||
* @return a <code>URLConnection</code> to the URL.
|
||||
* @return a {@code URLConnection} to the URL.
|
||||
* @exception IOException if an I/O exception occurs.
|
||||
* @exception SecurityException if a security manager is present
|
||||
* and the caller doesn't have permission to connect
|
||||
@ -1022,8 +1022,8 @@ public final class URL implements java.io.Serializable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens a connection to this <code>URL</code> and returns an
|
||||
* <code>InputStream</code> for reading from that connection. This
|
||||
* Opens a connection to this {@code URL} and returns an
|
||||
* {@code InputStream} for reading from that connection. This
|
||||
* method is a shorthand for:
|
||||
* <blockquote><pre>
|
||||
* openConnection().getInputStream()
|
||||
@ -1077,22 +1077,22 @@ public final class URL implements java.io.Serializable {
|
||||
static URLStreamHandlerFactory factory;
|
||||
|
||||
/**
|
||||
* Sets an application's <code>URLStreamHandlerFactory</code>.
|
||||
* Sets an application's {@code URLStreamHandlerFactory}.
|
||||
* This method can be called at most once in a given Java Virtual
|
||||
* Machine.
|
||||
*
|
||||
*<p> The <code>URLStreamHandlerFactory</code> instance is used to
|
||||
*<p> The {@code URLStreamHandlerFactory} instance is used to
|
||||
*construct a stream protocol handler from a protocol name.
|
||||
*
|
||||
* <p> If there is a security manager, this method first calls
|
||||
* the security manager's <code>checkSetFactory</code> method
|
||||
* the security manager's {@code checkSetFactory} method
|
||||
* to ensure the operation is allowed.
|
||||
* This could result in a SecurityException.
|
||||
*
|
||||
* @param fac the desired factory.
|
||||
* @exception Error if the application has already set a factory.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkSetFactory</code> method doesn't allow
|
||||
* {@code checkSetFactory} method doesn't allow
|
||||
* the operation.
|
||||
* @see java.net.URL#URL(java.lang.String, java.lang.String,
|
||||
* int, java.lang.String)
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1997, 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
|
||||
@ -117,7 +117,7 @@ public class URLClassLoader extends SecureClassLoader implements Closeable {
|
||||
|
||||
/**
|
||||
* Constructs a new URLClassLoader for the specified URLs using the
|
||||
* default delegation parent <code>ClassLoader</code>. The URLs will
|
||||
* default delegation parent {@code ClassLoader}. The URLs will
|
||||
* be searched in the order specified for classes and resources after
|
||||
* first searching in the parent class loader. Any URL that ends with
|
||||
* a '/' is assumed to refer to a directory. Otherwise, the URL is
|
||||
@ -125,13 +125,13 @@ public class URLClassLoader extends SecureClassLoader implements Closeable {
|
||||
* as needed.
|
||||
*
|
||||
* <p>If there is a security manager, this method first
|
||||
* calls the security manager's <code>checkCreateClassLoader</code> method
|
||||
* calls the security manager's {@code checkCreateClassLoader} method
|
||||
* to ensure creation of a class loader is allowed.
|
||||
*
|
||||
* @param urls the URLs from which to load classes and resources
|
||||
*
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkCreateClassLoader</code> method doesn't allow
|
||||
* {@code checkCreateClassLoader} method doesn't allow
|
||||
* creation of a class loader.
|
||||
* @see SecurityManager#checkCreateClassLoader
|
||||
*/
|
||||
@ -165,7 +165,7 @@ public class URLClassLoader extends SecureClassLoader implements Closeable {
|
||||
* obtain protocol handlers when creating new jar URLs.
|
||||
*
|
||||
* <p>If there is a security manager, this method first
|
||||
* calls the security manager's <code>checkCreateClassLoader</code> method
|
||||
* calls the security manager's {@code checkCreateClassLoader} method
|
||||
* to ensure creation of a class loader is allowed.
|
||||
*
|
||||
* @param urls the URLs from which to load classes and resources
|
||||
@ -173,7 +173,7 @@ public class URLClassLoader extends SecureClassLoader implements Closeable {
|
||||
* @param factory the URLStreamHandlerFactory to use when creating URLs
|
||||
*
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkCreateClassLoader</code> method doesn't allow
|
||||
* {@code checkCreateClassLoader} method doesn't allow
|
||||
* creation of a class loader.
|
||||
* @see SecurityManager#checkCreateClassLoader
|
||||
*/
|
||||
@ -217,7 +217,7 @@ public class URLClassLoader extends SecureClassLoader implements Closeable {
|
||||
* @param name
|
||||
* The resource name
|
||||
*
|
||||
* @return An input stream for reading the resource, or <tt>null</tt>
|
||||
* @return An input stream for reading the resource, or {@code null}
|
||||
* if the resource could not be found
|
||||
*
|
||||
* @since 1.7
|
||||
@ -273,7 +273,7 @@ public class URLClassLoader extends SecureClassLoader implements Closeable {
|
||||
* as suppressed exceptions of the first one caught, which is then re-thrown.
|
||||
*
|
||||
* @throws SecurityException if a security manager is set, and it denies
|
||||
* {@link RuntimePermission}<tt>("closeClassLoader")</tt>
|
||||
* {@link RuntimePermission}{@code ("closeClassLoader")}
|
||||
*
|
||||
* @since 1.7
|
||||
*/
|
||||
@ -316,7 +316,7 @@ public class URLClassLoader extends SecureClassLoader implements Closeable {
|
||||
* Appends the specified URL to the list of URLs to search for
|
||||
* classes and resources.
|
||||
* <p>
|
||||
* If the URL specified is <code>null</code> or is already in the
|
||||
* If the URL specified is {@code null} or is already in the
|
||||
* list of URLs, or if this loader is closed, then invoking this
|
||||
* method has no effect.
|
||||
*
|
||||
@ -537,7 +537,7 @@ public class URLClassLoader extends SecureClassLoader implements Closeable {
|
||||
* Finds the resource with the specified name on the URL search path.
|
||||
*
|
||||
* @param name the name of the resource
|
||||
* @return a <code>URL</code> for the resource, or <code>null</code>
|
||||
* @return a {@code URL} for the resource, or {@code null}
|
||||
* if the resource could not be found, or if the loader is closed.
|
||||
*/
|
||||
public URL findResource(final String name) {
|
||||
@ -560,7 +560,7 @@ public class URLClassLoader extends SecureClassLoader implements Closeable {
|
||||
*
|
||||
* @param name the resource name
|
||||
* @exception IOException if an I/O exception occurs
|
||||
* @return an <code>Enumeration</code> of <code>URL</code>s
|
||||
* @return an {@code Enumeration} of {@code URL}s
|
||||
* If the loader is closed, the Enumeration will be empty.
|
||||
*/
|
||||
public Enumeration<URL> findResources(final String name)
|
||||
@ -699,9 +699,9 @@ public class URLClassLoader extends SecureClassLoader implements Closeable {
|
||||
/**
|
||||
* Creates a new instance of URLClassLoader for the specified
|
||||
* URLs and parent class loader. If a security manager is
|
||||
* installed, the <code>loadClass</code> method of the URLClassLoader
|
||||
* installed, the {@code loadClass} method of the URLClassLoader
|
||||
* returned by this method will invoke the
|
||||
* <code>SecurityManager.checkPackageAccess</code> method before
|
||||
* {@code SecurityManager.checkPackageAccess} method before
|
||||
* loading the class.
|
||||
*
|
||||
* @param urls the URLs to search for classes and resources
|
||||
@ -725,9 +725,9 @@ public class URLClassLoader extends SecureClassLoader implements Closeable {
|
||||
/**
|
||||
* Creates a new instance of URLClassLoader for the specified
|
||||
* URLs and default parent class loader. If a security manager is
|
||||
* installed, the <code>loadClass</code> method of the URLClassLoader
|
||||
* installed, the {@code loadClass} method of the URLClassLoader
|
||||
* returned by this method will invoke the
|
||||
* <code>SecurityManager.checkPackageAccess</code> before
|
||||
* {@code SecurityManager.checkPackageAccess} before
|
||||
* loading the class.
|
||||
*
|
||||
* @param urls the URLs to search for classes and resources
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1995, 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
|
||||
@ -40,15 +40,15 @@ import sun.security.util.SecurityConstants;
|
||||
import sun.net.www.MessageHeader;
|
||||
|
||||
/**
|
||||
* The abstract class <code>URLConnection</code> is the superclass
|
||||
* The abstract class {@code URLConnection} is the superclass
|
||||
* of all classes that represent a communications link between the
|
||||
* application and a URL. Instances of this class can be used both to
|
||||
* read from and to write to the resource referenced by the URL. In
|
||||
* general, creating a connection to a URL is a multistep process:
|
||||
* <p>
|
||||
* <center><table border=2 summary="Describes the process of creating a connection to a URL: openConnection() and connect() over time.">
|
||||
* <tr><th><code>openConnection()</code></th>
|
||||
* <th><code>connect()</code></th></tr>
|
||||
* <tr><th>{@code openConnection()}</th>
|
||||
* <th>{@code connect()}</th></tr>
|
||||
* <tr><td>Manipulate parameters that affect the connection to the remote
|
||||
* resource.</td>
|
||||
* <td>Interact with the resource; query header fields and
|
||||
@ -59,78 +59,78 @@ import sun.net.www.MessageHeader;
|
||||
*
|
||||
* <ol>
|
||||
* <li>The connection object is created by invoking the
|
||||
* <code>openConnection</code> method on a URL.
|
||||
* {@code openConnection} method on a URL.
|
||||
* <li>The setup parameters and general request properties are manipulated.
|
||||
* <li>The actual connection to the remote object is made, using the
|
||||
* <code>connect</code> method.
|
||||
* {@code connect} method.
|
||||
* <li>The remote object becomes available. The header fields and the contents
|
||||
* of the remote object can be accessed.
|
||||
* </ol>
|
||||
* <p>
|
||||
* The setup parameters are modified using the following methods:
|
||||
* <ul>
|
||||
* <li><code>setAllowUserInteraction</code>
|
||||
* <li><code>setDoInput</code>
|
||||
* <li><code>setDoOutput</code>
|
||||
* <li><code>setIfModifiedSince</code>
|
||||
* <li><code>setUseCaches</code>
|
||||
* <li>{@code setAllowUserInteraction}
|
||||
* <li>{@code setDoInput}
|
||||
* <li>{@code setDoOutput}
|
||||
* <li>{@code setIfModifiedSince}
|
||||
* <li>{@code setUseCaches}
|
||||
* </ul>
|
||||
* <p>
|
||||
* and the general request properties are modified using the method:
|
||||
* <ul>
|
||||
* <li><code>setRequestProperty</code>
|
||||
* <li>{@code setRequestProperty}
|
||||
* </ul>
|
||||
* <p>
|
||||
* Default values for the <code>AllowUserInteraction</code> and
|
||||
* <code>UseCaches</code> parameters can be set using the methods
|
||||
* <code>setDefaultAllowUserInteraction</code> and
|
||||
* <code>setDefaultUseCaches</code>.
|
||||
* Default values for the {@code AllowUserInteraction} and
|
||||
* {@code UseCaches} parameters can be set using the methods
|
||||
* {@code setDefaultAllowUserInteraction} and
|
||||
* {@code setDefaultUseCaches}.
|
||||
* <p>
|
||||
* Each of the above <code>set</code> methods has a corresponding
|
||||
* <code>get</code> method to retrieve the value of the parameter or
|
||||
* Each of the above {@code set} methods has a corresponding
|
||||
* {@code get} method to retrieve the value of the parameter or
|
||||
* general request property. The specific parameters and general
|
||||
* request properties that are applicable are protocol specific.
|
||||
* <p>
|
||||
* The following methods are used to access the header fields and
|
||||
* the contents after the connection is made to the remote object:
|
||||
* <ul>
|
||||
* <li><code>getContent</code>
|
||||
* <li><code>getHeaderField</code>
|
||||
* <li><code>getInputStream</code>
|
||||
* <li><code>getOutputStream</code>
|
||||
* <li>{@code getContent}
|
||||
* <li>{@code getHeaderField}
|
||||
* <li>{@code getInputStream}
|
||||
* <li>{@code getOutputStream}
|
||||
* </ul>
|
||||
* <p>
|
||||
* Certain header fields are accessed frequently. The methods:
|
||||
* <ul>
|
||||
* <li><code>getContentEncoding</code>
|
||||
* <li><code>getContentLength</code>
|
||||
* <li><code>getContentType</code>
|
||||
* <li><code>getDate</code>
|
||||
* <li><code>getExpiration</code>
|
||||
* <li><code>getLastModifed</code>
|
||||
* <li>{@code getContentEncoding}
|
||||
* <li>{@code getContentLength}
|
||||
* <li>{@code getContentType}
|
||||
* <li>{@code getDate}
|
||||
* <li>{@code getExpiration}
|
||||
* <li>{@code getLastModifed}
|
||||
* </ul>
|
||||
* <p>
|
||||
* provide convenient access to these fields. The
|
||||
* <code>getContentType</code> method is used by the
|
||||
* <code>getContent</code> method to determine the type of the remote
|
||||
* {@code getContentType} method is used by the
|
||||
* {@code getContent} method to determine the type of the remote
|
||||
* object; subclasses may find it convenient to override the
|
||||
* <code>getContentType</code> method.
|
||||
* {@code getContentType} method.
|
||||
* <p>
|
||||
* In the common case, all of the pre-connection parameters and
|
||||
* general request properties can be ignored: the pre-connection
|
||||
* parameters and request properties default to sensible values. For
|
||||
* most clients of this interface, there are only two interesting
|
||||
* methods: <code>getInputStream</code> and <code>getContent</code>,
|
||||
* which are mirrored in the <code>URL</code> class by convenience methods.
|
||||
* methods: {@code getInputStream} and {@code getContent},
|
||||
* which are mirrored in the {@code URL} class by convenience methods.
|
||||
* <p>
|
||||
* More information on the request properties and header fields of
|
||||
* an <code>http</code> connection can be found at:
|
||||
* an {@code http} connection can be found at:
|
||||
* <blockquote><pre>
|
||||
* <a href="http://www.ietf.org/rfc/rfc2616.txt">http://www.ietf.org/rfc/rfc2616.txt</a>
|
||||
* </pre></blockquote>
|
||||
*
|
||||
* Invoking the <tt>close()</tt> methods on the <tt>InputStream</tt> or <tt>OutputStream</tt> of an
|
||||
* <tt>URLConnection</tt> after a request may free network resources associated with this
|
||||
* Invoking the {@code close()} methods on the {@code InputStream} or {@code OutputStream} of an
|
||||
* {@code URLConnection} after a request may free network resources associated with this
|
||||
* instance, unless particular protocol specifications specify different behaviours
|
||||
* for it.
|
||||
*
|
||||
@ -164,10 +164,10 @@ public abstract class URLConnection {
|
||||
* which this connection is opened.
|
||||
* <p>
|
||||
* The value of this field can be accessed by the
|
||||
* <code>getURL</code> method.
|
||||
* {@code getURL} method.
|
||||
* <p>
|
||||
* The default value of this variable is the value of the URL
|
||||
* argument in the <code>URLConnection</code> constructor.
|
||||
* argument in the {@code URLConnection} constructor.
|
||||
*
|
||||
* @see java.net.URLConnection#getURL()
|
||||
* @see java.net.URLConnection#url
|
||||
@ -175,14 +175,14 @@ public abstract class URLConnection {
|
||||
protected URL url;
|
||||
|
||||
/**
|
||||
* This variable is set by the <code>setDoInput</code> method. Its
|
||||
* value is returned by the <code>getDoInput</code> method.
|
||||
* This variable is set by the {@code setDoInput} method. Its
|
||||
* value is returned by the {@code getDoInput} method.
|
||||
* <p>
|
||||
* A URL connection can be used for input and/or output. Setting the
|
||||
* <code>doInput</code> flag to <code>true</code> indicates that
|
||||
* {@code doInput} flag to {@code true} indicates that
|
||||
* the application intends to read data from the URL connection.
|
||||
* <p>
|
||||
* The default value of this field is <code>true</code>.
|
||||
* The default value of this field is {@code true}.
|
||||
*
|
||||
* @see java.net.URLConnection#getDoInput()
|
||||
* @see java.net.URLConnection#setDoInput(boolean)
|
||||
@ -190,14 +190,14 @@ public abstract class URLConnection {
|
||||
protected boolean doInput = true;
|
||||
|
||||
/**
|
||||
* This variable is set by the <code>setDoOutput</code> method. Its
|
||||
* value is returned by the <code>getDoOutput</code> method.
|
||||
* This variable is set by the {@code setDoOutput} method. Its
|
||||
* value is returned by the {@code getDoOutput} method.
|
||||
* <p>
|
||||
* A URL connection can be used for input and/or output. Setting the
|
||||
* <code>doOutput</code> flag to <code>true</code> indicates
|
||||
* {@code doOutput} flag to {@code true} indicates
|
||||
* that the application intends to write data to the URL connection.
|
||||
* <p>
|
||||
* The default value of this field is <code>false</code>.
|
||||
* The default value of this field is {@code false}.
|
||||
*
|
||||
* @see java.net.URLConnection#getDoOutput()
|
||||
* @see java.net.URLConnection#setDoOutput(boolean)
|
||||
@ -207,17 +207,17 @@ public abstract class URLConnection {
|
||||
private static boolean defaultAllowUserInteraction = false;
|
||||
|
||||
/**
|
||||
* If <code>true</code>, this <code>URL</code> is being examined in
|
||||
* If {@code true}, this {@code URL} is being examined in
|
||||
* a context in which it makes sense to allow user interactions such
|
||||
* as popping up an authentication dialog. If <code>false</code>,
|
||||
* as popping up an authentication dialog. If {@code false},
|
||||
* then no user interaction is allowed.
|
||||
* <p>
|
||||
* The value of this field can be set by the
|
||||
* <code>setAllowUserInteraction</code> method.
|
||||
* {@code setAllowUserInteraction} method.
|
||||
* Its value is returned by the
|
||||
* <code>getAllowUserInteraction</code> method.
|
||||
* {@code getAllowUserInteraction} method.
|
||||
* Its default value is the value of the argument in the last invocation
|
||||
* of the <code>setDefaultAllowUserInteraction</code> method.
|
||||
* of the {@code setDefaultAllowUserInteraction} method.
|
||||
*
|
||||
* @see java.net.URLConnection#getAllowUserInteraction()
|
||||
* @see java.net.URLConnection#setAllowUserInteraction(boolean)
|
||||
@ -228,15 +228,15 @@ public abstract class URLConnection {
|
||||
private static boolean defaultUseCaches = true;
|
||||
|
||||
/**
|
||||
* If <code>true</code>, the protocol is allowed to use caching
|
||||
* whenever it can. If <code>false</code>, the protocol must always
|
||||
* If {@code true}, the protocol is allowed to use caching
|
||||
* whenever it can. If {@code false}, the protocol must always
|
||||
* try to get a fresh copy of the object.
|
||||
* <p>
|
||||
* This field is set by the <code>setUseCaches</code> method. Its
|
||||
* value is returned by the <code>getUseCaches</code> method.
|
||||
* This field is set by the {@code setUseCaches} method. Its
|
||||
* value is returned by the {@code getUseCaches} method.
|
||||
* <p>
|
||||
* Its default value is the value given in the last invocation of the
|
||||
* <code>setDefaultUseCaches</code> method.
|
||||
* {@code setDefaultUseCaches} method.
|
||||
*
|
||||
* @see java.net.URLConnection#setUseCaches(boolean)
|
||||
* @see java.net.URLConnection#getUseCaches()
|
||||
@ -252,11 +252,11 @@ public abstract class URLConnection {
|
||||
* January 1, 1970, GMT. The object is fetched only if it has been
|
||||
* modified more recently than that time.
|
||||
* <p>
|
||||
* This variable is set by the <code>setIfModifiedSince</code>
|
||||
* This variable is set by the {@code setIfModifiedSince}
|
||||
* method. Its value is returned by the
|
||||
* <code>getIfModifiedSince</code> method.
|
||||
* {@code getIfModifiedSince} method.
|
||||
* <p>
|
||||
* The default value of this field is <code>0</code>, indicating
|
||||
* The default value of this field is {@code 0}, indicating
|
||||
* that the fetching must always occur.
|
||||
*
|
||||
* @see java.net.URLConnection#getIfModifiedSince()
|
||||
@ -265,8 +265,8 @@ public abstract class URLConnection {
|
||||
protected long ifModifiedSince = 0;
|
||||
|
||||
/**
|
||||
* If <code>false</code>, this connection object has not created a
|
||||
* communications link to the specified URL. If <code>true</code>,
|
||||
* If {@code false}, this connection object has not created a
|
||||
* communications link to the specified URL. If {@code true},
|
||||
* the communications link has been established.
|
||||
*/
|
||||
protected boolean connected = false;
|
||||
@ -320,13 +320,13 @@ public abstract class URLConnection {
|
||||
* Sets the FileNameMap.
|
||||
* <p>
|
||||
* If there is a security manager, this method first calls
|
||||
* the security manager's <code>checkSetFactory</code> method
|
||||
* the security manager's {@code checkSetFactory} method
|
||||
* to ensure the operation is allowed.
|
||||
* This could result in a SecurityException.
|
||||
*
|
||||
* @param map the FileNameMap to be set
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkSetFactory</code> method doesn't allow the operation.
|
||||
* {@code checkSetFactory} method doesn't allow the operation.
|
||||
* @see SecurityManager#checkSetFactory
|
||||
* @see #getFileNameMap()
|
||||
* @since 1.2
|
||||
@ -341,9 +341,9 @@ public abstract class URLConnection {
|
||||
* Opens a communications link to the resource referenced by this
|
||||
* URL, if such a connection has not already been established.
|
||||
* <p>
|
||||
* If the <code>connect</code> method is called when the connection
|
||||
* has already been opened (indicated by the <code>connected</code>
|
||||
* field having the value <code>true</code>), the call is ignored.
|
||||
* If the {@code connect} method is called when the connection
|
||||
* has already been opened (indicated by the {@code connected}
|
||||
* field having the value {@code true}), the call is ignored.
|
||||
* <p>
|
||||
* URLConnection objects go through two phases: first they are
|
||||
* created, then they are connected. After being created, and
|
||||
@ -375,7 +375,7 @@ public abstract class URLConnection {
|
||||
* the specified timeout. To see the connect timeout set, please
|
||||
* call getConnectTimeout().
|
||||
*
|
||||
* @param timeout an <code>int</code> that specifies the connect
|
||||
* @param timeout an {@code int} that specifies the connect
|
||||
* timeout value in milliseconds
|
||||
* @throws IllegalArgumentException if the timeout parameter is negative
|
||||
*
|
||||
@ -396,7 +396,7 @@ public abstract class URLConnection {
|
||||
* 0 return implies that the option is disabled
|
||||
* (i.e., timeout of infinity).
|
||||
*
|
||||
* @return an <code>int</code> that indicates the connect timeout
|
||||
* @return an {@code int} that indicates the connect timeout
|
||||
* value in milliseconds
|
||||
* @see #setConnectTimeout(int)
|
||||
* @see #connect()
|
||||
@ -418,7 +418,7 @@ public abstract class URLConnection {
|
||||
* specified timeout. To see the read timeout set, please call
|
||||
* getReadTimeout().
|
||||
*
|
||||
* @param timeout an <code>int</code> that specifies the timeout
|
||||
* @param timeout an {@code int} that specifies the timeout
|
||||
* value to be used in milliseconds
|
||||
* @throws IllegalArgumentException if the timeout parameter is negative
|
||||
*
|
||||
@ -437,7 +437,7 @@ public abstract class URLConnection {
|
||||
* Returns setting for read timeout. 0 return implies that the
|
||||
* option is disabled (i.e., timeout of infinity).
|
||||
*
|
||||
* @return an <code>int</code> that indicates the read timeout
|
||||
* @return an {@code int} that indicates the read timeout
|
||||
* value in milliseconds
|
||||
*
|
||||
* @see #setReadTimeout(int)
|
||||
@ -459,10 +459,10 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of this <code>URLConnection</code>'s <code>URL</code>
|
||||
* Returns the value of this {@code URLConnection}'s {@code URL}
|
||||
* field.
|
||||
*
|
||||
* @return the value of this <code>URLConnection</code>'s <code>URL</code>
|
||||
* @return the value of this {@code URLConnection}'s {@code URL}
|
||||
* field.
|
||||
* @see java.net.URLConnection#url
|
||||
*/
|
||||
@ -471,7 +471,7 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of the <code>content-length</code> header field.
|
||||
* Returns the value of the {@code content-length} header field.
|
||||
* <P>
|
||||
* <B>Note</B>: {@link #getContentLengthLong() getContentLengthLong()}
|
||||
* should be preferred over this method, since it returns a {@code long}
|
||||
@ -489,11 +489,11 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of the <code>content-length</code> header field as a
|
||||
* Returns the value of the {@code content-length} header field as a
|
||||
* long.
|
||||
*
|
||||
* @return the content length of the resource that this connection's URL
|
||||
* references, or <code>-1</code> if the content length is
|
||||
* references, or {@code -1} if the content length is
|
||||
* not known.
|
||||
* @since 7.0
|
||||
*/
|
||||
@ -502,10 +502,10 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of the <code>content-type</code> header field.
|
||||
* Returns the value of the {@code content-type} header field.
|
||||
*
|
||||
* @return the content type of the resource that the URL references,
|
||||
* or <code>null</code> if not known.
|
||||
* or {@code null} if not known.
|
||||
* @see java.net.URLConnection#getHeaderField(java.lang.String)
|
||||
*/
|
||||
public String getContentType() {
|
||||
@ -513,10 +513,10 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of the <code>content-encoding</code> header field.
|
||||
* Returns the value of the {@code content-encoding} header field.
|
||||
*
|
||||
* @return the content encoding of the resource that the URL references,
|
||||
* or <code>null</code> if not known.
|
||||
* or {@code null} if not known.
|
||||
* @see java.net.URLConnection#getHeaderField(java.lang.String)
|
||||
*/
|
||||
public String getContentEncoding() {
|
||||
@ -524,7 +524,7 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of the <code>expires</code> header field.
|
||||
* Returns the value of the {@code expires} header field.
|
||||
*
|
||||
* @return the expiration date of the resource that this URL references,
|
||||
* or 0 if not known. The value is the number of milliseconds since
|
||||
@ -536,10 +536,10 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of the <code>date</code> header field.
|
||||
* Returns the value of the {@code date} header field.
|
||||
*
|
||||
* @return the sending date of the resource that the URL references,
|
||||
* or <code>0</code> if not known. The value returned is the
|
||||
* or {@code 0} if not known. The value returned is the
|
||||
* number of milliseconds since January 1, 1970 GMT.
|
||||
* @see java.net.URLConnection#getHeaderField(java.lang.String)
|
||||
*/
|
||||
@ -548,11 +548,11 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of the <code>last-modified</code> header field.
|
||||
* Returns the value of the {@code last-modified} header field.
|
||||
* The result is the number of milliseconds since January 1, 1970 GMT.
|
||||
*
|
||||
* @return the date the resource referenced by this
|
||||
* <code>URLConnection</code> was last modified, or 0 if not known.
|
||||
* {@code URLConnection} was last modified, or 0 if not known.
|
||||
* @see java.net.URLConnection#getHeaderField(java.lang.String)
|
||||
*/
|
||||
public long getLastModified() {
|
||||
@ -567,7 +567,7 @@ public abstract class URLConnection {
|
||||
*
|
||||
*
|
||||
* @param name the name of a header field.
|
||||
* @return the value of the named header field, or <code>null</code>
|
||||
* @return the value of the named header field, or {@code null}
|
||||
* if there is no such field in the header.
|
||||
*/
|
||||
public String getHeaderField(String name) {
|
||||
@ -591,15 +591,15 @@ public abstract class URLConnection {
|
||||
/**
|
||||
* Returns the value of the named field parsed as a number.
|
||||
* <p>
|
||||
* This form of <code>getHeaderField</code> exists because some
|
||||
* connection types (e.g., <code>http-ng</code>) have pre-parsed
|
||||
* This form of {@code getHeaderField} exists because some
|
||||
* connection types (e.g., {@code http-ng}) have pre-parsed
|
||||
* headers. Classes for that connection type can override this method
|
||||
* and short-circuit the parsing.
|
||||
*
|
||||
* @param name the name of the header field.
|
||||
* @param Default the default value.
|
||||
* @return the value of the named field, parsed as an integer. The
|
||||
* <code>Default</code> value is returned if the field is
|
||||
* {@code Default} value is returned if the field is
|
||||
* missing or malformed.
|
||||
*/
|
||||
public int getHeaderFieldInt(String name, int Default) {
|
||||
@ -613,15 +613,15 @@ public abstract class URLConnection {
|
||||
/**
|
||||
* Returns the value of the named field parsed as a number.
|
||||
* <p>
|
||||
* This form of <code>getHeaderField</code> exists because some
|
||||
* connection types (e.g., <code>http-ng</code>) have pre-parsed
|
||||
* This form of {@code getHeaderField} exists because some
|
||||
* connection types (e.g., {@code http-ng}) have pre-parsed
|
||||
* headers. Classes for that connection type can override this method
|
||||
* and short-circuit the parsing.
|
||||
*
|
||||
* @param name the name of the header field.
|
||||
* @param Default the default value.
|
||||
* @return the value of the named field, parsed as a long. The
|
||||
* <code>Default</code> value is returned if the field is
|
||||
* {@code Default} value is returned if the field is
|
||||
* missing or malformed.
|
||||
* @since 7.0
|
||||
*/
|
||||
@ -638,15 +638,15 @@ public abstract class URLConnection {
|
||||
* The result is the number of milliseconds since January 1, 1970 GMT
|
||||
* represented by the named field.
|
||||
* <p>
|
||||
* This form of <code>getHeaderField</code> exists because some
|
||||
* connection types (e.g., <code>http-ng</code>) have pre-parsed
|
||||
* This form of {@code getHeaderField} exists because some
|
||||
* connection types (e.g., {@code http-ng}) have pre-parsed
|
||||
* headers. Classes for that connection type can override this method
|
||||
* and short-circuit the parsing.
|
||||
*
|
||||
* @param name the name of the header field.
|
||||
* @param Default a default value.
|
||||
* @return the value of the field, parsed as a date. The value of the
|
||||
* <code>Default</code> argument is returned if the field is
|
||||
* {@code Default} argument is returned if the field is
|
||||
* missing or malformed.
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
@ -659,12 +659,12 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the key for the <code>n</code><sup>th</sup> header field.
|
||||
* It returns <code>null</code> if there are fewer than <code>n+1</code> fields.
|
||||
* Returns the key for the {@code n}<sup>th</sup> header field.
|
||||
* It returns {@code null} if there are fewer than {@code n+1} fields.
|
||||
*
|
||||
* @param n an index, where {@code n>=0}
|
||||
* @return the key for the <code>n</code><sup>th</sup> header field,
|
||||
* or <code>null</code> if there are fewer than <code>n+1</code>
|
||||
* @return the key for the {@code n}<sup>th</sup> header field,
|
||||
* or {@code null} if there are fewer than {@code n+1}
|
||||
* fields.
|
||||
*/
|
||||
public String getHeaderFieldKey(int n) {
|
||||
@ -672,17 +672,17 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value for the <code>n</code><sup>th</sup> header field.
|
||||
* It returns <code>null</code> if there are fewer than
|
||||
* <code>n+1</code>fields.
|
||||
* Returns the value for the {@code n}<sup>th</sup> header field.
|
||||
* It returns {@code null} if there are fewer than
|
||||
* {@code n+1}fields.
|
||||
* <p>
|
||||
* This method can be used in conjunction with the
|
||||
* {@link #getHeaderFieldKey(int) getHeaderFieldKey} method to iterate through all
|
||||
* the headers in the message.
|
||||
*
|
||||
* @param n an index, where {@code n>=0}
|
||||
* @return the value of the <code>n</code><sup>th</sup> header field
|
||||
* or <code>null</code> if there are fewer than <code>n+1</code> fields
|
||||
* @return the value of the {@code n}<sup>th</sup> header field
|
||||
* or {@code null} if there are fewer than {@code n+1} fields
|
||||
* @see java.net.URLConnection#getHeaderFieldKey(int)
|
||||
*/
|
||||
public String getHeaderField(int n) {
|
||||
@ -693,35 +693,35 @@ public abstract class URLConnection {
|
||||
* Retrieves the contents of this URL connection.
|
||||
* <p>
|
||||
* This method first determines the content type of the object by
|
||||
* calling the <code>getContentType</code> method. If this is
|
||||
* calling the {@code getContentType} method. If this is
|
||||
* the first time that the application has seen that specific content
|
||||
* type, a content handler for that content type is created:
|
||||
* <ol>
|
||||
* <li>If the application has set up a content handler factory instance
|
||||
* using the <code>setContentHandlerFactory</code> method, the
|
||||
* <code>createContentHandler</code> method of that instance is called
|
||||
* using the {@code setContentHandlerFactory} method, the
|
||||
* {@code createContentHandler} method of that instance is called
|
||||
* with the content type as an argument; the result is a content
|
||||
* handler for that content type.
|
||||
* <li>If no content handler factory has yet been set up, or if the
|
||||
* factory's <code>createContentHandler</code> method returns
|
||||
* <code>null</code>, then the application loads the class named:
|
||||
* factory's {@code createContentHandler} method returns
|
||||
* {@code null}, then the application loads the class named:
|
||||
* <blockquote><pre>
|
||||
* sun.net.www.content.<<i>contentType</i>>
|
||||
* </pre></blockquote>
|
||||
* where <<i>contentType</i>> is formed by taking the
|
||||
* content-type string, replacing all slash characters with a
|
||||
* <code>period</code> ('.'), and all other non-alphanumeric characters
|
||||
* with the underscore character '<code>_</code>'. The alphanumeric
|
||||
* {@code period} ('.'), and all other non-alphanumeric characters
|
||||
* with the underscore character '{@code _}'. The alphanumeric
|
||||
* characters are specifically the 26 uppercase ASCII letters
|
||||
* '<code>A</code>' through '<code>Z</code>', the 26 lowercase ASCII
|
||||
* letters '<code>a</code>' through '<code>z</code>', and the 10 ASCII
|
||||
* digits '<code>0</code>' through '<code>9</code>'. If the specified
|
||||
* '{@code A}' through '{@code Z}', the 26 lowercase ASCII
|
||||
* letters '{@code a}' through '{@code z}', and the 10 ASCII
|
||||
* digits '{@code 0}' through '{@code 9}'. If the specified
|
||||
* class does not exist, or is not a subclass of
|
||||
* <code>ContentHandler</code>, then an
|
||||
* <code>UnknownServiceException</code> is thrown.
|
||||
* {@code ContentHandler}, then an
|
||||
* {@code UnknownServiceException} is thrown.
|
||||
* </ol>
|
||||
*
|
||||
* @return the object fetched. The <code>instanceof</code> operator
|
||||
* @return the object fetched. The {@code instanceof} operator
|
||||
* should be used to determine the specific kind of object
|
||||
* returned.
|
||||
* @exception IOException if an I/O error occurs while
|
||||
@ -743,12 +743,12 @@ public abstract class URLConnection {
|
||||
/**
|
||||
* Retrieves the contents of this URL connection.
|
||||
*
|
||||
* @param classes the <code>Class</code> array
|
||||
* @param classes the {@code Class} array
|
||||
* indicating the requested types
|
||||
* @return the object fetched that is the first match of the type
|
||||
* specified in the classes array. null if none of
|
||||
* the requested types are supported.
|
||||
* The <code>instanceof</code> operator should be used to
|
||||
* The {@code instanceof} operator should be used to
|
||||
* determine the specific kind of object returned.
|
||||
* @exception IOException if an I/O error occurs while
|
||||
* getting the content.
|
||||
@ -773,12 +773,12 @@ public abstract class URLConnection {
|
||||
* necessary to make the connection represented by this
|
||||
* object. This method returns null if no permission is
|
||||
* required to make the connection. By default, this method
|
||||
* returns <code>java.security.AllPermission</code>. Subclasses
|
||||
* returns {@code java.security.AllPermission}. Subclasses
|
||||
* should override this method and return the permission
|
||||
* that best represents the permission required to make a
|
||||
* a connection to the URL. For example, a <code>URLConnection</code>
|
||||
* representing a <code>file:</code> URL would return a
|
||||
* <code>java.io.FilePermission</code> object.
|
||||
* a connection to the URL. For example, a {@code URLConnection}
|
||||
* representing a {@code file:} URL would return a
|
||||
* {@code java.io.FilePermission} object.
|
||||
*
|
||||
* <p>The permission returned may dependent upon the state of the
|
||||
* connection. For example, the permission before connecting may be
|
||||
@ -844,17 +844,17 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a <code>String</code> representation of this URL connection.
|
||||
* Returns a {@code String} representation of this URL connection.
|
||||
*
|
||||
* @return a string representation of this <code>URLConnection</code>.
|
||||
* @return a string representation of this {@code URLConnection}.
|
||||
*/
|
||||
public String toString() {
|
||||
return this.getClass().getName() + ":" + url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the <code>doInput</code> field for this
|
||||
* <code>URLConnection</code> to the specified value.
|
||||
* Sets the value of the {@code doInput} field for this
|
||||
* {@code URLConnection} to the specified value.
|
||||
* <p>
|
||||
* A URL connection can be used for input and/or output. Set the DoInput
|
||||
* flag to true if you intend to use the URL connection for input,
|
||||
@ -872,11 +872,11 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of this <code>URLConnection</code>'s
|
||||
* <code>doInput</code> flag.
|
||||
* Returns the value of this {@code URLConnection}'s
|
||||
* {@code doInput} flag.
|
||||
*
|
||||
* @return the value of this <code>URLConnection</code>'s
|
||||
* <code>doInput</code> flag.
|
||||
* @return the value of this {@code URLConnection}'s
|
||||
* {@code doInput} flag.
|
||||
* @see #setDoInput(boolean)
|
||||
*/
|
||||
public boolean getDoInput() {
|
||||
@ -884,8 +884,8 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the <code>doOutput</code> field for this
|
||||
* <code>URLConnection</code> to the specified value.
|
||||
* Sets the value of the {@code doOutput} field for this
|
||||
* {@code URLConnection} to the specified value.
|
||||
* <p>
|
||||
* A URL connection can be used for input and/or output. Set the DoOutput
|
||||
* flag to true if you intend to use the URL connection for output,
|
||||
@ -902,11 +902,11 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of this <code>URLConnection</code>'s
|
||||
* <code>doOutput</code> flag.
|
||||
* Returns the value of this {@code URLConnection}'s
|
||||
* {@code doOutput} flag.
|
||||
*
|
||||
* @return the value of this <code>URLConnection</code>'s
|
||||
* <code>doOutput</code> flag.
|
||||
* @return the value of this {@code URLConnection}'s
|
||||
* {@code doOutput} flag.
|
||||
* @see #setDoOutput(boolean)
|
||||
*/
|
||||
public boolean getDoOutput() {
|
||||
@ -914,8 +914,8 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the value of the <code>allowUserInteraction</code> field of
|
||||
* this <code>URLConnection</code>.
|
||||
* Set the value of the {@code allowUserInteraction} field of
|
||||
* this {@code URLConnection}.
|
||||
*
|
||||
* @param allowuserinteraction the new value.
|
||||
* @throws IllegalStateException if already connected
|
||||
@ -928,10 +928,10 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of the <code>allowUserInteraction</code> field for
|
||||
* Returns the value of the {@code allowUserInteraction} field for
|
||||
* this object.
|
||||
*
|
||||
* @return the value of the <code>allowUserInteraction</code> field for
|
||||
* @return the value of the {@code allowUserInteraction} field for
|
||||
* this object.
|
||||
* @see #setAllowUserInteraction(boolean)
|
||||
*/
|
||||
@ -941,8 +941,8 @@ public abstract class URLConnection {
|
||||
|
||||
/**
|
||||
* Sets the default value of the
|
||||
* <code>allowUserInteraction</code> field for all future
|
||||
* <code>URLConnection</code> objects to the specified value.
|
||||
* {@code allowUserInteraction} field for all future
|
||||
* {@code URLConnection} objects to the specified value.
|
||||
*
|
||||
* @param defaultallowuserinteraction the new value.
|
||||
* @see #getDefaultAllowUserInteraction()
|
||||
@ -952,14 +952,14 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default value of the <code>allowUserInteraction</code>
|
||||
* Returns the default value of the {@code allowUserInteraction}
|
||||
* field.
|
||||
* <p>
|
||||
* Ths default is "sticky", being a part of the static state of all
|
||||
* URLConnections. This flag applies to the next, and all following
|
||||
* URLConnections that are created.
|
||||
*
|
||||
* @return the default value of the <code>allowUserInteraction</code>
|
||||
* @return the default value of the {@code allowUserInteraction}
|
||||
* field.
|
||||
* @see #setDefaultAllowUserInteraction(boolean)
|
||||
*/
|
||||
@ -968,8 +968,8 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the <code>useCaches</code> field of this
|
||||
* <code>URLConnection</code> to the specified value.
|
||||
* Sets the value of the {@code useCaches} field of this
|
||||
* {@code URLConnection} to the specified value.
|
||||
* <p>
|
||||
* Some protocols do caching of documents. Occasionally, it is important
|
||||
* to be able to "tunnel through" and ignore the caches (e.g., the
|
||||
@ -979,7 +979,7 @@ public abstract class URLConnection {
|
||||
* The default value comes from DefaultUseCaches, which defaults to
|
||||
* true.
|
||||
*
|
||||
* @param usecaches a <code>boolean</code> indicating whether
|
||||
* @param usecaches a {@code boolean} indicating whether
|
||||
* or not to allow caching
|
||||
* @throws IllegalStateException if already connected
|
||||
* @see #getUseCaches()
|
||||
@ -991,11 +991,11 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of this <code>URLConnection</code>'s
|
||||
* <code>useCaches</code> field.
|
||||
* Returns the value of this {@code URLConnection}'s
|
||||
* {@code useCaches} field.
|
||||
*
|
||||
* @return the value of this <code>URLConnection</code>'s
|
||||
* <code>useCaches</code> field.
|
||||
* @return the value of this {@code URLConnection}'s
|
||||
* {@code useCaches} field.
|
||||
* @see #setUseCaches(boolean)
|
||||
*/
|
||||
public boolean getUseCaches() {
|
||||
@ -1003,8 +1003,8 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the value of the <code>ifModifiedSince</code> field of
|
||||
* this <code>URLConnection</code> to the specified value.
|
||||
* Sets the value of the {@code ifModifiedSince} field of
|
||||
* this {@code URLConnection} to the specified value.
|
||||
*
|
||||
* @param ifmodifiedsince the new value.
|
||||
* @throws IllegalStateException if already connected
|
||||
@ -1017,9 +1017,9 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the value of this object's <code>ifModifiedSince</code> field.
|
||||
* Returns the value of this object's {@code ifModifiedSince} field.
|
||||
*
|
||||
* @return the value of this object's <code>ifModifiedSince</code> field.
|
||||
* @return the value of this object's {@code ifModifiedSince} field.
|
||||
* @see #setIfModifiedSince(long)
|
||||
*/
|
||||
public long getIfModifiedSince() {
|
||||
@ -1027,15 +1027,15 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the default value of a <code>URLConnection</code>'s
|
||||
* <code>useCaches</code> flag.
|
||||
* Returns the default value of a {@code URLConnection}'s
|
||||
* {@code useCaches} flag.
|
||||
* <p>
|
||||
* Ths default is "sticky", being a part of the static state of all
|
||||
* URLConnections. This flag applies to the next, and all following
|
||||
* URLConnections that are created.
|
||||
*
|
||||
* @return the default value of a <code>URLConnection</code>'s
|
||||
* <code>useCaches</code> flag.
|
||||
* @return the default value of a {@code URLConnection}'s
|
||||
* {@code useCaches} flag.
|
||||
* @see #setDefaultUseCaches(boolean)
|
||||
*/
|
||||
public boolean getDefaultUseCaches() {
|
||||
@ -1043,7 +1043,7 @@ public abstract class URLConnection {
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the default value of the <code>useCaches</code> field to the
|
||||
* Sets the default value of the {@code useCaches} field to the
|
||||
* specified value.
|
||||
*
|
||||
* @param defaultusecaches the new value.
|
||||
@ -1063,7 +1063,7 @@ public abstract class URLConnection {
|
||||
* properties to be appended into a single property.
|
||||
*
|
||||
* @param key the keyword by which the request is known
|
||||
* (e.g., "<code>Accept</code>").
|
||||
* (e.g., "{@code Accept}").
|
||||
* @param value the value associated with it.
|
||||
* @throws IllegalStateException if already connected
|
||||
* @throws NullPointerException if key is <CODE>null</CODE>
|
||||
@ -1087,7 +1087,7 @@ public abstract class URLConnection {
|
||||
* existing values associated with the same key.
|
||||
*
|
||||
* @param key the keyword by which the request is known
|
||||
* (e.g., "<code>Accept</code>").
|
||||
* (e.g., "{@code Accept}").
|
||||
* @param value the value associated with it.
|
||||
* @throws IllegalStateException if already connected
|
||||
* @throws NullPointerException if key is null
|
||||
@ -1151,11 +1151,11 @@ public abstract class URLConnection {
|
||||
|
||||
/**
|
||||
* Sets the default value of a general request property. When a
|
||||
* <code>URLConnection</code> is created, it is initialized with
|
||||
* {@code URLConnection} is created, it is initialized with
|
||||
* these properties.
|
||||
*
|
||||
* @param key the keyword by which the request is known
|
||||
* (e.g., "<code>Accept</code>").
|
||||
* (e.g., "{@code Accept}").
|
||||
* @param value the value associated with the key.
|
||||
*
|
||||
* @see java.net.URLConnection#setRequestProperty(java.lang.String,java.lang.String)
|
||||
@ -1197,21 +1197,21 @@ public abstract class URLConnection {
|
||||
static ContentHandlerFactory factory;
|
||||
|
||||
/**
|
||||
* Sets the <code>ContentHandlerFactory</code> of an
|
||||
* Sets the {@code ContentHandlerFactory} of an
|
||||
* application. It can be called at most once by an application.
|
||||
* <p>
|
||||
* The <code>ContentHandlerFactory</code> instance is used to
|
||||
* The {@code ContentHandlerFactory} instance is used to
|
||||
* construct a content handler from a content type
|
||||
* <p>
|
||||
* If there is a security manager, this method first calls
|
||||
* the security manager's <code>checkSetFactory</code> method
|
||||
* the security manager's {@code checkSetFactory} method
|
||||
* to ensure the operation is allowed.
|
||||
* This could result in a SecurityException.
|
||||
*
|
||||
* @param fac the desired factory.
|
||||
* @exception Error if the factory has already been defined.
|
||||
* @exception SecurityException if a security manager exists and its
|
||||
* <code>checkSetFactory</code> method doesn't allow the operation.
|
||||
* {@code checkSetFactory} method doesn't allow the operation.
|
||||
* @see java.net.ContentHandlerFactory
|
||||
* @see java.net.URLConnection#getContent()
|
||||
* @see SecurityManager#checkSetFactory
|
||||
@ -1374,7 +1374,7 @@ public abstract class URLConnection {
|
||||
* Tries to determine the content type of an object, based
|
||||
* on the specified "file" component of a URL.
|
||||
* This is a convenience method that can be used by
|
||||
* subclasses that override the <code>getContentType</code> method.
|
||||
* subclasses that override the {@code getContentType} method.
|
||||
*
|
||||
* @param fname a filename.
|
||||
* @return a guess as to what the content type of the object is,
|
||||
@ -1389,16 +1389,16 @@ public abstract class URLConnection {
|
||||
* Tries to determine the type of an input stream based on the
|
||||
* characters at the beginning of the input stream. This method can
|
||||
* be used by subclasses that override the
|
||||
* <code>getContentType</code> method.
|
||||
* {@code getContentType} method.
|
||||
* <p>
|
||||
* Ideally, this routine would not be needed. But many
|
||||
* <code>http</code> servers return the incorrect content type; in
|
||||
* {@code http} servers return the incorrect content type; in
|
||||
* addition, there are many nonstandard extensions. Direct inspection
|
||||
* of the bytes to determine the content type is often more accurate
|
||||
* than believing the content type claimed by the <code>http</code> server.
|
||||
* than believing the content type claimed by the {@code http} server.
|
||||
*
|
||||
* @param is an input stream that supports marks.
|
||||
* @return a guess at the content type, or <code>null</code> if none
|
||||
* @return a guess at the content type, or {@code null} if none
|
||||
* can be determined.
|
||||
* @exception IOException if an I/O error occurs while reading the
|
||||
* input stream.
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1998, 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
|
||||
@ -34,27 +34,27 @@ import java.io.*;
|
||||
* <p>
|
||||
* The conversion process is the reverse of that used by the URLEncoder class. It is assumed
|
||||
* that all characters in the encoded string are one of the following:
|
||||
* "<code>a</code>" through "<code>z</code>",
|
||||
* "<code>A</code>" through "<code>Z</code>",
|
||||
* "<code>0</code>" through "<code>9</code>", and
|
||||
* "<code>-</code>", "<code>_</code>",
|
||||
* "<code>.</code>", and "<code>*</code>". The
|
||||
* character "<code>%</code>" is allowed but is interpreted
|
||||
* "{@code a}" through "{@code z}",
|
||||
* "{@code A}" through "{@code Z}",
|
||||
* "{@code 0}" through "{@code 9}", and
|
||||
* "{@code -}", "{@code _}",
|
||||
* "{@code .}", and "{@code *}". The
|
||||
* character "{@code %}" is allowed but is interpreted
|
||||
* as the start of a special escaped sequence.
|
||||
* <p>
|
||||
* The following rules are applied in the conversion:
|
||||
* <p>
|
||||
* <ul>
|
||||
* <li>The alphanumeric characters "<code>a</code>" through
|
||||
* "<code>z</code>", "<code>A</code>" through
|
||||
* "<code>Z</code>" and "<code>0</code>"
|
||||
* through "<code>9</code>" remain the same.
|
||||
* <li>The special characters "<code>.</code>",
|
||||
* "<code>-</code>", "<code>*</code>", and
|
||||
* "<code>_</code>" remain the same.
|
||||
* <li>The plus sign "<code>+</code>" is converted into a
|
||||
* space character "<code> </code>" .
|
||||
* <li>A sequence of the form "<code>%<i>xy</i></code>" will be
|
||||
* <li>The alphanumeric characters "{@code a}" through
|
||||
* "{@code z}", "{@code A}" through
|
||||
* "{@code Z}" and "{@code 0}"
|
||||
* through "{@code 9}" remain the same.
|
||||
* <li>The special characters "{@code .}",
|
||||
* "{@code -}", "{@code *}", and
|
||||
* "{@code _}" remain the same.
|
||||
* <li>The plus sign "{@code +}" is converted into a
|
||||
* space character " " .
|
||||
* <li>A sequence of the form "<i>{@code %xy}</i>" will be
|
||||
* treated as representing a byte where <i>xy</i> is the two-digit
|
||||
* hexadecimal representation of the 8 bits. Then, all substrings
|
||||
* that contain one or more of these byte sequences consecutively
|
||||
@ -66,7 +66,7 @@ import java.io.*;
|
||||
* <p>
|
||||
* There are two possible ways in which this decoder could deal with
|
||||
* illegal strings. It could either leave illegal characters alone or
|
||||
* it could throw an <tt>{@link java.lang.IllegalArgumentException}</tt>.
|
||||
* it could throw an {@link java.lang.IllegalArgumentException}.
|
||||
* Which approach the decoder takes is left to the
|
||||
* implementation.
|
||||
*
|
||||
@ -81,15 +81,15 @@ public class URLDecoder {
|
||||
static String dfltEncName = URLEncoder.dfltEncName;
|
||||
|
||||
/**
|
||||
* Decodes a <code>x-www-form-urlencoded</code> string.
|
||||
* Decodes a {@code x-www-form-urlencoded} string.
|
||||
* The platform's default encoding is used to determine what characters
|
||||
* are represented by any consecutive sequences of the form
|
||||
* "<code>%<i>xy</i></code>".
|
||||
* @param s the <code>String</code> to decode
|
||||
* "<i>{@code %xy}</i>".
|
||||
* @param s the {@code String} to decode
|
||||
* @deprecated The resulting string may vary depending on the platform's
|
||||
* default encoding. Instead, use the decode(String,String) method
|
||||
* to specify the encoding.
|
||||
* @return the newly decoded <code>String</code>
|
||||
* @return the newly decoded {@code String}
|
||||
*/
|
||||
@Deprecated
|
||||
public static String decode(String s) {
|
||||
@ -106,11 +106,11 @@ public class URLDecoder {
|
||||
}
|
||||
|
||||
/**
|
||||
* Decodes a <code>application/x-www-form-urlencoded</code> string using a specific
|
||||
* Decodes a {@code application/x-www-form-urlencoded} string using a specific
|
||||
* encoding scheme.
|
||||
* The supplied encoding is used to determine
|
||||
* what characters are represented by any consecutive sequences of the
|
||||
* form "<code>%<i>xy</i></code>".
|
||||
* form "<i>{@code %xy}</i>".
|
||||
* <p>
|
||||
* <em><strong>Note:</strong> The <a href=
|
||||
* "http://www.w3.org/TR/html40/appendix/notes.html#non-ascii-chars">
|
||||
@ -118,11 +118,11 @@ public class URLDecoder {
|
||||
* UTF-8 should be used. Not doing so may introduce
|
||||
* incompatibilites.</em>
|
||||
*
|
||||
* @param s the <code>String</code> to decode
|
||||
* @param s the {@code String} to decode
|
||||
* @param enc The name of a supported
|
||||
* <a href="../lang/package-summary.html#charenc">character
|
||||
* encoding</a>.
|
||||
* @return the newly decoded <code>String</code>
|
||||
* @return the newly decoded {@code String}
|
||||
* @exception UnsupportedEncodingException
|
||||
* If character encoding needs to be consulted, but
|
||||
* named character encoding is not supported
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user