This commit is contained in:
Lana Steuck 2015-10-21 18:40:22 -07:00
commit ebbe02d227
220 changed files with 8627 additions and 3865 deletions

View File

@ -136,101 +136,179 @@ class CharacterData00 extends CharacterData {
if ((val & $$maskLowerCase) != 0) { if ((val & $$maskLowerCase) != 0) {
if ((val & $$maskCaseOffset) == $$maskCaseOffset) { if ((val & $$maskCaseOffset) == $$maskCaseOffset) {
switch(ch) { switch(ch) {
// map the offset overflow chars case 0x0130: mapChar = 0x0069; break;
case 0x0130 : mapChar = 0x0069; break; case 0x023A: mapChar = 0x2C65; break;
case 0x2126 : mapChar = 0x03C9; break; case 0x023E: mapChar = 0x2C66; break;
case 0x212A : mapChar = 0x006B; break; case 0x10A0: mapChar = 0x2D00; break;
case 0x212B : mapChar = 0x00E5; break; case 0x10A1: mapChar = 0x2D01; break;
// map the titlecase chars with both a 1:M uppercase map case 0x10A2: mapChar = 0x2D02; break;
// and a lowercase map case 0x10A3: mapChar = 0x2D03; break;
case 0x1F88 : mapChar = 0x1F80; break; case 0x10A4: mapChar = 0x2D04; break;
case 0x1F89 : mapChar = 0x1F81; break; case 0x10A5: mapChar = 0x2D05; break;
case 0x1F8A : mapChar = 0x1F82; break; case 0x10A6: mapChar = 0x2D06; break;
case 0x1F8B : mapChar = 0x1F83; break; case 0x10A7: mapChar = 0x2D07; break;
case 0x1F8C : mapChar = 0x1F84; break; case 0x10A8: mapChar = 0x2D08; break;
case 0x1F8D : mapChar = 0x1F85; break; case 0x10A9: mapChar = 0x2D09; break;
case 0x1F8E : mapChar = 0x1F86; break; case 0x10AA: mapChar = 0x2D0A; break;
case 0x1F8F : mapChar = 0x1F87; break; case 0x10AB: mapChar = 0x2D0B; break;
case 0x1F98 : mapChar = 0x1F90; break; case 0x10AC: mapChar = 0x2D0C; break;
case 0x1F99 : mapChar = 0x1F91; break; case 0x10AD: mapChar = 0x2D0D; break;
case 0x1F9A : mapChar = 0x1F92; break; case 0x10AE: mapChar = 0x2D0E; break;
case 0x1F9B : mapChar = 0x1F93; break; case 0x10AF: mapChar = 0x2D0F; break;
case 0x1F9C : mapChar = 0x1F94; break; case 0x10B0: mapChar = 0x2D10; break;
case 0x1F9D : mapChar = 0x1F95; break; case 0x10B1: mapChar = 0x2D11; break;
case 0x1F9E : mapChar = 0x1F96; break; case 0x10B2: mapChar = 0x2D12; break;
case 0x1F9F : mapChar = 0x1F97; break; case 0x10B3: mapChar = 0x2D13; break;
case 0x1FA8 : mapChar = 0x1FA0; break; case 0x10B4: mapChar = 0x2D14; break;
case 0x1FA9 : mapChar = 0x1FA1; break; case 0x10B5: mapChar = 0x2D15; break;
case 0x1FAA : mapChar = 0x1FA2; break; case 0x10B6: mapChar = 0x2D16; break;
case 0x1FAB : mapChar = 0x1FA3; break; case 0x10B7: mapChar = 0x2D17; break;
case 0x1FAC : mapChar = 0x1FA4; break; case 0x10B8: mapChar = 0x2D18; break;
case 0x1FAD : mapChar = 0x1FA5; break; case 0x10B9: mapChar = 0x2D19; break;
case 0x1FAE : mapChar = 0x1FA6; break; case 0x10BA: mapChar = 0x2D1A; break;
case 0x1FAF : mapChar = 0x1FA7; break; case 0x10BB: mapChar = 0x2D1B; break;
case 0x1FBC : mapChar = 0x1FB3; break; case 0x10BC: mapChar = 0x2D1C; break;
case 0x1FCC : mapChar = 0x1FC3; break; case 0x10BD: mapChar = 0x2D1D; break;
case 0x1FFC : mapChar = 0x1FF3; break; case 0x10BE: mapChar = 0x2D1E; break;
case 0x10BF: mapChar = 0x2D1F; break;
case 0x023A : mapChar = 0x2C65; break; case 0x10C0: mapChar = 0x2D20; break;
case 0x023E : mapChar = 0x2C66; break; case 0x10C1: mapChar = 0x2D21; break;
case 0x10A0 : mapChar = 0x2D00; break; case 0x10C2: mapChar = 0x2D22; break;
case 0x10A1 : mapChar = 0x2D01; break; case 0x10C3: mapChar = 0x2D23; break;
case 0x10A2 : mapChar = 0x2D02; break; case 0x10C4: mapChar = 0x2D24; break;
case 0x10A3 : mapChar = 0x2D03; break; case 0x10C5: mapChar = 0x2D25; break;
case 0x10A4 : mapChar = 0x2D04; break; case 0x10C7: mapChar = 0x2D27; break;
case 0x10A5 : mapChar = 0x2D05; break; case 0x10CD: mapChar = 0x2D2D; break;
case 0x10A6 : mapChar = 0x2D06; break; case 0x13A0: mapChar = 0xAB70; break;
case 0x10A7 : mapChar = 0x2D07; break; case 0x13A1: mapChar = 0xAB71; break;
case 0x10A8 : mapChar = 0x2D08; break; case 0x13A2: mapChar = 0xAB72; break;
case 0x10A9 : mapChar = 0x2D09; break; case 0x13A3: mapChar = 0xAB73; break;
case 0x10AA : mapChar = 0x2D0A; break; case 0x13A4: mapChar = 0xAB74; break;
case 0x10AB : mapChar = 0x2D0B; break; case 0x13A5: mapChar = 0xAB75; break;
case 0x10AC : mapChar = 0x2D0C; break; case 0x13A6: mapChar = 0xAB76; break;
case 0x10AD : mapChar = 0x2D0D; break; case 0x13A7: mapChar = 0xAB77; break;
case 0x10AE : mapChar = 0x2D0E; break; case 0x13A8: mapChar = 0xAB78; break;
case 0x10AF : mapChar = 0x2D0F; break; case 0x13A9: mapChar = 0xAB79; break;
case 0x10B0 : mapChar = 0x2D10; break; case 0x13AA: mapChar = 0xAB7A; break;
case 0x10B1 : mapChar = 0x2D11; break; case 0x13AB: mapChar = 0xAB7B; break;
case 0x10B2 : mapChar = 0x2D12; break; case 0x13AC: mapChar = 0xAB7C; break;
case 0x10B3 : mapChar = 0x2D13; break; case 0x13AD: mapChar = 0xAB7D; break;
case 0x10B4 : mapChar = 0x2D14; break; case 0x13AE: mapChar = 0xAB7E; break;
case 0x10B5 : mapChar = 0x2D15; break; case 0x13AF: mapChar = 0xAB7F; break;
case 0x10B6 : mapChar = 0x2D16; break; case 0x13B0: mapChar = 0xAB80; break;
case 0x10B7 : mapChar = 0x2D17; break; case 0x13B1: mapChar = 0xAB81; break;
case 0x10B8 : mapChar = 0x2D18; break; case 0x13B2: mapChar = 0xAB82; break;
case 0x10B9 : mapChar = 0x2D19; break; case 0x13B3: mapChar = 0xAB83; break;
case 0x10BA : mapChar = 0x2D1A; break; case 0x13B4: mapChar = 0xAB84; break;
case 0x10BB : mapChar = 0x2D1B; break; case 0x13B5: mapChar = 0xAB85; break;
case 0x10BC : mapChar = 0x2D1C; break; case 0x13B6: mapChar = 0xAB86; break;
case 0x10BD : mapChar = 0x2D1D; break; case 0x13B7: mapChar = 0xAB87; break;
case 0x10BE : mapChar = 0x2D1E; break; case 0x13B8: mapChar = 0xAB88; break;
case 0x10BF : mapChar = 0x2D1F; break; case 0x13B9: mapChar = 0xAB89; break;
case 0x10C0 : mapChar = 0x2D20; break; case 0x13BA: mapChar = 0xAB8A; break;
case 0x10C1 : mapChar = 0x2D21; break; case 0x13BB: mapChar = 0xAB8B; break;
case 0x10C2 : mapChar = 0x2D22; break; case 0x13BC: mapChar = 0xAB8C; break;
case 0x10C3 : mapChar = 0x2D23; break; case 0x13BD: mapChar = 0xAB8D; break;
case 0x10C4 : mapChar = 0x2D24; break; case 0x13BE: mapChar = 0xAB8E; break;
case 0x10C5 : mapChar = 0x2D25; break; case 0x13BF: mapChar = 0xAB8F; break;
case 0x10C7 : mapChar = 0x2D27; break; case 0x13C0: mapChar = 0xAB90; break;
case 0x10CD : mapChar = 0x2D2D; break; case 0x13C1: mapChar = 0xAB91; break;
case 0x1E9E : mapChar = 0x00DF; break; case 0x13C2: mapChar = 0xAB92; break;
case 0x2C62 : mapChar = 0x026B; break; case 0x13C3: mapChar = 0xAB93; break;
case 0x2C63 : mapChar = 0x1D7D; break; case 0x13C4: mapChar = 0xAB94; break;
case 0x2C64 : mapChar = 0x027D; break; case 0x13C5: mapChar = 0xAB95; break;
case 0x2C6D : mapChar = 0x0251; break; case 0x13C6: mapChar = 0xAB96; break;
case 0x2C6E : mapChar = 0x0271; break; case 0x13C7: mapChar = 0xAB97; break;
case 0x2C6F : mapChar = 0x0250; break; case 0x13C8: mapChar = 0xAB98; break;
case 0x2C70 : mapChar = 0x0252; break; case 0x13C9: mapChar = 0xAB99; break;
case 0x2C7E : mapChar = 0x023F; break; case 0x13CA: mapChar = 0xAB9A; break;
case 0x2C7F : mapChar = 0x0240; break; case 0x13CB: mapChar = 0xAB9B; break;
case 0xA77D : mapChar = 0x1D79; break; case 0x13CC: mapChar = 0xAB9C; break;
case 0xA78D : mapChar = 0x0265; break; case 0x13CD: mapChar = 0xAB9D; break;
case 0xA7AA : mapChar = 0x0266; break; case 0x13CE: mapChar = 0xAB9E; break;
case 0xA7AB : mapChar = 0x025C; break; case 0x13CF: mapChar = 0xAB9F; break;
case 0xA7AC : mapChar = 0x0261; break; case 0x13D0: mapChar = 0xABA0; break;
case 0xA7AD : mapChar = 0x026C; break; case 0x13D1: mapChar = 0xABA1; break;
case 0xA7B0 : mapChar = 0x029E; break; case 0x13D2: mapChar = 0xABA2; break;
case 0xA7B1 : mapChar = 0x0287; break; case 0x13D3: mapChar = 0xABA3; break;
case 0x13D4: mapChar = 0xABA4; break;
case 0x13D5: mapChar = 0xABA5; break;
case 0x13D6: mapChar = 0xABA6; break;
case 0x13D7: mapChar = 0xABA7; break;
case 0x13D8: mapChar = 0xABA8; break;
case 0x13D9: mapChar = 0xABA9; break;
case 0x13DA: mapChar = 0xABAA; break;
case 0x13DB: mapChar = 0xABAB; break;
case 0x13DC: mapChar = 0xABAC; break;
case 0x13DD: mapChar = 0xABAD; break;
case 0x13DE: mapChar = 0xABAE; break;
case 0x13DF: mapChar = 0xABAF; break;
case 0x13E0: mapChar = 0xABB0; break;
case 0x13E1: mapChar = 0xABB1; break;
case 0x13E2: mapChar = 0xABB2; break;
case 0x13E3: mapChar = 0xABB3; break;
case 0x13E4: mapChar = 0xABB4; break;
case 0x13E5: mapChar = 0xABB5; break;
case 0x13E6: mapChar = 0xABB6; break;
case 0x13E7: mapChar = 0xABB7; break;
case 0x13E8: mapChar = 0xABB8; break;
case 0x13E9: mapChar = 0xABB9; break;
case 0x13EA: mapChar = 0xABBA; break;
case 0x13EB: mapChar = 0xABBB; break;
case 0x13EC: mapChar = 0xABBC; break;
case 0x13ED: mapChar = 0xABBD; break;
case 0x13EE: mapChar = 0xABBE; break;
case 0x13EF: mapChar = 0xABBF; break;
case 0x1E9E: mapChar = 0x00DF; break;
case 0x1F88: mapChar = 0x1F80; break;
case 0x1F89: mapChar = 0x1F81; break;
case 0x1F8A: mapChar = 0x1F82; break;
case 0x1F8B: mapChar = 0x1F83; break;
case 0x1F8C: mapChar = 0x1F84; break;
case 0x1F8D: mapChar = 0x1F85; break;
case 0x1F8E: mapChar = 0x1F86; break;
case 0x1F8F: mapChar = 0x1F87; break;
case 0x1F98: mapChar = 0x1F90; break;
case 0x1F99: mapChar = 0x1F91; break;
case 0x1F9A: mapChar = 0x1F92; break;
case 0x1F9B: mapChar = 0x1F93; break;
case 0x1F9C: mapChar = 0x1F94; break;
case 0x1F9D: mapChar = 0x1F95; break;
case 0x1F9E: mapChar = 0x1F96; break;
case 0x1F9F: mapChar = 0x1F97; break;
case 0x1FA8: mapChar = 0x1FA0; break;
case 0x1FA9: mapChar = 0x1FA1; break;
case 0x1FAA: mapChar = 0x1FA2; break;
case 0x1FAB: mapChar = 0x1FA3; break;
case 0x1FAC: mapChar = 0x1FA4; break;
case 0x1FAD: mapChar = 0x1FA5; break;
case 0x1FAE: mapChar = 0x1FA6; break;
case 0x1FAF: mapChar = 0x1FA7; break;
case 0x1FBC: mapChar = 0x1FB3; break;
case 0x1FCC: mapChar = 0x1FC3; break;
case 0x1FFC: mapChar = 0x1FF3; break;
case 0x2126: mapChar = 0x03C9; break;
case 0x212A: mapChar = 0x006B; break;
case 0x212B: mapChar = 0x00E5; break;
case 0x2C62: mapChar = 0x026B; break;
case 0x2C63: mapChar = 0x1D7D; break;
case 0x2C64: mapChar = 0x027D; break;
case 0x2C6D: mapChar = 0x0251; break;
case 0x2C6E: mapChar = 0x0271; break;
case 0x2C6F: mapChar = 0x0250; break;
case 0x2C70: mapChar = 0x0252; break;
case 0x2C7E: mapChar = 0x023F; break;
case 0x2C7F: mapChar = 0x0240; break;
case 0xA77D: mapChar = 0x1D79; break;
case 0xA78D: mapChar = 0x0265; break;
case 0xA7AA: mapChar = 0x0266; break;
case 0xA7AB: mapChar = 0x025C; break;
case 0xA7AC: mapChar = 0x0261; break;
case 0xA7AD: mapChar = 0x026C; break;
case 0xA7B0: mapChar = 0x029E; break;
case 0xA7B1: mapChar = 0x0287; break;
case 0xA7B2: mapChar = 0x029D; break;
case 0xA7B3: mapChar = 0xAB53; break;
// default mapChar is already set, so no // default mapChar is already set, so no
// need to redo it here. // need to redo it here.
// default : mapChar = ch; // default : mapChar = ch;
@ -251,98 +329,176 @@ class CharacterData00 extends CharacterData {
if ((val & $$maskUpperCase) != 0) { if ((val & $$maskUpperCase) != 0) {
if ((val & $$maskCaseOffset) == $$maskCaseOffset) { if ((val & $$maskCaseOffset) == $$maskCaseOffset) {
switch(ch) { switch(ch) {
// map chars with overflow offsets case 0x017F: mapChar = 0x0053; break;
case 0x00B5 : mapChar = 0x039C; break; case 0x023F: mapChar = 0x2C7E; break;
case 0x017F : mapChar = 0x0053; break; case 0x0240: mapChar = 0x2C7F; break;
case 0x1FBE : mapChar = 0x0399; break; case 0x0250: mapChar = 0x2C6F; break;
// map char that have both a 1:1 and 1:M map case 0x0251: mapChar = 0x2C6D; break;
case 0x1F80 : mapChar = 0x1F88; break; case 0x0252: mapChar = 0x2C70; break;
case 0x1F81 : mapChar = 0x1F89; break; case 0x025C: mapChar = 0xA7AB; break;
case 0x1F82 : mapChar = 0x1F8A; break; case 0x0261: mapChar = 0xA7AC; break;
case 0x1F83 : mapChar = 0x1F8B; break; case 0x0265: mapChar = 0xA78D; break;
case 0x1F84 : mapChar = 0x1F8C; break; case 0x0266: mapChar = 0xA7AA; break;
case 0x1F85 : mapChar = 0x1F8D; break; case 0x026B: mapChar = 0x2C62; break;
case 0x1F86 : mapChar = 0x1F8E; break; case 0x026C: mapChar = 0xA7AD; break;
case 0x1F87 : mapChar = 0x1F8F; break; case 0x0271: mapChar = 0x2C6E; break;
case 0x1F90 : mapChar = 0x1F98; break; case 0x027D: mapChar = 0x2C64; break;
case 0x1F91 : mapChar = 0x1F99; break; case 0x0287: mapChar = 0xA7B1; break;
case 0x1F92 : mapChar = 0x1F9A; break; case 0x029D: mapChar = 0xA7B2; break;
case 0x1F93 : mapChar = 0x1F9B; break; case 0x029E: mapChar = 0xA7B0; break;
case 0x1F94 : mapChar = 0x1F9C; break; case 0x1D79: mapChar = 0xA77D; break;
case 0x1F95 : mapChar = 0x1F9D; break; case 0x1D7D: mapChar = 0x2C63; break;
case 0x1F96 : mapChar = 0x1F9E; break; case 0x1F80: mapChar = 0x1F88; break;
case 0x1F97 : mapChar = 0x1F9F; break; case 0x1F81: mapChar = 0x1F89; break;
case 0x1FA0 : mapChar = 0x1FA8; break; case 0x1F82: mapChar = 0x1F8A; break;
case 0x1FA1 : mapChar = 0x1FA9; break; case 0x1F83: mapChar = 0x1F8B; break;
case 0x1FA2 : mapChar = 0x1FAA; break; case 0x1F84: mapChar = 0x1F8C; break;
case 0x1FA3 : mapChar = 0x1FAB; break; case 0x1F85: mapChar = 0x1F8D; break;
case 0x1FA4 : mapChar = 0x1FAC; break; case 0x1F86: mapChar = 0x1F8E; break;
case 0x1FA5 : mapChar = 0x1FAD; break; case 0x1F87: mapChar = 0x1F8F; break;
case 0x1FA6 : mapChar = 0x1FAE; break; case 0x1F90: mapChar = 0x1F98; break;
case 0x1FA7 : mapChar = 0x1FAF; break; case 0x1F91: mapChar = 0x1F99; break;
case 0x1FB3 : mapChar = 0x1FBC; break; case 0x1F92: mapChar = 0x1F9A; break;
case 0x1FC3 : mapChar = 0x1FCC; break; case 0x1F93: mapChar = 0x1F9B; break;
case 0x1FF3 : mapChar = 0x1FFC; break; case 0x1F94: mapChar = 0x1F9C; break;
case 0x1F95: mapChar = 0x1F9D; break;
case 0x023F : mapChar = 0x2C7E; break; case 0x1F96: mapChar = 0x1F9E; break;
case 0x0240 : mapChar = 0x2C7F; break; case 0x1F97: mapChar = 0x1F9F; break;
case 0x0250 : mapChar = 0x2C6F; break; case 0x1FA0: mapChar = 0x1FA8; break;
case 0x0251 : mapChar = 0x2C6D; break; case 0x1FA1: mapChar = 0x1FA9; break;
case 0x0252 : mapChar = 0x2C70; break; case 0x1FA2: mapChar = 0x1FAA; break;
case 0x025C : mapChar = 0xA7AB; break; case 0x1FA3: mapChar = 0x1FAB; break;
case 0x0261 : mapChar = 0xA7AC; break; case 0x1FA4: mapChar = 0x1FAC; break;
case 0x0265 : mapChar = 0xA78D; break; case 0x1FA5: mapChar = 0x1FAD; break;
case 0x0266 : mapChar = 0xA7AA; break; case 0x1FA6: mapChar = 0x1FAE; break;
case 0x026B : mapChar = 0x2C62; break; case 0x1FA7: mapChar = 0x1FAF; break;
case 0x026C : mapChar = 0xA7AD; break; case 0x1FB3: mapChar = 0x1FBC; break;
case 0x0271 : mapChar = 0x2C6E; break; case 0x1FBE: mapChar = 0x0399; break;
case 0x0287 : mapChar = 0xA7B1; break; case 0x1FC3: mapChar = 0x1FCC; break;
case 0x029E : mapChar = 0xA7B0; break; case 0x1FF3: mapChar = 0x1FFC; break;
case 0x027D : mapChar = 0x2C64; break; case 0x2C65: mapChar = 0x023A; break;
case 0x1D79 : mapChar = 0xA77D; break; case 0x2C66: mapChar = 0x023E; break;
case 0x1D7D : mapChar = 0x2C63; break; case 0x2D00: mapChar = 0x10A0; break;
case 0x2C65 : mapChar = 0x023A; break; case 0x2D01: mapChar = 0x10A1; break;
case 0x2C66 : mapChar = 0x023E; break; case 0x2D02: mapChar = 0x10A2; break;
case 0x2D00 : mapChar = 0x10A0; break; case 0x2D03: mapChar = 0x10A3; break;
case 0x2D01 : mapChar = 0x10A1; break; case 0x2D04: mapChar = 0x10A4; break;
case 0x2D02 : mapChar = 0x10A2; break; case 0x2D05: mapChar = 0x10A5; break;
case 0x2D03 : mapChar = 0x10A3; break; case 0x2D06: mapChar = 0x10A6; break;
case 0x2D04 : mapChar = 0x10A4; break; case 0x2D07: mapChar = 0x10A7; break;
case 0x2D05 : mapChar = 0x10A5; break; case 0x2D08: mapChar = 0x10A8; break;
case 0x2D06 : mapChar = 0x10A6; break; case 0x2D09: mapChar = 0x10A9; break;
case 0x2D07 : mapChar = 0x10A7; break; case 0x2D0A: mapChar = 0x10AA; break;
case 0x2D08 : mapChar = 0x10A8; break; case 0x2D0B: mapChar = 0x10AB; break;
case 0x2D09 : mapChar = 0x10A9; break; case 0x2D0C: mapChar = 0x10AC; break;
case 0x2D0A : mapChar = 0x10AA; break; case 0x2D0D: mapChar = 0x10AD; break;
case 0x2D0B : mapChar = 0x10AB; break; case 0x2D0E: mapChar = 0x10AE; break;
case 0x2D0C : mapChar = 0x10AC; break; case 0x2D0F: mapChar = 0x10AF; break;
case 0x2D0D : mapChar = 0x10AD; break; case 0x2D10: mapChar = 0x10B0; break;
case 0x2D0E : mapChar = 0x10AE; break; case 0x2D11: mapChar = 0x10B1; break;
case 0x2D0F : mapChar = 0x10AF; break; case 0x2D12: mapChar = 0x10B2; break;
case 0x2D10 : mapChar = 0x10B0; break; case 0x2D13: mapChar = 0x10B3; break;
case 0x2D11 : mapChar = 0x10B1; break; case 0x2D14: mapChar = 0x10B4; break;
case 0x2D12 : mapChar = 0x10B2; break; case 0x2D15: mapChar = 0x10B5; break;
case 0x2D13 : mapChar = 0x10B3; break; case 0x2D16: mapChar = 0x10B6; break;
case 0x2D14 : mapChar = 0x10B4; break; case 0x2D17: mapChar = 0x10B7; break;
case 0x2D15 : mapChar = 0x10B5; break; case 0x2D18: mapChar = 0x10B8; break;
case 0x2D16 : mapChar = 0x10B6; break; case 0x2D19: mapChar = 0x10B9; break;
case 0x2D17 : mapChar = 0x10B7; break; case 0x2D1A: mapChar = 0x10BA; break;
case 0x2D18 : mapChar = 0x10B8; break; case 0x2D1B: mapChar = 0x10BB; break;
case 0x2D19 : mapChar = 0x10B9; break; case 0x2D1C: mapChar = 0x10BC; break;
case 0x2D1A : mapChar = 0x10BA; break; case 0x2D1D: mapChar = 0x10BD; break;
case 0x2D1B : mapChar = 0x10BB; break; case 0x2D1E: mapChar = 0x10BE; break;
case 0x2D1C : mapChar = 0x10BC; break; case 0x2D1F: mapChar = 0x10BF; break;
case 0x2D1D : mapChar = 0x10BD; break; case 0x2D20: mapChar = 0x10C0; break;
case 0x2D1E : mapChar = 0x10BE; break; case 0x2D21: mapChar = 0x10C1; break;
case 0x2D1F : mapChar = 0x10BF; break; case 0x2D22: mapChar = 0x10C2; break;
case 0x2D20 : mapChar = 0x10C0; break; case 0x2D23: mapChar = 0x10C3; break;
case 0x2D21 : mapChar = 0x10C1; break; case 0x2D24: mapChar = 0x10C4; break;
case 0x2D22 : mapChar = 0x10C2; break; case 0x2D25: mapChar = 0x10C5; break;
case 0x2D23 : mapChar = 0x10C3; break; case 0x2D27: mapChar = 0x10C7; break;
case 0x2D24 : mapChar = 0x10C4; break; case 0x2D2D: mapChar = 0x10CD; break;
case 0x2D25 : mapChar = 0x10C5; break; case 0xAB53: mapChar = 0xA7B3; break;
case 0x2D27 : mapChar = 0x10C7; break; case 0xAB70: mapChar = 0x13A0; break;
case 0x2D2D : mapChar = 0x10CD; break; case 0xAB71: mapChar = 0x13A1; break;
case 0xAB72: mapChar = 0x13A2; break;
case 0xAB73: mapChar = 0x13A3; break;
case 0xAB74: mapChar = 0x13A4; break;
case 0xAB75: mapChar = 0x13A5; break;
case 0xAB76: mapChar = 0x13A6; break;
case 0xAB77: mapChar = 0x13A7; break;
case 0xAB78: mapChar = 0x13A8; break;
case 0xAB79: mapChar = 0x13A9; break;
case 0xAB7A: mapChar = 0x13AA; break;
case 0xAB7B: mapChar = 0x13AB; break;
case 0xAB7C: mapChar = 0x13AC; break;
case 0xAB7D: mapChar = 0x13AD; break;
case 0xAB7E: mapChar = 0x13AE; break;
case 0xAB7F: mapChar = 0x13AF; break;
case 0xAB80: mapChar = 0x13B0; break;
case 0xAB81: mapChar = 0x13B1; break;
case 0xAB82: mapChar = 0x13B2; break;
case 0xAB83: mapChar = 0x13B3; break;
case 0xAB84: mapChar = 0x13B4; break;
case 0xAB85: mapChar = 0x13B5; break;
case 0xAB86: mapChar = 0x13B6; break;
case 0xAB87: mapChar = 0x13B7; break;
case 0xAB88: mapChar = 0x13B8; break;
case 0xAB89: mapChar = 0x13B9; break;
case 0xAB8A: mapChar = 0x13BA; break;
case 0xAB8B: mapChar = 0x13BB; break;
case 0xAB8C: mapChar = 0x13BC; break;
case 0xAB8D: mapChar = 0x13BD; break;
case 0xAB8E: mapChar = 0x13BE; break;
case 0xAB8F: mapChar = 0x13BF; break;
case 0xAB90: mapChar = 0x13C0; break;
case 0xAB91: mapChar = 0x13C1; break;
case 0xAB92: mapChar = 0x13C2; break;
case 0xAB93: mapChar = 0x13C3; break;
case 0xAB94: mapChar = 0x13C4; break;
case 0xAB95: mapChar = 0x13C5; break;
case 0xAB96: mapChar = 0x13C6; break;
case 0xAB97: mapChar = 0x13C7; break;
case 0xAB98: mapChar = 0x13C8; break;
case 0xAB99: mapChar = 0x13C9; break;
case 0xAB9A: mapChar = 0x13CA; break;
case 0xAB9B: mapChar = 0x13CB; break;
case 0xAB9C: mapChar = 0x13CC; break;
case 0xAB9D: mapChar = 0x13CD; break;
case 0xAB9E: mapChar = 0x13CE; break;
case 0xAB9F: mapChar = 0x13CF; break;
case 0xABA0: mapChar = 0x13D0; break;
case 0xABA1: mapChar = 0x13D1; break;
case 0xABA2: mapChar = 0x13D2; break;
case 0xABA3: mapChar = 0x13D3; break;
case 0xABA4: mapChar = 0x13D4; break;
case 0xABA5: mapChar = 0x13D5; break;
case 0xABA6: mapChar = 0x13D6; break;
case 0xABA7: mapChar = 0x13D7; break;
case 0xABA8: mapChar = 0x13D8; break;
case 0xABA9: mapChar = 0x13D9; break;
case 0xABAA: mapChar = 0x13DA; break;
case 0xABAB: mapChar = 0x13DB; break;
case 0xABAC: mapChar = 0x13DC; break;
case 0xABAD: mapChar = 0x13DD; break;
case 0xABAE: mapChar = 0x13DE; break;
case 0xABAF: mapChar = 0x13DF; break;
case 0xABB0: mapChar = 0x13E0; break;
case 0xABB1: mapChar = 0x13E1; break;
case 0xABB2: mapChar = 0x13E2; break;
case 0xABB3: mapChar = 0x13E3; break;
case 0xABB4: mapChar = 0x13E4; break;
case 0xABB5: mapChar = 0x13E5; break;
case 0xABB6: mapChar = 0x13E6; break;
case 0xABB7: mapChar = 0x13E7; break;
case 0xABB8: mapChar = 0x13E8; break;
case 0xABB9: mapChar = 0x13E9; break;
case 0xABBA: mapChar = 0x13EA; break;
case 0xABBB: mapChar = 0x13EB; break;
case 0xABBC: mapChar = 0x13EC; break;
case 0xABBD: mapChar = 0x13ED; break;
case 0xABBE: mapChar = 0x13EE; break;
case 0xABBF: mapChar = 0x13EF; break;
// ch must have a 1:M case mapping, but we // ch must have a 1:M case mapping, but we
// can't handle it here. Return ch. // can't handle it here. Return ch.
// since mapChar is already set, no need // since mapChar is already set, no need
@ -420,6 +576,8 @@ class CharacterData00 extends CharacterData {
switch (ch) { switch (ch) {
case 0x0BF1: retval = 100; break; // TAMIL NUMBER ONE HUNDRED case 0x0BF1: retval = 100; break; // TAMIL NUMBER ONE HUNDRED
case 0x0BF2: retval = 1000; break; // TAMIL NUMBER ONE THOUSAND case 0x0BF2: retval = 1000; break; // TAMIL NUMBER ONE THOUSAND
case 0x0D71: retval = 100; break; // MALAYALAM NUMBER ONE HUNDRED
case 0x0D72: retval = 1000; break; // MALAYALAM NUMBER ONE THOUSAND
case 0x1375: retval = 40; break; // ETHIOPIC NUMBER FORTY case 0x1375: retval = 40; break; // ETHIOPIC NUMBER FORTY
case 0x1376: retval = 50; break; // ETHIOPIC NUMBER FIFTY case 0x1376: retval = 50; break; // ETHIOPIC NUMBER FIFTY
case 0x1377: retval = 60; break; // ETHIOPIC NUMBER SIXTY case 0x1377: retval = 60; break; // ETHIOPIC NUMBER SIXTY
@ -440,14 +598,15 @@ class CharacterData00 extends CharacterData {
case 0x2180: retval = 1000; break; // ROMAN NUMERAL ONE THOUSAND C D case 0x2180: retval = 1000; break; // ROMAN NUMERAL ONE THOUSAND C D
case 0x2181: retval = 5000; break; // ROMAN NUMERAL FIVE THOUSAND case 0x2181: retval = 5000; break; // ROMAN NUMERAL FIVE THOUSAND
case 0x2182: retval = 10000; break; // ROMAN NUMERAL TEN THOUSAND case 0x2182: retval = 10000; break; // ROMAN NUMERAL TEN THOUSAND
case 0x2186: retval = 50; break; // ROMAN NUMERAL FIFTY EARLY FORM
case 0x324B: retval = 40; break; case 0x2187: retval = 50000; break; // ROMAN NUMERAL FIFTY THOUSAND
case 0x324C: retval = 50; break; case 0x2188: retval = 100000; break; // ROMAN NUMERAL ONE HUNDRED THOUSAND
case 0x324D: retval = 60; break; case 0x324B: retval = 40; break; // CIRCLED NUMBER FORTY ON BLACK SQUARE
case 0x324E: retval = 70; break; case 0x324C: retval = 50; break; // CIRCLED NUMBER FIFTY ON BLACK SQUARE
case 0x324F: retval = 80; break; case 0x324D: retval = 60; break; // CIRCLED NUMBER SIXTY ON BLACK SQUARE
case 0x325C: retval = 32; break; case 0x324E: retval = 70; break; // CIRCLED NUMBER SEVENTY ON BLACK SQUARE
case 0x324F: retval = 80; break; // CIRCLED NUMBER EIGHTY ON BLACK SQUARE
case 0x325C: retval = 32; break; // CIRCLED NUMBER THIRTY TWO
case 0x325D: retval = 33; break; // CIRCLED NUMBER THIRTY THREE case 0x325D: retval = 33; break; // CIRCLED NUMBER THIRTY THREE
case 0x325E: retval = 34; break; // CIRCLED NUMBER THIRTY FOUR case 0x325E: retval = 34; break; // CIRCLED NUMBER THIRTY FOUR
case 0x325F: retval = 35; break; // CIRCLED NUMBER THIRTY FIVE case 0x325F: retval = 35; break; // CIRCLED NUMBER THIRTY FIVE
@ -466,13 +625,6 @@ class CharacterData00 extends CharacterData {
case 0x32BD: retval = 48; break; // CIRCLED NUMBER FORTY EIGHT case 0x32BD: retval = 48; break; // CIRCLED NUMBER FORTY EIGHT
case 0x32BE: retval = 49; break; // CIRCLED NUMBER FORTY NINE case 0x32BE: retval = 49; break; // CIRCLED NUMBER FORTY NINE
case 0x32BF: retval = 50; break; // CIRCLED NUMBER FIFTY case 0x32BF: retval = 50; break; // CIRCLED NUMBER FIFTY
case 0x0D71: retval = 100; break; // MALAYALAM NUMBER ONE HUNDRED
case 0x0D72: retval = 1000; break; // MALAYALAM NUMBER ONE THOUSAND
case 0x2186: retval = 50; break; // ROMAN NUMERAL FIFTY EARLY FORM
case 0x2187: retval = 50000; break; // ROMAN NUMERAL FIFTY THOUSAND
case 0x2188: retval = 100000; break; // ROMAN NUMERAL ONE HUNDRED THOUSAND
default: retval = -2; break; default: retval = -2; break;
} }
break; break;
@ -553,70 +705,149 @@ class CharacterData00 extends CharacterData {
} }
else { else {
switch(ch) { switch(ch) {
// map overflow characters case 0x017F: mapChar = 0x0053; break;
case 0x00B5 : mapChar = 0x039C; break; case 0x023F: mapChar = 0x2C7E; break;
case 0x017F : mapChar = 0x0053; break; case 0x0240: mapChar = 0x2C7F; break;
case 0x1FBE : mapChar = 0x0399; break; case 0x0250: mapChar = 0x2C6F; break;
case 0x0251: mapChar = 0x2C6D; break;
case 0x023F : mapChar = 0x2C7E; break; case 0x0252: mapChar = 0x2C70; break;
case 0x0240 : mapChar = 0x2C7F; break; case 0x025C: mapChar = 0xA7AB; break;
case 0x0250 : mapChar = 0x2C6F; break; case 0x0261: mapChar = 0xA7AC; break;
case 0x0251 : mapChar = 0x2C6D; break; case 0x0265: mapChar = 0xA78D; break;
case 0x0252 : mapChar = 0x2C70; break; case 0x0266: mapChar = 0xA7AA; break;
case 0x025C : mapChar = 0xA7AB; break; case 0x026B: mapChar = 0x2C62; break;
case 0x0261 : mapChar = 0xA7AC; break; case 0x026C: mapChar = 0xA7AD; break;
case 0x0265 : mapChar = 0xA78D; break; case 0x0271: mapChar = 0x2C6E; break;
case 0x0266 : mapChar = 0xA7AA; break; case 0x027D: mapChar = 0x2C64; break;
case 0x026B : mapChar = 0x2C62; break; case 0x0287: mapChar = 0xA7B1; break;
case 0x026C : mapChar = 0xA7AD; break; case 0x029D: mapChar = 0xA7B2; break;
case 0x0271 : mapChar = 0x2C6E; break; case 0x029E: mapChar = 0xA7B0; break;
case 0x027D : mapChar = 0x2C64; break; case 0x1D79: mapChar = 0xA77D; break;
case 0x0287 : mapChar = 0xA7B1; break; case 0x1D7D: mapChar = 0x2C63; break;
case 0x029E : mapChar = 0xA7B0; break; case 0x1FBE: mapChar = 0x0399; break;
case 0x1D79 : mapChar = 0xA77D; break; case 0x2C65: mapChar = 0x023A; break;
case 0x1D7D : mapChar = 0x2C63; break; case 0x2C66: mapChar = 0x023E; break;
case 0x2C65 : mapChar = 0x023A; break; case 0x2D00: mapChar = 0x10A0; break;
case 0x2C66 : mapChar = 0x023E; break; case 0x2D01: mapChar = 0x10A1; break;
case 0x2D00 : mapChar = 0x10A0; break; case 0x2D02: mapChar = 0x10A2; break;
case 0x2D01 : mapChar = 0x10A1; break; case 0x2D03: mapChar = 0x10A3; break;
case 0x2D02 : mapChar = 0x10A2; break; case 0x2D04: mapChar = 0x10A4; break;
case 0x2D03 : mapChar = 0x10A3; break; case 0x2D05: mapChar = 0x10A5; break;
case 0x2D04 : mapChar = 0x10A4; break; case 0x2D06: mapChar = 0x10A6; break;
case 0x2D05 : mapChar = 0x10A5; break; case 0x2D07: mapChar = 0x10A7; break;
case 0x2D06 : mapChar = 0x10A6; break; case 0x2D08: mapChar = 0x10A8; break;
case 0x2D07 : mapChar = 0x10A7; break; case 0x2D09: mapChar = 0x10A9; break;
case 0x2D08 : mapChar = 0x10A8; break; case 0x2D0A: mapChar = 0x10AA; break;
case 0x2D09 : mapChar = 0x10A9; break; case 0x2D0B: mapChar = 0x10AB; break;
case 0x2D0A : mapChar = 0x10AA; break; case 0x2D0C: mapChar = 0x10AC; break;
case 0x2D0B : mapChar = 0x10AB; break; case 0x2D0D: mapChar = 0x10AD; break;
case 0x2D0C : mapChar = 0x10AC; break; case 0x2D0E: mapChar = 0x10AE; break;
case 0x2D0D : mapChar = 0x10AD; break; case 0x2D0F: mapChar = 0x10AF; break;
case 0x2D0E : mapChar = 0x10AE; break; case 0x2D10: mapChar = 0x10B0; break;
case 0x2D0F : mapChar = 0x10AF; break; case 0x2D11: mapChar = 0x10B1; break;
case 0x2D10 : mapChar = 0x10B0; break; case 0x2D12: mapChar = 0x10B2; break;
case 0x2D11 : mapChar = 0x10B1; break; case 0x2D13: mapChar = 0x10B3; break;
case 0x2D12 : mapChar = 0x10B2; break; case 0x2D14: mapChar = 0x10B4; break;
case 0x2D13 : mapChar = 0x10B3; break; case 0x2D15: mapChar = 0x10B5; break;
case 0x2D14 : mapChar = 0x10B4; break; case 0x2D16: mapChar = 0x10B6; break;
case 0x2D15 : mapChar = 0x10B5; break; case 0x2D17: mapChar = 0x10B7; break;
case 0x2D16 : mapChar = 0x10B6; break; case 0x2D18: mapChar = 0x10B8; break;
case 0x2D17 : mapChar = 0x10B7; break; case 0x2D19: mapChar = 0x10B9; break;
case 0x2D18 : mapChar = 0x10B8; break; case 0x2D1A: mapChar = 0x10BA; break;
case 0x2D19 : mapChar = 0x10B9; break; case 0x2D1B: mapChar = 0x10BB; break;
case 0x2D1A : mapChar = 0x10BA; break; case 0x2D1C: mapChar = 0x10BC; break;
case 0x2D1B : mapChar = 0x10BB; break; case 0x2D1D: mapChar = 0x10BD; break;
case 0x2D1C : mapChar = 0x10BC; break; case 0x2D1E: mapChar = 0x10BE; break;
case 0x2D1D : mapChar = 0x10BD; break; case 0x2D1F: mapChar = 0x10BF; break;
case 0x2D1E : mapChar = 0x10BE; break; case 0x2D20: mapChar = 0x10C0; break;
case 0x2D1F : mapChar = 0x10BF; break; case 0x2D21: mapChar = 0x10C1; break;
case 0x2D20 : mapChar = 0x10C0; break; case 0x2D22: mapChar = 0x10C2; break;
case 0x2D21 : mapChar = 0x10C1; break; case 0x2D23: mapChar = 0x10C3; break;
case 0x2D22 : mapChar = 0x10C2; break; case 0x2D24: mapChar = 0x10C4; break;
case 0x2D23 : mapChar = 0x10C3; break; case 0x2D25: mapChar = 0x10C5; break;
case 0x2D24 : mapChar = 0x10C4; break; case 0x2D27: mapChar = 0x10C7; break;
case 0x2D25 : mapChar = 0x10C5; break; case 0x2D2D: mapChar = 0x10CD; break;
case 0x2D27 : mapChar = 0x10C7; break; case 0xAB53: mapChar = 0xA7B3; break;
case 0x2D2D : mapChar = 0x10CD; break; case 0xAB70: mapChar = 0x13A0; break;
case 0xAB71: mapChar = 0x13A1; break;
case 0xAB72: mapChar = 0x13A2; break;
case 0xAB73: mapChar = 0x13A3; break;
case 0xAB74: mapChar = 0x13A4; break;
case 0xAB75: mapChar = 0x13A5; break;
case 0xAB76: mapChar = 0x13A6; break;
case 0xAB77: mapChar = 0x13A7; break;
case 0xAB78: mapChar = 0x13A8; break;
case 0xAB79: mapChar = 0x13A9; break;
case 0xAB7A: mapChar = 0x13AA; break;
case 0xAB7B: mapChar = 0x13AB; break;
case 0xAB7C: mapChar = 0x13AC; break;
case 0xAB7D: mapChar = 0x13AD; break;
case 0xAB7E: mapChar = 0x13AE; break;
case 0xAB7F: mapChar = 0x13AF; break;
case 0xAB80: mapChar = 0x13B0; break;
case 0xAB81: mapChar = 0x13B1; break;
case 0xAB82: mapChar = 0x13B2; break;
case 0xAB83: mapChar = 0x13B3; break;
case 0xAB84: mapChar = 0x13B4; break;
case 0xAB85: mapChar = 0x13B5; break;
case 0xAB86: mapChar = 0x13B6; break;
case 0xAB87: mapChar = 0x13B7; break;
case 0xAB88: mapChar = 0x13B8; break;
case 0xAB89: mapChar = 0x13B9; break;
case 0xAB8A: mapChar = 0x13BA; break;
case 0xAB8B: mapChar = 0x13BB; break;
case 0xAB8C: mapChar = 0x13BC; break;
case 0xAB8D: mapChar = 0x13BD; break;
case 0xAB8E: mapChar = 0x13BE; break;
case 0xAB8F: mapChar = 0x13BF; break;
case 0xAB90: mapChar = 0x13C0; break;
case 0xAB91: mapChar = 0x13C1; break;
case 0xAB92: mapChar = 0x13C2; break;
case 0xAB93: mapChar = 0x13C3; break;
case 0xAB94: mapChar = 0x13C4; break;
case 0xAB95: mapChar = 0x13C5; break;
case 0xAB96: mapChar = 0x13C6; break;
case 0xAB97: mapChar = 0x13C7; break;
case 0xAB98: mapChar = 0x13C8; break;
case 0xAB99: mapChar = 0x13C9; break;
case 0xAB9A: mapChar = 0x13CA; break;
case 0xAB9B: mapChar = 0x13CB; break;
case 0xAB9C: mapChar = 0x13CC; break;
case 0xAB9D: mapChar = 0x13CD; break;
case 0xAB9E: mapChar = 0x13CE; break;
case 0xAB9F: mapChar = 0x13CF; break;
case 0xABA0: mapChar = 0x13D0; break;
case 0xABA1: mapChar = 0x13D1; break;
case 0xABA2: mapChar = 0x13D2; break;
case 0xABA3: mapChar = 0x13D3; break;
case 0xABA4: mapChar = 0x13D4; break;
case 0xABA5: mapChar = 0x13D5; break;
case 0xABA6: mapChar = 0x13D6; break;
case 0xABA7: mapChar = 0x13D7; break;
case 0xABA8: mapChar = 0x13D8; break;
case 0xABA9: mapChar = 0x13D9; break;
case 0xABAA: mapChar = 0x13DA; break;
case 0xABAB: mapChar = 0x13DB; break;
case 0xABAC: mapChar = 0x13DC; break;
case 0xABAD: mapChar = 0x13DD; break;
case 0xABAE: mapChar = 0x13DE; break;
case 0xABAF: mapChar = 0x13DF; break;
case 0xABB0: mapChar = 0x13E0; break;
case 0xABB1: mapChar = 0x13E1; break;
case 0xABB2: mapChar = 0x13E2; break;
case 0xABB3: mapChar = 0x13E3; break;
case 0xABB4: mapChar = 0x13E4; break;
case 0xABB5: mapChar = 0x13E5; break;
case 0xABB6: mapChar = 0x13E6; break;
case 0xABB7: mapChar = 0x13E7; break;
case 0xABB8: mapChar = 0x13E8; break;
case 0xABB9: mapChar = 0x13E9; break;
case 0xABBA: mapChar = 0x13EA; break;
case 0xABBB: mapChar = 0x13EB; break;
case 0xABBC: mapChar = 0x13EC; break;
case 0xABBD: mapChar = 0x13ED; break;
case 0xABBE: mapChar = 0x13EE; break;
case 0xABBF: mapChar = 0x13EF; break;
default : mapChar = Character.ERROR; break; default : mapChar = Character.ERROR; break;
} }
} }

View File

@ -243,36 +243,35 @@ class CharacterData01 extends CharacterData {
case 0x10131: retval = 70000; break; // AEGEAN NUMBER SEVENTY THOUSAND case 0x10131: retval = 70000; break; // AEGEAN NUMBER SEVENTY THOUSAND
case 0x10132: retval = 80000; break; // AEGEAN NUMBER EIGHTY THOUSAND case 0x10132: retval = 80000; break; // AEGEAN NUMBER EIGHTY THOUSAND
case 0x10133: retval = 90000; break; // AEGEAN NUMBER NINETY THOUSAND case 0x10133: retval = 90000; break; // AEGEAN NUMBER NINETY THOUSAND
case 0x10323: retval = 50; break; // OLD ITALIC NUMERAL FIFTY case 0x10144: retval = 50; break; // GREEK ACROPHONIC ATTIC FIFTY
case 0x10144: retval = 50; break; // ACROPHONIC ATTIC FIFTY case 0x10145: retval = 500; break; // GREEK ACROPHONIC ATTIC FIVE HUNDRED
case 0x10145: retval = 500; break; // ACROPHONIC ATTIC FIVE HUNDRED case 0x10146: retval = 5000; break; // GREEK ACROPHONIC ATTIC FIVE THOUSAND
case 0x10146: retval = 5000; break; // ACROPHONIC ATTIC FIVE THOUSAND case 0x10147: retval = 50000; break; // GREEK ACROPHONIC ATTIC FIFTY THOUSAND
case 0x10147: retval = 50000; break; // ACROPHONIC ATTIC FIFTY THOUSAND case 0x1014A: retval = 50; break; // GREEK ACROPHONIC ATTIC FIFTY TALENTS
case 0x1014A: retval = 50; break; // ACROPHONIC ATTIC FIFTY TALENTS case 0x1014B: retval = 100; break; // GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS
case 0x1014B: retval = 100; break; // ACROPHONIC ATTIC ONE HUNDRED TALENTS case 0x1014C: retval = 500; break; // GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS
case 0x1014C: retval = 500; break; // ACROPHONIC ATTIC FIVE HUNDRED TALENTS case 0x1014D: retval = 1000; break; // GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS
case 0x1014D: retval = 1000; break; // ACROPHONIC ATTIC ONE THOUSAND TALENTS case 0x1014E: retval = 5000; break; // GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS
case 0x1014E: retval = 5000; break; // ACROPHONIC ATTIC FIVE THOUSAND TALENTS case 0x10151: retval = 50; break; // GREEK ACROPHONIC ATTIC FIFTY STATERS
case 0x10151: retval = 50; break; // ACROPHONIC ATTIC FIFTY STATERS case 0x10152: retval = 100; break; // GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS
case 0x10152: retval = 100; break; // ACROPHONIC ATTIC ONE HUNDRED STATERS case 0x10153: retval = 500; break; // GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS
case 0x10153: retval = 500; break; // ACROPHONIC ATTIC FIVE HUNDRED STATERS case 0x10154: retval = 1000; break; // GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS
case 0x10154: retval = 1000; break; // ACROPHONIC ATTIC ONE THOUSAND STATERS case 0x10155: retval = 10000; break; // GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS
case 0x10155: retval = 10000; break; // ACROPHONIC ATTIC TEN THOUSAND STATERS case 0x10156: retval = 50000; break; // GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS
case 0x10156: retval = 50000; break; // ACROPHONIC ATTIC FIFTY THOUSAND STATERS case 0x10166: retval = 50; break; // GREEK ACROPHONIC TROEZENIAN FIFTY
case 0x10166: retval = 50; break; // ACROPHONIC TROEZENIAN FIFTY case 0x10167: retval = 50; break; // GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM
case 0x10167: retval = 50; break; // ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM case 0x10168: retval = 50; break; // GREEK ACROPHONIC HERMIONIAN FIFTY
case 0x10168: retval = 50; break; // ACROPHONIC HERMIONIAN FIFTY case 0x10169: retval = 50; break; // GREEK ACROPHONIC THESPIAN FIFTY
case 0x10169: retval = 50; break; // ACROPHONIC THESPIAN FIFTY case 0x1016A: retval = 100; break; // GREEK ACROPHONIC THESPIAN ONE HUNDRED
case 0x1016A: retval = 100; break; // ACROPHONIC THESPIAN ONE HUNDRED case 0x1016B: retval = 300; break; // GREEK ACROPHONIC THESPIAN THREE HUNDRED
case 0x1016B: retval = 300; break; // ACROPHONIC THESPIAN THREE HUNDRED case 0x1016C: retval = 500; break; // GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED
case 0x1016C: retval = 500; break; // ACROPHONIC EPIDAUREAN FIVE HUNDRED case 0x1016D: retval = 500; break; // GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED
case 0x1016D: retval = 500; break; // ACROPHONIC TROEZENIAN FIVE HUNDRED case 0x1016E: retval = 500; break; // GREEK ACROPHONIC THESPIAN FIVE HUNDRED
case 0x1016E: retval = 500; break; // ACROPHONIC THESPIAN FIVE HUNDRED case 0x1016F: retval = 500; break; // GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED
case 0x1016F: retval = 500; break; // ACROPHONIC CARYSTIAN FIVE HUNDRED case 0x10170: retval = 500; break; // GREEK ACROPHONIC NAXIAN FIVE HUNDRED
case 0x10170: retval = 500; break; // ACROPHONIC NAXIAN FIVE HUNDRED case 0x10171: retval = 1000; break; // GREEK ACROPHONIC THESPIAN ONE THOUSAND
case 0x10171: retval = 1000; break; // ACROPHONIC THESPIAN ONE THOUSAND case 0x10172: retval = 5000; break; // GREEK ACROPHONIC THESPIAN FIVE THOUSAND
case 0x10172: retval = 5000; break; // ACROPHONIC THESPIAN FIVE THOUSAND case 0x10174: retval = 50; break; // GREEK ACROPHONIC STRATIAN FIFTY MNAS
case 0x10174: retval = 50; break; // ACROPHONIC STRATIAN FIFTY MNAS
case 0x102ED: retval = 40; break; // COPTIC EPACT NUMBER FORTY case 0x102ED: retval = 40; break; // COPTIC EPACT NUMBER FORTY
case 0x102EE: retval = 50; break; // COPTIC EPACT NUMBER FIFTY case 0x102EE: retval = 50; break; // COPTIC EPACT NUMBER FIFTY
case 0x102EF: retval = 60; break; // COPTIC EPACT NUMBER SIXTY case 0x102EF: retval = 60; break; // COPTIC EPACT NUMBER SIXTY
@ -288,6 +287,7 @@ class CharacterData01 extends CharacterData {
case 0x102F9: retval = 700; break; // COPTIC EPACT NUMBER SEVEN HUNDRED case 0x102F9: retval = 700; break; // COPTIC EPACT NUMBER SEVEN HUNDRED
case 0x102FA: retval = 800; break; // COPTIC EPACT NUMBER EIGHT HUNDRED case 0x102FA: retval = 800; break; // COPTIC EPACT NUMBER EIGHT HUNDRED
case 0x102FB: retval = 900; break; // COPTIC EPACT NUMBER NINE HUNDRED case 0x102FB: retval = 900; break; // COPTIC EPACT NUMBER NINE HUNDRED
case 0x10323: retval = 50; break; // OLD ITALIC NUMERAL FIFTY
case 0x10341: retval = 90; break; // GOTHIC LETTER NINETY case 0x10341: retval = 90; break; // GOTHIC LETTER NINETY
case 0x1034A: retval = 900; break; // GOTHIC LETTER NINE HUNDRED case 0x1034A: retval = 900; break; // GOTHIC LETTER NINE HUNDRED
case 0x103D5: retval = 100; break; // OLD PERSIAN NUMBER HUNDRED case 0x103D5: retval = 100; break; // OLD PERSIAN NUMBER HUNDRED
@ -295,7 +295,48 @@ class CharacterData01 extends CharacterData {
case 0x1085E: retval = 1000; break; // IMPERIAL ARAMAIC NUMBER ONE THOUSAND case 0x1085E: retval = 1000; break; // IMPERIAL ARAMAIC NUMBER ONE THOUSAND
case 0x1085F: retval = 10000; break; // IMPERIAL ARAMAIC NUMBER TEN THOUSAND case 0x1085F: retval = 10000; break; // IMPERIAL ARAMAIC NUMBER TEN THOUSAND
case 0x108AF: retval = 100; break; // NABATAEAN NUMBER ONE HUNDRED case 0x108AF: retval = 100; break; // NABATAEAN NUMBER ONE HUNDRED
case 0x108FF: retval = 100; break; // HATRAN NUMBER ONE HUNDRED
case 0x10919: retval = 100; break; // PHOENICIAN NUMBER ONE HUNDRED case 0x10919: retval = 100; break; // PHOENICIAN NUMBER ONE HUNDRED
case 0x109CC: retval = 40; break; // MEROITIC CURSIVE NUMBER FORTY
case 0x109CD: retval = 50; break; // MEROITIC CURSIVE NUMBER FIFTY
case 0x109CE: retval = 60; break; // MEROITIC CURSIVE NUMBER SIXTY
case 0x109CF: retval = 70; break; // MEROITIC CURSIVE NUMBER SEVENTY
case 0x109D2: retval = 100; break; // MEROITIC CURSIVE NUMBER ONE HUNDRED
case 0x109D3: retval = 200; break; // MEROITIC CURSIVE NUMBER TWO HUNDRED
case 0x109D4: retval = 300; break; // MEROITIC CURSIVE NUMBER THREE HUNDRED
case 0x109D5: retval = 400; break; // MEROITIC CURSIVE NUMBER FOUR HUNDRED
case 0x109D6: retval = 500; break; // MEROITIC CURSIVE NUMBER FIVE HUNDRED
case 0x109D7: retval = 600; break; // MEROITIC CURSIVE NUMBER SIX HUNDRED
case 0x109D8: retval = 700; break; // MEROITIC CURSIVE NUMBER SEVEN HUNDRED
case 0x109D9: retval = 800; break; // MEROITIC CURSIVE NUMBER EIGHT HUNDRED
case 0x109DA: retval = 900; break; // MEROITIC CURSIVE NUMBER NINE HUNDRED
case 0x109DB: retval = 1000; break; // MEROITIC CURSIVE NUMBER ONE THOUSAND
case 0x109DC: retval = 2000; break; // MEROITIC CURSIVE NUMBER TWO THOUSAND
case 0x109DD: retval = 3000; break; // MEROITIC CURSIVE NUMBER THREE THOUSAND
case 0x109DE: retval = 4000; break; // MEROITIC CURSIVE NUMBER FOUR THOUSAND
case 0x109DF: retval = 5000; break; // MEROITIC CURSIVE NUMBER FIVE THOUSAND
case 0x109E0: retval = 6000; break; // MEROITIC CURSIVE NUMBER SIX THOUSAND
case 0x109E1: retval = 7000; break; // MEROITIC CURSIVE NUMBER SEVEN THOUSAND
case 0x109E2: retval = 8000; break; // MEROITIC CURSIVE NUMBER EIGHT THOUSAND
case 0x109E3: retval = 9000; break; // MEROITIC CURSIVE NUMBER NINE THOUSAND
case 0x109E4: retval = 10000; break; // MEROITIC CURSIVE NUMBER TEN THOUSAND
case 0x109E5: retval = 20000; break; // MEROITIC CURSIVE NUMBER TWENTY THOUSAND
case 0x109E6: retval = 30000; break; // MEROITIC CURSIVE NUMBER THIRTY THOUSAND
case 0x109E7: retval = 40000; break; // MEROITIC CURSIVE NUMBER FORTY THOUSAND
case 0x109E8: retval = 50000; break; // MEROITIC CURSIVE NUMBER FIFTY THOUSAND
case 0x109E9: retval = 60000; break; // MEROITIC CURSIVE NUMBER SIXTY THOUSAND
case 0x109EA: retval = 70000; break; // MEROITIC CURSIVE NUMBER SEVENTY THOUSAND
case 0x109EB: retval = 80000; break; // MEROITIC CURSIVE NUMBER EIGHTY THOUSAND
case 0x109EC: retval = 90000; break; // MEROITIC CURSIVE NUMBER NINETY THOUSAND
case 0x109ED: retval = 100000; break; // MEROITIC CURSIVE NUMBER ONE HUNDRED THOUSAND
case 0x109EE: retval = 200000; break; // MEROITIC CURSIVE NUMBER TWO HUNDRED THOUSAND
case 0x109EF: retval = 300000; break; // MEROITIC CURSIVE NUMBER THREE HUNDRED THOUSAND
case 0x109F0: retval = 400000; break; // MEROITIC CURSIVE NUMBER FOUR HUNDRED THOUSAND
case 0x109F1: retval = 500000; break; // MEROITIC CURSIVE NUMBER FIVE HUNDRED THOUSAND
case 0x109F2: retval = 600000; break; // MEROITIC CURSIVE NUMBER SIX HUNDRED THOUSAND
case 0x109F3: retval = 700000; break; // MEROITIC CURSIVE NUMBER SEVEN HUNDRED THOUSAND
case 0x109F4: retval = 800000; break; // MEROITIC CURSIVE NUMBER EIGHT HUNDRED THOUSAND
case 0x109F5: retval = 900000; break; // MEROITIC CURSIVE NUMBER NINE HUNDRED THOUSAND
case 0x10A46: retval = 100; break; // KHAROSHTHI NUMBER ONE HUNDRED case 0x10A46: retval = 100; break; // KHAROSHTHI NUMBER ONE HUNDRED
case 0x10A47: retval = 1000; break; // KHAROSHTHI NUMBER ONE THOUSAND case 0x10A47: retval = 1000; break; // KHAROSHTHI NUMBER ONE THOUSAND
case 0x10A7E: retval = 50; break; // OLD SOUTH ARABIAN NUMBER FIFTY case 0x10A7E: retval = 50; break; // OLD SOUTH ARABIAN NUMBER FIFTY
@ -305,6 +346,9 @@ class CharacterData01 extends CharacterData {
case 0x10B7E: retval = 100; break; // INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED case 0x10B7E: retval = 100; break; // INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED
case 0x10B7F: retval = 1000; break; // INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND case 0x10B7F: retval = 1000; break; // INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND
case 0x10BAF: retval = 100; break; // PSALTER PAHLAVI NUMBER ONE HUNDRED case 0x10BAF: retval = 100; break; // PSALTER PAHLAVI NUMBER ONE HUNDRED
case 0x10CFD: retval = 50; break; // OLD HUNGARIAN NUMBER FIFTY
case 0x10CFE: retval = 100; break; // OLD HUNGARIAN NUMBER ONE HUNDRED
case 0x10CFF: retval = 1000; break; // OLD HUNGARIAN NUMBER ONE THOUSAND
case 0x10E6C: retval = 40; break; // RUMI NUMBER FORTY case 0x10E6C: retval = 40; break; // RUMI NUMBER FORTY
case 0x10E6D: retval = 50; break; // RUMI NUMBER FIFTY case 0x10E6D: retval = 50; break; // RUMI NUMBER FIFTY
case 0x10E6E: retval = 60; break; // RUMI NUMBER SIXTY case 0x10E6E: retval = 60; break; // RUMI NUMBER SIXTY

View File

@ -1,8 +1,8 @@
# PropList-7.0.0.txt # PropList-8.0.0.txt
# Date: 2014-02-19, 15:51:26 GMT [MD] # Date: 2015-05-16, 17:50:38 GMT [MD]
# #
# Unicode Character Database # Unicode Character Database
# Copyright (c) 1991-2014 Unicode, Inc. # Copyright (c) 1991-2015 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html # For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/ # For documentation, see http://www.unicode.org/reports/tr44/
@ -189,18 +189,22 @@ FF64 ; Terminal_Punctuation # Po HALFWIDTH IDEOGRAPHIC COMMA
11141..11143 ; Terminal_Punctuation # Po [3] CHAKMA DANDA..CHAKMA QUESTION MARK 11141..11143 ; Terminal_Punctuation # Po [3] CHAKMA DANDA..CHAKMA QUESTION MARK
111C5..111C6 ; Terminal_Punctuation # Po [2] SHARADA DANDA..SHARADA DOUBLE DANDA 111C5..111C6 ; Terminal_Punctuation # Po [2] SHARADA DANDA..SHARADA DOUBLE DANDA
111CD ; Terminal_Punctuation # Po SHARADA SUTRA MARK 111CD ; Terminal_Punctuation # Po SHARADA SUTRA MARK
111DE..111DF ; Terminal_Punctuation # Po [2] SHARADA SECTION MARK-1..SHARADA SECTION MARK-2
11238..1123C ; Terminal_Punctuation # Po [5] KHOJKI DANDA..KHOJKI DOUBLE SECTION MARK 11238..1123C ; Terminal_Punctuation # Po [5] KHOJKI DANDA..KHOJKI DOUBLE SECTION MARK
112A9 ; Terminal_Punctuation # Po MULTANI SECTION MARK
115C2..115C5 ; Terminal_Punctuation # Po [4] SIDDHAM DANDA..SIDDHAM SEPARATOR BAR 115C2..115C5 ; Terminal_Punctuation # Po [4] SIDDHAM DANDA..SIDDHAM SEPARATOR BAR
115C9 ; Terminal_Punctuation # Po SIDDHAM END OF TEXT MARK 115C9..115D7 ; Terminal_Punctuation # Po [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES
11641..11642 ; Terminal_Punctuation # Po [2] MODI DANDA..MODI DOUBLE DANDA 11641..11642 ; Terminal_Punctuation # Po [2] MODI DANDA..MODI DOUBLE DANDA
1173C..1173E ; Terminal_Punctuation # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI
12470..12474 ; Terminal_Punctuation # Po [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON 12470..12474 ; Terminal_Punctuation # Po [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
16A6E..16A6F ; Terminal_Punctuation # Po [2] MRO DANDA..MRO DOUBLE DANDA 16A6E..16A6F ; Terminal_Punctuation # Po [2] MRO DANDA..MRO DOUBLE DANDA
16AF5 ; Terminal_Punctuation # Po BASSA VAH FULL STOP 16AF5 ; Terminal_Punctuation # Po BASSA VAH FULL STOP
16B37..16B39 ; Terminal_Punctuation # Po [3] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN CIM CHEEM 16B37..16B39 ; Terminal_Punctuation # Po [3] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN CIM CHEEM
16B44 ; Terminal_Punctuation # Po PAHAWH HMONG SIGN XAUS 16B44 ; Terminal_Punctuation # Po PAHAWH HMONG SIGN XAUS
1BC9F ; Terminal_Punctuation # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP 1BC9F ; Terminal_Punctuation # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP
1DA87..1DA8A ; Terminal_Punctuation # Po [4] SIGNWRITING COMMA..SIGNWRITING COLON
# Total code points: 214 # Total code points: 238
# ================================================ # ================================================
@ -425,7 +429,7 @@ FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L
081B..0823 ; Other_Alphabetic # Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A 081B..0823 ; Other_Alphabetic # Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A
0825..0827 ; Other_Alphabetic # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U 0825..0827 ; Other_Alphabetic # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
0829..082C ; Other_Alphabetic # Mn [4] SAMARITAN VOWEL SIGN LONG I..SAMARITAN VOWEL SIGN SUKUN 0829..082C ; Other_Alphabetic # Mn [4] SAMARITAN VOWEL SIGN LONG I..SAMARITAN VOWEL SIGN SUKUN
08E4..08E9 ; Other_Alphabetic # Mn [6] ARABIC CURLY FATHA..ARABIC CURLY KASRATAN 08E3..08E9 ; Other_Alphabetic # Mn [7] ARABIC TURNED DAMMA BELOW..ARABIC CURLY KASRATAN
08F0..0902 ; Other_Alphabetic # Mn [19] ARABIC OPEN FATHATAN..DEVANAGARI SIGN ANUSVARA 08F0..0902 ; Other_Alphabetic # Mn [19] ARABIC OPEN FATHATAN..DEVANAGARI SIGN ANUSVARA
0903 ; Other_Alphabetic # Mc DEVANAGARI SIGN VISARGA 0903 ; Other_Alphabetic # Mc DEVANAGARI SIGN VISARGA
093A ; Other_Alphabetic # Mn DEVANAGARI VOWEL SIGN OE 093A ; Other_Alphabetic # Mn DEVANAGARI VOWEL SIGN OE
@ -560,8 +564,6 @@ FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L
1930..1931 ; Other_Alphabetic # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA 1930..1931 ; Other_Alphabetic # Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
1932 ; Other_Alphabetic # Mn LIMBU SMALL LETTER ANUSVARA 1932 ; Other_Alphabetic # Mn LIMBU SMALL LETTER ANUSVARA
1933..1938 ; Other_Alphabetic # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA 1933..1938 ; Other_Alphabetic # Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
19B0..19C0 ; Other_Alphabetic # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY
19C8..19C9 ; Other_Alphabetic # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2
1A17..1A18 ; Other_Alphabetic # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U 1A17..1A18 ; Other_Alphabetic # Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
1A19..1A1A ; Other_Alphabetic # Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O 1A19..1A1A ; Other_Alphabetic # Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O
1A1B ; Other_Alphabetic # Mn BUGINESE VOWEL SIGN AE 1A1B ; Other_Alphabetic # Mn BUGINESE VOWEL SIGN AE
@ -605,7 +607,7 @@ FF41..FF46 ; Hex_Digit # L& [6] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH L
24B6..24E9 ; Other_Alphabetic # So [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z 24B6..24E9 ; Other_Alphabetic # So [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z
2DE0..2DFF ; Other_Alphabetic # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS 2DE0..2DFF ; Other_Alphabetic # Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
A674..A67B ; Other_Alphabetic # Mn [8] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC LETTER OMEGA A674..A67B ; Other_Alphabetic # Mn [8] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC LETTER OMEGA
A69F ; Other_Alphabetic # Mn COMBINING CYRILLIC LETTER IOTIFIED E A69E..A69F ; Other_Alphabetic # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E
A823..A824 ; Other_Alphabetic # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I A823..A824 ; Other_Alphabetic # Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
A825..A826 ; Other_Alphabetic # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E A825..A826 ; Other_Alphabetic # Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
A827 ; Other_Alphabetic # Mc SYLOTI NAGRI VOWEL SIGN OO A827 ; Other_Alphabetic # Mc SYLOTI NAGRI VOWEL SIGN OO
@ -672,7 +674,7 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA
112DF ; Other_Alphabetic # Mn KHUDAWADI SIGN ANUSVARA 112DF ; Other_Alphabetic # Mn KHUDAWADI SIGN ANUSVARA
112E0..112E2 ; Other_Alphabetic # Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II 112E0..112E2 ; Other_Alphabetic # Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II
112E3..112E8 ; Other_Alphabetic # Mn [6] KHUDAWADI VOWEL SIGN U..KHUDAWADI VOWEL SIGN AU 112E3..112E8 ; Other_Alphabetic # Mn [6] KHUDAWADI VOWEL SIGN U..KHUDAWADI VOWEL SIGN AU
11301 ; Other_Alphabetic # Mn GRANTHA SIGN CANDRABINDU 11300..11301 ; Other_Alphabetic # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
11302..11303 ; Other_Alphabetic # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA 11302..11303 ; Other_Alphabetic # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA
1133E..1133F ; Other_Alphabetic # Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I 1133E..1133F ; Other_Alphabetic # Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I
11340 ; Other_Alphabetic # Mn GRANTHA VOWEL SIGN II 11340 ; Other_Alphabetic # Mn GRANTHA VOWEL SIGN II
@ -693,6 +695,7 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA
115B8..115BB ; Other_Alphabetic # Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU 115B8..115BB ; Other_Alphabetic # Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU
115BC..115BD ; Other_Alphabetic # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA 115BC..115BD ; Other_Alphabetic # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA
115BE ; Other_Alphabetic # Mc SIDDHAM SIGN VISARGA 115BE ; Other_Alphabetic # Mc SIDDHAM SIGN VISARGA
115DC..115DD ; Other_Alphabetic # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU
11630..11632 ; Other_Alphabetic # Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II 11630..11632 ; Other_Alphabetic # Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II
11633..1163A ; Other_Alphabetic # Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI 11633..1163A ; Other_Alphabetic # Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI
1163B..1163C ; Other_Alphabetic # Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU 1163B..1163C ; Other_Alphabetic # Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU
@ -704,6 +707,11 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA
116AD ; Other_Alphabetic # Mn TAKRI VOWEL SIGN AA 116AD ; Other_Alphabetic # Mn TAKRI VOWEL SIGN AA
116AE..116AF ; Other_Alphabetic # Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II 116AE..116AF ; Other_Alphabetic # Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II
116B0..116B5 ; Other_Alphabetic # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU 116B0..116B5 ; Other_Alphabetic # Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
1171D..1171F ; Other_Alphabetic # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
11720..11721 ; Other_Alphabetic # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
11722..11725 ; Other_Alphabetic # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
11726 ; Other_Alphabetic # Mc AHOM VOWEL SIGN E
11727..1172A ; Other_Alphabetic # Mn [4] AHOM VOWEL SIGN AW..AHOM VOWEL SIGN AM
16B30..16B36 ; Other_Alphabetic # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM 16B30..16B36 ; Other_Alphabetic # Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
16F51..16F7E ; Other_Alphabetic # Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG 16F51..16F7E ; Other_Alphabetic # Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
1BC9E ; Other_Alphabetic # Mn DUPLOYAN DOUBLE MARK 1BC9E ; Other_Alphabetic # Mn DUPLOYAN DOUBLE MARK
@ -720,15 +728,16 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA
3021..3029 ; Ideographic # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE 3021..3029 ; Ideographic # Nl [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
3038..303A ; Ideographic # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY 3038..303A ; Ideographic # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
3400..4DB5 ; Ideographic # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 3400..4DB5 ; Ideographic # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
4E00..9FCC ; Ideographic # Lo [20941] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FCC 4E00..9FD5 ; Ideographic # Lo [20950] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FD5
F900..FA6D ; Ideographic # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D F900..FA6D ; Ideographic # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
20000..2A6D6 ; Ideographic # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 20000..2A6D6 ; Ideographic # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
2A700..2B734 ; Ideographic # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 2A700..2B734 ; Ideographic # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
2B740..2B81D ; Ideographic # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B740..2B81D ; Ideographic # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
2B820..2CEA1 ; Ideographic # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
2F800..2FA1D ; Ideographic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D 2F800..2FA1D ; Ideographic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
# Total code points: 75633 # Total code points: 81404
# ================================================ # ================================================
@ -773,7 +782,7 @@ FA70..FAD9 ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COM
07EB..07F3 ; Diacritic # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE 07EB..07F3 ; Diacritic # Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
07F4..07F5 ; Diacritic # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE 07F4..07F5 ; Diacritic # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
0818..0819 ; Diacritic # Mn [2] SAMARITAN MARK OCCLUSION..SAMARITAN MARK DAGESH 0818..0819 ; Diacritic # Mn [2] SAMARITAN MARK OCCLUSION..SAMARITAN MARK DAGESH
08E4..08FE ; Diacritic # Mn [27] ARABIC CURLY FATHA..ARABIC DAMMA WITH DOT 08E3..08FE ; Diacritic # Mn [28] ARABIC TURNED DAMMA BELOW..ARABIC DAMMA WITH DOT
093C ; Diacritic # Mn DEVANAGARI SIGN NUKTA 093C ; Diacritic # Mn DEVANAGARI SIGN NUKTA
094D ; Diacritic # Mn DEVANAGARI SIGN VIRAMA 094D ; Diacritic # Mn DEVANAGARI SIGN VIRAMA
0951..0954 ; Diacritic # Mn [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT 0951..0954 ; Diacritic # Mn [4] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI ACUTE ACCENT
@ -877,7 +886,7 @@ AB5C..AB5F ; Diacritic # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER
ABEC ; Diacritic # Mc MEETEI MAYEK LUM IYEK ABEC ; Diacritic # Mc MEETEI MAYEK LUM IYEK
ABED ; Diacritic # Mn MEETEI MAYEK APUN IYEK ABED ; Diacritic # Mn MEETEI MAYEK APUN IYEK
FB1E ; Diacritic # Mn HEBREW POINT JUDEO-SPANISH VARIKA FB1E ; Diacritic # Mn HEBREW POINT JUDEO-SPANISH VARIKA
FE20..FE2D ; Diacritic # Mn [14] COMBINING LIGATURE LEFT HALF..COMBINING CONJOINING MACRON BELOW FE20..FE2F ; Diacritic # Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF
FF3E ; Diacritic # Sk FULLWIDTH CIRCUMFLEX ACCENT FF3E ; Diacritic # Sk FULLWIDTH CIRCUMFLEX ACCENT
FF40 ; Diacritic # Sk FULLWIDTH GRAVE ACCENT FF40 ; Diacritic # Sk FULLWIDTH GRAVE ACCENT
FF70 ; Diacritic # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK FF70 ; Diacritic # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
@ -889,6 +898,7 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON
11133..11134 ; Diacritic # Mn [2] CHAKMA VIRAMA..CHAKMA MAAYYAA 11133..11134 ; Diacritic # Mn [2] CHAKMA VIRAMA..CHAKMA MAAYYAA
11173 ; Diacritic # Mn MAHAJANI SIGN NUKTA 11173 ; Diacritic # Mn MAHAJANI SIGN NUKTA
111C0 ; Diacritic # Mc SHARADA SIGN VIRAMA 111C0 ; Diacritic # Mc SHARADA SIGN VIRAMA
111CA..111CC ; Diacritic # Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK
11235 ; Diacritic # Mc KHOJKI SIGN VIRAMA 11235 ; Diacritic # Mc KHOJKI SIGN VIRAMA
11236 ; Diacritic # Mn KHOJKI SIGN NUKTA 11236 ; Diacritic # Mn KHOJKI SIGN NUKTA
112E9..112EA ; Diacritic # Mn [2] KHUDAWADI SIGN NUKTA..KHUDAWADI SIGN VIRAMA 112E9..112EA ; Diacritic # Mn [2] KHUDAWADI SIGN NUKTA..KHUDAWADI SIGN VIRAMA
@ -901,6 +911,7 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON
1163F ; Diacritic # Mn MODI SIGN VIRAMA 1163F ; Diacritic # Mn MODI SIGN VIRAMA
116B6 ; Diacritic # Mc TAKRI SIGN VIRAMA 116B6 ; Diacritic # Mc TAKRI SIGN VIRAMA
116B7 ; Diacritic # Mn TAKRI SIGN NUKTA 116B7 ; Diacritic # Mn TAKRI SIGN NUKTA
1172B ; Diacritic # Mn AHOM SIGN KILLER
16AF0..16AF4 ; Diacritic # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE 16AF0..16AF4 ; Diacritic # Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
16F8F..16F92 ; Diacritic # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW 16F8F..16F92 ; Diacritic # Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW
16F93..16F9F ; Diacritic # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8 16F93..16F9F ; Diacritic # Lm [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
@ -911,7 +922,7 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON
1D1AA..1D1AD ; Diacritic # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO 1D1AA..1D1AD ; Diacritic # Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
1E8D0..1E8D6 ; Diacritic # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS 1E8D0..1E8D6 ; Diacritic # Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
# Total code points: 766 # Total code points: 773
# ================================================ # ================================================
@ -1053,7 +1064,7 @@ FF9E..FF9F ; Other_Grapheme_Extend # Lm [2] HALFWIDTH KATAKANA VOICED SOUND
# ================================================ # ================================================
3400..4DB5 ; Unified_Ideograph # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 3400..4DB5 ; Unified_Ideograph # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
4E00..9FCC ; Unified_Ideograph # Lo [20941] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FCC 4E00..9FD5 ; Unified_Ideograph # Lo [20950] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FD5
FA0E..FA0F ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA0E..CJK COMPATIBILITY IDEOGRAPH-FA0F FA0E..FA0F ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA0E..CJK COMPATIBILITY IDEOGRAPH-FA0F
FA11 ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA11 FA11 ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA11
FA13..FA14 ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA13..CJK COMPATIBILITY IDEOGRAPH-FA14 FA13..FA14 ; Unified_Ideograph # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA13..CJK COMPATIBILITY IDEOGRAPH-FA14
@ -1064,8 +1075,9 @@ FA27..FA29 ; Unified_Ideograph # Lo [3] CJK COMPATIBILITY IDEOGRAPH-FA27..C
20000..2A6D6 ; Unified_Ideograph # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 20000..2A6D6 ; Unified_Ideograph # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
2A700..2B734 ; Unified_Ideograph # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 2A700..2B734 ; Unified_Ideograph # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
2B740..2B81D ; Unified_Ideograph # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B740..2B81D ; Unified_Ideograph # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
2B820..2CEA1 ; Unified_Ideograph # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
# Total code points: 74617 # Total code points: 80388
# ================================================ # ================================================
@ -1094,9 +1106,9 @@ E01F0..E0FFF ; Other_Default_Ignorable_Code_Point # Cn [3600] <reserved-E01F0>.
2329 ; Deprecated # Ps LEFT-POINTING ANGLE BRACKET 2329 ; Deprecated # Ps LEFT-POINTING ANGLE BRACKET
232A ; Deprecated # Pe RIGHT-POINTING ANGLE BRACKET 232A ; Deprecated # Pe RIGHT-POINTING ANGLE BRACKET
E0001 ; Deprecated # Cf LANGUAGE TAG E0001 ; Deprecated # Cf LANGUAGE TAG
E0020..E007F ; Deprecated # Cf [96] TAG SPACE..CANCEL TAG E007F ; Deprecated # Cf CANCEL TAG
# Total code points: 111 # Total code points: 16
# ================================================ # ================================================
@ -1138,11 +1150,13 @@ E0020..E007F ; Deprecated # Cf [96] TAG SPACE..CANCEL TAG
0E40..0E44 ; Logical_Order_Exception # Lo [5] THAI CHARACTER SARA E..THAI CHARACTER SARA AI MAIMALAI 0E40..0E44 ; Logical_Order_Exception # Lo [5] THAI CHARACTER SARA E..THAI CHARACTER SARA AI MAIMALAI
0EC0..0EC4 ; Logical_Order_Exception # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI 0EC0..0EC4 ; Logical_Order_Exception # Lo [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
19B5..19B7 ; Logical_Order_Exception # Lo [3] NEW TAI LUE VOWEL SIGN E..NEW TAI LUE VOWEL SIGN O
19BA ; Logical_Order_Exception # Lo NEW TAI LUE VOWEL SIGN AY
AAB5..AAB6 ; Logical_Order_Exception # Lo [2] TAI VIET VOWEL E..TAI VIET VOWEL O AAB5..AAB6 ; Logical_Order_Exception # Lo [2] TAI VIET VOWEL E..TAI VIET VOWEL O
AAB9 ; Logical_Order_Exception # Lo TAI VIET VOWEL UEA AAB9 ; Logical_Order_Exception # Lo TAI VIET VOWEL UEA
AABB..AABC ; Logical_Order_Exception # Lo [2] TAI VIET VOWEL AUE..TAI VIET VOWEL AY AABB..AABC ; Logical_Order_Exception # Lo [2] TAI VIET VOWEL AUE..TAI VIET VOWEL AY
# Total code points: 15 # Total code points: 19
# ================================================ # ================================================
@ -1213,18 +1227,22 @@ FF61 ; STerm # Po HALFWIDTH IDEOGRAPHIC FULL STOP
11141..11143 ; STerm # Po [3] CHAKMA DANDA..CHAKMA QUESTION MARK 11141..11143 ; STerm # Po [3] CHAKMA DANDA..CHAKMA QUESTION MARK
111C5..111C6 ; STerm # Po [2] SHARADA DANDA..SHARADA DOUBLE DANDA 111C5..111C6 ; STerm # Po [2] SHARADA DANDA..SHARADA DOUBLE DANDA
111CD ; STerm # Po SHARADA SUTRA MARK 111CD ; STerm # Po SHARADA SUTRA MARK
111DE..111DF ; STerm # Po [2] SHARADA SECTION MARK-1..SHARADA SECTION MARK-2
11238..11239 ; STerm # Po [2] KHOJKI DANDA..KHOJKI DOUBLE DANDA 11238..11239 ; STerm # Po [2] KHOJKI DANDA..KHOJKI DOUBLE DANDA
1123B..1123C ; STerm # Po [2] KHOJKI SECTION MARK..KHOJKI DOUBLE SECTION MARK 1123B..1123C ; STerm # Po [2] KHOJKI SECTION MARK..KHOJKI DOUBLE SECTION MARK
112A9 ; STerm # Po MULTANI SECTION MARK
115C2..115C3 ; STerm # Po [2] SIDDHAM DANDA..SIDDHAM DOUBLE DANDA 115C2..115C3 ; STerm # Po [2] SIDDHAM DANDA..SIDDHAM DOUBLE DANDA
115C9 ; STerm # Po SIDDHAM END OF TEXT MARK 115C9..115D7 ; STerm # Po [15] SIDDHAM END OF TEXT MARK..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES
11641..11642 ; STerm # Po [2] MODI DANDA..MODI DOUBLE DANDA 11641..11642 ; STerm # Po [2] MODI DANDA..MODI DOUBLE DANDA
1173C..1173E ; STerm # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI
16A6E..16A6F ; STerm # Po [2] MRO DANDA..MRO DOUBLE DANDA 16A6E..16A6F ; STerm # Po [2] MRO DANDA..MRO DOUBLE DANDA
16AF5 ; STerm # Po BASSA VAH FULL STOP 16AF5 ; STerm # Po BASSA VAH FULL STOP
16B37..16B38 ; STerm # Po [2] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS TSHAB CEEB 16B37..16B38 ; STerm # Po [2] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS TSHAB CEEB
16B44 ; STerm # Po PAHAWH HMONG SIGN XAUS 16B44 ; STerm # Po PAHAWH HMONG SIGN XAUS
1BC9F ; STerm # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP 1BC9F ; STerm # Po DUPLOYAN PUNCTUATION CHINOOK FULL STOP
1DA88 ; STerm # Po SIGNWRITING FULL STOP
# Total code points: 99 # Total code points: 120
# ================================================ # ================================================
@ -1432,7 +1450,9 @@ E0100..E01EF ; Variation_Selector # Mn [240] VARIATION SELECTOR-17..VARIATION S
2BBD..2BC8 ; Pattern_Syntax # So [12] BALLOT BOX WITH LIGHT X..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED 2BBD..2BC8 ; Pattern_Syntax # So [12] BALLOT BOX WITH LIGHT X..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED
2BC9 ; Pattern_Syntax # Cn <reserved-2BC9> 2BC9 ; Pattern_Syntax # Cn <reserved-2BC9>
2BCA..2BD1 ; Pattern_Syntax # So [8] TOP HALF BLACK CIRCLE..UNCERTAINTY SIGN 2BCA..2BD1 ; Pattern_Syntax # So [8] TOP HALF BLACK CIRCLE..UNCERTAINTY SIGN
2BD2..2BFF ; Pattern_Syntax # Cn [46] <reserved-2BD2>..<reserved-2BFF> 2BD2..2BEB ; Pattern_Syntax # Cn [26] <reserved-2BD2>..<reserved-2BEB>
2BEC..2BEF ; Pattern_Syntax # So [4] LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS..DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS
2BF0..2BFF ; Pattern_Syntax # Cn [16] <reserved-2BF0>..<reserved-2BFF>
2E00..2E01 ; Pattern_Syntax # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER 2E00..2E01 ; Pattern_Syntax # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER
2E02 ; Pattern_Syntax # Pi LEFT SUBSTITUTION BRACKET 2E02 ; Pattern_Syntax # Pi LEFT SUBSTITUTION BRACKET
2E03 ; Pattern_Syntax # Pf RIGHT SUBSTITUTION BRACKET 2E03 ; Pattern_Syntax # Pf RIGHT SUBSTITUTION BRACKET

View File

@ -1,10 +1,16 @@
# Scripts-7.0.0.txt # Scripts-8.0.0.txt
# Date: 2014-05-15, 00:11:35 GMT [MD] # Date: 2015-03-11, 22:29:42 GMT [MD]
# #
# Unicode Character Database # Unicode Character Database
# Copyright (c) 1991-2014 Unicode, Inc. # Copyright (c) 1991-2015 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html # For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/ # For documentation, see http://www.unicode.org/reports/tr44/
# For more information, see:
# UAX #24, Unicode Script Property: http://www.unicode.org/reports/tr24/
# Especially the sections:
# http://www.unicode.org/reports/tr24/#Assignment_Script_Values
# http://www.unicode.org/reports/tr24/#Assignment_ScriptX_Values
#
# ================================================ # ================================================
@ -89,7 +95,6 @@
061C ; Common # Cf ARABIC LETTER MARK 061C ; Common # Cf ARABIC LETTER MARK
061F ; Common # Po ARABIC QUESTION MARK 061F ; Common # Po ARABIC QUESTION MARK
0640 ; Common # Lm ARABIC TATWEEL 0640 ; Common # Lm ARABIC TATWEEL
0660..0669 ; Common # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
06DD ; Common # Cf ARABIC END OF AYAH 06DD ; Common # Cf ARABIC END OF AYAH
0964..0965 ; Common # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA 0964..0965 ; Common # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
0E3F ; Common # Sc THAI CURRENCY SYMBOL BAHT 0E3F ; Common # Sc THAI CURRENCY SYMBOL BAHT
@ -148,7 +153,7 @@
208A..208C ; Common # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN 208A..208C ; Common # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
208D ; Common # Ps SUBSCRIPT LEFT PARENTHESIS 208D ; Common # Ps SUBSCRIPT LEFT PARENTHESIS
208E ; Common # Pe SUBSCRIPT RIGHT PARENTHESIS 208E ; Common # Pe SUBSCRIPT RIGHT PARENTHESIS
20A0..20BD ; Common # Sc [30] EURO-CURRENCY SIGN..RUBLE SIGN 20A0..20BE ; Common # Sc [31] EURO-CURRENCY SIGN..LARI SIGN
2100..2101 ; Common # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT 2100..2101 ; Common # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
2102 ; Common # L& DOUBLE-STRUCK CAPITAL C 2102 ; Common # L& DOUBLE-STRUCK CAPITAL C
2103..2106 ; Common # So [4] DEGREE CELSIUS..CADA UNA 2103..2106 ; Common # So [4] DEGREE CELSIUS..CADA UNA
@ -182,6 +187,7 @@
214F ; Common # So SYMBOL FOR SAMARITAN SOURCE 214F ; Common # So SYMBOL FOR SAMARITAN SOURCE
2150..215F ; Common # No [16] VULGAR FRACTION ONE SEVENTH..FRACTION NUMERATOR ONE 2150..215F ; Common # No [16] VULGAR FRACTION ONE SEVENTH..FRACTION NUMERATOR ONE
2189 ; Common # No VULGAR FRACTION ZERO THIRDS 2189 ; Common # No VULGAR FRACTION ZERO THIRDS
218A..218B ; Common # So [2] TURNED DIGIT TWO..TURNED DIGIT THREE
2190..2194 ; Common # Sm [5] LEFTWARDS ARROW..LEFT RIGHT ARROW 2190..2194 ; Common # Sm [5] LEFTWARDS ARROW..LEFT RIGHT ARROW
2195..2199 ; Common # So [5] UP DOWN ARROW..SOUTH WEST ARROW 2195..2199 ; Common # So [5] UP DOWN ARROW..SOUTH WEST ARROW
219A..219B ; Common # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE 219A..219B ; Common # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
@ -304,6 +310,7 @@
2B98..2BB9 ; Common # So [34] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..UP ARROWHEAD IN A RECTANGLE BOX 2B98..2BB9 ; Common # So [34] THREE-D TOP-LIGHTED LEFTWARDS EQUILATERAL ARROWHEAD..UP ARROWHEAD IN A RECTANGLE BOX
2BBD..2BC8 ; Common # So [12] BALLOT BOX WITH LIGHT X..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED 2BBD..2BC8 ; Common # So [12] BALLOT BOX WITH LIGHT X..BLACK MEDIUM RIGHT-POINTING TRIANGLE CENTRED
2BCA..2BD1 ; Common # So [8] TOP HALF BLACK CIRCLE..UNCERTAINTY SIGN 2BCA..2BD1 ; Common # So [8] TOP HALF BLACK CIRCLE..UNCERTAINTY SIGN
2BEC..2BEF ; Common # So [4] LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS..DOWNWARDS TWO-HEADED ARROW WITH TRIANGLE ARROWHEADS
2E00..2E01 ; Common # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER 2E00..2E01 ; Common # Po [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER
2E02 ; Common # Pi LEFT SUBSTITUTION BRACKET 2E02 ; Common # Pi LEFT SUBSTITUTION BRACKET
2E03 ; Common # Pf RIGHT SUBSTITUTION BRACKET 2E03 ; Common # Pf RIGHT SUBSTITUTION BRACKET
@ -512,7 +519,7 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR
1D173..1D17A ; Common # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE 1D173..1D17A ; Common # Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
1D183..1D184 ; Common # So [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN 1D183..1D184 ; Common # So [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN
1D18C..1D1A9 ; Common # So [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH 1D18C..1D1A9 ; Common # So [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH
1D1AE..1D1DD ; Common # So [48] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL PES SUBPUNCTIS 1D1AE..1D1E8 ; Common # So [59] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KIEVAN FLAT SIGN
1D300..1D356 ; Common # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING 1D300..1D356 ; Common # So [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
1D360..1D371 ; Common # No [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE 1D360..1D371 ; Common # No [18] COUNTING ROD UNIT DIGIT ONE..COUNTING ROD TENS DIGIT NINE
1D400..1D454 ; Common # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G 1D400..1D454 ; Common # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
@ -571,16 +578,11 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR
1F210..1F23A ; Common # So [43] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-55B6 1F210..1F23A ; Common # So [43] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-55B6
1F240..1F248 ; Common # So [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557 1F240..1F248 ; Common # So [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
1F250..1F251 ; Common # So [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT 1F250..1F251 ; Common # So [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
1F300..1F32C ; Common # So [45] CYCLONE..WIND BLOWING FACE 1F300..1F3FA ; Common # So [251] CYCLONE..AMPHORA
1F330..1F37D ; Common # So [78] CHESTNUT..FORK AND KNIFE WITH PLATE 1F3FB..1F3FF ; Common # Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
1F380..1F3CE ; Common # So [79] RIBBON..RACING CAR 1F400..1F579 ; Common # So [378] RAT..JOYSTICK
1F3D4..1F3F7 ; Common # So [36] SNOW CAPPED MOUNTAIN..LABEL
1F400..1F4FE ; Common # So [255] RAT..PORTABLE STEREO
1F500..1F54A ; Common # So [75] TWISTED RIGHTWARDS ARROWS..DOVE OF PEACE
1F550..1F579 ; Common # So [42] CLOCK FACE ONE OCLOCK..JOYSTICK
1F57B..1F5A3 ; Common # So [41] LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX 1F57B..1F5A3 ; Common # So [41] LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX
1F5A5..1F642 ; Common # So [158] DESKTOP COMPUTER..SLIGHTLY SMILING FACE 1F5A5..1F6D0 ; Common # So [300] DESKTOP COMPUTER..PLACE OF WORSHIP
1F645..1F6CF ; Common # So [139] FACE WITH NO GOOD GESTURE..BED
1F6E0..1F6EC ; Common # So [13] HAMMER AND WRENCH..AIRPLANE ARRIVING 1F6E0..1F6EC ; Common # So [13] HAMMER AND WRENCH..AIRPLANE ARRIVING
1F6F0..1F6F3 ; Common # So [4] SATELLITE..PASSENGER SHIP 1F6F0..1F6F3 ; Common # So [4] SATELLITE..PASSENGER SHIP
1F700..1F773 ; Common # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE 1F700..1F773 ; Common # So [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE
@ -590,10 +592,13 @@ FFFC..FFFD ; Common # So [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHAR
1F850..1F859 ; Common # So [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW 1F850..1F859 ; Common # So [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
1F860..1F887 ; Common # So [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW 1F860..1F887 ; Common # So [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
1F890..1F8AD ; Common # So [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS 1F890..1F8AD ; Common # So [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
1F910..1F918 ; Common # So [9] ZIPPER-MOUTH FACE..SIGN OF THE HORNS
1F980..1F984 ; Common # So [5] CRAB..UNICORN FACE
1F9C0 ; Common # So CHEESE WEDGE
E0001 ; Common # Cf LANGUAGE TAG E0001 ; Common # Cf LANGUAGE TAG
E0020..E007F ; Common # Cf [96] TAG SPACE..CANCEL TAG E0020..E007F ; Common # Cf [96] TAG SPACE..CANCEL TAG
# Total code points: 7129 # Total code points: 7179
# ================================================ # ================================================
@ -635,20 +640,21 @@ A722..A76F ; Latin # L& [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN
A770 ; Latin # Lm MODIFIER LETTER US A770 ; Latin # Lm MODIFIER LETTER US
A771..A787 ; Latin # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T A771..A787 ; Latin # L& [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T
A78B..A78E ; Latin # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT A78B..A78E ; Latin # L& [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
A78F ; Latin # Lo LATIN LETTER SINOLOGICAL DOT
A790..A7AD ; Latin # L& [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT A790..A7AD ; Latin # L& [30] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN CAPITAL LETTER L WITH BELT
A7B0..A7B1 ; Latin # L& [2] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER TURNED T A7B0..A7B7 ; Latin # L& [8] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER OMEGA
A7F7 ; Latin # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I A7F7 ; Latin # Lo LATIN EPIGRAPHIC LETTER SIDEWAYS I
A7F8..A7F9 ; Latin # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE A7F8..A7F9 ; Latin # Lm [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
A7FA ; Latin # L& LATIN LETTER SMALL CAPITAL TURNED M A7FA ; Latin # L& LATIN LETTER SMALL CAPITAL TURNED M
A7FB..A7FF ; Latin # Lo [5] LATIN EPIGRAPHIC LETTER REVERSED F..LATIN EPIGRAPHIC LETTER ARCHAIC M A7FB..A7FF ; Latin # Lo [5] LATIN EPIGRAPHIC LETTER REVERSED F..LATIN EPIGRAPHIC LETTER ARCHAIC M
AB30..AB5A ; Latin # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG AB30..AB5A ; Latin # L& [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG
AB5C..AB5F ; Latin # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK AB5C..AB5F ; Latin # Lm [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
AB64 ; Latin # L& LATIN SMALL LETTER INVERTED ALPHA AB60..AB64 ; Latin # L& [5] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER INVERTED ALPHA
FB00..FB06 ; Latin # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST FB00..FB06 ; Latin # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
FF21..FF3A ; Latin # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z FF21..FF3A ; Latin # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
FF41..FF5A ; Latin # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z FF41..FF5A ; Latin # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
# Total code points: 1338 # Total code points: 1349
# ================================================ # ================================================
@ -731,9 +737,10 @@ A67E ; Cyrillic # Po CYRILLIC KAVYKA
A67F ; Cyrillic # Lm CYRILLIC PAYEROK A67F ; Cyrillic # Lm CYRILLIC PAYEROK
A680..A69B ; Cyrillic # L& [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O A680..A69B ; Cyrillic # L& [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O
A69C..A69D ; Cyrillic # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN A69C..A69D ; Cyrillic # Lm [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN
A69F ; Cyrillic # Mn COMBINING CYRILLIC LETTER IOTIFIED E A69E..A69F ; Cyrillic # Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E
FE2E..FE2F ; Cyrillic # Mn [2] COMBINING CYRILLIC TITLO LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF
# Total code points: 431 # Total code points: 434
# ================================================ # ================================================
@ -788,6 +795,7 @@ FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATU
0620..063F ; Arabic # Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE 0620..063F ; Arabic # Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
0641..064A ; Arabic # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH 0641..064A ; Arabic # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH
0656..065F ; Arabic # Mn [10] ARABIC SUBSCRIPT ALEF..ARABIC WAVY HAMZA BELOW 0656..065F ; Arabic # Mn [10] ARABIC SUBSCRIPT ALEF..ARABIC WAVY HAMZA BELOW
0660..0669 ; Arabic # Nd [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
066A..066D ; Arabic # Po [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR 066A..066D ; Arabic # Po [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR
066E..066F ; Arabic # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF 066E..066F ; Arabic # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
0671..06D3 ; Arabic # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE 0671..06D3 ; Arabic # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
@ -806,8 +814,8 @@ FB46..FB4F ; Hebrew # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATU
06FD..06FE ; Arabic # So [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN 06FD..06FE ; Arabic # So [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN
06FF ; Arabic # Lo ARABIC LETTER HEH WITH INVERTED V 06FF ; Arabic # Lo ARABIC LETTER HEH WITH INVERTED V
0750..077F ; Arabic # Lo [48] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS ABOVE 0750..077F ; Arabic # Lo [48] ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW..ARABIC LETTER KAF WITH TWO DOTS ABOVE
08A0..08B2 ; Arabic # Lo [19] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER ZAIN WITH INVERTED V ABOVE 08A0..08B4 ; Arabic # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
08E4..08FF ; Arabic # Mn [28] ARABIC CURLY FATHA..ARABIC MARK SIDEWAYS NOON GHUNNA 08E3..08FF ; Arabic # Mn [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA
FB50..FBB1 ; Arabic # Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM FB50..FBB1 ; Arabic # Lo [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
FBB2..FBC1 ; Arabic # Sk [16] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW FBB2..FBC1 ; Arabic # Sk [16] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW
FBD3..FD3D ; Arabic # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM FBD3..FD3D ; Arabic # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
@ -854,7 +862,7 @@ FE76..FEFC ; Arabic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LA
1EEAB..1EEBB ; Arabic # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN 1EEAB..1EEBB ; Arabic # Lo [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
1EEF0..1EEF1 ; Arabic # Sm [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL 1EEF0..1EEF1 ; Arabic # Sm [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL
# Total code points: 1244 # Total code points: 1257
# ================================================ # ================================================
@ -902,8 +910,10 @@ A8E0..A8F1 ; Devanagari # Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING
A8F2..A8F7 ; Devanagari # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA A8F2..A8F7 ; Devanagari # Lo [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA
A8F8..A8FA ; Devanagari # Po [3] DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET A8F8..A8FA ; Devanagari # Po [3] DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET
A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE
A8FC ; Devanagari # Po DEVANAGARI SIGN SIDDHAM
A8FD ; Devanagari # Lo DEVANAGARI JAIN OM
# Total code points: 152 # Total code points: 154
# ================================================ # ================================================
@ -987,8 +997,9 @@ A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE
0AE6..0AEF ; Gujarati # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE 0AE6..0AEF ; Gujarati # Nd [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
0AF0 ; Gujarati # Po GUJARATI ABBREVIATION SIGN 0AF0 ; Gujarati # Po GUJARATI ABBREVIATION SIGN
0AF1 ; Gujarati # Sc GUJARATI RUPEE SIGN 0AF1 ; Gujarati # Sc GUJARATI RUPEE SIGN
0AF9 ; Gujarati # Lo GUJARATI LETTER ZHA
# Total code points: 84 # Total code points: 85
# ================================================ # ================================================
@ -1064,14 +1075,14 @@ A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE
0C46..0C48 ; Telugu # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI 0C46..0C48 ; Telugu # Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
0C4A..0C4D ; Telugu # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA 0C4A..0C4D ; Telugu # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
0C55..0C56 ; Telugu # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK 0C55..0C56 ; Telugu # Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
0C58..0C59 ; Telugu # Lo [2] TELUGU LETTER TSA..TELUGU LETTER DZA 0C58..0C5A ; Telugu # Lo [3] TELUGU LETTER TSA..TELUGU LETTER RRRA
0C60..0C61 ; Telugu # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL 0C60..0C61 ; Telugu # Lo [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
0C62..0C63 ; Telugu # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL 0C62..0C63 ; Telugu # Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
0C66..0C6F ; Telugu # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE 0C66..0C6F ; Telugu # Nd [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
0C78..0C7E ; Telugu # No [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR 0C78..0C7E ; Telugu # No [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
0C7F ; Telugu # So TELUGU SIGN TUUMU 0C7F ; Telugu # So TELUGU SIGN TUUMU
# Total code points: 95 # Total code points: 96
# ================================================ # ================================================
@ -1115,14 +1126,14 @@ A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE
0D4D ; Malayalam # Mn MALAYALAM SIGN VIRAMA 0D4D ; Malayalam # Mn MALAYALAM SIGN VIRAMA
0D4E ; Malayalam # Lo MALAYALAM LETTER DOT REPH 0D4E ; Malayalam # Lo MALAYALAM LETTER DOT REPH
0D57 ; Malayalam # Mc MALAYALAM AU LENGTH MARK 0D57 ; Malayalam # Mc MALAYALAM AU LENGTH MARK
0D60..0D61 ; Malayalam # Lo [2] MALAYALAM LETTER VOCALIC RR..MALAYALAM LETTER VOCALIC LL 0D5F..0D61 ; Malayalam # Lo [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
0D62..0D63 ; Malayalam # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL 0D62..0D63 ; Malayalam # Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
0D66..0D6F ; Malayalam # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE 0D66..0D6F ; Malayalam # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
0D70..0D75 ; Malayalam # No [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS 0D70..0D75 ; Malayalam # No [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS
0D79 ; Malayalam # So MALAYALAM DATE MARK 0D79 ; Malayalam # So MALAYALAM DATE MARK
0D7A..0D7F ; Malayalam # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K 0D7A..0D7F ; Malayalam # Lo [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
# Total code points: 99 # Total code points: 100
# ================================================ # ================================================
@ -1358,9 +1369,11 @@ AB28..AB2E ; Ethiopic # Lo [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO
# ================================================ # ================================================
13A0..13F4 ; Cherokee # Lo [85] CHEROKEE LETTER A..CHEROKEE LETTER YV 13A0..13F5 ; Cherokee # L& [86] CHEROKEE LETTER A..CHEROKEE LETTER MV
13F8..13FD ; Cherokee # L& [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
AB70..ABBF ; Cherokee # L& [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
# Total code points: 85 # Total code points: 172
# ================================================ # ================================================
@ -1472,15 +1485,16 @@ FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAK
3038..303A ; Han # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY 3038..303A ; Han # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
303B ; Han # Lm VERTICAL IDEOGRAPHIC ITERATION MARK 303B ; Han # Lm VERTICAL IDEOGRAPHIC ITERATION MARK
3400..4DB5 ; Han # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5 3400..4DB5 ; Han # Lo [6582] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DB5
4E00..9FCC ; Han # Lo [20941] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FCC 4E00..9FD5 ; Han # Lo [20950] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FD5
F900..FA6D ; Han # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D F900..FA6D ; Han # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
FA70..FAD9 ; Han # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9 FA70..FAD9 ; Han # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
20000..2A6D6 ; Han # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6 20000..2A6D6 ; Han # Lo [42711] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6D6
2A700..2B734 ; Han # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734 2A700..2B734 ; Han # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
2B740..2B81D ; Han # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D 2B740..2B81D ; Han # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
2B820..2CEA1 ; Han # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
2F800..2FA1D ; Han # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D 2F800..2FA1D ; Han # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
# Total code points: 75963 # Total code points: 81734
# ================================================ # ================================================
@ -1680,9 +1694,7 @@ E0100..E01EF ; Inherited # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-2
# ================================================ # ================================================
1980..19AB ; New_Tai_Lue # Lo [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA 1980..19AB ; New_Tai_Lue # Lo [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA
19B0..19C0 ; New_Tai_Lue # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY 19B0..19C9 ; New_Tai_Lue # Lo [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2
19C1..19C7 ; New_Tai_Lue # Lo [7] NEW TAI LUE LETTER FINAL V..NEW TAI LUE LETTER FINAL B
19C8..19C9 ; New_Tai_Lue # Mc [2] NEW TAI LUE TONE MARK-1..NEW TAI LUE TONE MARK-2
19D0..19D9 ; New_Tai_Lue # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE 19D0..19D9 ; New_Tai_Lue # Nd [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
19DA ; New_Tai_Lue # No NEW TAI LUE THAM DIGIT ONE 19DA ; New_Tai_Lue # No NEW TAI LUE THAM DIGIT ONE
19DE..19DF ; New_Tai_Lue # So [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV 19DE..19DF ; New_Tai_Lue # So [2] NEW TAI LUE SIGN LAE..NEW TAI LUE SIGN LAEV
@ -1770,11 +1782,12 @@ A828..A82B ; Syloti_Nagri # So [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI
# ================================================ # ================================================
12000..12398 ; Cuneiform # Lo [921] CUNEIFORM SIGN A..CUNEIFORM SIGN UM TIMES ME 12000..12399 ; Cuneiform # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
12400..1246E ; Cuneiform # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM 12400..1246E ; Cuneiform # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
12470..12474 ; Cuneiform # Po [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON 12470..12474 ; Cuneiform # Po [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
12480..12543 ; Cuneiform # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
# Total code points: 1037 # Total code points: 1234
# ================================================ # ================================================
@ -2151,9 +2164,12 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
# ================================================ # ================================================
109A0..109B7 ; Meroitic_Cursive # Lo [24] MEROITIC CURSIVE LETTER A..MEROITIC CURSIVE LETTER DA 109A0..109B7 ; Meroitic_Cursive # Lo [24] MEROITIC CURSIVE LETTER A..MEROITIC CURSIVE LETTER DA
109BC..109BD ; Meroitic_Cursive # No [2] MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS..MEROITIC CURSIVE FRACTION ONE HALF
109BE..109BF ; Meroitic_Cursive # Lo [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN 109BE..109BF ; Meroitic_Cursive # Lo [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN
109C0..109CF ; Meroitic_Cursive # No [16] MEROITIC CURSIVE NUMBER ONE..MEROITIC CURSIVE NUMBER SEVENTY
109D2..109FF ; Meroitic_Cursive # No [46] MEROITIC CURSIVE NUMBER ONE HUNDRED..MEROITIC CURSIVE FRACTION TEN TWELFTHS
# Total code points: 26 # Total code points: 90
# ================================================ # ================================================
@ -2180,12 +2196,16 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
111B6..111BE ; Sharada # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O 111B6..111BE ; Sharada # Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O
111BF..111C0 ; Sharada # Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA 111BF..111C0 ; Sharada # Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA
111C1..111C4 ; Sharada # Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM 111C1..111C4 ; Sharada # Lo [4] SHARADA SIGN AVAGRAHA..SHARADA OM
111C5..111C8 ; Sharada # Po [4] SHARADA DANDA..SHARADA SEPARATOR 111C5..111C9 ; Sharada # Po [5] SHARADA DANDA..SHARADA SANDHI MARK
111CA..111CC ; Sharada # Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK
111CD ; Sharada # Po SHARADA SUTRA MARK 111CD ; Sharada # Po SHARADA SUTRA MARK
111D0..111D9 ; Sharada # Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE 111D0..111D9 ; Sharada # Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE
111DA ; Sharada # Lo SHARADA EKAM 111DA ; Sharada # Lo SHARADA EKAM
111DB ; Sharada # Po SHARADA SIGN SIDDHAM
111DC ; Sharada # Lo SHARADA HEADSTROKE
111DD..111DF ; Sharada # Po [3] SHARADA CONTINUATION SIGN..SHARADA SECTION MARK-2
# Total code points: 85 # Total code points: 94
# ================================================ # ================================================
@ -2243,7 +2263,7 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
# ================================================ # ================================================
11301 ; Grantha # Mn GRANTHA SIGN CANDRABINDU 11300..11301 ; Grantha # Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
11302..11303 ; Grantha # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA 11302..11303 ; Grantha # Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA
11305..1130C ; Grantha # Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L 11305..1130C ; Grantha # Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L
1130F..11310 ; Grantha # Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI 1130F..11310 ; Grantha # Lo [2] GRANTHA LETTER EE..GRANTHA LETTER AI
@ -2258,13 +2278,14 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
11341..11344 ; Grantha # Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR 11341..11344 ; Grantha # Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR
11347..11348 ; Grantha # Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI 11347..11348 ; Grantha # Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI
1134B..1134D ; Grantha # Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA 1134B..1134D ; Grantha # Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA
11350 ; Grantha # Lo GRANTHA OM
11357 ; Grantha # Mc GRANTHA AU LENGTH MARK 11357 ; Grantha # Mc GRANTHA AU LENGTH MARK
1135D..11361 ; Grantha # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL 1135D..11361 ; Grantha # Lo [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
11362..11363 ; Grantha # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL 11362..11363 ; Grantha # Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
11366..1136C ; Grantha # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX 11366..1136C ; Grantha # Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
11370..11374 ; Grantha # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA 11370..11374 ; Grantha # Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
# Total code points: 83 # Total code points: 85
# ================================================ # ================================================
@ -2407,9 +2428,11 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
115BC..115BD ; Siddham # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA 115BC..115BD ; Siddham # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA
115BE ; Siddham # Mc SIDDHAM SIGN VISARGA 115BE ; Siddham # Mc SIDDHAM SIGN VISARGA
115BF..115C0 ; Siddham # Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA 115BF..115C0 ; Siddham # Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA
115C1..115C9 ; Siddham # Po [9] SIDDHAM SIGN SIDDHAM..SIDDHAM END OF TEXT MARK 115C1..115D7 ; Siddham # Po [23] SIDDHAM SIGN SIDDHAM..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES
115D8..115DB ; Siddham # Lo [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U
115DC..115DD ; Siddham # Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU
# Total code points: 72 # Total code points: 92
# ================================================ # ================================================
@ -2448,4 +2471,69 @@ ABF0..ABF9 ; Meetei_Mayek # Nd [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DI
# Total code points: 84 # Total code points: 84
# ================================================
11700..11719 ; Ahom # Lo [26] AHOM LETTER KA..AHOM LETTER JHA
1171D..1171F ; Ahom # Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
11720..11721 ; Ahom # Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
11722..11725 ; Ahom # Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
11726 ; Ahom # Mc AHOM VOWEL SIGN E
11727..1172B ; Ahom # Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
11730..11739 ; Ahom # Nd [10] AHOM DIGIT ZERO..AHOM DIGIT NINE
1173A..1173B ; Ahom # No [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY
1173C..1173E ; Ahom # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI
1173F ; Ahom # So AHOM SYMBOL VI
# Total code points: 57
# ================================================
14400..14646 ; Anatolian_Hieroglyphs # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
# Total code points: 583
# ================================================
108E0..108F2 ; Hatran # Lo [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH
108F4..108F5 ; Hatran # Lo [2] HATRAN LETTER SHIN..HATRAN LETTER TAW
108FB..108FF ; Hatran # No [5] HATRAN NUMBER ONE..HATRAN NUMBER ONE HUNDRED
# Total code points: 26
# ================================================
11280..11286 ; Multani # Lo [7] MULTANI LETTER A..MULTANI LETTER GA
11288 ; Multani # Lo MULTANI LETTER GHA
1128A..1128D ; Multani # Lo [4] MULTANI LETTER CA..MULTANI LETTER JJA
1128F..1129D ; Multani # Lo [15] MULTANI LETTER NYA..MULTANI LETTER BA
1129F..112A8 ; Multani # Lo [10] MULTANI LETTER BHA..MULTANI LETTER RHA
112A9 ; Multani # Po MULTANI SECTION MARK
# Total code points: 38
# ================================================
10C80..10CB2 ; Old_Hungarian # L& [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
10CC0..10CF2 ; Old_Hungarian # L& [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
10CFA..10CFF ; Old_Hungarian # No [6] OLD HUNGARIAN NUMBER ONE..OLD HUNGARIAN NUMBER ONE THOUSAND
# Total code points: 108
# ================================================
1D800..1D9FF ; SignWriting # So [512] SIGNWRITING HAND-FIST INDEX..SIGNWRITING HEAD
1DA00..1DA36 ; SignWriting # Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN
1DA37..1DA3A ; SignWriting # So [4] SIGNWRITING AIR BLOW SMALL ROTATIONS..SIGNWRITING BREATH EXHALE
1DA3B..1DA6C ; SignWriting # Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT
1DA6D..1DA74 ; SignWriting # So [8] SIGNWRITING SHOULDER HIP SPINE..SIGNWRITING TORSO-FLOORPLANE TWISTING
1DA75 ; SignWriting # Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS
1DA76..1DA83 ; SignWriting # So [14] SIGNWRITING LIMB COMBINATION..SIGNWRITING LOCATION DEPTH
1DA84 ; SignWriting # Mn SIGNWRITING LOCATION HEAD NECK
1DA85..1DA86 ; SignWriting # So [2] SIGNWRITING LOCATION TORSO..SIGNWRITING LOCATION LIMBS DIGITS
1DA87..1DA8B ; SignWriting # Po [5] SIGNWRITING COMMA..SIGNWRITING PARENTHESIS
1DA9B..1DA9F ; SignWriting # Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
1DAA1..1DAAF ; SignWriting # Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
# Total code points: 672
# EOF # EOF

View File

@ -1,5 +1,5 @@
# SpecialCasing-7.0.0.txt # SpecialCasing-8.0.0.txt
# Date: 2014-03-18, 07:18:02 GMT [MD] # Date: 2014-12-16, 23:08:04 GMT [MD]
# #
# Unicode Character Database # Unicode Character Database
# Copyright (c) 1991-2014 Unicode, Inc. # Copyright (c) 1991-2014 Unicode, Inc.

File diff suppressed because it is too large Load Diff

View File

@ -1 +1 @@
7.0.0 8.0.0

View File

@ -70,7 +70,7 @@ $(GENDATA_JAVA_SECURITY): $(BUILD_TOOLS) $(GENDATA_JAVA_SECURITY_SRC) $(RESTRICT
$(ECHO) "Generating java.security" $(ECHO) "Generating java.security"
$(MKDIR) -p $(@D) $(MKDIR) -p $(@D)
$(TOOL_MAKEJAVASECURITY) $(GENDATA_JAVA_SECURITY_SRC) $@ $(OPENJDK_TARGET_OS) \ $(TOOL_MAKEJAVASECURITY) $(GENDATA_JAVA_SECURITY_SRC) $@ $(OPENJDK_TARGET_OS) \
$(RESTRICTED_PKGS_SRC) || exit 1 $(OPENJDK_TARGET_CPU_ARCH) $(RESTRICTED_PKGS_SRC) || exit 1
TARGETS += $(GENDATA_JAVA_SECURITY) TARGETS += $(GENDATA_JAVA_SECURITY)

View File

@ -41,71 +41,4 @@ $(SUPPORT_OUTPUTDIR)/gensrc/java.desktop/_the.generated_nimbus: $(NIMBUS_SKIN_FI
GENSRC_SWING_NIMBUS := $(SUPPORT_OUTPUTDIR)/gensrc/java.desktop/_the.generated_nimbus GENSRC_SWING_NIMBUS := $(SUPPORT_OUTPUTDIR)/gensrc/java.desktop/_the.generated_nimbus
# GENSRC_JAVA_DESKTOP += $(GENSRC_SWING_NIMBUS)
# Generate beaninfo java files
#
BEANINFO_OUTPUTDIR := $(SUPPORT_OUTPUTDIR)/gensrc_no_docs/java.desktop
DOCLET_DATA_DIR := $(JDK_TOPDIR)/make/data/swingbeaninfo
# javax.swing package
BEANS = AbstractButton Box JComponent JApplet JButton \
JCheckBox JCheckBoxMenuItem JComboBox JColorChooser \
JDesktopPane JDialog JEditorPane JFileChooser JFrame \
JFormattedTextField JInternalFrame JLabel JLayeredPane \
JList JMenu JMenuBar JMenuItem JOptionPane JPanel \
JPasswordField JPopupMenu JProgressBar JRadioButton \
JRadioButtonMenuItem JScrollBar JScrollPane JSeparator \
JSlider JSplitPane JSpinner JTabbedPane JTable \
JTextArea JTextField JTextPane JToggleButton JToolBar \
JTree JWindow
# javax.swing.text package
BEANS_TEXT = JTextComponent
BEANS_SRC = $(BEANS:%=$(JDK_TOPDIR)/src/java.desktop/share/classes/javax/swing/%.java) \
$(BEANS_TEXT:%=$(JDK_TOPDIR)/src/java.desktop/share/classes/javax/swing/text/%.java)
# Dummy variable so far, in the old build system it was false by default
SWINGBEAN_DEBUG_FLAG = false
# GenDocletBeanInfo is compiled in Tools.gmk and picks up from $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes
# LocaleDataMetaInfo needs to be generated before running this to avoid confusing errors
# in the build log.
$(BEANINFO_OUTPUTDIR)/_the.generated_beaninfo: $(BEANS_SRC) \
$(BEANINFO_OUTPUTDIR)/javax/swing/SwingBeanInfoBase.java \
$(BEANINFO_OUTPUTDIR)/sun/swing/BeanInfoUtils.java $(BUILD_TOOLS_JDK)
$(ECHO) Generating beaninfo
$(MKDIR) -p $(BEANINFO_OUTPUTDIR)/javax/swing
$(JAVA) -Djava.awt.headless=true $(NEW_JAVADOC) \
-sourcepath $(call PathList,\
$(wildcard $(JDK_TOPDIR)/src/*/*/classes) \
$(SUPPORT_OUTPUTDIR)/gensrc/java.base) \
-doclet build.tools.swingbeaninfo.GenDocletBeanInfo \
-x $(SWINGBEAN_DEBUG_FLAG) -d $(BEANINFO_OUTPUTDIR)/javax/swing \
-t $(DOCLET_DATA_DIR)/SwingBeanInfo.template \
-docletpath $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
-XDignore.symbol.file=true \
-classpath $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes $(BEANS_SRC) $(LOG_INFO)
# Move the JTextComponent into its proper package directory.
$(MKDIR) -p $(BEANINFO_OUTPUTDIR)/javax/swing/text
$(MV) $(BEANINFO_OUTPUTDIR)/javax/swing/JTextComponentBeanInfo.java \
$(BEANINFO_OUTPUTDIR)/javax/swing/text/JTextComponentBeanInfo.java
$(TOUCH) $@
# This file is the part of dt.jar
# For some reason it is under $(JDK_TOPDIR)/make/data/swingbeaninfo
# Should it be moved under $(JDK_TOPDIR)/src/java.desktop/share/classes/javax/swing instead?
$(BEANINFO_OUTPUTDIR)/javax/swing/SwingBeanInfoBase.java: \
$(DOCLET_DATA_DIR)/javax/swing/SwingBeanInfoBase.java
$(call install-file)
# This file is the part of dt.jar
# For some reason it is under $(JDK_TOPDIR)/make/data/swingbeaninfo
# Should it be moved under $(JDK_TOPDIR)/src/java.desktop/share/classes/sun/swing instead?
$(BEANINFO_OUTPUTDIR)/sun/swing/BeanInfoUtils.java: \
$(DOCLET_DATA_DIR)/sun/swing/BeanInfoUtils.java
$(call install-file)
GENSRC_SWING_BEANINFO = $(BEANINFO_OUTPUTDIR)/_the.generated_beaninfo
GENSRC_JAVA_DESKTOP += $(GENSRC_SWING_BEANINFO) $(GENSRC_SWING_NIMBUS)

View File

@ -0,0 +1,31 @@
#
# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#
include LauncherCommon.gmk
$(eval $(call SetupLauncher,jshell, \
-DEXPAND_CLASSPATH_WILDCARDS \
-DNEVER_ACT_AS_SERVER_CLASS_MACHINE \
-DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "jdk.internal.jshell.tool.JShellTool"$(COMMA) }'))

View File

@ -391,6 +391,8 @@ LIBLCMS_CPPFLAGS += -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \
-I$(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/debug \ -I$(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/debug \
$(LIBJAVA_HEADER_FLAGS) \ $(LIBJAVA_HEADER_FLAGS) \
# #
# The fast floor code loses precision.
LCMS_CFLAGS=-DCMS_DONT_USE_FAST_FLOOR
ifeq ($(USE_EXTERNAL_LCMS), true) ifeq ($(USE_EXTERNAL_LCMS), true)
# If we're using an external library, we'll just need the wrapper part. # If we're using an external library, we'll just need the wrapper part.

View File

@ -50,19 +50,21 @@ public class MakeJavaSecurity {
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
if (args.length < 3) { if (args.length < 4) {
System.err.println("Usage: java MakeJavaSecurity " + System.err.println("Usage: java MakeJavaSecurity " +
"[input java.security file name] " + "[input java.security file name] " +
"[output java.security file name] " + "[output java.security file name] " +
"[openjdk target os] " + "[openjdk target os] " +
"[openjdk target cpu architecture]" +
"[more restricted packages file name?]"); "[more restricted packages file name?]");
System.exit(1);
System.exit(1);
} }
// more restricted packages // more restricted packages
List<String> extraLines; List<String> extraLines;
if (args.length == 4) { if (args.length == 5) {
extraLines = Files.readAllLines(Paths.get(args[3])); extraLines = Files.readAllLines(Paths.get(args[4]));
} else { } else {
extraLines = Collections.emptyList(); extraLines = Collections.emptyList();
} }
@ -96,7 +98,11 @@ public class MakeJavaSecurity {
mode = 0; mode = 0;
iter.remove(); iter.remove();
} else if (line.startsWith("#ifdef ")) { } else if (line.startsWith("#ifdef ")) {
mode = line.endsWith(args[2])?1:2; if (line.indexOf('-') > 0) {
mode = line.endsWith(args[2]+"-"+args[3]) ? 1 : 2;
} else {
mode = line.endsWith(args[2]) ? 1 : 2;
}
iter.remove(); iter.remove();
} else if (line.startsWith("#ifndef ")) { } else if (line.startsWith("#ifndef ")) {
mode = line.endsWith(args[2])?2:1; mode = line.endsWith(args[2])?2:1;

View File

@ -29,3 +29,4 @@ jdk.sctp
jdk.security.auth jdk.security.auth
jdk.security.jgss jdk.security.jgss
jdk.snmp jdk.snmp
jdk.vm.ci

View File

@ -189,6 +189,9 @@ public class ObjectStreamClass implements Serializable {
/** superclass descriptor appearing in stream */ /** superclass descriptor appearing in stream */
private ObjectStreamClass superDesc; private ObjectStreamClass superDesc;
/** true if, and only if, the object has been correctly initialized */
private boolean initialized;
/** /**
* Initializes native code. * Initializes native code.
*/ */
@ -266,6 +269,7 @@ public class ObjectStreamClass implements Serializable {
if (cl == null) { if (cl == null) {
return null; return null;
} }
requireInitialized();
if (System.getSecurityManager() != null) { if (System.getSecurityManager() != null) {
Class<?> caller = Reflection.getCallerClass(); Class<?> caller = Reflection.getCallerClass();
if (ReflectUtil.needsPackageAccessCheck(caller.getClassLoader(), cl.getClassLoader())) { if (ReflectUtil.needsPackageAccessCheck(caller.getClassLoader(), cl.getClassLoader())) {
@ -533,6 +537,7 @@ public class ObjectStreamClass implements Serializable {
name, "unmatched serializable field(s) declared"); name, "unmatched serializable field(s) declared");
} }
} }
initialized = true;
} }
/** /**
@ -550,6 +555,14 @@ public class ObjectStreamClass implements Serializable {
ObjectStreamClass superDesc) ObjectStreamClass superDesc)
throws InvalidClassException throws InvalidClassException
{ {
ObjectStreamClass osc = null;
if (cl != null) {
osc = lookup(cl, true);
if (!osc.isProxy) {
throw new InvalidClassException(
"cannot bind proxy descriptor to a non-proxy class");
}
}
this.cl = cl; this.cl = cl;
this.resolveEx = resolveEx; this.resolveEx = resolveEx;
this.superDesc = superDesc; this.superDesc = superDesc;
@ -557,21 +570,17 @@ public class ObjectStreamClass implements Serializable {
serializable = true; serializable = true;
suid = Long.valueOf(0); suid = Long.valueOf(0);
fields = NO_FIELDS; fields = NO_FIELDS;
if (osc != null) {
if (cl != null) { localDesc = osc;
localDesc = lookup(cl, true);
if (!localDesc.isProxy) {
throw new InvalidClassException(
"cannot bind proxy descriptor to a non-proxy class");
}
name = localDesc.name; name = localDesc.name;
externalizable = localDesc.externalizable; externalizable = localDesc.externalizable;
cons = localDesc.cons;
writeReplaceMethod = localDesc.writeReplaceMethod; writeReplaceMethod = localDesc.writeReplaceMethod;
readResolveMethod = localDesc.readResolveMethod; readResolveMethod = localDesc.readResolveMethod;
deserializeEx = localDesc.deserializeEx; deserializeEx = localDesc.deserializeEx;
cons = localDesc.cons;
} }
fieldRefl = getReflector(fields, localDesc); fieldRefl = getReflector(fields, localDesc);
initialized = true;
} }
/** /**
@ -583,11 +592,57 @@ public class ObjectStreamClass implements Serializable {
ObjectStreamClass superDesc) ObjectStreamClass superDesc)
throws InvalidClassException throws InvalidClassException
{ {
long suid = Long.valueOf(model.getSerialVersionUID());
ObjectStreamClass osc = null;
if (cl != null) {
osc = lookup(cl, true);
if (osc.isProxy) {
throw new InvalidClassException(
"cannot bind non-proxy descriptor to a proxy class");
}
if (model.isEnum != osc.isEnum) {
throw new InvalidClassException(model.isEnum ?
"cannot bind enum descriptor to a non-enum class" :
"cannot bind non-enum descriptor to an enum class");
}
if (model.serializable == osc.serializable &&
!cl.isArray() &&
suid != osc.getSerialVersionUID()) {
throw new InvalidClassException(osc.name,
"local class incompatible: " +
"stream classdesc serialVersionUID = " + suid +
", local class serialVersionUID = " +
osc.getSerialVersionUID());
}
if (!classNamesEqual(model.name, osc.name)) {
throw new InvalidClassException(osc.name,
"local class name incompatible with stream class " +
"name \"" + model.name + "\"");
}
if (!model.isEnum) {
if ((model.serializable == osc.serializable) &&
(model.externalizable != osc.externalizable)) {
throw new InvalidClassException(osc.name,
"Serializable incompatible with Externalizable");
}
if ((model.serializable != osc.serializable) ||
(model.externalizable != osc.externalizable) ||
!(model.serializable || model.externalizable)) {
deserializeEx = new ExceptionInfo(
osc.name, "class invalid for deserialization");
}
}
}
this.cl = cl; this.cl = cl;
this.resolveEx = resolveEx; this.resolveEx = resolveEx;
this.superDesc = superDesc; this.superDesc = superDesc;
name = model.name; name = model.name;
suid = Long.valueOf(model.getSerialVersionUID()); this.suid = suid;
isProxy = false; isProxy = false;
isEnum = model.isEnum; isEnum = model.isEnum;
serializable = model.serializable; serializable = model.serializable;
@ -598,53 +653,8 @@ public class ObjectStreamClass implements Serializable {
primDataSize = model.primDataSize; primDataSize = model.primDataSize;
numObjFields = model.numObjFields; numObjFields = model.numObjFields;
if (cl != null) { if (osc != null) {
localDesc = lookup(cl, true); localDesc = osc;
if (localDesc.isProxy) {
throw new InvalidClassException(
"cannot bind non-proxy descriptor to a proxy class");
}
if (isEnum != localDesc.isEnum) {
throw new InvalidClassException(isEnum ?
"cannot bind enum descriptor to a non-enum class" :
"cannot bind non-enum descriptor to an enum class");
}
if (serializable == localDesc.serializable &&
!cl.isArray() &&
suid.longValue() != localDesc.getSerialVersionUID())
{
throw new InvalidClassException(localDesc.name,
"local class incompatible: " +
"stream classdesc serialVersionUID = " + suid +
", local class serialVersionUID = " +
localDesc.getSerialVersionUID());
}
if (!classNamesEqual(name, localDesc.name)) {
throw new InvalidClassException(localDesc.name,
"local class name incompatible with stream class " +
"name \"" + name + "\"");
}
if (!isEnum) {
if ((serializable == localDesc.serializable) &&
(externalizable != localDesc.externalizable))
{
throw new InvalidClassException(localDesc.name,
"Serializable incompatible with Externalizable");
}
if ((serializable != localDesc.serializable) ||
(externalizable != localDesc.externalizable) ||
!(serializable || externalizable))
{
deserializeEx = new ExceptionInfo(
localDesc.name, "class invalid for deserialization");
}
}
cons = localDesc.cons;
writeObjectMethod = localDesc.writeObjectMethod; writeObjectMethod = localDesc.writeObjectMethod;
readObjectMethod = localDesc.readObjectMethod; readObjectMethod = localDesc.readObjectMethod;
readObjectNoDataMethod = localDesc.readObjectNoDataMethod; readObjectNoDataMethod = localDesc.readObjectNoDataMethod;
@ -653,10 +663,13 @@ public class ObjectStreamClass implements Serializable {
if (deserializeEx == null) { if (deserializeEx == null) {
deserializeEx = localDesc.deserializeEx; deserializeEx = localDesc.deserializeEx;
} }
cons = localDesc.cons;
} }
fieldRefl = getReflector(fields, localDesc); fieldRefl = getReflector(fields, localDesc);
// reassign to matched fields so as to reflect local unshared settings // reassign to matched fields so as to reflect local unshared settings
fields = fieldRefl.getFields(); fields = fieldRefl.getFields();
initialized = true;
} }
/** /**
@ -758,12 +771,21 @@ public class ObjectStreamClass implements Serializable {
return resolveEx; return resolveEx;
} }
/**
* Throws InternalError if not initialized.
*/
private final void requireInitialized() {
if (!initialized)
throw new InternalError("Unexpected call when not initialized");
}
/** /**
* Throws an InvalidClassException if object instances referencing this * Throws an InvalidClassException if object instances referencing this
* class descriptor should not be allowed to deserialize. This method does * class descriptor should not be allowed to deserialize. This method does
* not apply to deserialization of enum constants. * not apply to deserialization of enum constants.
*/ */
void checkDeserialize() throws InvalidClassException { void checkDeserialize() throws InvalidClassException {
requireInitialized();
if (deserializeEx != null) { if (deserializeEx != null) {
throw deserializeEx.newInvalidClassException(); throw deserializeEx.newInvalidClassException();
} }
@ -775,6 +797,7 @@ public class ObjectStreamClass implements Serializable {
* not apply to serialization of enum constants. * not apply to serialization of enum constants.
*/ */
void checkSerialize() throws InvalidClassException { void checkSerialize() throws InvalidClassException {
requireInitialized();
if (serializeEx != null) { if (serializeEx != null) {
throw serializeEx.newInvalidClassException(); throw serializeEx.newInvalidClassException();
} }
@ -788,6 +811,7 @@ public class ObjectStreamClass implements Serializable {
* does not apply to deserialization of enum constants. * does not apply to deserialization of enum constants.
*/ */
void checkDefaultSerialize() throws InvalidClassException { void checkDefaultSerialize() throws InvalidClassException {
requireInitialized();
if (defaultSerializeEx != null) { if (defaultSerializeEx != null) {
throw defaultSerializeEx.newInvalidClassException(); throw defaultSerializeEx.newInvalidClassException();
} }
@ -799,6 +823,7 @@ public class ObjectStreamClass implements Serializable {
* of the subclass descriptor's bound class. * of the subclass descriptor's bound class.
*/ */
ObjectStreamClass getSuperDesc() { ObjectStreamClass getSuperDesc() {
requireInitialized();
return superDesc; return superDesc;
} }
@ -809,6 +834,7 @@ public class ObjectStreamClass implements Serializable {
* associated with this descriptor. * associated with this descriptor.
*/ */
ObjectStreamClass getLocalDesc() { ObjectStreamClass getLocalDesc() {
requireInitialized();
return localDesc; return localDesc;
} }
@ -851,6 +877,7 @@ public class ObjectStreamClass implements Serializable {
* otherwise. * otherwise.
*/ */
boolean isProxy() { boolean isProxy() {
requireInitialized();
return isProxy; return isProxy;
} }
@ -859,6 +886,7 @@ public class ObjectStreamClass implements Serializable {
* otherwise. * otherwise.
*/ */
boolean isEnum() { boolean isEnum() {
requireInitialized();
return isEnum; return isEnum;
} }
@ -867,6 +895,7 @@ public class ObjectStreamClass implements Serializable {
* otherwise. * otherwise.
*/ */
boolean isExternalizable() { boolean isExternalizable() {
requireInitialized();
return externalizable; return externalizable;
} }
@ -875,6 +904,7 @@ public class ObjectStreamClass implements Serializable {
* otherwise. * otherwise.
*/ */
boolean isSerializable() { boolean isSerializable() {
requireInitialized();
return serializable; return serializable;
} }
@ -883,6 +913,7 @@ public class ObjectStreamClass implements Serializable {
* has written its data in 1.2 (block data) format, false otherwise. * has written its data in 1.2 (block data) format, false otherwise.
*/ */
boolean hasBlockExternalData() { boolean hasBlockExternalData() {
requireInitialized();
return hasBlockExternalData; return hasBlockExternalData;
} }
@ -892,6 +923,7 @@ public class ObjectStreamClass implements Serializable {
* writeObject() method, false otherwise. * writeObject() method, false otherwise.
*/ */
boolean hasWriteObjectData() { boolean hasWriteObjectData() {
requireInitialized();
return hasWriteObjectData; return hasWriteObjectData;
} }
@ -903,6 +935,7 @@ public class ObjectStreamClass implements Serializable {
* accessible no-arg constructor. Otherwise, returns false. * accessible no-arg constructor. Otherwise, returns false.
*/ */
boolean isInstantiable() { boolean isInstantiable() {
requireInitialized();
return (cons != null); return (cons != null);
} }
@ -912,6 +945,7 @@ public class ObjectStreamClass implements Serializable {
* returns false. * returns false.
*/ */
boolean hasWriteObjectMethod() { boolean hasWriteObjectMethod() {
requireInitialized();
return (writeObjectMethod != null); return (writeObjectMethod != null);
} }
@ -921,6 +955,7 @@ public class ObjectStreamClass implements Serializable {
* returns false. * returns false.
*/ */
boolean hasReadObjectMethod() { boolean hasReadObjectMethod() {
requireInitialized();
return (readObjectMethod != null); return (readObjectMethod != null);
} }
@ -930,6 +965,7 @@ public class ObjectStreamClass implements Serializable {
* Otherwise, returns false. * Otherwise, returns false.
*/ */
boolean hasReadObjectNoDataMethod() { boolean hasReadObjectNoDataMethod() {
requireInitialized();
return (readObjectNoDataMethod != null); return (readObjectNoDataMethod != null);
} }
@ -938,6 +974,7 @@ public class ObjectStreamClass implements Serializable {
* defines a conformant writeReplace method. Otherwise, returns false. * defines a conformant writeReplace method. Otherwise, returns false.
*/ */
boolean hasWriteReplaceMethod() { boolean hasWriteReplaceMethod() {
requireInitialized();
return (writeReplaceMethod != null); return (writeReplaceMethod != null);
} }
@ -946,6 +983,7 @@ public class ObjectStreamClass implements Serializable {
* defines a conformant readResolve method. Otherwise, returns false. * defines a conformant readResolve method. Otherwise, returns false.
*/ */
boolean hasReadResolveMethod() { boolean hasReadResolveMethod() {
requireInitialized();
return (readResolveMethod != null); return (readResolveMethod != null);
} }
@ -962,6 +1000,7 @@ public class ObjectStreamClass implements Serializable {
throws InstantiationException, InvocationTargetException, throws InstantiationException, InvocationTargetException,
UnsupportedOperationException UnsupportedOperationException
{ {
requireInitialized();
if (cons != null) { if (cons != null) {
try { try {
return cons.newInstance(); return cons.newInstance();
@ -983,6 +1022,7 @@ public class ObjectStreamClass implements Serializable {
void invokeWriteObject(Object obj, ObjectOutputStream out) void invokeWriteObject(Object obj, ObjectOutputStream out)
throws IOException, UnsupportedOperationException throws IOException, UnsupportedOperationException
{ {
requireInitialized();
if (writeObjectMethod != null) { if (writeObjectMethod != null) {
try { try {
writeObjectMethod.invoke(obj, new Object[]{ out }); writeObjectMethod.invoke(obj, new Object[]{ out });
@ -1012,6 +1052,7 @@ public class ObjectStreamClass implements Serializable {
throws ClassNotFoundException, IOException, throws ClassNotFoundException, IOException,
UnsupportedOperationException UnsupportedOperationException
{ {
requireInitialized();
if (readObjectMethod != null) { if (readObjectMethod != null) {
try { try {
readObjectMethod.invoke(obj, new Object[]{ in }); readObjectMethod.invoke(obj, new Object[]{ in });
@ -1042,6 +1083,7 @@ public class ObjectStreamClass implements Serializable {
void invokeReadObjectNoData(Object obj) void invokeReadObjectNoData(Object obj)
throws IOException, UnsupportedOperationException throws IOException, UnsupportedOperationException
{ {
requireInitialized();
if (readObjectNoDataMethod != null) { if (readObjectNoDataMethod != null) {
try { try {
readObjectNoDataMethod.invoke(obj, (Object[]) null); readObjectNoDataMethod.invoke(obj, (Object[]) null);
@ -1070,6 +1112,7 @@ public class ObjectStreamClass implements Serializable {
Object invokeWriteReplace(Object obj) Object invokeWriteReplace(Object obj)
throws IOException, UnsupportedOperationException throws IOException, UnsupportedOperationException
{ {
requireInitialized();
if (writeReplaceMethod != null) { if (writeReplaceMethod != null) {
try { try {
return writeReplaceMethod.invoke(obj, (Object[]) null); return writeReplaceMethod.invoke(obj, (Object[]) null);
@ -1099,6 +1142,7 @@ public class ObjectStreamClass implements Serializable {
Object invokeReadResolve(Object obj) Object invokeReadResolve(Object obj)
throws IOException, UnsupportedOperationException throws IOException, UnsupportedOperationException
{ {
requireInitialized();
if (readResolveMethod != null) { if (readResolveMethod != null) {
try { try {
return readResolveMethod.invoke(obj, (Object[]) null); return readResolveMethod.invoke(obj, (Object[]) null);

File diff suppressed because it is too large Load Diff

View File

@ -117,11 +117,13 @@ class Inet4Address extends InetAddress {
holder().address = address; holder().address = address;
} }
} }
holder().originalHostName = hostName;
} }
Inet4Address(String hostName, int address) { Inet4Address(String hostName, int address) {
holder().hostName = hostName; holder().hostName = hostName;
holder().family = IPv4; holder().family = IPv4;
holder().address = address; holder().address = address;
holder().originalHostName = hostName;
} }
/** /**

View File

@ -221,7 +221,7 @@ class InetAddress implements java.io.Serializable {
* *
* Note: May define a new public method in the future if necessary. * Note: May define a new public method in the future if necessary.
*/ */
private String originalHostName; String originalHostName;
InetAddressHolder() {} InetAddressHolder() {}

View File

@ -242,7 +242,7 @@ class Direct$Type$Buffer$RW$$BO$
} }
private long ix(int i) { private long ix(int i) {
return address + (i << $LG_BYTES_PER_VALUE$); return address + ((long)i << $LG_BYTES_PER_VALUE$);
} }
public $type$ get() { public $type$ get() {
@ -261,7 +261,7 @@ class Direct$Type$Buffer$RW$$BO$
public $Type$Buffer get($type$[] dst, int offset, int length) { public $Type$Buffer get($type$[] dst, int offset, int length) {
#if[rw] #if[rw]
if ((length << $LG_BYTES_PER_VALUE$) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) { if (((long)length << $LG_BYTES_PER_VALUE$) > Bits.JNI_COPY_TO_ARRAY_THRESHOLD) {
checkBounds(offset, length, dst.length); checkBounds(offset, length, dst.length);
int pos = position(); int pos = position();
int lim = limit(); int lim = limit();
@ -273,13 +273,13 @@ class Direct$Type$Buffer$RW$$BO$
#if[!byte] #if[!byte]
if (order() != ByteOrder.nativeOrder()) if (order() != ByteOrder.nativeOrder())
Bits.copyTo$Memtype$Array(ix(pos), dst, Bits.copyTo$Memtype$Array(ix(pos), dst,
offset << $LG_BYTES_PER_VALUE$, (long)offset << $LG_BYTES_PER_VALUE$,
length << $LG_BYTES_PER_VALUE$); (long)length << $LG_BYTES_PER_VALUE$);
else else
#end[!byte] #end[!byte]
Bits.copyToArray(ix(pos), dst, arrayBaseOffset, Bits.copyToArray(ix(pos), dst, arrayBaseOffset,
offset << $LG_BYTES_PER_VALUE$, (long)offset << $LG_BYTES_PER_VALUE$,
length << $LG_BYTES_PER_VALUE$); (long)length << $LG_BYTES_PER_VALUE$);
position(pos + length); position(pos + length);
} else { } else {
super.get(dst, offset, length); super.get(dst, offset, length);
@ -329,7 +329,7 @@ class Direct$Type$Buffer$RW$$BO$
if (srem > rem) if (srem > rem)
throw new BufferOverflowException(); throw new BufferOverflowException();
unsafe.copyMemory(sb.ix(spos), ix(pos), srem << $LG_BYTES_PER_VALUE$); unsafe.copyMemory(sb.ix(spos), ix(pos), (long)srem << $LG_BYTES_PER_VALUE$);
sb.position(spos + srem); sb.position(spos + srem);
position(pos + srem); position(pos + srem);
} else if (src.hb != null) { } else if (src.hb != null) {
@ -353,7 +353,7 @@ class Direct$Type$Buffer$RW$$BO$
public $Type$Buffer put($type$[] src, int offset, int length) { public $Type$Buffer put($type$[] src, int offset, int length) {
#if[rw] #if[rw]
if ((length << $LG_BYTES_PER_VALUE$) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) { if (((long)length << $LG_BYTES_PER_VALUE$) > Bits.JNI_COPY_FROM_ARRAY_THRESHOLD) {
checkBounds(offset, length, src.length); checkBounds(offset, length, src.length);
int pos = position(); int pos = position();
int lim = limit(); int lim = limit();
@ -364,12 +364,16 @@ class Direct$Type$Buffer$RW$$BO$
#if[!byte] #if[!byte]
if (order() != ByteOrder.nativeOrder()) if (order() != ByteOrder.nativeOrder())
Bits.copyFrom$Memtype$Array(src, offset << $LG_BYTES_PER_VALUE$, Bits.copyFrom$Memtype$Array(src,
ix(pos), length << $LG_BYTES_PER_VALUE$); (long)offset << $LG_BYTES_PER_VALUE$,
ix(pos),
(long)length << $LG_BYTES_PER_VALUE$);
else else
#end[!byte] #end[!byte]
Bits.copyFromArray(src, arrayBaseOffset, offset << $LG_BYTES_PER_VALUE$, Bits.copyFromArray(src, arrayBaseOffset,
ix(pos), length << $LG_BYTES_PER_VALUE$); (long)offset << $LG_BYTES_PER_VALUE$,
ix(pos),
(long)length << $LG_BYTES_PER_VALUE$);
position(pos + length); position(pos + length);
} else { } else {
super.put(src, offset, length); super.put(src, offset, length);
@ -387,7 +391,7 @@ class Direct$Type$Buffer$RW$$BO$
assert (pos <= lim); assert (pos <= lim);
int rem = (pos <= lim ? lim - pos : 0); int rem = (pos <= lim ? lim - pos : 0);
unsafe.copyMemory(ix(pos), ix(0), rem << $LG_BYTES_PER_VALUE$); unsafe.copyMemory(ix(pos), ix(0), (long)rem << $LG_BYTES_PER_VALUE$);
position(rem); position(rem);
limit(capacity()); limit(capacity());
discardMark(); discardMark();

View File

@ -138,6 +138,13 @@ public class AlgorithmParameterGenerator {
* <p> Note that the list of registered providers may be retrieved via * <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method. * the {@link Security#getProviders() Security.getProviders()} method.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param algorithm the name of the algorithm this * @param algorithm the name of the algorithm this
* parameter generator is associated with. * parameter generator is associated with.
* See the AlgorithmParameterGenerator section in the <a href= * See the AlgorithmParameterGenerator section in the <a href=

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -126,6 +126,13 @@ public class AlgorithmParameters {
* {@code init}, using an appropriate parameter specification or * {@code init}, using an appropriate parameter specification or
* parameter encoding. * parameter encoding.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param algorithm the name of the algorithm requested. * @param algorithm the name of the algorithm requested.
* See the AlgorithmParameters section in the <a href= * See the AlgorithmParameters section in the <a href=
* "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameters"> * "{@docRoot}/../technotes/guides/security/StandardNames.html#AlgorithmParameters">

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -153,6 +153,13 @@ public class KeyFactory {
* <p> Note that the list of registered providers may be retrieved via * <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method. * the {@link Security#getProviders() Security.getProviders()} method.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param algorithm the name of the requested key algorithm. * @param algorithm the name of the requested key algorithm.
* See the KeyFactory section in the <a href= * See the KeyFactory section in the <a href=
* "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyFactory"> * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyFactory">

View File

@ -195,6 +195,13 @@ public abstract class KeyPairGenerator extends KeyPairGeneratorSpi {
* <p> Note that the list of registered providers may be retrieved via * <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method. * the {@link Security#getProviders() Security.getProviders()} method.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param algorithm the standard string name of the algorithm. * @param algorithm the standard string name of the algorithm.
* See the KeyPairGenerator section in the <a href= * See the KeyPairGenerator section in the <a href=
* "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyPairGenerator"> * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyPairGenerator">

View File

@ -841,6 +841,13 @@ public class KeyStore {
* <p> Note that the list of registered providers may be retrieved via * <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method. * the {@link Security#getProviders() Security.getProviders()} method.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param type the type of keystore. * @param type the type of keystore.
* See the KeyStore section in the <a href= * See the KeyStore section in the <a href=
* "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyStore"> * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyStore">

View File

@ -146,6 +146,13 @@ public abstract class MessageDigest extends MessageDigestSpi {
* <p> Note that the list of registered providers may be retrieved via * <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method. * the {@link Security#getProviders() Security.getProviders()} method.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param algorithm the name of the algorithm requested. * @param algorithm the name of the algorithm requested.
* See the MessageDigest section in the <a href= * See the MessageDigest section in the <a href=
* "{@docRoot}/../technotes/guides/security/StandardNames.html#MessageDigest"> * "{@docRoot}/../technotes/guides/security/StandardNames.html#MessageDigest">

View File

@ -355,6 +355,13 @@ public abstract class Policy {
* <p> Note that the list of registered providers may be retrieved via * <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method. * the {@link Security#getProviders() Security.getProviders()} method.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param type the specified Policy type. See the Policy section in the * @param type the specified Policy type. See the Policy section in the
* <a href= * <a href=
* "{@docRoot}/../technotes/guides/security/StandardNames.html#Policy"> * "{@docRoot}/../technotes/guides/security/StandardNames.html#Policy">

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -268,6 +268,13 @@ public class SecureRandom extends java.util.Random {
* This self-seeding will not occur if {@code setSeed} was * This self-seeding will not occur if {@code setSeed} was
* previously called. * previously called.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param algorithm the name of the RNG algorithm. * @param algorithm the name of the RNG algorithm.
* See the SecureRandom section in the <a href= * See the SecureRandom section in the <a href=
* "{@docRoot}/../technotes/guides/security/StandardNames.html#SecureRandom"> * "{@docRoot}/../technotes/guides/security/StandardNames.html#SecureRandom">

View File

@ -203,6 +203,13 @@ public abstract class Signature extends SignatureSpi {
* <p> Note that the list of registered providers may be retrieved via * <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method. * the {@link Security#getProviders() Security.getProviders()} method.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param algorithm the standard name of the algorithm requested. * @param algorithm the standard name of the algorithm requested.
* See the Signature section in the <a href= * See the Signature section in the <a href=
* "{@docRoot}/../technotes/guides/security/StandardNames.html#Signature"> * "{@docRoot}/../technotes/guides/security/StandardNames.html#Signature">

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -142,6 +142,13 @@ public class CertPathBuilder {
* <p> Note that the list of registered providers may be retrieved via * <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method. * the {@link Security#getProviders() Security.getProviders()} method.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param algorithm the name of the requested {@code CertPathBuilder} * @param algorithm the name of the requested {@code CertPathBuilder}
* algorithm. See the CertPathBuilder section in the <a href= * algorithm. See the CertPathBuilder section in the <a href=
* "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathBuilder"> * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathBuilder">

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -143,6 +143,13 @@ public class CertPathValidator {
* <p> Note that the list of registered providers may be retrieved via * <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method. * the {@link Security#getProviders() Security.getProviders()} method.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param algorithm the name of the requested {@code CertPathValidator} * @param algorithm the name of the requested {@code CertPathValidator}
* algorithm. See the CertPathValidator section in the <a href= * algorithm. See the CertPathValidator section in the <a href=
* "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathValidator"> * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertPathValidator">

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -201,6 +201,13 @@ public class CertStore {
* Note that the specified {@code CertStoreParameters} object is * Note that the specified {@code CertStoreParameters} object is
* cloned. * cloned.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param type the name of the requested {@code CertStore} type. * @param type the name of the requested {@code CertStore} type.
* See the CertStore section in the <a href= * See the CertStore section in the <a href=
* "{@docRoot}/../technotes/guides/security/StandardNames.html#CertStore"> * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertStore">

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -163,6 +163,13 @@ public class CertificateFactory {
* <p> Note that the list of registered providers may be retrieved via * <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method. * the {@link Security#getProviders() Security.getProviders()} method.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param type the name of the requested certificate type. * @param type the name of the requested certificate type.
* See the CertificateFactory section in the <a href= * See the CertificateFactory section in the <a href=
* "{@docRoot}/../technotes/guides/security/StandardNames.html#CertificateFactory"> * "{@docRoot}/../technotes/guides/security/StandardNames.html#CertificateFactory">

View File

@ -758,7 +758,7 @@ public final class Instant
throw new UnsupportedTemporalTypeException("Unit must divide into a standard day without remainder"); throw new UnsupportedTemporalTypeException("Unit must divide into a standard day without remainder");
} }
long nod = (seconds % LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + nanos; long nod = (seconds % LocalTime.SECONDS_PER_DAY) * LocalTime.NANOS_PER_SECOND + nanos;
long result = (nod / dur) * dur; long result = Math.floorDiv(nod, dur) * dur ;
return plusNanos(result - nod); return plusNanos(result - nod);
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -281,6 +281,43 @@ public final class Objects {
return obj != null; return obj != null;
} }
/**
* Returns the first argument if it is non-{@code null} and
* otherwise returns the non-{@code null} second argument.
*
* @param obj an object
* @param defaultObj a non-{@code null} object to return if the first argument
* is {@code null}
* @param <T> the type of the reference
* @return the first argument if it is non-{@code null} and
* otherwise the second argument if it is non-{@code null}
* @throws NullPointerException if both {@code obj} is null and
* {@code defaultObj} is {@code null}
* @since 9
*/
public static <T> T nonNullElse(T obj, T defaultObj) {
return (obj != null) ? obj : requireNonNull(defaultObj, "defaultObj");
}
/**
* Returns the first argument if it is non-{@code null} and otherwise
* returns the non-{@code null} value of {@code supplier.get()}.
*
* @param obj an object
* @param supplier of a non-{@code null} object to return if the first argument
* is {@code null}
* @param <T> the type of the first argument and return type
* @return the first argument if it is non-{@code null} and otherwise
* the value from {@code supplier.get()} if it is non-{@code null}
* @throws NullPointerException if both {@code obj} is null and
* either the {@code supplier} is {@code null} or
* the {@code supplier.get()} value is {@code null}
* @since 9
*/
public static <T> T nonNullElseGet(T obj, Supplier<? extends T> supplier) {
return (obj != null) ? obj : requireNonNull(requireNonNull(supplier, "supplier").get(), "supplier.get()");
}
/** /**
* Checks that the specified object reference is not {@code null} and * Checks that the specified object reference is not {@code null} and
* throws a customized {@link NullPointerException} if it is. * throws a customized {@link NullPointerException} if it is.

View File

@ -31,21 +31,22 @@ import java.util.function.Supplier;
import java.util.stream.Stream; import java.util.stream.Stream;
/** /**
* A container object which may or may not contain a non-null value. * A container object which may or may not contain a non-{@code null} value.
* If a value is present, {@code isPresent()} will return {@code true} and * If a value is present, {@code isPresent()} returns {@code true} and
* {@code get()} will return the value. * {@code get()} returns the value.
* *
* <p>Additional methods that depend on the presence or absence of a contained * <p>Additional methods that depend on the presence or absence of a contained
* value are provided, such as {@link #orElse(java.lang.Object) orElse()} * value are provided, such as {@link #orElse(java.lang.Object) orElse()}
* (return a default value if value not present) and * (returns a default value if no value is present) and
* {@link #ifPresent(java.util.function.Consumer) ifPresent()} (perform an * {@link #ifPresent(java.util.function.Consumer) ifPresent()} (performs an
* action if the value is present). * action if a value is present).
* *
* <p>This is a <a href="../lang/doc-files/ValueBased.html">value-based</a> * <p>This is a <a href="../lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality * class; use of identity-sensitive operations (including reference equality
* ({@code ==}), identity hash code, or synchronization) on instances of * ({@code ==}), identity hash code, or synchronization) on instances of
* {@code Optional} may have unpredictable results and should be avoided. * {@code Optional} may have unpredictable results and should be avoided.
* *
* @param <T> the type of value
* @since 1.8 * @since 1.8
*/ */
public final class Optional<T> { public final class Optional<T> {
@ -71,14 +72,15 @@ public final class Optional<T> {
/** /**
* Returns an empty {@code Optional} instance. No value is present for this * Returns an empty {@code Optional} instance. No value is present for this
* Optional. * {@code Optional}.
* *
* @apiNote Though it may be tempting to do so, avoid testing if an object * @apiNote
* is empty by comparing with {@code ==} against instances returned by * Though it may be tempting to do so, avoid testing if an object is empty
* {@code Option.empty()}. There is no guarantee that it is a singleton. * by comparing with {@code ==} against instances returned by
* {@code Optional.empty()}. There is no guarantee that it is a singleton.
* Instead, use {@link #isPresent()}. * Instead, use {@link #isPresent()}.
* *
* @param <T> Type of the non-existent value * @param <T> The type of the non-existent value
* @return an empty {@code Optional} * @return an empty {@code Optional}
*/ */
public static<T> Optional<T> empty() { public static<T> Optional<T> empty() {
@ -88,47 +90,47 @@ public final class Optional<T> {
} }
/** /**
* Constructs an instance with the value present. * Constructs an instance with the described value.
* *
* @param value the non-null value to be present * @param value the non-{@code null} value to describe
* @throws NullPointerException if value is null * @throws NullPointerException if value is {@code null}
*/ */
private Optional(T value) { private Optional(T value) {
this.value = Objects.requireNonNull(value); this.value = Objects.requireNonNull(value);
} }
/** /**
* Returns an {@code Optional} with the specified present non-null value. * Returns an {@code Optional} describing the given non-{@code null}
* value.
* *
* @param <T> the class of the value * @param value the value to describe, which must be non-{@code null}
* @param value the value to be present, which must be non-null * @param <T> the type of the value
* @return an {@code Optional} with the value present * @return an {@code Optional} with the value present
* @throws NullPointerException if value is null * @throws NullPointerException if value is {@code null}
*/ */
public static <T> Optional<T> of(T value) { public static <T> Optional<T> of(T value) {
return new Optional<>(value); return new Optional<>(value);
} }
/** /**
* Returns an {@code Optional} describing the specified value, if non-null, * Returns an {@code Optional} describing the given value, if
* otherwise returns an empty {@code Optional}. * non-{@code null}, otherwise returns an empty {@code Optional}.
* *
* @param <T> the class of the value * @param value the possibly-{@code null} value to describe
* @param value the possibly-null value to describe * @param <T> the type of the value
* @return an {@code Optional} with a present value if the specified value * @return an {@code Optional} with a present value if the specified value
* is non-null, otherwise an empty {@code Optional} * is non-{@code null}, otherwise an empty {@code Optional}
*/ */
public static <T> Optional<T> ofNullable(T value) { public static <T> Optional<T> ofNullable(T value) {
return value == null ? empty() : of(value); return value == null ? empty() : of(value);
} }
/** /**
* If a value is present in this {@code Optional}, returns the value, * If a value is present, returns the value, otherwise throws
* otherwise throws {@code NoSuchElementException}. * {@code NoSuchElementException}.
*
* @return the non-null value held by this {@code Optional}
* @throws NoSuchElementException if there is no value present
* *
* @return the non-{@code null} value described by this {@code Optional}
* @throws NoSuchElementException if no value is present
* @see Optional#isPresent() * @see Optional#isPresent()
*/ */
public T get() { public T get() {
@ -139,21 +141,21 @@ public final class Optional<T> {
} }
/** /**
* Return {@code true} if there is a value present, otherwise {@code false}. * If a value is present, returns {@code true}, otherwise {@code false}.
* *
* @return {@code true} if there is a value present, otherwise {@code false} * @return {@code true} if a value is present, otherwise {@code false}
*/ */
public boolean isPresent() { public boolean isPresent() {
return value != null; return value != null;
} }
/** /**
* If a value is present, perform the given action with the value, * If a value is present, performs the given action with the value,
* otherwise do nothing. * otherwise does nothing.
* *
* @param action the action to be performed if a value is present * @param action the action to be performed, if a value is present
* @throws NullPointerException if a value is present and {@code action} is * @throws NullPointerException if value is present and the given action is
* null * {@code null}
*/ */
public void ifPresent(Consumer<? super T> action) { public void ifPresent(Consumer<? super T> action) {
if (value != null) { if (value != null) {
@ -162,15 +164,16 @@ public final class Optional<T> {
} }
/** /**
* If a value is present, perform the given action with the value, * If a value is present, performs the given action with the value,
* otherwise perform the given empty-based action. * otherwise performs the given empty-based action.
* *
* @param action the action to be performed if a value is present * @param action the action to be performed, if a value is present
* @param emptyAction the empty-based action to be performed if a value is * @param emptyAction the empty-based action to be performed, if no value is
* not present * present
* @throws NullPointerException if a value is present and {@code action} is * @throws NullPointerException if a value is present and the given action
* null, or a value is not present and {@code emptyAction} is null. * is {@code null}, or no value is present and the given empty-based
* @since 1.9 * action is {@code null}.
* @since 9
*/ */
public void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction) { public void ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction) {
if (value != null) { if (value != null) {
@ -182,14 +185,14 @@ public final class Optional<T> {
/** /**
* If a value is present, and the value matches the given predicate, * If a value is present, and the value matches the given predicate,
* return an {@code Optional} describing the value, otherwise return an * returns an {@code Optional} describing the value, otherwise returns an
* empty {@code Optional}. * empty {@code Optional}.
* *
* @param predicate a predicate to apply to the value, if present * @param predicate the predicate to apply to a value, if present
* @return an {@code Optional} describing the value of this {@code Optional} * @return an {@code Optional} describing the value of this
* if a value is present and the value matches the given predicate, * {@code Optional}, if a value is present and the value matches the
* otherwise an empty {@code Optional} * given predicate, otherwise an empty {@code Optional}
* @throws NullPointerException if the predicate is null * @throws NullPointerException if the predicate is {@code null}
*/ */
public Optional<T> filter(Predicate<? super T> predicate) { public Optional<T> filter(Predicate<? super T> predicate) {
Objects.requireNonNull(predicate); Objects.requireNonNull(predicate);
@ -201,14 +204,18 @@ public final class Optional<T> {
} }
/** /**
* If a value is present, apply the provided mapping function to it, * If a value is present, returns an {@code Optional} describing (as if by
* and if the result is non-null, return an {@code Optional} describing the * {@link #ofNullable}) the result of applying the given mapping function to
* result. Otherwise return an empty {@code Optional}. * the value, otherwise returns an empty {@code Optional}.
* *
* @apiNote This method supports post-processing on optional values, without * <p>If the mapping function returns a {@code null} result then this method
* returns an empty {@code Optional}.
*
* @apiNote
* This method supports post-processing on {@code Optional} values, without
* the need to explicitly check for a return status. For example, the * the need to explicitly check for a return status. For example, the
* following code traverses a stream of file names, selects one that has * following code traverses a stream of file names, selects one that has not
* not yet been processed, and then opens that file, returning an * yet been processed, and then opens that file, returning an
* {@code Optional<FileInputStream>}: * {@code Optional<FileInputStream>}:
* *
* <pre>{@code * <pre>{@code
@ -222,12 +229,12 @@ public final class Optional<T> {
* {@code map} returns an {@code Optional<FileInputStream>} for the desired * {@code map} returns an {@code Optional<FileInputStream>} for the desired
* file if one exists. * file if one exists.
* *
* @param <U> The type of the result of the mapping function * @param mapper the mapping function to apply to a value, if present
* @param mapper a mapping function to apply to the value, if present * @param <U> The type of the value returned from the mapping function
* @return an {@code Optional} describing the result of applying a mapping * @return an {@code Optional} describing the result of applying a mapping
* function to the value of this {@code Optional}, if a value is present, * function to the value of this {@code Optional}, if a value is
* otherwise an empty {@code Optional} * present, otherwise an empty {@code Optional}
* @throws NullPointerException if the mapping function is null * @throws NullPointerException if the mapping function is {@code null}
*/ */
public<U> Optional<U> map(Function<? super T, ? extends U> mapper) { public<U> Optional<U> map(Function<? super T, ? extends U> mapper) {
Objects.requireNonNull(mapper); Objects.requireNonNull(mapper);
@ -239,21 +246,23 @@ public final class Optional<T> {
} }
/** /**
* If a value is present, apply the provided {@code Optional}-bearing * If a value is present, returns the result of applying the given
* mapping function to it, return that result, otherwise return an empty * {@code Optional}-bearing mapping function to the value, otherwise returns
* {@code Optional}. This method is similar to {@link #map(Function)}, * an empty {@code Optional}.
* but the provided mapper is one whose result is already an {@code Optional}, *
* and if invoked, {@code flatMap} does not wrap it with an additional * <p>This method is similar to {@link #map(Function)}, but the mapping
* function is one whose result is already an {@code Optional}, and if
* invoked, {@code flatMap} does not wrap it within an additional
* {@code Optional}. * {@code Optional}.
* *
* @param <U> The type parameter to the {@code Optional} returned by * @param <U> The type of value of the {@code Optional} returned by the
* @param mapper a mapping function to apply to the value, if present * mapping function
* the mapping function * @param mapper the mapping function to apply to a value, if present
* @return the result of applying an {@code Optional}-bearing mapping * @return the result of applying an {@code Optional}-bearing mapping
* function to the value of this {@code Optional}, if a value is present, * function to the value of this {@code Optional}, if a value is
* otherwise an empty {@code Optional} * present, otherwise an empty {@code Optional}
* @throws NullPointerException if the mapping function is null or returns * @throws NullPointerException if the mapping function is {@code null} or
* a null result * returns a {@code null} result
*/ */
public<U> Optional<U> flatMap(Function<? super T, Optional<U>> mapper) { public<U> Optional<U> flatMap(Function<? super T, Optional<U>> mapper) {
Objects.requireNonNull(mapper); Objects.requireNonNull(mapper);
@ -265,19 +274,41 @@ public final class Optional<T> {
} }
/** /**
* If a value is present return a sequential {@link Stream} containing only * If a value is present, returns an {@code Optional} describing the value,
* that value, otherwise return an empty {@code Stream}. * otherwise returns an {@code Optional} produced by the supplying function.
* *
* @apiNote This method can be used to transform a {@code Stream} of * @param supplier the supplying function that produces an {@code Optional}
* optional elements to a {@code Stream} of present value elements: * to be returned
* @return returns an {@code Optional} describing the value of this
* {@code Optional}, if a value is present, otherwise an
* {@code Optional} produced by the supplying function.
* @throws NullPointerException if the supplying function is {@code null} or
* produces a {@code null} result
* @since 9
*/
public Optional<T> or(Supplier<Optional<T>> supplier) {
Objects.requireNonNull(supplier);
if (isPresent()) {
return this;
} else {
return Objects.requireNonNull(supplier.get());
}
}
/**
* If a value is present, returns a sequential {@link Stream} containing
* only that value, otherwise returns an empty {@code Stream}.
* *
* @apiNote
* This method can be used to transform a {@code Stream} of optional
* elements to a {@code Stream} of present value elements:
* <pre>{@code * <pre>{@code
* Stream<Optional<T>> os = .. * Stream<Optional<T>> os = ..
* Stream<T> s = os.flatMap(Optional::stream) * Stream<T> s = os.flatMap(Optional::stream)
* }</pre> * }</pre>
* *
* @return the optional value as a {@code Stream} * @return the optional value as a {@code Stream}
* @since 1.9 * @since 9
*/ */
public Stream<T> stream() { public Stream<T> stream() {
if (!isPresent()) { if (!isPresent()) {
@ -288,10 +319,11 @@ public final class Optional<T> {
} }
/** /**
* Return the value if present, otherwise return {@code other}. * If a value is present, returns the value, otherwise returns
* {@code other}.
* *
* @param other the value to be returned if there is no value present, may * @param other the value to be returned, if no value is present.
* be null * May be {@code null}.
* @return the value, if present, otherwise {@code other} * @return the value, if present, otherwise {@code other}
*/ */
public T orElse(T other) { public T orElse(T other) {
@ -299,34 +331,35 @@ public final class Optional<T> {
} }
/** /**
* Return the value if present, otherwise invoke {@code other} and return * If a value is present, returns the value, otherwise returns the result
* the result of that invocation. * produced by the supplying function.
* *
* @param other a {@code Supplier} whose result is returned if no value * @param supplier the supplying function that produces a value to be returned
* is present * @return the value, if present, otherwise the result produced by the
* @return the value if present otherwise the result of {@code other.get()} * supplying function
* @throws NullPointerException if value is not present and {@code other} is * @throws NullPointerException if no value is present and the supplying
* null * function is {@code null}
*/ */
public T orElseGet(Supplier<? extends T> other) { public T orElseGet(Supplier<? extends T> supplier) {
return value != null ? value : other.get(); return value != null ? value : supplier.get();
} }
/** /**
* Return the contained value, if present, otherwise throw an exception * If a value is present, returns the value, otherwise throws an exception
* to be created by the provided supplier. * produced by the exception supplying function.
* *
* @apiNote A method reference to the exception constructor with an empty * @apiNote
* argument list can be used as the supplier. For example, * A method reference to the exception constructor with an empty argument
* list can be used as the supplier. For example,
* {@code IllegalStateException::new} * {@code IllegalStateException::new}
* *
* @param <X> Type of the exception to be thrown * @param <X> Type of the exception to be thrown
* @param exceptionSupplier The supplier which will return the exception to * @param exceptionSupplier the supplying function that produces an
* be thrown * exception to be thrown
* @return the present value * @return the value, if present
* @throws X if there is no value present * @throws X if no value is present
* @throws NullPointerException if no value is present and * @throws NullPointerException if no value is present and the exception
* {@code exceptionSupplier} is null * supplying function is {@code null}
*/ */
public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X { public <X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier) throws X {
if (value != null) { if (value != null) {
@ -337,8 +370,8 @@ public final class Optional<T> {
} }
/** /**
* Indicates whether some other object is "equal to" this Optional. The * Indicates whether some other object is "equal to" this {@code Optional}.
* other object is considered equal if: * The other object is considered equal if:
* <ul> * <ul>
* <li>it is also an {@code Optional} and; * <li>it is also an {@code Optional} and;
* <li>both instances have no value present or; * <li>both instances have no value present or;
@ -347,7 +380,7 @@ public final class Optional<T> {
* *
* @param obj an object to be tested for equality * @param obj an object to be tested for equality
* @return {@code true} if the other object is "equal to" this object * @return {@code true} if the other object is "equal to" this object
* otherwise {@code false} * otherwise {@code false}
*/ */
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
@ -364,10 +397,11 @@ public final class Optional<T> {
} }
/** /**
* Returns the hash code value of the present value, if any, or 0 (zero) if * Returns the hash code of the value, if present, otherwise {@code 0}
* no value is present. * (zero) if no value is present.
* *
* @return hash code value of the present value or 0 if no value is present * @return hash code value of the present value or {@code 0} if no value is
* present
*/ */
@Override @Override
public int hashCode() { public int hashCode() {
@ -375,13 +409,14 @@ public final class Optional<T> {
} }
/** /**
* Returns a non-empty string representation of this Optional suitable for * Returns a non-empty string representation of this {@code Optional}
* debugging. The exact presentation format is unspecified and may vary * suitable for debugging. The exact presentation format is unspecified and
* between implementations and versions. * may vary between implementations and versions.
* *
* @implSpec If a value is present the result must include its string * @implSpec
* representation in the result. Empty and present Optionals must be * If a value is present the result must include its string representation
* unambiguously differentiable. * in the result. Empty and present {@code Optional}s must be unambiguously
* differentiable.
* *
* @return the string representation of this instance * @return the string representation of this instance
*/ */

View File

@ -30,15 +30,15 @@ import java.util.function.Supplier;
import java.util.stream.DoubleStream; import java.util.stream.DoubleStream;
/** /**
* A container object which may or may not contain a {@code double} value. * A container object which may or may not contain a {@code double} value. If a
* If a value is present, {@code isPresent()} will return {@code true} and * value is present, {@code isPresent()} returns {@code true} and
* {@code getAsDouble()} will return the value. * {@code getAsDouble()} returns the value.
* *
* <p>Additional methods that depend on the presence or absence of a contained * <p>Additional methods that depend on the presence or absence of a contained
* value are provided, such as {@link #orElse(double) orElse()} * value are provided, such as {@link #orElse(double) orElse()}
* (return a default value if value not present) and * (returns a default value if no value is present) and
* {@link #ifPresent(java.util.function.DoubleConsumer) ifPresent()} (perform an * {@link #ifPresent(java.util.function.DoubleConsumer) ifPresent()} (performs
* action if the value is present). * an action if a value is present).
* *
* <p>This is a <a href="../lang/doc-files/ValueBased.html">value-based</a> * <p>This is a <a href="../lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality * class; use of identity-sensitive operations (including reference equality
@ -71,12 +71,13 @@ public final class OptionalDouble {
} }
/** /**
* Returns an empty {@code OptionalDouble} instance. No value is present for this * Returns an empty {@code OptionalDouble} instance. No value is present
* OptionalDouble. * for this {@code OptionalDouble}.
* *
* @apiNote Though it may be tempting to do so, avoid testing if an object * @apiNote
* is empty by comparing with {@code ==} against instances returned by * Though it may be tempting to do so, avoid testing if an object is empty
* {@code Option.empty()}. There is no guarantee that it is a singleton. * by comparing with {@code ==} against instances returned by
* {@code OptionalDouble.empty()}. There is no guarantee that it is a singleton.
* Instead, use {@link #isPresent()}. * Instead, use {@link #isPresent()}.
* *
* @return an empty {@code OptionalDouble}. * @return an empty {@code OptionalDouble}.
@ -86,9 +87,9 @@ public final class OptionalDouble {
} }
/** /**
* Construct an instance with the value present. * Construct an instance with the described value.
* *
* @param value the double value to be present. * @param value the double value to describe.
*/ */
private OptionalDouble(double value) { private OptionalDouble(double value) {
this.isPresent = true; this.isPresent = true;
@ -96,9 +97,9 @@ public final class OptionalDouble {
} }
/** /**
* Return an {@code OptionalDouble} with the specified value present. * Returns an {@code OptionalDouble} describing the given value.
* *
* @param value the value to be present * @param value the value to describe
* @return an {@code OptionalDouble} with the value present * @return an {@code OptionalDouble} with the value present
*/ */
public static OptionalDouble of(double value) { public static OptionalDouble of(double value) {
@ -106,12 +107,11 @@ public final class OptionalDouble {
} }
/** /**
* If a value is present in this {@code OptionalDouble}, returns the value, * If a value is present, returns the value, otherwise throws
* otherwise throws {@code NoSuchElementException}. * {@code NoSuchElementException}.
*
* @return the value held by this {@code OptionalDouble}
* @throws NoSuchElementException if there is no value present
* *
* @return the value described by this {@code OptionalDouble}
* @throws NoSuchElementException if no value is present
* @see OptionalDouble#isPresent() * @see OptionalDouble#isPresent()
*/ */
public double getAsDouble() { public double getAsDouble() {
@ -122,21 +122,21 @@ public final class OptionalDouble {
} }
/** /**
* Return {@code true} if there is a value present, otherwise {@code false}. * If a value is present, returns {@code true}, otherwise {@code false}.
* *
* @return {@code true} if there is a value present, otherwise {@code false} * @return {@code true} if a value is present, otherwise {@code false}
*/ */
public boolean isPresent() { public boolean isPresent() {
return isPresent; return isPresent;
} }
/** /**
* If a value is present, perform the given action with the value, * If a value is present, performs the given action with the value,
* otherwise do nothing. * otherwise does nothing.
* *
* @param action the action to be performed if a value is present * @param action the action to be performed, if a value is present
* @throws NullPointerException if a value is present and {@code action} is * @throws NullPointerException if value is present and the given action is
* null * {@code null}
*/ */
public void ifPresent(DoubleConsumer action) { public void ifPresent(DoubleConsumer action) {
if (isPresent) { if (isPresent) {
@ -145,15 +145,16 @@ public final class OptionalDouble {
} }
/** /**
* If a value is present, perform the given action with the value, * If a value is present, performs the given action with the value,
* otherwise perform the given empty-based action. * otherwise performs the given empty-based action.
* *
* @param action the action to be performed if a value is present * @param action the action to be performed, if a value is present
* @param emptyAction the empty-based action to be performed if a value is * @param emptyAction the empty-based action to be performed, if no value is
* not present * present
* @throws NullPointerException if a value is present and {@code action} is * @throws NullPointerException if a value is present and the given action
* null, or a value is not present and {@code emptyAction} is null. * is {@code null}, or no value is present and the given empty-based
* @since 1.9 * action is {@code null}.
* @since 9
*/ */
public void ifPresentOrElse(DoubleConsumer action, Runnable emptyAction) { public void ifPresentOrElse(DoubleConsumer action, Runnable emptyAction) {
if (isPresent) { if (isPresent) {
@ -164,19 +165,20 @@ public final class OptionalDouble {
} }
/** /**
* If a value is present return a sequential {@link DoubleStream} containing * If a value is present, returns a sequential {@link DoubleStream}
* only that value, otherwise return an empty {@code DoubleStream}. * containing only that value, otherwise returns an empty
* * {@code DoubleStream}.
* @apiNote This method can be used to transform a {@code Stream} of
* optional doubles to a {@code DoubleStream} of present doubles:
* *
* @apiNote
* This method can be used to transform a {@code Stream} of optional doubles
* to a {@code DoubleStream} of present doubles:
* <pre>{@code * <pre>{@code
* Stream<OptionalDouble> os = .. * Stream<OptionalDouble> os = ..
* DoubleStream s = os.flatMapToDouble(OptionalDouble::stream) * DoubleStream s = os.flatMapToDouble(OptionalDouble::stream)
* }</pre> * }</pre>
* *
* @return the optional value as a {@code DoubleStream} * @return the optional value as a {@code DoubleStream}
* @since 1.9 * @since 9
*/ */
public DoubleStream stream() { public DoubleStream stream() {
if (isPresent) { if (isPresent) {
@ -187,9 +189,10 @@ public final class OptionalDouble {
} }
/** /**
* Return the value if present, otherwise return {@code other}. * If a value is present, returns the value, otherwise returns
* {@code other}.
* *
* @param other the value to be returned if there is no value present * @param other the value to be returned, if no value is present
* @return the value, if present, otherwise {@code other} * @return the value, if present, otherwise {@code other}
*/ */
public double orElse(double other) { public double orElse(double other) {
@ -197,34 +200,35 @@ public final class OptionalDouble {
} }
/** /**
* Return the value if present, otherwise invoke {@code other} and return * If a value is present, returns the value, otherwise returns the result
* the result of that invocation. * produced by the supplying function.
* *
* @param other a {@code DoubleSupplier} whose result is returned if no value * @param supplier the supplying function that produces a value to be returned
* is present * @return the value, if present, otherwise the result produced by the
* @return the value if present otherwise the result of {@code other.getAsDouble()} * supplying function
* @throws NullPointerException if value is not present and {@code other} is * @throws NullPointerException if no value is present and the supplying
* null * function is {@code null}
*/ */
public double orElseGet(DoubleSupplier other) { public double orElseGet(DoubleSupplier supplier) {
return isPresent ? value : other.getAsDouble(); return isPresent ? value : supplier.getAsDouble();
} }
/** /**
* Return the contained value, if present, otherwise throw an exception * If a value is present, returns the value, otherwise throws an exception
* to be created by the provided supplier. * produced by the exception supplying function.
* *
* @apiNote A method reference to the exception constructor with an empty * @apiNote
* argument list can be used as the supplier. For example, * A method reference to the exception constructor with an empty argument
* list can be used as the supplier. For example,
* {@code IllegalStateException::new} * {@code IllegalStateException::new}
* *
* @param <X> Type of the exception to be thrown * @param <X> Type of the exception to be thrown
* @param exceptionSupplier The supplier which will return the exception to * @param exceptionSupplier the supplying function that produces an
* be thrown * exception to be thrown
* @return the present value * @return the value, if present
* @throws X if there is no value present * @throws X if no value is present
* @throws NullPointerException if no value is present and * @throws NullPointerException if no value is present and the exception
* {@code exceptionSupplier} is null * supplying function is {@code null}
*/ */
public<X extends Throwable> double orElseThrow(Supplier<? extends X> exceptionSupplier) throws X { public<X extends Throwable> double orElseThrow(Supplier<? extends X> exceptionSupplier) throws X {
if (isPresent) { if (isPresent) {
@ -235,17 +239,18 @@ public final class OptionalDouble {
} }
/** /**
* Indicates whether some other object is "equal to" this OptionalDouble. The * Indicates whether some other object is "equal to" this
* other object is considered equal if: * {@code OptionalDouble}. The other object is considered equal if:
* <ul> * <ul>
* <li>it is also an {@code OptionalDouble} and; * <li>it is also an {@code OptionalDouble} and;
* <li>both instances have no value present or; * <li>both instances have no value present or;
* <li>the present values are "equal to" each other via {@code Double.compare() == 0}. * <li>the present values are "equal to" each other via
* {@code Double.compare() == 0}.
* </ul> * </ul>
* *
* @param obj an object to be tested for equality * @param obj an object to be tested for equality
* @return {@code true} if the other object is "equal to" this object * @return {@code true} if the other object is "equal to" this object
* otherwise {@code false} * otherwise {@code false}
*/ */
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
@ -264,10 +269,11 @@ public final class OptionalDouble {
} }
/** /**
* Returns the hash code value of the present value, if any, or 0 (zero) if * Returns the hash code of the value, if present, otherwise {@code 0}
* no value is present. * (zero) if no value is present.
* *
* @return hash code value of the present value or 0 if no value is present * @return hash code value of the present value or {@code 0} if no value is
* present
*/ */
@Override @Override
public int hashCode() { public int hashCode() {
@ -275,14 +281,13 @@ public final class OptionalDouble {
} }
/** /**
* {@inheritDoc} * Returns a non-empty string representation of this {@code OptionalDouble}
* suitable for debugging. The exact presentation format is unspecified and
* may vary between implementations and versions.
* *
* Returns a non-empty string representation of this object suitable for * @implSpec
* debugging. The exact presentation format is unspecified and may vary * If a value is present the result must include its string representation
* between implementations and versions. * in the result. Empty and present {@code OptionalDouble}s must be
*
* @implSpec If a value is present the result must include its string
* representation in the result. Empty and present instances must be
* unambiguously differentiable. * unambiguously differentiable.
* *
* @return the string representation of this instance * @return the string representation of this instance

View File

@ -30,15 +30,15 @@ import java.util.function.Supplier;
import java.util.stream.IntStream; import java.util.stream.IntStream;
/** /**
* A container object which may or may not contain a {@code int} value. * A container object which may or may not contain an {@code int} value. If a
* If a value is present, {@code isPresent()} will return {@code true} and * value is present, {@code isPresent()} returns {@code true} and
* {@code getAsInt()} will return the value. * {@code getAsInt()} returns the value.
* *
* <p>Additional methods that depend on the presence or absence of a contained * <p>Additional methods that depend on the presence or absence of a contained
* value are provided, such as {@link #orElse(int) orElse()} * value are provided, such as {@link #orElse(int) orElse()}
* (return a default value if value not present) and * (returns a default value if no value is present) and
* {@link #ifPresent(java.util.function.IntConsumer) ifPresent()} (perform an * {@link #ifPresent(java.util.function.IntConsumer) ifPresent()} (performs an
* action if the value is present). * action if a value is present).
* *
* <p>This is a <a href="../lang/doc-files/ValueBased.html">value-based</a> * <p>This is a <a href="../lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality * class; use of identity-sensitive operations (including reference equality
@ -71,24 +71,25 @@ public final class OptionalInt {
} }
/** /**
* Returns an empty {@code OptionalInt} instance. No value is present for this * Returns an empty {@code OptionalInt} instance. No value is present for
* OptionalInt. * this {@code OptionalInt}.
* *
* @apiNote Though it may be tempting to do so, avoid testing if an object * @apiNote
* is empty by comparing with {@code ==} against instances returned by * Though it may be tempting to do so, avoid testing if an object is empty
* {@code Option.empty()}. There is no guarantee that it is a singleton. * by comparing with {@code ==} against instances returned by
* {@code OptionalInt.empty()}. There is no guarantee that it is a singleton.
* Instead, use {@link #isPresent()}. * Instead, use {@link #isPresent()}.
* *
* @return an empty {@code OptionalInt} * @return an empty {@code OptionalInt}
*/ */
public static OptionalInt empty() { public static OptionalInt empty() {
return EMPTY; return EMPTY;
} }
/** /**
* Construct an instance with the value present. * Construct an instance with the described value.
* *
* @param value the int value to be present * @param value the int value to describe
*/ */
private OptionalInt(int value) { private OptionalInt(int value) {
this.isPresent = true; this.isPresent = true;
@ -96,9 +97,9 @@ public final class OptionalInt {
} }
/** /**
* Return an {@code OptionalInt} with the specified value present. * Returns an {@code OptionalInt} describing the given value.
* *
* @param value the value to be present * @param value the value to describe
* @return an {@code OptionalInt} with the value present * @return an {@code OptionalInt} with the value present
*/ */
public static OptionalInt of(int value) { public static OptionalInt of(int value) {
@ -106,12 +107,11 @@ public final class OptionalInt {
} }
/** /**
* If a value is present in this {@code OptionalInt}, returns the value, * If a value is present, returns the value, otherwise throws
* otherwise throws {@code NoSuchElementException}. * {@code NoSuchElementException}.
*
* @return the value held by this {@code OptionalInt}
* @throws NoSuchElementException if there is no value present
* *
* @return the value described by this {@code OptionalInt}
* @throws NoSuchElementException if no value is present
* @see OptionalInt#isPresent() * @see OptionalInt#isPresent()
*/ */
public int getAsInt() { public int getAsInt() {
@ -122,21 +122,21 @@ public final class OptionalInt {
} }
/** /**
* Return {@code true} if there is a value present, otherwise {@code false}. * If a value is present, returns {@code true}, otherwise {@code false}.
* *
* @return {@code true} if there is a value present, otherwise {@code false} * @return {@code true} if a value is present, otherwise {@code false}
*/ */
public boolean isPresent() { public boolean isPresent() {
return isPresent; return isPresent;
} }
/** /**
* If a value is present, perform the given action with the value, * If a value is present, performs the given action with the value,
* otherwise do nothing. * otherwise does nothing.
* *
* @param action the action to be performed if a value is present * @param action the action to be performed, if a value is present
* @throws NullPointerException if value is present and {@code action} is * @throws NullPointerException if value is present and the given action is
* null * {@code null}
*/ */
public void ifPresent(IntConsumer action) { public void ifPresent(IntConsumer action) {
if (isPresent) { if (isPresent) {
@ -145,15 +145,16 @@ public final class OptionalInt {
} }
/** /**
* If a value is present, perform the given action with the value, * If a value is present, performs the given action with the value,
* otherwise perform the given empty-based action. * otherwise performs the given empty-based action.
* *
* @param action the action to be performed if a value is present * @param action the action to be performed, if a value is present
* @param emptyAction the empty-based action to be performed if a value is * @param emptyAction the empty-based action to be performed, if no value is
* not present * present
* @throws NullPointerException if a value is present and {@code action} is * @throws NullPointerException if a value is present and the given action
* null, or a value is not present and {@code emptyAction} is null. * is {@code null}, or no value is present and the given empty-based
* @since 1.9 * action is {@code null}.
* @since 9
*/ */
public void ifPresentOrElse(IntConsumer action, Runnable emptyAction) { public void ifPresentOrElse(IntConsumer action, Runnable emptyAction) {
if (isPresent) { if (isPresent) {
@ -164,19 +165,19 @@ public final class OptionalInt {
} }
/** /**
* If a value is present return a sequential {@link IntStream} containing * If a value is present, returns a sequential {@link IntStream} containing
* only that value, otherwise return an empty {@code IntStream}. * only that value, otherwise returns an empty {@code IntStream}.
*
* @apiNote This method can be used to transform a {@code Stream} of
* optional integers to an {@code IntStream} of present integers:
* *
* @apiNote
* This method can be used to transform a {@code Stream} of optional
* integers to an {@code IntStream} of present integers:
* <pre>{@code * <pre>{@code
* Stream<OptionalInt> os = .. * Stream<OptionalInt> os = ..
* IntStream s = os.flatMapToInt(OptionalInt::stream) * IntStream s = os.flatMapToInt(OptionalInt::stream)
* }</pre> * }</pre>
* *
* @return the optional value as an {@code IntStream} * @return the optional value as an {@code IntStream}
* @since 1.9 * @since 9
*/ */
public IntStream stream() { public IntStream stream() {
if (isPresent) { if (isPresent) {
@ -187,9 +188,10 @@ public final class OptionalInt {
} }
/** /**
* Return the value if present, otherwise return {@code other}. * If a value is present, returns the value, otherwise returns
* {@code other}.
* *
* @param other the value to be returned if there is no value present * @param other the value to be returned, if no value is present
* @return the value, if present, otherwise {@code other} * @return the value, if present, otherwise {@code other}
*/ */
public int orElse(int other) { public int orElse(int other) {
@ -197,34 +199,35 @@ public final class OptionalInt {
} }
/** /**
* Return the value if present, otherwise invoke {@code other} and return * If a value is present, returns the value, otherwise returns the result
* the result of that invocation. * produced by the supplying function.
* *
* @param other a {@code IntSupplier} whose result is returned if no value * @param supplier the supplying function that produces a value to be returned
* is present * @return the value, if present, otherwise the result produced by the
* @return the value if present otherwise the result of {@code other.getAsInt()} * supplying function
* @throws NullPointerException if value is not present and {@code other} is * @throws NullPointerException if no value is present and the supplying
* null * function is {@code null}
*/ */
public int orElseGet(IntSupplier other) { public int orElseGet(IntSupplier supplier) {
return isPresent ? value : other.getAsInt(); return isPresent ? value : supplier.getAsInt();
} }
/** /**
* Return the contained value, if present, otherwise throw an exception * If a value is present, returns the value, otherwise throws an exception
* to be created by the provided supplier. * produced by the exception supplying function.
* *
* @apiNote A method reference to the exception constructor with an empty * @apiNote
* argument list can be used as the supplier. For example, * A method reference to the exception constructor with an empty argument
* list can be used as the supplier. For example,
* {@code IllegalStateException::new} * {@code IllegalStateException::new}
* *
* @param <X> Type of the exception to be thrown * @param <X> Type of the exception to be thrown
* @param exceptionSupplier The supplier which will return the exception to * @param exceptionSupplier the supplying function that produces an
* be thrown * exception to be thrown
* @return the present value * @return the value, if present
* @throws X if there is no value present * @throws X if no value is present
* @throws NullPointerException if no value is present and * @throws NullPointerException if no value is present and the exception
* {@code exceptionSupplier} is null * supplying function is {@code null}
*/ */
public<X extends Throwable> int orElseThrow(Supplier<? extends X> exceptionSupplier) throws X { public<X extends Throwable> int orElseThrow(Supplier<? extends X> exceptionSupplier) throws X {
if (isPresent) { if (isPresent) {
@ -235,8 +238,8 @@ public final class OptionalInt {
} }
/** /**
* Indicates whether some other object is "equal to" this OptionalInt. The * Indicates whether some other object is "equal to" this
* other object is considered equal if: * {@code OptionalInt}. The other object is considered equal if:
* <ul> * <ul>
* <li>it is also an {@code OptionalInt} and; * <li>it is also an {@code OptionalInt} and;
* <li>both instances have no value present or; * <li>both instances have no value present or;
@ -245,7 +248,7 @@ public final class OptionalInt {
* *
* @param obj an object to be tested for equality * @param obj an object to be tested for equality
* @return {@code true} if the other object is "equal to" this object * @return {@code true} if the other object is "equal to" this object
* otherwise {@code false} * otherwise {@code false}
*/ */
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
@ -264,10 +267,11 @@ public final class OptionalInt {
} }
/** /**
* Returns the hash code value of the present value, if any, or 0 (zero) if * Returns the hash code of the value, if present, otherwise {@code 0}
* no value is present. * (zero) if no value is present.
* *
* @return hash code value of the present value or 0 if no value is present * @return hash code value of the present value or {@code 0} if no value is
* present
*/ */
@Override @Override
public int hashCode() { public int hashCode() {
@ -275,14 +279,13 @@ public final class OptionalInt {
} }
/** /**
* {@inheritDoc} * Returns a non-empty string representation of this {@code OptionalInt}
* suitable for debugging. The exact presentation format is unspecified and
* may vary between implementations and versions.
* *
* Returns a non-empty string representation of this object suitable for * @implSpec
* debugging. The exact presentation format is unspecified and may vary * If a value is present the result must include its string representation
* between implementations and versions. * in the result. Empty and present {@code OptionalInt}s must be
*
* @implSpec If a value is present the result must include its string
* representation in the result. Empty and present instances must be
* unambiguously differentiable. * unambiguously differentiable.
* *
* @return the string representation of this instance * @return the string representation of this instance

View File

@ -30,15 +30,15 @@ import java.util.function.Supplier;
import java.util.stream.LongStream; import java.util.stream.LongStream;
/** /**
* A container object which may or may not contain a {@code long} value. * A container object which may or may not contain a {@code long} value. If a
* If a value is present, {@code isPresent()} will return {@code true} and * value is present, {@code isPresent()} returns {@code true} and
* {@code getAsLong()} will return the value. * {@code getAsLong()} returns the value.
* *
* <p>Additional methods that depend on the presence or absence of a contained * <p>Additional methods that depend on the presence or absence of a contained
* value are provided, such as {@link #orElse(long) orElse()} * value are provided, such as {@link #orElse(long) orElse()}
* (return a default value if value not present) and * (returns a default value if no value is present) and
* {@link #ifPresent(java.util.function.LongConsumer) ifPresent()} (perform an * {@link #ifPresent(java.util.function.LongConsumer) ifPresent()} (performs an
* action if the value is present). * action if a value is present).
* *
* <p>This is a <a href="../lang/doc-files/ValueBased.html">value-based</a> * <p>This is a <a href="../lang/doc-files/ValueBased.html">value-based</a>
* class; use of identity-sensitive operations (including reference equality * class; use of identity-sensitive operations (including reference equality
@ -71,24 +71,25 @@ public final class OptionalLong {
} }
/** /**
* Returns an empty {@code OptionalLong} instance. No value is present for this * Returns an empty {@code OptionalLong} instance. No value is present for
* OptionalLong. * this {@code OptionalLong}.
* *
* @apiNote Though it may be tempting to do so, avoid testing if an object * @apiNote
* is empty by comparing with {@code ==} against instances returned by * Though it may be tempting to do so, avoid testing if an object is empty
* {@code Option.empty()}. There is no guarantee that it is a singleton. * by comparing with {@code ==} against instances returned by
* {@code OptionalLong.empty()}. There is no guarantee that it is a singleton.
* Instead, use {@link #isPresent()}. * Instead, use {@link #isPresent()}.
* *
* @return an empty {@code OptionalLong}. * @return an empty {@code OptionalLong}.
*/ */
public static OptionalLong empty() { public static OptionalLong empty() {
return EMPTY; return EMPTY;
} }
/** /**
* Construct an instance with the value present. * Construct an instance with the described value.
* *
* @param value the long value to be present * @param value the long value to describe
*/ */
private OptionalLong(long value) { private OptionalLong(long value) {
this.isPresent = true; this.isPresent = true;
@ -96,9 +97,9 @@ public final class OptionalLong {
} }
/** /**
* Return an {@code OptionalLong} with the specified value present. * Returns an {@code OptionalLong} describing the given value.
* *
* @param value the value to be present * @param value the value to describe
* @return an {@code OptionalLong} with the value present * @return an {@code OptionalLong} with the value present
*/ */
public static OptionalLong of(long value) { public static OptionalLong of(long value) {
@ -106,12 +107,11 @@ public final class OptionalLong {
} }
/** /**
* If a value is present in this {@code OptionalLong}, returns the value, * If a value is present, returns the value, otherwise throws
* otherwise throws {@code NoSuchElementException}. * {@code NoSuchElementException}.
*
* @return the value held by this {@code OptionalLong}
* @throws NoSuchElementException if there is no value present
* *
* @return the value described by this {@code OptionalLong}
* @throws NoSuchElementException if no value is present
* @see OptionalLong#isPresent() * @see OptionalLong#isPresent()
*/ */
public long getAsLong() { public long getAsLong() {
@ -122,21 +122,21 @@ public final class OptionalLong {
} }
/** /**
* Return {@code true} if there is a value present, otherwise {@code false}. * If a value is present, returns {@code true}, otherwise {@code false}.
* *
* @return {@code true} if there is a value present, otherwise {@code false} * @return {@code true} if a value is present, otherwise {@code false}
*/ */
public boolean isPresent() { public boolean isPresent() {
return isPresent; return isPresent;
} }
/** /**
* If a value is present, perform the given action with the value, * If a value is present, performs the given action with the value,
* otherwise do nothing. * otherwise does nothing.
* *
* @param action the action to be performed if a value is present * @param action the action to be performed, if a value is present
* @throws NullPointerException if a value is present and {@code action} is * @throws NullPointerException if value is present and the given action is
* null * {@code null}
*/ */
public void ifPresent(LongConsumer action) { public void ifPresent(LongConsumer action) {
if (isPresent) { if (isPresent) {
@ -145,15 +145,16 @@ public final class OptionalLong {
} }
/** /**
* If a value is present, perform the given action with the value, * If a value is present, performs the given action with the value,
* otherwise perform the given empty-based action. * otherwise performs the given empty-based action.
* *
* @param action the action to be performed if a value is present * @param action the action to be performed, if a value is present
* @param emptyAction the empty-based action to be performed if a value is * @param emptyAction the empty-based action to be performed, if no value is
* not present * present
* @throws NullPointerException if a value is present and {@code action} is * @throws NullPointerException if a value is present and the given action
* null, or a value is not present and {@code emptyAction} is null. * is {@code null}, or no value is present and the given empty-based
* @since 1.9 * action is {@code null}.
* @since 9
*/ */
public void ifPresentOrElse(LongConsumer action, Runnable emptyAction) { public void ifPresentOrElse(LongConsumer action, Runnable emptyAction) {
if (isPresent) { if (isPresent) {
@ -164,19 +165,19 @@ public final class OptionalLong {
} }
/** /**
* If a value is present return a sequential {@link LongStream} containing * If a value is present, returns a sequential {@link LongStream} containing
* only that value, otherwise return an empty {@code LongStream}. * only that value, otherwise returns an empty {@code LongStream}.
*
* @apiNote This method can be used to transform a {@code Stream} of
* optional longs to a {@code LongStream} of present longs:
* *
* @apiNote
* This method can be used to transform a {@code Stream} of optional longs
* to an {@code LongStream} of present longs:
* <pre>{@code * <pre>{@code
* Stream<OptionalLong> os = .. * Stream<OptionalLong> os = ..
* LongStream s = os.flatMapToLong(OptionalLong::stream) * LongStream s = os.flatMapToLong(OptionalLong::stream)
* }</pre> * }</pre>
* *
* @return the optional value as a {@code LongStream} * @return the optional value as an {@code LongStream}
* @since 1.9 * @since 9
*/ */
public LongStream stream() { public LongStream stream() {
if (isPresent) { if (isPresent) {
@ -187,9 +188,10 @@ public final class OptionalLong {
} }
/** /**
* Return the value if present, otherwise return {@code other}. * If a value is present, returns the value, otherwise returns
* {@code other}.
* *
* @param other the value to be returned if there is no value present * @param other the value to be returned, if no value is present
* @return the value, if present, otherwise {@code other} * @return the value, if present, otherwise {@code other}
*/ */
public long orElse(long other) { public long orElse(long other) {
@ -197,34 +199,35 @@ public final class OptionalLong {
} }
/** /**
* Return the value if present, otherwise invoke {@code other} and return * If a value is present, returns the value, otherwise returns the result
* the result of that invocation. * produced by the supplying function.
* *
* @param other a {@code LongSupplier} whose result is returned if no value * @param supplier the supplying function that produces a value to be returned
* is present * @return the value, if present, otherwise the result produced by the
* @return the value if present otherwise the result of {@code other.getAsLong()} * supplying function
* @throws NullPointerException if value is not present and {@code other} is * @throws NullPointerException if no value is present and the supplying
* null * function is {@code null}
*/ */
public long orElseGet(LongSupplier other) { public long orElseGet(LongSupplier supplier) {
return isPresent ? value : other.getAsLong(); return isPresent ? value : supplier.getAsLong();
} }
/** /**
* Return the contained value, if present, otherwise throw an exception * If a value is present, returns the value, otherwise throws an exception
* to be created by the provided supplier. * produced by the exception supplying function.
* *
* @apiNote A method reference to the exception constructor with an empty * @apiNote
* argument list can be used as the supplier. For example, * A method reference to the exception constructor with an empty argument
* list can be used as the supplier. For example,
* {@code IllegalStateException::new} * {@code IllegalStateException::new}
* *
* @param <X> Type of the exception to be thrown * @param <X> Type of the exception to be thrown
* @param exceptionSupplier The supplier which will return the exception to * @param exceptionSupplier the supplying function that produces an
* be thrown * exception to be thrown
* @return the present value * @return the value, if present
* @throws X if there is no value present * @throws X if no value is present
* @throws NullPointerException if no value is present and * @throws NullPointerException if no value is present and the exception
* {@code exceptionSupplier} is null * supplying function is {@code null}
*/ */
public<X extends Throwable> long orElseThrow(Supplier<? extends X> exceptionSupplier) throws X { public<X extends Throwable> long orElseThrow(Supplier<? extends X> exceptionSupplier) throws X {
if (isPresent) { if (isPresent) {
@ -235,8 +238,8 @@ public final class OptionalLong {
} }
/** /**
* Indicates whether some other object is "equal to" this OptionalLong. The * Indicates whether some other object is "equal to" this
* other object is considered equal if: * {@code OptionalLong}. The other object is considered equal if:
* <ul> * <ul>
* <li>it is also an {@code OptionalLong} and; * <li>it is also an {@code OptionalLong} and;
* <li>both instances have no value present or; * <li>both instances have no value present or;
@ -245,7 +248,7 @@ public final class OptionalLong {
* *
* @param obj an object to be tested for equality * @param obj an object to be tested for equality
* @return {@code true} if the other object is "equal to" this object * @return {@code true} if the other object is "equal to" this object
* otherwise {@code false} * otherwise {@code false}
*/ */
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
@ -264,10 +267,11 @@ public final class OptionalLong {
} }
/** /**
* Returns the hash code value of the present value, if any, or 0 (zero) if * Returns the hash code of the value, if present, otherwise {@code 0}
* no value is present. * (zero) if no value is present.
* *
* @return hash code value of the present value or 0 if no value is present * @return hash code value of the present value or {@code 0} if no value is
* present
*/ */
@Override @Override
public int hashCode() { public int hashCode() {
@ -275,14 +279,13 @@ public final class OptionalLong {
} }
/** /**
* {@inheritDoc} * Returns a non-empty string representation of this {@code OptionalLong}
* suitable for debugging. The exact presentation format is unspecified and
* may vary between implementations and versions.
* *
* Returns a non-empty string representation of this object suitable for * @implSpec
* debugging. The exact presentation format is unspecified and may vary * If a value is present the result must include its string representation
* between implementations and versions. * in the result. Empty and present {@code OptionalLong}s must be
*
* @implSpec If a value is present the result must include its string
* representation in the result. Empty and present instances must be
* unambiguously differentiable. * unambiguously differentiable.
* *
* @return the string representation of this instance * @return the string representation of this instance

View File

@ -438,10 +438,19 @@ class JarFile extends ZipFile {
private byte[] getBytes(ZipEntry ze) throws IOException { private byte[] getBytes(ZipEntry ze) throws IOException {
try (InputStream is = super.getInputStream(ze)) { try (InputStream is = super.getInputStream(ze)) {
int len = (int)ze.getSize(); int len = (int)ze.getSize();
byte[] b = is.readAllBytes(); int bytesRead;
if (len != -1 && b.length != len) byte[] b;
throw new EOFException("Expected:" + len + ", read:" + b.length); // trust specified entry sizes when reasonably small
if (len != -1 && len <= 65535) {
b = new byte[len];
bytesRead = is.readNBytes(b, 0, len);
} else {
b = is.readAllBytes();
bytesRead = b.length;
}
if (len != -1 && len != bytesRead) {
throw new EOFException("Expected:" + len + ", read:" + bytesRead);
}
return b; return b;
} }
} }

View File

@ -478,6 +478,13 @@ public class Cipher {
* <p> Note that the list of registered providers may be retrieved via * <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method. * the {@link Security#getProviders() Security.getProviders()} method.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param transformation the name of the transformation, e.g., * @param transformation the name of the transformation, e.g.,
* <i>DES/CBC/PKCS5Padding</i>. * <i>DES/CBC/PKCS5Padding</i>.
* See the Cipher section in the <a href= * See the Cipher section in the <a href=

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -112,6 +112,13 @@ public class ExemptionMechanism {
* <p> Note that the list of registered providers may be retrieved via * <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method. * the {@link Security#getProviders() Security.getProviders()} method.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param algorithm the standard name of the requested exemption * @param algorithm the standard name of the requested exemption
* mechanism. * mechanism.
* See the ExemptionMechanism section in the * See the ExemptionMechanism section in the

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -150,6 +150,13 @@ public class KeyAgreement {
* <p> Note that the list of registered providers may be retrieved via * <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method. * the {@link Security#getProviders() Security.getProviders()} method.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param algorithm the standard name of the requested key agreement * @param algorithm the standard name of the requested key agreement
* algorithm. * algorithm.
* See the KeyAgreement section in the <a href= * See the KeyAgreement section in the <a href=

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -202,6 +202,13 @@ public class KeyGenerator {
* <p> Note that the list of registered providers may be retrieved via * <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method. * the {@link Security#getProviders() Security.getProviders()} method.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param algorithm the standard name of the requested key algorithm. * @param algorithm the standard name of the requested key algorithm.
* See the KeyGenerator section in the <a href= * See the KeyGenerator section in the <a href=
* "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyGenerator"> * "{@docRoot}/../technotes/guides/security/StandardNames.html#KeyGenerator">

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -152,6 +152,13 @@ public class Mac implements Cloneable {
* <p> Note that the list of registered providers may be retrieved via * <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method. * the {@link Security#getProviders() Security.getProviders()} method.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param algorithm the standard name of the requested MAC algorithm. * @param algorithm the standard name of the requested MAC algorithm.
* See the Mac section in the <a href= * See the Mac section in the <a href=
* "{@docRoot}/../technotes/guides/security/StandardNames.html#Mac"> * "{@docRoot}/../technotes/guides/security/StandardNames.html#Mac">

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -137,6 +137,13 @@ public class SecretKeyFactory {
* <p> Note that the list of registered providers may be retrieved via * <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method. * the {@link Security#getProviders() Security.getProviders()} method.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param algorithm the standard name of the requested secret-key * @param algorithm the standard name of the requested secret-key
* algorithm. * algorithm.
* See the SecretKeyFactory section in the <a href= * See the SecretKeyFactory section in the <a href=

View File

@ -116,6 +116,13 @@ public class KeyManagerFactory {
* <p> Note that the list of registered providers may be retrieved via * <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method. * the {@link Security#getProviders() Security.getProviders()} method.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param algorithm the standard name of the requested algorithm. * @param algorithm the standard name of the requested algorithm.
* See the <a href= * See the <a href=
* "{@docRoot}/../technotes/guides/security/jsse/JSSERefGuide.html"> * "{@docRoot}/../technotes/guides/security/jsse/JSSERefGuide.html">

View File

@ -136,6 +136,13 @@ public class SSLContext {
* <p> Note that the list of registered providers may be retrieved via * <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method. * the {@link Security#getProviders() Security.getProviders()} method.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param protocol the standard name of the requested protocol. * @param protocol the standard name of the requested protocol.
* See the SSLContext section in the <a href= * See the SSLContext section in the <a href=
* "{@docRoot}/../technotes/guides/security/StandardNames.html#SSLContext"> * "{@docRoot}/../technotes/guides/security/StandardNames.html#SSLContext">

View File

@ -130,6 +130,13 @@ public class TrustManagerFactory {
* <p> Note that the list of registered providers may be retrieved via * <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method. * the {@link Security#getProviders() Security.getProviders()} method.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param algorithm the standard name of the requested trust management * @param algorithm the standard name of the requested trust management
* algorithm. See the <a href= * algorithm. See the <a href=
* "{@docRoot}/../technotes/guides/security/jsse/JSSERefGuide.html"> * "{@docRoot}/../technotes/guides/security/jsse/JSSERefGuide.html">

View File

@ -101,6 +101,18 @@ package javax.security.auth;
* login Configuration. * login Configuration.
* </pre> * </pre>
* *
* <p>Please note that granting this permission with the "modifyPrincipals",
* "modifyPublicCredentials" or "modifyPrivateCredentials" target allows
* a JAAS login module to populate principal or credential objects into
* the Subject. Although reading information inside the private credentials
* set requires a {@link PrivateCredentialPermission} of the credential type to
* be granted, reading information inside the principals set and the public
* credentials set requires no additional permission. These objects can contain
* potentially sensitive information. For example, login modules that read
* local user information or perform a Kerberos login are able to add
* potentially sensitive information such as user ids, groups and domain names
* to the principals set.
*
* <p> The following target name has been deprecated in favor of * <p> The following target name has been deprecated in favor of
* {@code createLoginContext.{name}}. * {@code createLoginContext.{name}}.
* *

View File

@ -311,6 +311,13 @@ public abstract class Configuration {
* <p> Note that the list of registered providers may be retrieved via * <p> Note that the list of registered providers may be retrieved via
* the {@link Security#getProviders() Security.getProviders()} method. * the {@link Security#getProviders() Security.getProviders()} method.
* *
* @implNote
* The JDK Reference Implementation additionally uses the
* {@code jdk.security.provider.preferred} property to determine
* the preferred provider order for the specified algorithm. This
* may be different than the order of providers returned by
* {@link Security#getProviders() Security.getProviders()}.
*
* @param type the specified Configuration type. See the Configuration * @param type the specified Configuration type. See the Configuration
* section in the <a href= * section in the <a href=
* "{@docRoot}/../technotes/guides/security/StandardNames.html#Configuration"> * "{@docRoot}/../technotes/guides/security/StandardNames.html#Configuration">

View File

@ -28,8 +28,8 @@ package jdk.internal;
import java.lang.annotation.*; import java.lang.annotation.*;
/** /**
* The {@code @HotSpotIntrinsicCandidate} annotation is specific to the Oracle Java * The {@code @HotSpotIntrinsicCandidate} annotation is specific to the
* HotSpot Virtual Machine implementation and indicates that an annotated method * HotSpot Virtual Machine. It indicates that an annotated method
* may be (but is not guaranteed to be) intrinsified by the HotSpot VM. A method * may be (but is not guaranteed to be) intrinsified by the HotSpot VM. A method
* is intrinsified if the HotSpot VM replaces the annotated method with hand-written * is intrinsified if the HotSpot VM replaces the annotated method with hand-written
* assembly and/or hand-written compiler IR -- a compiler intrinsic -- to improve * assembly and/or hand-written compiler IR -- a compiler intrinsic -- to improve

View File

@ -487,7 +487,8 @@ public class HttpURLConnection extends java.net.HttpURLConnection {
private void checkMessageHeader(String key, String value) { private void checkMessageHeader(String key, String value) {
char LF = '\n'; char LF = '\n';
int index = key.indexOf(LF); int index = key.indexOf(LF);
if (index != -1) { int index1 = key.indexOf(':');
if (index != -1 || index1 != -1) {
throw new IllegalArgumentException( throw new IllegalArgumentException(
"Illegal character(s) in message header field: " + key); "Illegal character(s) in message header field: " + key);
} }

View File

@ -27,8 +27,11 @@ package sun.security.jca;
import java.util.*; import java.util.*;
import java.security.*; import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.Provider;
import java.security.Provider.Service; import java.security.Provider.Service;
import java.security.Security;
/** /**
* List of Providers. Used to represent the provider preferences. * List of Providers. Used to represent the provider preferences.
@ -65,6 +68,9 @@ public final class ProviderList {
// constant for an ProviderList with no elements // constant for an ProviderList with no elements
static final ProviderList EMPTY = new ProviderList(PC0, true); static final ProviderList EMPTY = new ProviderList(PC0, true);
// list of all jdk.security.provider.preferred entries
static private PreferredList preferredPropList = null;
// dummy provider object to use during initialization // dummy provider object to use during initialization
// used to avoid explicit null checks in various places // used to avoid explicit null checks in various places
private static final Provider EMPTY_PROVIDER = private static final Provider EMPTY_PROVIDER =
@ -162,11 +168,10 @@ public final class ProviderList {
*/ */
private ProviderList() { private ProviderList() {
List<ProviderConfig> configList = new ArrayList<>(); List<ProviderConfig> configList = new ArrayList<>();
for (int i = 1; true; i++) { String entry;
String entry = Security.getProperty("security.provider." + i); int i = 1;
if (entry == null) {
break; while ((entry = Security.getProperty("security.provider." + i)) != null) {
}
entry = entry.trim(); entry = entry.trim();
if (entry.length() == 0) { if (entry.length() == 0) {
System.err.println("invalid entry for " + System.err.println("invalid entry for " +
@ -187,10 +192,36 @@ public final class ProviderList {
if (configList.contains(config) == false) { if (configList.contains(config) == false) {
configList.add(config); configList.add(config);
} }
i++;
} }
configs = configList.toArray(PC0); configs = configList.toArray(PC0);
// Load config entries for use when getInstance is called
entry = Security.getProperty("jdk.security.provider.preferred");
if (entry != null && (entry = entry.trim()).length() > 0) {
String[] entries = entry.split(",");
if (ProviderList.preferredPropList == null) {
ProviderList.preferredPropList = new PreferredList();
}
for (String e : entries) {
i = e.indexOf(':');
if (i < 0) {
if (debug != null) {
debug.println("invalid preferred entry skipped. " +
"Missing colon delimiter \"" + e + "\"");
}
continue;
}
ProviderList.preferredPropList.add(new PreferredEntry(
e.substring(0, i).trim(), e.substring(i + 1).trim()));
}
}
if (debug != null) { if (debug != null) {
debug.println("provider configuration: " + configList); debug.println("provider configuration: " + configList);
debug.println("config configuration: " +
ProviderList.preferredPropList);
} }
} }
@ -327,7 +358,22 @@ public final class ProviderList {
* algorithm. * algorithm.
*/ */
public Service getService(String type, String name) { public Service getService(String type, String name) {
for (int i = 0; i < configs.length; i++) { ArrayList<PreferredEntry> pList = null;
int i;
// Preferred provider list
if (preferredPropList != null &&
(pList = preferredPropList.getAll(type, name)) != null) {
for (i = 0; i < pList.size(); i++) {
Provider p = getProvider(pList.get(i).provider);
Service s = p.getService(type, name);
if (s != null) {
return s;
}
}
}
for (i = 0; i < configs.length; i++) {
Provider p = getProvider(i); Provider p = getProvider(i);
Service s = p.getService(type, name); Service s = p.getService(type, name);
if (s != null) { if (s != null) {
@ -394,7 +440,11 @@ public final class ProviderList {
private List<Service> services; private List<Service> services;
// index into config[] of the next provider we need to query // index into config[] of the next provider we need to query
private int providerIndex; private int providerIndex = 0;
// Matching preferred provider list for this ServiceList
ArrayList<PreferredEntry> preferredList = null;
private int preferredIndex = 0;
ServiceList(String type, String algorithm) { ServiceList(String type, String algorithm) {
this.type = type; this.type = type;
@ -421,6 +471,14 @@ public final class ProviderList {
} }
private Service tryGet(int index) { private Service tryGet(int index) {
Provider p;
// If preferred providers are configured, check for matches with
// the requested service.
if (preferredPropList != null && preferredList == null) {
preferredList = preferredPropList.getAll(this);
}
while (true) { while (true) {
if ((index == 0) && (firstService != null)) { if ((index == 0) && (firstService != null)) {
return firstService; return firstService;
@ -430,8 +488,27 @@ public final class ProviderList {
if (providerIndex >= configs.length) { if (providerIndex >= configs.length) {
return null; return null;
} }
// check all algorithms in this provider before moving on
Provider p = getProvider(providerIndex++); // If there were matches with a preferred provider, iterate
// through the list first before going through the
// ordered list (java.security.provider.#)
if (preferredList != null &&
preferredIndex < preferredList.size()) {
PreferredEntry entry = preferredList.get(preferredIndex++);
// Look for the provider name in the PreferredEntry
p = getProvider(entry.provider);
if (p == null) {
if (debug != null) {
debug.println("No provider found with name: " +
entry.provider);
}
continue;
}
} else {
// check all algorithms in this provider before moving on
p = getProvider(providerIndex++);
}
if (type != null) { if (type != null) {
// simple lookup // simple lookup
Service s = p.getService(type, algorithm); Service s = p.getService(type, algorithm);
@ -502,4 +579,119 @@ public final class ProviderList {
} }
} }
// Provider list defined by jdk.security.provider.preferred entry
static final class PreferredList {
ArrayList<PreferredEntry> list = new ArrayList<PreferredEntry>();
/*
* Return a list of all preferred entries that match the passed
* ServiceList.
*/
ArrayList<PreferredEntry> getAll(ServiceList s) {
if (s.ids == null) {
return getAll(s.type, s.algorithm);
}
ArrayList<PreferredEntry> l = new ArrayList<PreferredEntry>();
for (ServiceId id : s.ids) {
implGetAll(l, id.type, id.algorithm);
}
return l;
}
/*
* Return a list of all preferred entries that match the passed
* type and algorithm.
*/
ArrayList<PreferredEntry> getAll(String type, String algorithm) {
ArrayList<PreferredEntry> l = new ArrayList<PreferredEntry>();
implGetAll(l, type, algorithm);
return l;
}
/*
* Compare each preferred entry against the passed type and
* algorithm, putting any matches in the passed ArrayList.
*/
private void implGetAll(ArrayList<PreferredEntry> l, String type,
String algorithm) {
PreferredEntry e;
for (int i = 0; i < size(); i++) {
e = list.get(i);
if (e.match(type, algorithm)) {
l.add(e);
}
}
}
public PreferredEntry get(int i) {
return list.get(i);
}
public int size() {
return list.size();
}
public boolean add(PreferredEntry e) {
return list.add(e);
}
public String toString() {
String s = "";
for (PreferredEntry e: list) {
s += e.toString();
}
return s;
}
}
// Individual preferred property entry from jdk.security.provider.preferred
private class PreferredEntry {
String type = null;
String algorithm;
String provider;
PreferredEntry(String t, String p) {
int i = t.indexOf('.');
if (i > 0) {
type = t.substring(0, i);
algorithm = t.substring(i + 1);
} else {
algorithm = t;
}
provider = p;
}
boolean match(String t, String a) {
if (debug != null) {
debug.println("Config match: " + toString() + " == [" + t +
", " + a + "]");
}
// Compare service type if configured
if (type != null && type.compareToIgnoreCase(t) != 0) {
return false;
}
// Compare the algorithm string.
if (a.compareToIgnoreCase(algorithm) == 0) {
if (debug != null) {
debug.println("Config entry found: " + toString());
}
return true;
}
// No match
return false;
}
public String toString() {
return "[" + type + ", " + algorithm + " : " + provider + "] ";
}
}
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -77,6 +77,13 @@ public final class AlgorithmChecker extends PKIXCertPathChecker {
private static final Set<CryptoPrimitive> SIGNATURE_PRIMITIVE_SET = private static final Set<CryptoPrimitive> SIGNATURE_PRIMITIVE_SET =
Collections.unmodifiableSet(EnumSet.of(CryptoPrimitive.SIGNATURE)); Collections.unmodifiableSet(EnumSet.of(CryptoPrimitive.SIGNATURE));
private static final Set<CryptoPrimitive> KU_PRIMITIVE_SET =
Collections.unmodifiableSet(EnumSet.of(
CryptoPrimitive.SIGNATURE,
CryptoPrimitive.KEY_ENCAPSULATION,
CryptoPrimitive.PUBLIC_KEY_ENCRYPTION,
CryptoPrimitive.KEY_AGREEMENT));
private static final DisabledAlgorithmConstraints private static final DisabledAlgorithmConstraints
certPathDefaultConstraints = new DisabledAlgorithmConstraints( certPathDefaultConstraints = new DisabledAlgorithmConstraints(
DisabledAlgorithmConstraints.PROPERTY_CERTPATH_DISABLED_ALGS); DisabledAlgorithmConstraints.PROPERTY_CERTPATH_DISABLED_ALGS);
@ -210,9 +217,11 @@ public final class AlgorithmChecker extends PKIXCertPathChecker {
null, null, -1, PKIXReason.INVALID_KEY_USAGE); null, null, -1, PKIXReason.INVALID_KEY_USAGE);
} }
// Assume all key usage bits are set if key usage is not present
Set<CryptoPrimitive> primitives = KU_PRIMITIVE_SET;
if (keyUsage != null) { if (keyUsage != null) {
Set<CryptoPrimitive> primitives = primitives = EnumSet.noneOf(CryptoPrimitive.class);
EnumSet.noneOf(CryptoPrimitive.class);
if (keyUsage[0] || keyUsage[1] || keyUsage[5] || keyUsage[6]) { if (keyUsage[0] || keyUsage[1] || keyUsage[5] || keyUsage[6]) {
// keyUsage[0]: KeyUsage.digitalSignature // keyUsage[0]: KeyUsage.digitalSignature
@ -237,15 +246,19 @@ public final class AlgorithmChecker extends PKIXCertPathChecker {
// KeyUsage.encipherOnly and KeyUsage.decipherOnly are // KeyUsage.encipherOnly and KeyUsage.decipherOnly are
// undefined in the absence of the keyAgreement bit. // undefined in the absence of the keyAgreement bit.
if (!primitives.isEmpty()) { if (primitives.isEmpty()) {
if (!constraints.permits(primitives, currPubKey)) { throw new CertPathValidatorException(
throw new CertPathValidatorException( "incorrect KeyUsage extension",
"algorithm constraints check failed", null, null, -1, PKIXReason.INVALID_KEY_USAGE);
null, null, -1, BasicReason.ALGORITHM_CONSTRAINED);
}
} }
} }
if (!constraints.permits(primitives, currPubKey)) {
throw new CertPathValidatorException(
"algorithm constraints check failed",
null, null, -1, BasicReason.ALGORITHM_CONSTRAINED);
}
// Check with previous cert for signature algorithm and public key // Check with previous cert for signature algorithm and public key
if (prevPubKey != null) { if (prevPubKey != null) {
if (currSigAlg != null) { if (currSigAlg != null) {

View File

@ -1068,20 +1068,17 @@ class RevocationChecker extends PKIXRevocationChecker {
boolean signFlag = true; boolean signFlag = true;
List<? extends Certificate> cpList = List<? extends Certificate> cpList =
cpbr.getCertPath().getCertificates(); cpbr.getCertPath().getCertificates();
if (cpList.isEmpty()) {
return;
}
try { try {
for (int i = cpList.size()-1; i >= 0; i-- ) { for (int i = cpList.size() - 1; i >= 0; i--) {
X509Certificate cert = (X509Certificate)cpList.get(i); X509Certificate cert = (X509Certificate) cpList.get(i);
if (debug != null) { if (debug != null) {
debug.println("RevocationChecker.buildToNewKey()" debug.println("RevocationChecker.buildToNewKey()"
+ " index " + i + " checking " + " index " + i + " checking "
+ cert); + cert);
} }
checkCRLs(cert, prevKey2, null, signFlag, true, checkCRLs(cert, prevKey2, null, signFlag, true,
stackedCerts, newAnchors); stackedCerts, newAnchors);
signFlag = certCanSignCrl(cert); signFlag = certCanSignCrl(cert);
prevKey2 = cert.getPublicKey(); prevKey2 = cert.getPublicKey();
} }
@ -1100,8 +1097,10 @@ class RevocationChecker extends PKIXRevocationChecker {
// If it doesn't check out, try to find a different key. // If it doesn't check out, try to find a different key.
// And if we can't find a key, then return false. // And if we can't find a key, then return false.
PublicKey newKey = cpbr.getPublicKey(); PublicKey newKey = cpbr.getPublicKey();
X509Certificate newCert = cpList.isEmpty() ?
null : (X509Certificate) cpList.get(0);
try { try {
checkCRLs(currCert, newKey, (X509Certificate) cpList.get(0), checkCRLs(currCert, newKey, newCert,
true, false, null, params.trustAnchors()); true, false, null, params.trustAnchors());
// If that passed, the cert is OK! // If that passed, the cert is OK!
return; return;

View File

@ -350,8 +350,6 @@ final class CipherSuite implements Comparable<CipherSuite> {
private static void add(String name, int id, int priority, private static void add(String name, int id, int priority,
KeyExchange keyExchange, BulkCipher cipher, MacAlg mac, KeyExchange keyExchange, BulkCipher cipher, MacAlg mac,
boolean allowed, int obsoleted) { boolean allowed, int obsoleted) {
// If this is an obsoleted suite, then don't let the TLS 1.2
// protocol have a valid PRF value.
PRF prf = obsoleted < ProtocolVersion.TLS12.v ? P_NONE : P_SHA256; PRF prf = obsoleted < ProtocolVersion.TLS12.v ? P_NONE : P_SHA256;
add(name, id, priority, keyExchange, cipher, mac, allowed, obsoleted, add(name, id, priority, keyExchange, cipher, mac, allowed, obsoleted,

View File

@ -672,6 +672,9 @@ final class ClientHandshaker extends Handshaker {
} }
} else { } else {
// we wanted to resume, but the server refused // we wanted to resume, but the server refused
//
// Invalidate the session in case of reusing next time.
session.invalidate();
session = null; session = null;
if (!enableNewSession) { if (!enableNewSession) {
throw new SSLException("New session creation is disabled"); throw new SSLException("New session creation is disabled");

View File

@ -26,6 +26,11 @@
package sun.security.ssl; package sun.security.ssl;
import java.util.Map;
import java.util.HashMap;
import java.util.Collections;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.math.BigInteger; import java.math.BigInteger;
import java.security.*; import java.security.*;
import java.io.IOException; import java.io.IOException;
@ -95,9 +100,35 @@ final class DHCrypt {
* Generate a Diffie-Hellman keypair of the specified size. * Generate a Diffie-Hellman keypair of the specified size.
*/ */
DHCrypt(int keyLength, SecureRandom random) { DHCrypt(int keyLength, SecureRandom random) {
this(keyLength,
ParametersHolder.definedParams.get(keyLength), random);
}
/**
* Generate a Diffie-Hellman keypair using the specified parameters.
*
* @param modulus the Diffie-Hellman modulus P
* @param base the Diffie-Hellman base G
*/
DHCrypt(BigInteger modulus, BigInteger base, SecureRandom random) {
this(modulus.bitLength(),
new DHParameterSpec(modulus, base), random);
}
/**
* Generate a Diffie-Hellman keypair using the specified size and
* parameters.
*/
private DHCrypt(int keyLength,
DHParameterSpec params, SecureRandom random) {
try { try {
KeyPairGenerator kpg = JsseJce.getKeyPairGenerator("DiffieHellman"); KeyPairGenerator kpg = JsseJce.getKeyPairGenerator("DiffieHellman");
kpg.initialize(keyLength, random); if (params != null) {
kpg.initialize(params, random);
} else {
kpg.initialize(keyLength, random);
}
DHPublicKeySpec spec = generateDHPublicKeySpec(kpg); DHPublicKeySpec spec = generateDHPublicKeySpec(kpg);
if (spec == null) { if (spec == null) {
@ -112,33 +143,6 @@ final class DHCrypt {
} }
} }
/**
* Generate a Diffie-Hellman keypair using the specified parameters.
*
* @param modulus the Diffie-Hellman modulus P
* @param base the Diffie-Hellman base G
*/
DHCrypt(BigInteger modulus, BigInteger base, SecureRandom random) {
this.modulus = modulus;
this.base = base;
try {
KeyPairGenerator kpg = JsseJce.getKeyPairGenerator("DiffieHellman");
DHParameterSpec params = new DHParameterSpec(modulus, base);
kpg.initialize(params, random);
DHPublicKeySpec spec = generateDHPublicKeySpec(kpg);
if (spec == null) {
throw new RuntimeException("Could not generate DH keypair");
}
publicValue = spec.getY();
} catch (GeneralSecurityException e) {
throw new RuntimeException("Could not generate DH keypair", e);
}
}
static DHPublicKeySpec getDHPublicKeySpec(PublicKey key) { static DHPublicKeySpec getDHPublicKeySpec(PublicKey key) {
if (key instanceof DHPublicKey) { if (key instanceof DHPublicKey) {
DHPublicKey dhKey = (DHPublicKey)key; DHPublicKey dhKey = (DHPublicKey)key;
@ -268,4 +272,141 @@ final class DHCrypt {
return null; return null;
} }
// lazy initialization holder class idiom for static default parameters
//
// See Effective Java Second Edition: Item 71.
private static class ParametersHolder {
private final static boolean debugIsOn =
(Debug.getInstance("ssl") != null) && Debug.isOn("sslctx");
//
// Default DH ephemeral parameters
//
private static final BigInteger g2 = BigInteger.valueOf(2);
private static final BigInteger p512 = new BigInteger( // generated
"D87780E15FF50B4ABBE89870188B049406B5BEA98AB23A02" +
"41D88EA75B7755E669C08093D3F0CA7FC3A5A25CF067DCB9" +
"A43DD89D1D90921C6328884461E0B6D3", 16);
private static final BigInteger p768 = new BigInteger( // RFC 2409
"FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" +
"29024E088A67CC74020BBEA63B139B22514A08798E3404DD" +
"EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" +
"E485B576625E7EC6F44C42E9A63A3620FFFFFFFFFFFFFFFF", 16);
private static final BigInteger p1024 = new BigInteger( // RFC 2409
"FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" +
"29024E088A67CC74020BBEA63B139B22514A08798E3404DD" +
"EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" +
"E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" +
"EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381" +
"FFFFFFFFFFFFFFFF", 16);
private static final BigInteger p2048 = new BigInteger( // TLS FEDHE
"FFFFFFFFFFFFFFFFADF85458A2BB4A9AAFDC5620273D3CF1" +
"D8B9C583CE2D3695A9E13641146433FBCC939DCE249B3EF9" +
"7D2FE363630C75D8F681B202AEC4617AD3DF1ED5D5FD6561" +
"2433F51F5F066ED0856365553DED1AF3B557135E7F57C935" +
"984F0C70E0E68B77E2A689DAF3EFE8721DF158A136ADE735" +
"30ACCA4F483A797ABC0AB182B324FB61D108A94BB2C8E3FB" +
"B96ADAB760D7F4681D4F42A3DE394DF4AE56EDE76372BB19" +
"0B07A7C8EE0A6D709E02FCE1CDF7E2ECC03404CD28342F61" +
"9172FE9CE98583FF8E4F1232EEF28183C3FE3B1B4C6FAD73" +
"3BB5FCBC2EC22005C58EF1837D1683B2C6F34A26C1B2EFFA" +
"886B423861285C97FFFFFFFFFFFFFFFF", 16);
private static final BigInteger[] supportedPrimes = {
p512, p768, p1024, p2048};
// a measure of the uncertainty that prime modulus p is not a prime
//
// see BigInteger.isProbablePrime(int certainty)
private final static int PRIME_CERTAINTY = 120;
// the known security property, jdk.tls.server.defaultDHEParameters
private final static String PROPERTY_NAME =
"jdk.tls.server.defaultDHEParameters";
private static final Pattern spacesPattern = Pattern.compile("\\s+");
private final static Pattern syntaxPattern = Pattern.compile(
"(\\{[0-9A-Fa-f]+,[0-9A-Fa-f]+\\})" +
"(,\\{[0-9A-Fa-f]+,[0-9A-Fa-f]+\\})*");
private static final Pattern paramsPattern = Pattern.compile(
"\\{([0-9A-Fa-f]+),([0-9A-Fa-f]+)\\}");
// cache of predefined default DH ephemeral parameters
private final static Map<Integer,DHParameterSpec> definedParams;
static {
String property = AccessController.doPrivileged(
new PrivilegedAction<String>() {
public String run() {
return Security.getProperty(PROPERTY_NAME);
}
});
if (property != null && !property.isEmpty()) {
// remove double quote marks from beginning/end of the property
if (property.length() >= 2 && property.charAt(0) == '"' &&
property.charAt(property.length() - 1) == '"') {
property = property.substring(1, property.length() - 1);
}
property = property.trim();
}
if (property != null && !property.isEmpty()) {
Matcher spacesMatcher = spacesPattern.matcher(property);
property = spacesMatcher.replaceAll("");
if (debugIsOn) {
System.out.println("The Security Property " +
PROPERTY_NAME + ": " + property);
}
}
Map<Integer,DHParameterSpec> defaultParams = new HashMap<>();
if (property != null && !property.isEmpty()) {
Matcher syntaxMatcher = syntaxPattern.matcher(property);
if (syntaxMatcher.matches()) {
Matcher paramsFinder = paramsPattern.matcher(property);
while(paramsFinder.find()) {
String primeModulus = paramsFinder.group(1);
BigInteger p = new BigInteger(primeModulus, 16);
if (!p.isProbablePrime(PRIME_CERTAINTY)) {
if (debugIsOn) {
System.out.println(
"Prime modulus p in Security Property, " +
PROPERTY_NAME + ", is not a prime: " +
primeModulus);
}
continue;
}
String baseGenerator = paramsFinder.group(2);
BigInteger g = new BigInteger(baseGenerator, 16);
DHParameterSpec spec = new DHParameterSpec(p, g);
int primeLen = p.bitLength();
defaultParams.put(primeLen, spec);
}
} else if (debugIsOn) {
System.out.println("Invalid Security Property, " +
PROPERTY_NAME + ", definition");
}
}
for (BigInteger p : supportedPrimes) {
int primeLen = p.bitLength();
defaultParams.putIfAbsent(primeLen, new DHParameterSpec(p, g2));
}
definedParams =
Collections.<Integer,DHParameterSpec>unmodifiableMap(
defaultParams);
}
}
} }

View File

@ -284,7 +284,7 @@ final class SSLEngineInputRecord extends InputRecord implements SSLRecord {
((plaintext.get() & 0xFF) << 8) | ((plaintext.get() & 0xFF) << 8) |
(plaintext.get() & 0xFF); (plaintext.get() & 0xFF);
plaintext.position(frgPos); plaintext.position(frgPos);
if (remains < (handshakeLen + 1)) { // 1: handshake type if (remains < (handshakeLen + 4)) { // 4: handshake header
// This handshake message is fragmented. // This handshake message is fragmented.
prevType = handshakeType; prevType = handshakeType;
hsMsgOff = remains - 4; // 4: handshake header hsMsgOff = remains - 4; // 4: handshake header

View File

@ -54,13 +54,12 @@ public abstract class AbstractAlgorithmConstraints
String[] algorithmsInProperty = null; String[] algorithmsInProperty = null;
if (property != null && !property.isEmpty()) { if (property != null && !property.isEmpty()) {
// remove double quote marks from beginning/end of the property // remove double quote marks from beginning/end of the property
if (property.charAt(0) == '"' if (property.length() >= 2 && property.charAt(0) == '"' &&
&& property.charAt(property.length() - 1) == '"') { property.charAt(property.length() - 1) == '"') {
property = property.substring(1, property.length() - 1); property = property.substring(1, property.length() - 1);
} }
algorithmsInProperty = property.split(","); algorithmsInProperty = property.split(",");
for (int i = 0; i < algorithmsInProperty.length; for (int i = 0; i < algorithmsInProperty.length; i++) {
i++) {
algorithmsInProperty[i] = algorithmsInProperty[i].trim(); algorithmsInProperty[i] = algorithmsInProperty[i].trim();
} }
} }

View File

@ -90,6 +90,31 @@ security.provider.tbd=apple.security.AppleProvider
security.provider.tbd=sun.security.pkcs11.SunPKCS11 security.provider.tbd=sun.security.pkcs11.SunPKCS11
#endif #endif
#
# A list of preferred providers for specific algorithms. These providers will
# be searched for matching algorithms before the list of registered providers.
# Entries containing errors (parsing, etc) will be ignored. Use the
# -Djava.security.debug=jca property to debug these errors.
#
# The property is a comma-separated list of serviceType.algorithm:provider
# entries. The serviceType (example: "MessageDigest") is optional, and if
# not specified, the algorithm applies to all service types that support it.
# The algorithm is the standard algorithm name or transformation.
# Transformations can be specified in their full standard name
# (ex: AES/CBC/PKCS5Padding), or as partial matches (ex: AES, AES/CBC).
# The provider is the name of the provider. Any provider that does not
# also appear in the registered list will be ignored.
#
# Example:
# jdk.security.provider.preferred=AES/GCM/NoPadding:SunJCE, \
# MessageDigest.SHA-256:SUN
#ifdef solaris-sparc
jdk.security.provider.preferred=AES:SunJCE, SHA-256:SUN, SHA-384:SUN, SHA-512:SUN
#endif
#ifdef solaris-x86
jdk.security.provider.preferred=AES:SunJCE, RSA:SunRsaSign
#endif
# #
# Sun Provider SecureRandom seed source. # Sun Provider SecureRandom seed source.
@ -234,6 +259,7 @@ package.access=sun.,\
com.sun.org.apache.xalan.internal.xsltc.util.,\ com.sun.org.apache.xalan.internal.xsltc.util.,\
com.sun.org.apache.xml.internal.res.,\ com.sun.org.apache.xml.internal.res.,\
com.sun.org.apache.xml.internal.security.,\ com.sun.org.apache.xml.internal.security.,\
com.sun.org.apache.xml.internal.serializer.dom3.,\
com.sun.org.apache.xml.internal.serializer.utils.,\ com.sun.org.apache.xml.internal.serializer.utils.,\
com.sun.org.apache.xml.internal.utils.,\ com.sun.org.apache.xml.internal.utils.,\
com.sun.org.glassfish.,\ com.sun.org.glassfish.,\
@ -289,6 +315,7 @@ package.definition=sun.,\
com.sun.org.apache.xalan.internal.xsltc.util.,\ com.sun.org.apache.xalan.internal.xsltc.util.,\
com.sun.org.apache.xml.internal.res.,\ com.sun.org.apache.xml.internal.res.,\
com.sun.org.apache.xml.internal.security.,\ com.sun.org.apache.xml.internal.security.,\
com.sun.org.apache.xml.internal.serializer.dom3.,\
com.sun.org.apache.xml.internal.serializer.utils.,\ com.sun.org.apache.xml.internal.serializer.utils.,\
com.sun.org.apache.xml.internal.utils.,\ com.sun.org.apache.xml.internal.utils.,\
com.sun.org.glassfish.,\ com.sun.org.glassfish.,\
@ -607,3 +634,60 @@ jdk.tls.legacyAlgorithms= \
DH_RSA_EXPORT, RSA_EXPORT, \ DH_RSA_EXPORT, RSA_EXPORT, \
DH_anon, ECDH_anon, \ DH_anon, ECDH_anon, \
RC4_128, RC4_40, DES_CBC, DES40_CBC RC4_128, RC4_40, DES_CBC, DES40_CBC
# The pre-defined default finite field Diffie-Hellman ephemeral (DHE)
# parameters for Transport Layer Security (SSL/TLS/DTLS) processing.
#
# In traditional SSL/TLS/DTLS connections where finite field DHE parameters
# negotiation mechanism is not used, the server offers the client group
# parameters, base generator g and prime modulus p, for DHE key exchange.
# It is recommended to use dynamic group parameters. This property defines
# a mechanism that allows you to specify custom group parameters.
#
# The syntax of this property string is described as this Java BNF-style:
# DefaultDHEParameters:
# DefinedDHEParameters { , DefinedDHEParameters }
#
# DefinedDHEParameters:
# "{" DHEPrimeModulus , DHEBaseGenerator "}"
#
# DHEPrimeModulus:
# HexadecimalDigits
#
# DHEBaseGenerator:
# HexadecimalDigits
#
# HexadecimalDigits:
# HexadecimalDigit { HexadecimalDigit }
#
# HexadecimalDigit: one of
# 0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f
#
# Whitespace characters are ignored.
#
# The "DefinedDHEParameters" defines the custom group parameters, prime
# modulus p and base generator g, for a particular size of prime modulus p.
# The "DHEPrimeModulus" defines the hexadecimal prime modulus p, and the
# "DHEBaseGenerator" defines the hexadecimal base generator g of a group
# parameter. It is recommended to use safe primes for the custom group
# parameters.
#
# If this property is not defined or the value is empty, the underlying JSSE
# provider's default group parameter is used for each connection.
#
# If the property value does not follow the grammar, or a particular group
# parameter is not valid, the connection will fall back and use the
# underlying JSSE provider's default group parameter.
#
# Note: This property is currently used by OpenJDK's JSSE implementation. It
# is not guaranteed to be examined and used by other implementations.
#
# Example:
# jdk.tls.server.defaultDHEParameters=
# { \
# FFFFFFFF FFFFFFFF C90FDAA2 2168C234 C4C6628B 80DC1CD1 \
# 29024E08 8A67CC74 020BBEA6 3B139B22 514A0879 8E3404DD \
# EF9519B3 CD3A431B 302B0A6D F25F1437 4FE1356D 6D51C245 \
# E485B576 625E7EC6 F44C42E9 A637ED6B 0BFF5CB6 F406B7ED \
# EE386BFB 5A899FA5 AE9F2411 7C4B1FE6 49286651 ECE65381 \
# FFFFFFFF FFFFFFFF, 2}

View File

@ -38,6 +38,7 @@ jfieldID ia_holderID;
jfieldID iac_addressID; jfieldID iac_addressID;
jfieldID iac_familyID; jfieldID iac_familyID;
jfieldID iac_hostNameID; jfieldID iac_hostNameID;
jfieldID iac_origHostNameID;
jfieldID ia_preferIPv6AddressID; jfieldID ia_preferIPv6AddressID;
static int ia_initialized = 0; static int ia_initialized = 0;
@ -69,6 +70,8 @@ Java_java_net_InetAddress_init(JNIEnv *env, jclass cls) {
CHECK_NULL(iac_familyID); CHECK_NULL(iac_familyID);
iac_hostNameID = (*env)->GetFieldID(env, iac_class, "hostName", "Ljava/lang/String;"); iac_hostNameID = (*env)->GetFieldID(env, iac_class, "hostName", "Ljava/lang/String;");
CHECK_NULL(iac_hostNameID); CHECK_NULL(iac_hostNameID);
iac_origHostNameID = (*env)->GetFieldID(env, iac_class, "originalHostName", "Ljava/lang/String;");
CHECK_NULL(iac_origHostNameID);
ia_initialized = 1; ia_initialized = 1;
} }
} }

View File

@ -174,6 +174,7 @@ void setInetAddress_family(JNIEnv *env, jobject iaObj, int family) {
void setInetAddress_hostName(JNIEnv *env, jobject iaObj, jobject host) { void setInetAddress_hostName(JNIEnv *env, jobject iaObj, jobject host) {
jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID); jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID);
(*env)->SetObjectField(env, holder, iac_hostNameID, host); (*env)->SetObjectField(env, holder, iac_hostNameID, host);
(*env)->SetObjectField(env, holder, iac_origHostNameID, host);
} }
int getInetAddress_addr(JNIEnv *env, jobject iaObj) { int getInetAddress_addr(JNIEnv *env, jobject iaObj) {

View File

@ -53,6 +53,7 @@ extern jclass ia_class;
extern jfieldID iac_addressID; extern jfieldID iac_addressID;
extern jfieldID iac_familyID; extern jfieldID iac_familyID;
extern jfieldID iac_hostNameID; extern jfieldID iac_hostNameID;
extern jfieldID iac_origHostNameID;
extern jfieldID ia_preferIPv6AddressID; extern jfieldID ia_preferIPv6AddressID;
JNIEXPORT void JNICALL initInetAddressIDs(JNIEnv *env); JNIEXPORT void JNICALL initInetAddressIDs(JNIEnv *env);

View File

@ -74,3 +74,4 @@ RICH_TEXT=text/rtf
HTML=text/html;charset=utf-8;eoln="\r\n";terminators=1 HTML=text/html;charset=utf-8;eoln="\r\n";terminators=1
URL=application/x-java-url;class=java.net.URL,\ URL=application/x-java-url;class=java.net.URL,\
text/uri-list;eoln="\r\n";terminators=1 text/uri-list;eoln="\r\n";terminators=1
XPICT=image/x-pict;class=java.io.InputStream

View File

@ -54,7 +54,8 @@ public class CDataTransferer extends DataTransferer {
"PDF", "PDF",
"URL", "URL",
"PNG", "PNG",
"JFIF" "JFIF",
"XPICT"
}; };
static { static {
@ -78,6 +79,7 @@ public class CDataTransferer extends DataTransferer {
public static final int CF_URL = 7; public static final int CF_URL = 7;
public static final int CF_PNG = 8; public static final int CF_PNG = 8;
public static final int CF_JPEG = 9; public static final int CF_JPEG = 9;
public static final int CF_XPICT = 10;
private CDataTransferer() {} private CDataTransferer() {}

View File

@ -56,6 +56,8 @@ NSMutableDictionary *getMappingTable() {
forKey:[NSNumber numberWithLong:sun_lwawt_macosx_CDataTransferer_CF_PNG]]; forKey:[NSNumber numberWithLong:sun_lwawt_macosx_CDataTransferer_CF_PNG]];
[sStandardMappings setObject:(NSString*)kUTTypeJPEG [sStandardMappings setObject:(NSString*)kUTTypeJPEG
forKey:[NSNumber numberWithLong:sun_lwawt_macosx_CDataTransferer_CF_JPEG]]; forKey:[NSNumber numberWithLong:sun_lwawt_macosx_CDataTransferer_CF_JPEG]];
[sStandardMappings setObject:NSPICTPboardType
forKey:[NSNumber numberWithLong:sun_lwawt_macosx_CDataTransferer_CF_XPICT]];
} }
return sStandardMappings; return sStandardMappings;
} }

View File

@ -290,6 +290,8 @@ public class BMPImageReader extends ImageReader implements BMPConstants {
imageType = VERSION_2_8_BIT; imageType = VERSION_2_8_BIT;
} else if (bitsPerPixel == 24) { } else if (bitsPerPixel == 24) {
imageType = VERSION_2_24_BIT; imageType = VERSION_2_24_BIT;
} else {
throw new IIOException(I18N.getString("BMPImageReader8"));
} }
// Read in the palette // Read in the palette
@ -364,6 +366,9 @@ public class BMPImageReader extends ImageReader implements BMPConstants {
metadata.redMask = redMask; metadata.redMask = redMask;
metadata.greenMask = greenMask; metadata.greenMask = greenMask;
metadata.blueMask = blueMask; metadata.blueMask = blueMask;
} else {
throw new
IIOException(I18N.getString("BMPImageReader8"));
} }
metadata.bmpVersion = VERSION_3; metadata.bmpVersion = VERSION_3;
@ -375,6 +380,9 @@ public class BMPImageReader extends ImageReader implements BMPConstants {
imageType = VERSION_3_NT_16_BIT; imageType = VERSION_3_NT_16_BIT;
} else if (bitsPerPixel == 32) { } else if (bitsPerPixel == 32) {
imageType = VERSION_3_NT_32_BIT; imageType = VERSION_3_NT_32_BIT;
} else {
throw new
IIOException(I18N.getString("BMPImageReader8"));
} }
// BitsField encoding // BitsField encoding
@ -493,6 +501,9 @@ public class BMPImageReader extends ImageReader implements BMPConstants {
greenMask = 0x0000FF00; greenMask = 0x0000FF00;
blueMask = 0x000000FF; blueMask = 0x000000FF;
} }
} else {
throw new
IIOException(I18N.getString("BMPImageReader8"));
} }
metadata.redMask = redMask; metadata.redMask = redMask;

View File

@ -23,6 +23,7 @@ BMPImageReader4=No ImageIO-style reader is found for
BMPImageReader5=Input has not been set. BMPImageReader5=Input has not been set.
BMPImageReader6=Unable to read the image header. BMPImageReader6=Unable to read the image header.
BMPImageReader7=Invalid bitmap offset. BMPImageReader7=Invalid bitmap offset.
BMPImageReader8=Invalid bits per pixel in image header.
BMPImageWriter0=Output is not an ImageOutputStream. BMPImageWriter0=Output is not an ImageOutputStream.
BMPImageWriter1=The image region to be encoded is empty. BMPImageWriter1=The image region to be encoded is empty.
BMPImageWriter2=Only 1 or 3 band image is encoded. BMPImageWriter2=Only 1 or 3 band image is encoded.

View File

@ -1569,6 +1569,11 @@ public class WindowsLookAndFeel extends BasicLookAndFeel
&& OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_VISTA) >= 0; && OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_VISTA) >= 0;
} }
static boolean isOnWindows7() {
return OSInfo.getOSType() == OSInfo.OSType.WINDOWS
&& OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_7) >= 0;
}
private void initVistaComponentDefaults(UIDefaults table) { private void initVistaComponentDefaults(UIDefaults table) {
if (! isOnVista()) { if (! isOnVista()) {
return; return;
@ -1638,28 +1643,30 @@ public class WindowsLookAndFeel extends BasicLookAndFeel
} }
table.putDefaults(menuDefaults); table.putDefaults(menuDefaults);
/* no margins */ /*For Windows7 margin and checkIconOffset should be greater than 0 */
InsetsUIResource insets = new InsetsUIResource(0, 0, 0, 0); if (!isOnWindows7()) {
for (int i = 0, j = 0; i < menuClasses.length; i++) { /* no margins */
String key = menuClasses[i] + ".margin"; InsetsUIResource insets = new InsetsUIResource(0, 0, 0, 0);
Object oldValue = table.get(key); for (int i = 0, j = 0; i < menuClasses.length; i++) {
menuDefaults[j++] = key; String key = menuClasses[i] + ".margin";
menuDefaults[j++] = new XPValue(insets, oldValue); Object oldValue = table.get(key);
} menuDefaults[j++] = key;
table.putDefaults(menuDefaults); menuDefaults[j++] = new XPValue(insets, oldValue);
}
table.putDefaults(menuDefaults);
/* set checkIcon offset */ /* set checkIcon offset */
Integer checkIconOffsetInteger = Integer checkIconOffsetInteger =
Integer.valueOf(0); Integer.valueOf(0);
for (int i = 0, j = 0; i < menuClasses.length; i++) { for (int i = 0, j = 0; i < menuClasses.length; i++) {
String key = menuClasses[i] + ".checkIconOffset"; String key = menuClasses[i] + ".checkIconOffset";
Object oldValue = table.get(key); Object oldValue = table.get(key);
menuDefaults[j++] = key; menuDefaults[j++] = key;
menuDefaults[j++] = menuDefaults[j++] =
new XPValue(checkIconOffsetInteger, oldValue); new XPValue(checkIconOffsetInteger, oldValue);
}
table.putDefaults(menuDefaults);
} }
table.putDefaults(menuDefaults);
/* set width of the gap after check icon */ /* set width of the gap after check icon */
Integer afterCheckIconGap = WindowsPopupMenuUI.getSpanBeforeGutter() Integer afterCheckIconGap = WindowsPopupMenuUI.getSpanBeforeGutter()
+ WindowsPopupMenuUI.getGutterWidth() + WindowsPopupMenuUI.getGutterWidth()

View File

@ -26,6 +26,7 @@
package java.awt; package java.awt;
import java.awt.peer.ButtonPeer; import java.awt.peer.ButtonPeer;
import java.beans.BeanProperty;
import java.util.EventListener; import java.util.EventListener;
import java.awt.event.*; import java.awt.event.*;
import java.io.ObjectOutputStream; import java.io.ObjectOutputStream;
@ -511,11 +512,10 @@ public class Button extends Component implements Accessible {
* *
* @return an <code>AccessibleAWTButton</code> that serves as the * @return an <code>AccessibleAWTButton</code> that serves as the
* <code>AccessibleContext</code> of this <code>Button</code> * <code>AccessibleContext</code> of this <code>Button</code>
* @beaninfo
* expert: true
* description: The AccessibleContext associated with this Button.
* @since 1.3 * @since 1.3
*/ */
@BeanProperty(expert = true, description
= "The AccessibleContext associated with this Button.")
public AccessibleContext getAccessibleContext() { public AccessibleContext getAccessibleContext() {
if (accessibleContext == null) { if (accessibleContext == null) {
accessibleContext = new AccessibleAWTButton(); accessibleContext = new AccessibleAWTButton();

View File

@ -1763,8 +1763,6 @@ public abstract class Component implements ImageObserver, MenuContainer,
* is returned * is returned
* @see #setForeground * @see #setForeground
* @since 1.0 * @since 1.0
* @beaninfo
* bound: true
*/ */
@Transient @Transient
public Color getForeground() { public Color getForeground() {
@ -1843,8 +1841,6 @@ public abstract class Component implements ImageObserver, MenuContainer,
* component will inherit the background color of its parent * component will inherit the background color of its parent
* @see #getBackground * @see #getBackground
* @since 1.0 * @since 1.0
* @beaninfo
* bound: true
*/ */
public void setBackground(Color c) { public void setBackground(Color c) {
Color oldColor = background; Color oldColor = background;
@ -1911,8 +1907,6 @@ public abstract class Component implements ImageObserver, MenuContainer,
* @see #getFont * @see #getFont
* @see #invalidate * @see #invalidate
* @since 1.0 * @since 1.0
* @beaninfo
* bound: true
*/ */
public void setFont(Font f) { public void setFont(Font f) {
Font oldFont, newFont; Font oldFont, newFont;
@ -7234,8 +7228,6 @@ public abstract class Component implements ImageObserver, MenuContainer,
* @param focusable indicates whether this Component is focusable * @param focusable indicates whether this Component is focusable
* @see #isFocusable * @see #isFocusable
* @since 1.4 * @since 1.4
* @beaninfo
* bound: true
*/ */
public void setFocusable(boolean focusable) { public void setFocusable(boolean focusable) {
boolean oldFocusable; boolean oldFocusable;
@ -7327,8 +7319,6 @@ public abstract class Component implements ImageObserver, MenuContainer,
* or if any keystroke already maps to another focus traversal * or if any keystroke already maps to another focus traversal
* operation for this Component * operation for this Component
* @since 1.4 * @since 1.4
* @beaninfo
* bound: true
*/ */
public void setFocusTraversalKeys(int id, public void setFocusTraversalKeys(int id,
Set<? extends AWTKeyStroke> keystrokes) Set<? extends AWTKeyStroke> keystrokes)
@ -7479,8 +7469,6 @@ public abstract class Component implements ImageObserver, MenuContainer,
* @see #setFocusTraversalKeys * @see #setFocusTraversalKeys
* @see #getFocusTraversalKeys * @see #getFocusTraversalKeys
* @since 1.4 * @since 1.4
* @beaninfo
* bound: true
*/ */
public void setFocusTraversalKeysEnabled(boolean public void setFocusTraversalKeysEnabled(boolean
focusTraversalKeysEnabled) { focusTraversalKeysEnabled) {
@ -8995,8 +8983,6 @@ public abstract class Component implements ImageObserver, MenuContainer,
* @see #invalidate * @see #invalidate
* *
* @author Laura Werner, IBM * @author Laura Werner, IBM
* @beaninfo
* bound: true
*/ */
public void setComponentOrientation(ComponentOrientation o) { public void setComponentOrientation(ComponentOrientation o) {
ComponentOrientation oldValue = componentOrientation; ComponentOrientation oldValue = componentOrientation;

View File

@ -3131,8 +3131,6 @@ public class Container extends Component {
* or if any keystroke already maps to another focus traversal * or if any keystroke already maps to another focus traversal
* operation for this Container * operation for this Container
* @since 1.4 * @since 1.4
* @beaninfo
* bound: true
*/ */
public void setFocusTraversalKeys(int id, public void setFocusTraversalKeys(int id,
Set<? extends AWTKeyStroke> keystrokes) Set<? extends AWTKeyStroke> keystrokes)
@ -3347,8 +3345,6 @@ public class Container extends Component {
* @see #setFocusCycleRoot * @see #setFocusCycleRoot
* @see #isFocusCycleRoot * @see #isFocusCycleRoot
* @since 1.4 * @since 1.4
* @beaninfo
* bound: true
*/ */
public void setFocusTraversalPolicy(FocusTraversalPolicy policy) { public void setFocusTraversalPolicy(FocusTraversalPolicy policy) {
FocusTraversalPolicy oldPolicy; FocusTraversalPolicy oldPolicy;
@ -3427,8 +3423,6 @@ public class Container extends Component {
* @see ContainerOrderFocusTraversalPolicy * @see ContainerOrderFocusTraversalPolicy
* @see #setFocusTraversalPolicyProvider * @see #setFocusTraversalPolicyProvider
* @since 1.4 * @since 1.4
* @beaninfo
* bound: true
*/ */
public void setFocusCycleRoot(boolean focusCycleRoot) { public void setFocusCycleRoot(boolean focusCycleRoot) {
boolean oldFocusCycleRoot; boolean oldFocusCycleRoot;
@ -3472,8 +3466,6 @@ public class Container extends Component {
* @see #getFocusTraversalPolicy * @see #getFocusTraversalPolicy
* @see #isFocusTraversalPolicyProvider * @see #isFocusTraversalPolicyProvider
* @since 1.5 * @since 1.5
* @beaninfo
* bound: true
*/ */
public final void setFocusTraversalPolicyProvider(boolean provider) { public final void setFocusTraversalPolicyProvider(boolean provider) {
boolean oldProvider; boolean oldProvider;
@ -3499,8 +3491,6 @@ public class Container extends Component {
* @return <code>true</code> if this container provides focus traversal * @return <code>true</code> if this container provides focus traversal
* policy, <code>false</code> otherwise * policy, <code>false</code> otherwise
* @since 1.5 * @since 1.5
* @beaninfo
* bound: true
*/ */
public final boolean isFocusTraversalPolicyProvider() { public final boolean isFocusTraversalPolicyProvider() {
return focusTraversalPolicyProvider; return focusTraversalPolicyProvider;

View File

@ -174,6 +174,12 @@ public class FileDialog extends Dialog {
* Creates a file dialog for loading a file. The title of the * Creates a file dialog for loading a file. The title of the
* file dialog is initially empty. This is a convenience method for * file dialog is initially empty. This is a convenience method for
* <code>FileDialog(parent, "", LOAD)</code>. * <code>FileDialog(parent, "", LOAD)</code>.
* <p>
* <strong>Note:</strong> Some platforms may not support
* showing the user-specified title in a file dialog.
* In this situation, either no title will be displayed in the file dialog's
* title bar or, on some systems, the file dialog's title bar will not be
* displayed.
* *
* @param parent the owner of the dialog * @param parent the owner of the dialog
* @since 1.1 * @since 1.1
@ -187,6 +193,12 @@ public class FileDialog extends Dialog {
* a file. The files shown are those in the current directory. * a file. The files shown are those in the current directory.
* This is a convenience method for * This is a convenience method for
* <code>FileDialog(parent, title, LOAD)</code>. * <code>FileDialog(parent, title, LOAD)</code>.
* <p>
* <strong>Note:</strong> Some platforms may not support
* showing the user-specified title in a file dialog.
* In this situation, either no title will be displayed in the file dialog's
* title bar or, on some systems, the file dialog's title bar will not be
* displayed.
* *
* @param parent the owner of the dialog * @param parent the owner of the dialog
* @param title the title of the dialog * @param title the title of the dialog
@ -204,6 +216,12 @@ public class FileDialog extends Dialog {
* in the current directory. If the value of * in the current directory. If the value of
* <code>mode</code> is <code>SAVE</code>, the file dialog is finding * <code>mode</code> is <code>SAVE</code>, the file dialog is finding
* a place to write a file. * a place to write a file.
* <p>
* <strong>Note:</strong> Some platforms may not support
* showing the user-specified title in a file dialog.
* In this situation, either no title will be displayed in the file dialog's
* title bar or, on some systems, the file dialog's title bar will not be
* displayed.
* *
* @param parent the owner of the dialog * @param parent the owner of the dialog
* @param title the title of the dialog * @param title the title of the dialog
@ -224,6 +242,12 @@ public class FileDialog extends Dialog {
* Creates a file dialog for loading a file. The title of the * Creates a file dialog for loading a file. The title of the
* file dialog is initially empty. This is a convenience method for * file dialog is initially empty. This is a convenience method for
* <code>FileDialog(parent, "", LOAD)</code>. * <code>FileDialog(parent, "", LOAD)</code>.
* <p>
* <strong>Note:</strong> Some platforms may not support
* showing the user-specified title in a file dialog.
* In this situation, either no title will be displayed in the file dialog's
* title bar or, on some systems, the file dialog's title bar will not be
* displayed.
* *
* @param parent the owner of the dialog * @param parent the owner of the dialog
* @exception java.lang.IllegalArgumentException if the <code>parent</code>'s * @exception java.lang.IllegalArgumentException if the <code>parent</code>'s
@ -245,6 +269,12 @@ public class FileDialog extends Dialog {
* a file. The files shown are those in the current directory. * a file. The files shown are those in the current directory.
* This is a convenience method for * This is a convenience method for
* <code>FileDialog(parent, title, LOAD)</code>. * <code>FileDialog(parent, title, LOAD)</code>.
* <p>
* <strong>Note:</strong> Some platforms may not support
* showing the user-specified title in a file dialog.
* In this situation, either no title will be displayed in the file dialog's
* title bar or, on some systems, the file dialog's title bar will not be
* displayed.
* *
* @param parent the owner of the dialog * @param parent the owner of the dialog
* @param title the title of the dialog; a <code>null</code> value * @param title the title of the dialog; a <code>null</code> value
@ -273,6 +303,12 @@ public class FileDialog extends Dialog {
* in the current directory. If the value of * in the current directory. If the value of
* <code>mode</code> is <code>SAVE</code>, the file dialog is finding * <code>mode</code> is <code>SAVE</code>, the file dialog is finding
* a place to write a file. * a place to write a file.
* <p>
* <strong>Note:</strong> Some platforms may not support
* showing the user-specified title in a file dialog.
* In this situation, either no title will be displayed in the file dialog's
* title bar or, on some systems, the file dialog's title bar will not be
* displayed.
* *
* @param parent the owner of the dialog * @param parent the owner of the dialog
* @param title the title of the dialog; a <code>null</code> value * @param title the title of the dialog; a <code>null</code> value
@ -300,6 +336,22 @@ public class FileDialog extends Dialog {
setLayout(null); setLayout(null);
} }
/**
* {@inheritDoc}
* <p>
* <strong>Note:</strong> Some platforms may not support
* showing the user-specified title in a file dialog.
* In this situation, either no title will be displayed in the file dialog's
* title bar or, on some systems, the file dialog's title bar will not be
* displayed.
*/
@Override
public void setTitle(String title) {
super.setTitle(title);
}
/** /**
* Constructs a name for this component. Called by <code>getName()</code> * Constructs a name for this component. Called by <code>getName()</code>
* when the name is <code>null</code>. * when the name is <code>null</code>.

View File

@ -528,8 +528,6 @@ public abstract class KeyboardFocusManager
* current KeyboardFocusManager for the calling thread's context * current KeyboardFocusManager for the calling thread's context
* and if the calling thread does not have "replaceKeyboardFocusManager" * and if the calling thread does not have "replaceKeyboardFocusManager"
* permission * permission
* @beaninfo
* bound: true
*/ */
protected void setGlobalFocusOwner(Component focusOwner) protected void setGlobalFocusOwner(Component focusOwner)
throws SecurityException throws SecurityException
@ -744,8 +742,6 @@ public abstract class KeyboardFocusManager
* current KeyboardFocusManager for the calling thread's context * current KeyboardFocusManager for the calling thread's context
* and if the calling thread does not have "replaceKeyboardFocusManager" * and if the calling thread does not have "replaceKeyboardFocusManager"
* permission * permission
* @beaninfo
* bound: true
*/ */
protected void setGlobalPermanentFocusOwner(Component permanentFocusOwner) protected void setGlobalPermanentFocusOwner(Component permanentFocusOwner)
throws SecurityException throws SecurityException
@ -847,8 +843,6 @@ public abstract class KeyboardFocusManager
* current KeyboardFocusManager for the calling thread's context * current KeyboardFocusManager for the calling thread's context
* and if the calling thread does not have "replaceKeyboardFocusManager" * and if the calling thread does not have "replaceKeyboardFocusManager"
* permission * permission
* @beaninfo
* bound: true
*/ */
protected void setGlobalFocusedWindow(Window focusedWindow) protected void setGlobalFocusedWindow(Window focusedWindow)
throws SecurityException throws SecurityException
@ -952,8 +946,6 @@ public abstract class KeyboardFocusManager
* current KeyboardFocusManager for the calling thread's context * current KeyboardFocusManager for the calling thread's context
* and if the calling thread does not have "replaceKeyboardFocusManager" * and if the calling thread does not have "replaceKeyboardFocusManager"
* permission * permission
* @beaninfo
* bound: true
*/ */
protected void setGlobalActiveWindow(Window activeWindow) protected void setGlobalActiveWindow(Window activeWindow)
throws SecurityException throws SecurityException
@ -1008,8 +1000,6 @@ public abstract class KeyboardFocusManager
* @see Container#setFocusTraversalPolicy * @see Container#setFocusTraversalPolicy
* @see Container#getFocusTraversalPolicy * @see Container#getFocusTraversalPolicy
* @throws IllegalArgumentException if defaultPolicy is null * @throws IllegalArgumentException if defaultPolicy is null
* @beaninfo
* bound: true
*/ */
public void setDefaultFocusTraversalPolicy(FocusTraversalPolicy public void setDefaultFocusTraversalPolicy(FocusTraversalPolicy
defaultPolicy) { defaultPolicy) {
@ -1113,8 +1103,6 @@ public abstract class KeyboardFocusManager
* represents a {@code KEY_TYPED} event, * represents a {@code KEY_TYPED} event,
* or if any keystroke already maps * or if any keystroke already maps
* to another default focus traversal operation * to another default focus traversal operation
* @beaninfo
* bound: true
*/ */
public void public void
setDefaultFocusTraversalKeys(int id, setDefaultFocusTraversalKeys(int id,
@ -1272,8 +1260,6 @@ public abstract class KeyboardFocusManager
* @see #getGlobalCurrentFocusCycleRoot * @see #getGlobalCurrentFocusCycleRoot
* @throws SecurityException if the calling thread does not have * @throws SecurityException if the calling thread does not have
* "replaceKeyboardFocusManager" permission * "replaceKeyboardFocusManager" permission
* @beaninfo
* bound: true
*/ */
public void setGlobalCurrentFocusCycleRoot(Container newFocusCycleRoot) public void setGlobalCurrentFocusCycleRoot(Container newFocusCycleRoot)
throws SecurityException throws SecurityException

View File

@ -327,9 +327,8 @@ public class TextArea extends TextComponent {
TextAreaPeer peer = (TextAreaPeer)this.peer; TextAreaPeer peer = (TextAreaPeer)this.peer;
if (peer != null) { if (peer != null) {
peer.insert(str, pos); peer.insert(str, pos);
} else {
text = text.substring(0, pos) + str + text.substring(pos);
} }
text = text.substring(0, pos) + str + text.substring(pos);
} }
/** /**
@ -355,11 +354,7 @@ public class TextArea extends TextComponent {
*/ */
@Deprecated @Deprecated
public synchronized void appendText(String str) { public synchronized void appendText(String str) {
if (peer != null) {
insertText(str, getText().length()); insertText(str, getText().length());
} else {
text = text + str;
}
} }
/** /**
@ -403,9 +398,8 @@ public class TextArea extends TextComponent {
TextAreaPeer peer = (TextAreaPeer)this.peer; TextAreaPeer peer = (TextAreaPeer)this.peer;
if (peer != null) { if (peer != null) {
peer.replaceRange(str, start, end); peer.replaceRange(str, start, end);
} else {
text = text.substring(0, start) + str + text.substring(end);
} }
text = text.substring(0, start) + str + text.substring(end);
} }
/** /**

View File

@ -672,7 +672,7 @@ public final class NumericShaper implements java.io.Serializable {
0x0825, 0x0828, 0x0825, 0x0828,
0x0829, 0x082e, 0x0829, 0x082e,
0x0859, 0x085c, 0x0859, 0x085c,
0x08e4, 0x0903, 0x08e3, 0x0903,
0x093a, 0x093b, 0x093a, 0x093b,
0x093c, 0x093d, 0x093c, 0x093d,
0x0941, 0x0949, 0x0941, 0x0949,
@ -721,7 +721,8 @@ public final class NumericShaper implements java.io.Serializable {
0x0acd, 0x0ad0, 0x0acd, 0x0ad0,
0x0ad1, 0x0ae0, 0x0ad1, 0x0ae0,
0x0ae2, 0x0ae6, 0x0ae2, 0x0ae6,
0x0af1, 0x0b02, 0x0af1, 0x0af9,
0x0afa, 0x0b02,
0x0b04, 0x0b05, 0x0b04, 0x0b05,
0x0b0d, 0x0b0f, 0x0b0d, 0x0b0f,
0x0b11, 0x0b13, 0x0b11, 0x0b13,
@ -761,7 +762,7 @@ public final class NumericShaper implements java.io.Serializable {
0x0c3a, 0x0c3d, 0x0c3a, 0x0c3d,
0x0c3e, 0x0c41, 0x0c3e, 0x0c41,
0x0c45, 0x0c58, 0x0c45, 0x0c58,
0x0c5a, 0x0c60, 0x0c5b, 0x0c60,
0x0c62, 0x0c66, 0x0c62, 0x0c66,
0x0c70, 0x0c7f, 0x0c70, 0x0c7f,
0x0c80, 0x0c82, 0x0c80, 0x0c82,
@ -787,7 +788,7 @@ public final class NumericShaper implements java.io.Serializable {
0x0d49, 0x0d4a, 0x0d49, 0x0d4a,
0x0d4d, 0x0d4e, 0x0d4d, 0x0d4e,
0x0d4f, 0x0d57, 0x0d4f, 0x0d57,
0x0d58, 0x0d60, 0x0d58, 0x0d5f,
0x0d62, 0x0d66, 0x0d62, 0x0d66,
0x0d76, 0x0d79, 0x0d76, 0x0d79,
0x0d80, 0x0d82, 0x0d80, 0x0d82,
@ -867,7 +868,8 @@ public final class NumericShaper implements java.io.Serializable {
0x135b, 0x1360, 0x135b, 0x1360,
0x137d, 0x1380, 0x137d, 0x1380,
0x1390, 0x13a0, 0x1390, 0x13a0,
0x13f5, 0x1401, 0x13f6, 0x13f8,
0x13fe, 0x1401,
0x1680, 0x1681, 0x1680, 0x1681,
0x169b, 0x16a0, 0x169b, 0x16a0,
0x16f9, 0x1700, 0x16f9, 0x1700,
@ -1019,7 +1021,7 @@ public final class NumericShaper implements java.io.Serializable {
0x33de, 0x33e0, 0x33de, 0x33e0,
0x33ff, 0x3400, 0x33ff, 0x3400,
0x4db6, 0x4e00, 0x4db6, 0x4e00,
0x9fcd, 0xa000, 0x9fd6, 0xa000,
0xa48d, 0xa4d0, 0xa48d, 0xa4d0,
0xa60d, 0xa610, 0xa60d, 0xa610,
0xa62c, 0xa640, 0xa62c, 0xa640,
@ -1028,9 +1030,8 @@ public final class NumericShaper implements java.io.Serializable {
0xa6f0, 0xa6f2, 0xa6f0, 0xa6f2,
0xa6f8, 0xa722, 0xa6f8, 0xa722,
0xa788, 0xa789, 0xa788, 0xa789,
0xa78f, 0xa790,
0xa7ae, 0xa7b0, 0xa7ae, 0xa7b0,
0xa7b2, 0xa7f7, 0xa7b8, 0xa7f7,
0xa802, 0xa803, 0xa802, 0xa803,
0xa806, 0xa807, 0xa806, 0xa807,
0xa80b, 0xa80c, 0xa80b, 0xa80c,
@ -1040,7 +1041,7 @@ public final class NumericShaper implements java.io.Serializable {
0xa874, 0xa880, 0xa874, 0xa880,
0xa8c4, 0xa8ce, 0xa8c4, 0xa8ce,
0xa8da, 0xa8f2, 0xa8da, 0xa8f2,
0xa8fc, 0xa900, 0xa8fe, 0xa900,
0xa926, 0xa92e, 0xa926, 0xa92e,
0xa947, 0xa952, 0xa947, 0xa952,
0xa954, 0xa95f, 0xa954, 0xa95f,
@ -1073,8 +1074,7 @@ public final class NumericShaper implements java.io.Serializable {
0xab17, 0xab20, 0xab17, 0xab20,
0xab27, 0xab28, 0xab27, 0xab28,
0xab2f, 0xab30, 0xab2f, 0xab30,
0xab60, 0xab64, 0xab66, 0xab70,
0xab66, 0xabc0,
0xabe5, 0xabe6, 0xabe5, 0xabe6,
0xabe8, 0xabe9, 0xabe8, 0xabe9,
0xabed, 0xabf0, 0xabed, 0xabf0,
@ -1152,15 +1152,20 @@ public final class NumericShaper implements java.io.Serializable {
0x11173, 0x11174, 0x11173, 0x11174,
0x11177, 0x11182, 0x11177, 0x11182,
0x111b6, 0x111bf, 0x111b6, 0x111bf,
0x111c9, 0x111cd, 0x111ca, 0x111cd,
0x111ce, 0x111d0, 0x111ce, 0x111d0,
0x111db, 0x111e1, 0x111e0, 0x111e1,
0x111f5, 0x11200, 0x111f5, 0x11200,
0x11212, 0x11213, 0x11212, 0x11213,
0x1122f, 0x11232, 0x1122f, 0x11232,
0x11234, 0x11235, 0x11234, 0x11235,
0x11236, 0x11238, 0x11236, 0x11238,
0x1123e, 0x112b0, 0x1123e, 0x11280,
0x11287, 0x11288,
0x11289, 0x1128a,
0x1128e, 0x1128f,
0x1129e, 0x1129f,
0x112aa, 0x112b0,
0x112df, 0x112e0, 0x112df, 0x112e0,
0x112e3, 0x112f0, 0x112e3, 0x112f0,
0x112fa, 0x11302, 0x112fa, 0x11302,
@ -1174,7 +1179,8 @@ public final class NumericShaper implements java.io.Serializable {
0x11340, 0x11341, 0x11340, 0x11341,
0x11345, 0x11347, 0x11345, 0x11347,
0x11349, 0x1134b, 0x11349, 0x1134b,
0x1134e, 0x11357, 0x1134e, 0x11350,
0x11351, 0x11357,
0x11358, 0x1135d, 0x11358, 0x1135d,
0x11364, 0x11480, 0x11364, 0x11480,
0x114b3, 0x114b9, 0x114b3, 0x114b9,
@ -1186,7 +1192,7 @@ public final class NumericShaper implements java.io.Serializable {
0x115b2, 0x115b8, 0x115b2, 0x115b8,
0x115bc, 0x115be, 0x115bc, 0x115be,
0x115bf, 0x115c1, 0x115bf, 0x115c1,
0x115ca, 0x11600, 0x115dc, 0x11600,
0x11633, 0x1163b, 0x11633, 0x1163b,
0x1163d, 0x1163e, 0x1163d, 0x1163e,
0x1163f, 0x11641, 0x1163f, 0x11641,
@ -1196,14 +1202,20 @@ public final class NumericShaper implements java.io.Serializable {
0x116ad, 0x116ae, 0x116ad, 0x116ae,
0x116b0, 0x116b6, 0x116b0, 0x116b6,
0x116b7, 0x116c0, 0x116b7, 0x116c0,
0x116ca, 0x118a0, 0x116ca, 0x11700,
0x1171a, 0x11720,
0x11722, 0x11726,
0x11727, 0x11730,
0x11740, 0x118a0,
0x118f3, 0x118ff, 0x118f3, 0x118ff,
0x11900, 0x11ac0, 0x11900, 0x11ac0,
0x11af9, 0x12000, 0x11af9, 0x12000,
0x12399, 0x12400, 0x1239a, 0x12400,
0x1246f, 0x12470, 0x1246f, 0x12470,
0x12475, 0x13000, 0x12475, 0x12480,
0x1342f, 0x16800, 0x12544, 0x13000,
0x1342f, 0x14400,
0x14647, 0x16800,
0x16a39, 0x16a40, 0x16a39, 0x16a40,
0x16a5f, 0x16a60, 0x16a5f, 0x16a60,
0x16a6a, 0x16a6e, 0x16a6a, 0x16a6e,
@ -1232,7 +1244,7 @@ public final class NumericShaper implements java.io.Serializable {
0x1d173, 0x1d183, 0x1d173, 0x1d183,
0x1d185, 0x1d18c, 0x1d185, 0x1d18c,
0x1d1aa, 0x1d1ae, 0x1d1aa, 0x1d1ae,
0x1d1de, 0x1d360, 0x1d1e9, 0x1d360,
0x1d372, 0x1d400, 0x1d372, 0x1d400,
0x1d455, 0x1d456, 0x1d455, 0x1d456,
0x1d49d, 0x1d49e, 0x1d49d, 0x1d49e,
@ -1258,7 +1270,12 @@ public final class NumericShaper implements java.io.Serializable {
0x1d74f, 0x1d750, 0x1d74f, 0x1d750,
0x1d789, 0x1d78a, 0x1d789, 0x1d78a,
0x1d7c3, 0x1d7c4, 0x1d7c3, 0x1d7c4,
0x1d7cc, 0x1e800, 0x1d7cc, 0x1d800,
0x1da00, 0x1da37,
0x1da3b, 0x1da6d,
0x1da75, 0x1da76,
0x1da84, 0x1da85,
0x1da8c, 0x1e800,
0x1e8d0, 0x1e8d7, 0x1e8d0, 0x1e8d7,
0x1eef0, 0x1eef2, 0x1eef0, 0x1eef2,
0x1f000, 0x1f110, 0x1f000, 0x1f110,
@ -1271,7 +1288,8 @@ public final class NumericShaper implements java.io.Serializable {
0x1f252, 0x20000, 0x1f252, 0x20000,
0x2a6d7, 0x2a700, 0x2a6d7, 0x2a700,
0x2b735, 0x2b740, 0x2b735, 0x2b740,
0x2b81e, 0x2f800, 0x2b81e, 0x2b820,
0x2cea2, 0x2f800,
0x2fa1e, 0xf0000, 0x2fa1e, 0xf0000,
0xffffe, 0x100000, 0xffffe, 0x100000,
0x10fffe, 0x10ffff // sentinel 0x10fffe, 0x10ffff // sentinel

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1996, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -30,6 +30,7 @@ import java.lang.reflect.Constructor;
import java.util.Map.Entry; import java.util.Map.Entry;
import com.sun.beans.introspect.PropertyInfo; import com.sun.beans.introspect.PropertyInfo;
import sun.reflect.misc.ReflectUtil;
/** /**
* A PropertyDescriptor describes one property that a Java Bean * A PropertyDescriptor describes one property that a Java Bean
@ -463,8 +464,9 @@ public class PropertyDescriptor extends FeatureDescriptor {
public PropertyEditor createPropertyEditor(Object bean) { public PropertyEditor createPropertyEditor(Object bean) {
Object editor = null; Object editor = null;
Class<?> cls = getPropertyEditorClass(); final Class<?> cls = getPropertyEditorClass();
if (cls != null) { if (cls != null && PropertyEditor.class.isAssignableFrom(cls)
&& ReflectUtil.isPackageAccessible(cls)) {
Constructor<?> ctor = null; Constructor<?> ctor = null;
if (bean != null) { if (bean != null) {
try { try {

View File

@ -28,6 +28,8 @@ package java.beans;
import java.awt.Image; import java.awt.Image;
import java.awt.Toolkit; import java.awt.Toolkit;
import java.io.InputStream; import java.io.InputStream;
import java.security.AccessController;
import java.security.PrivilegedAction;
/** /**
* This is a support class to make it easier for people to provide * This is a support class to make it easier for people to provide
@ -41,13 +43,13 @@ import java.io.InputStream;
* *
* @since 1.1 * @since 1.1
*/ */
public class SimpleBeanInfo implements BeanInfo { public class SimpleBeanInfo implements BeanInfo {
/** /**
* Deny knowledge about the class and customizer of the bean. * Deny knowledge about the class and customizer of the bean.
* You can override this if you wish to provide explicit info. * You can override this if you wish to provide explicit info.
*/ */
@Override
public BeanDescriptor getBeanDescriptor() { public BeanDescriptor getBeanDescriptor() {
return null; return null;
} }
@ -56,6 +58,7 @@ public class SimpleBeanInfo implements BeanInfo {
* Deny knowledge of properties. You can override this * Deny knowledge of properties. You can override this
* if you wish to provide explicit property info. * if you wish to provide explicit property info.
*/ */
@Override
public PropertyDescriptor[] getPropertyDescriptors() { public PropertyDescriptor[] getPropertyDescriptors() {
return null; return null;
} }
@ -64,6 +67,7 @@ public class SimpleBeanInfo implements BeanInfo {
* Deny knowledge of a default property. You can override this * Deny knowledge of a default property. You can override this
* if you wish to define a default property for the bean. * if you wish to define a default property for the bean.
*/ */
@Override
public int getDefaultPropertyIndex() { public int getDefaultPropertyIndex() {
return -1; return -1;
} }
@ -72,6 +76,7 @@ public class SimpleBeanInfo implements BeanInfo {
* Deny knowledge of event sets. You can override this * Deny knowledge of event sets. You can override this
* if you wish to provide explicit event set info. * if you wish to provide explicit event set info.
*/ */
@Override
public EventSetDescriptor[] getEventSetDescriptors() { public EventSetDescriptor[] getEventSetDescriptors() {
return null; return null;
} }
@ -80,6 +85,7 @@ public class SimpleBeanInfo implements BeanInfo {
* Deny knowledge of a default event. You can override this * Deny knowledge of a default event. You can override this
* if you wish to define a default event for the bean. * if you wish to define a default event for the bean.
*/ */
@Override
public int getDefaultEventIndex() { public int getDefaultEventIndex() {
return -1; return -1;
} }
@ -88,6 +94,7 @@ public class SimpleBeanInfo implements BeanInfo {
* Deny knowledge of methods. You can override this * Deny knowledge of methods. You can override this
* if you wish to provide explicit method info. * if you wish to provide explicit method info.
*/ */
@Override
public MethodDescriptor[] getMethodDescriptors() { public MethodDescriptor[] getMethodDescriptors() {
return null; return null;
} }
@ -97,6 +104,7 @@ public class SimpleBeanInfo implements BeanInfo {
* may override this if you want to (for example) return a * may override this if you want to (for example) return a
* BeanInfo for a base class. * BeanInfo for a base class.
*/ */
@Override
public BeanInfo[] getAdditionalBeanInfo() { public BeanInfo[] getAdditionalBeanInfo() {
return null; return null;
} }
@ -105,10 +113,63 @@ public class SimpleBeanInfo implements BeanInfo {
* Claim there are no icons available. You can override * Claim there are no icons available. You can override
* this if you want to provide icons for your bean. * this if you want to provide icons for your bean.
*/ */
public Image getIcon(int iconKind) { @Override
public Image getIcon(final int iconKind) {
final BeanDescriptor descriptor = getBeanDescriptor();
if (descriptor != null) {
final Class<?> type = descriptor.getBeanClass();
if (type != null && type.getClassLoader() == null
&& type.getAnnotation(JavaBean.class) != null) {
final String name = type.getName();
final int index = name.lastIndexOf('.');
if (name.substring(0, index).equals("javax.swing")) {
final String className = type.getSimpleName();
switch (iconKind) {
case ICON_COLOR_32x32:
return loadImage(className, "Color32.gif");
case ICON_COLOR_16x16:
return loadImage(className, "Color16.gif");
case ICON_MONO_32x32:
return loadImage(className, "Mono32.gif");
case ICON_MONO_16x16:
return loadImage(className, "Mono16.gif");
}
}
}
}
return null; return null;
} }
/**
* This is a utility method to help in loading standard icon images.
*
* @param resourceName A pathname relative to the directory holding the
* class file of the current class
* @return an image object. May be null if the load failed.
* @see java.beans.SimpleBeanInfo#loadImage(String)
*/
private Image loadStandardImage(final String resourceName) {
return AccessController.doPrivileged(
(PrivilegedAction<Image>) () -> loadImage(resourceName));
}
/**
* This is a utility method to help in loading standard icon images.
*
* @param resourceName A pathname relative to the directory holding the
* class file of the current class
* @param suffix A {@code String} containing a file suffix (<i>e.g.</i>,
* "Color32.gif" or "Mono32.gif")
* @return an image object. May be null if the load failed.
* @see java.beans.SimpleBeanInfo#loadImage(String)
*/
private Image loadImage(final String resourceName, final String suffix) {
final String prefix = "/javax/swing/beaninfo/images/";
final Image image = loadStandardImage(prefix + resourceName + suffix);
return image == null ? loadStandardImage(prefix + "JComponent" + suffix)
: image;
}
/** /**
* This is a utility method to help in loading icon images. * This is a utility method to help in loading icon images.
* It takes the name of a resource file associated with the * It takes the name of a resource file associated with the

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -29,11 +29,15 @@ import sun.awt.AWTAccessor;
import sun.awt.AppContext; import sun.awt.AppContext;
import java.util.Locale; import java.util.Locale;
import java.beans.JavaBean;
import java.beans.BeanProperty;
import java.beans.PropertyChangeListener; import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport; import java.beans.PropertyChangeSupport;
import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeEvent;
import java.awt.IllegalComponentStateException; import java.awt.IllegalComponentStateException;
import javax.swing.SwingContainer;
/** /**
* AccessibleContext represents the minimum information all accessible objects * AccessibleContext represents the minimum information all accessible objects
* return. This information includes the accessible name, description, role, * return. This information includes the accessible name, description, role,
@ -69,17 +73,13 @@ import java.awt.IllegalComponentStateException;
* minimum and maximum values. Any object that supports a numerical value * minimum and maximum values. Any object that supports a numerical value
* should support this interface.</ul> * should support this interface.</ul>
* *
*
* @beaninfo
* attribute: isContainer false
* description: Minimal information that all accessible objects return
*
* @author Peter Korn * @author Peter Korn
* @author Hans Muller * @author Hans Muller
* @author Willie Walker * @author Willie Walker
* @author Lynn Monsanto * @author Lynn Monsanto
*/ */
@JavaBean(description = "Minimal information that all accessible objects return")
@SwingContainer(false)
public abstract class AccessibleContext { public abstract class AccessibleContext {
/** /**
@ -447,11 +447,9 @@ public abstract class AccessibleContext {
* *
* @see #getAccessibleName * @see #getAccessibleName
* @see #addPropertyChangeListener * @see #addPropertyChangeListener
*
* @beaninfo
* preferred: true
* description: Sets the accessible name for the component.
*/ */
@BeanProperty(preferred = true, description
= "Sets the accessible name for the component.")
public void setAccessibleName(String s) { public void setAccessibleName(String s) {
String oldName = accessibleName; String oldName = accessibleName;
accessibleName = s; accessibleName = s;
@ -483,11 +481,9 @@ public abstract class AccessibleContext {
* *
* @see #setAccessibleName * @see #setAccessibleName
* @see #addPropertyChangeListener * @see #addPropertyChangeListener
*
* @beaninfo
* preferred: true
* description: Sets the accessible description for the component.
*/ */
@BeanProperty(preferred = true, description
= "Sets the accessible description for the component.")
public void setAccessibleDescription(String s) { public void setAccessibleDescription(String s) {
String oldDescription = accessibleDescription; String oldDescription = accessibleDescription;
accessibleDescription = s; accessibleDescription = s;

View File

@ -26,23 +26,19 @@ package javax.swing;
import java.awt.*; import java.awt.*;
import java.awt.event.*; import java.awt.event.*;
import java.awt.image.*;
import java.text.*; import java.text.*;
import java.awt.geom.*; import java.awt.geom.*;
import java.beans.JavaBean;
import java.beans.BeanProperty;
import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener; import java.beans.PropertyChangeListener;
import java.beans.Transient; import java.beans.Transient;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.Vector;
import java.io.Serializable; import java.io.Serializable;
import javax.swing.event.*; import javax.swing.event.*;
import javax.swing.border.*;
import javax.swing.plaf.*; import javax.swing.plaf.*;
import javax.accessibility.*; import javax.accessibility.*;
import javax.swing.text.*; import javax.swing.text.*;
import javax.swing.text.html.*;
import javax.swing.plaf.basic.*;
import java.util.*;
/** /**
* Defines common behaviors for buttons and menu items. * Defines common behaviors for buttons and menu items.
@ -73,6 +69,7 @@ import java.util.*;
* @author Jeff Dinkins * @author Jeff Dinkins
* @since 1.2 * @since 1.2
*/ */
@JavaBean(defaultProperty = "UI")
@SuppressWarnings("serial") // Same-version serialization only @SuppressWarnings("serial") // Same-version serialization only
public abstract class AbstractButton extends JComponent implements ItemSelectable, SwingConstants { public abstract class AbstractButton extends JComponent implements ItemSelectable, SwingConstants {
@ -251,12 +248,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* @see <a href="Action.html#buttonActions">Swing Components Supporting * @see <a href="Action.html#buttonActions">Swing Components Supporting
* <code>Action</code></a> * <code>Action</code></a>
* @since 1.6 * @since 1.6
* @beaninfo
* bound: true
* expert: true
* description: Whether the text of the button should come from
* the <code>Action</code>.
*/ */
@BeanProperty(expert = true, description
= "Whether the text of the button should come from the <code>Action</code>.")
public void setHideActionText(boolean hideActionText) { public void setHideActionText(boolean hideActionText) {
if (hideActionText != this.hideActionText) { if (hideActionText != this.hideActionText) {
this.hideActionText = hideActionText; this.hideActionText = hideActionText;
@ -296,12 +290,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* Sets the button's text. * Sets the button's text.
* @param text the string used to set the text * @param text the string used to set the text
* @see #getText * @see #getText
* @beaninfo
* bound: true
* preferred: true
* attribute: visualUpdate true
* description: The button's text.
*/ */
@BeanProperty(preferred = true, visualUpdate = true, description
= "The button's text.")
public void setText(String text) { public void setText(String text) {
String oldValue = this.text; String oldValue = this.text;
this.text = text; this.text = text;
@ -390,12 +381,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* effectively be ignored). * effectively be ignored).
* *
* @param m the space between the border and the label * @param m the space between the border and the label
*
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: The space between the button's border and the label.
*/ */
@BeanProperty(visualUpdate = true, description
= "The space between the button's border and the label.")
public void setMargin(Insets m) { public void setMargin(Insets m) {
// Cache the old margin if it comes from the UI // Cache the old margin if it comes from the UI
if(m instanceof UIResource) { if(m instanceof UIResource) {
@ -448,11 +436,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* @param defaultIcon the icon used as the default image * @param defaultIcon the icon used as the default image
* @see #getIcon * @see #getIcon
* @see #setPressedIcon * @see #setPressedIcon
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: The button's default icon
*/ */
@BeanProperty(visualUpdate = true, description
= "The button's default icon")
public void setIcon(Icon defaultIcon) { public void setIcon(Icon defaultIcon) {
Icon oldValue = this.defaultIcon; Icon oldValue = this.defaultIcon;
this.defaultIcon = defaultIcon; this.defaultIcon = defaultIcon;
@ -495,11 +481,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* Sets the pressed icon for the button. * Sets the pressed icon for the button.
* @param pressedIcon the icon used as the "pressed" image * @param pressedIcon the icon used as the "pressed" image
* @see #getPressedIcon * @see #getPressedIcon
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: The pressed icon for the button.
*/ */
@BeanProperty(visualUpdate = true, description
= "The pressed icon for the button.")
public void setPressedIcon(Icon pressedIcon) { public void setPressedIcon(Icon pressedIcon) {
Icon oldValue = this.pressedIcon; Icon oldValue = this.pressedIcon;
this.pressedIcon = pressedIcon; this.pressedIcon = pressedIcon;
@ -529,11 +513,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* Sets the selected icon for the button. * Sets the selected icon for the button.
* @param selectedIcon the icon used as the "selected" image * @param selectedIcon the icon used as the "selected" image
* @see #getSelectedIcon * @see #getSelectedIcon
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: The selected icon for the button.
*/ */
@BeanProperty(visualUpdate = true, description
= "The selected icon for the button.")
public void setSelectedIcon(Icon selectedIcon) { public void setSelectedIcon(Icon selectedIcon) {
Icon oldValue = this.selectedIcon; Icon oldValue = this.selectedIcon;
this.selectedIcon = selectedIcon; this.selectedIcon = selectedIcon;
@ -575,11 +557,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* Sets the rollover icon for the button. * Sets the rollover icon for the button.
* @param rolloverIcon the icon used as the "rollover" image * @param rolloverIcon the icon used as the "rollover" image
* @see #getRolloverIcon * @see #getRolloverIcon
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: The rollover icon for the button.
*/ */
@BeanProperty(visualUpdate = true, description
= "The rollover icon for the button.")
public void setRolloverIcon(Icon rolloverIcon) { public void setRolloverIcon(Icon rolloverIcon) {
Icon oldValue = this.rolloverIcon; Icon oldValue = this.rolloverIcon;
this.rolloverIcon = rolloverIcon; this.rolloverIcon = rolloverIcon;
@ -612,11 +592,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* @param rolloverSelectedIcon the icon used as the * @param rolloverSelectedIcon the icon used as the
* "selected rollover" image * "selected rollover" image
* @see #getRolloverSelectedIcon * @see #getRolloverSelectedIcon
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: The rollover selected icon for the button.
*/ */
@BeanProperty(visualUpdate = true, description
= "The rollover selected icon for the button.")
public void setRolloverSelectedIcon(Icon rolloverSelectedIcon) { public void setRolloverSelectedIcon(Icon rolloverSelectedIcon) {
Icon oldValue = this.rolloverSelectedIcon; Icon oldValue = this.rolloverSelectedIcon;
this.rolloverSelectedIcon = rolloverSelectedIcon; this.rolloverSelectedIcon = rolloverSelectedIcon;
@ -664,11 +642,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* Sets the disabled icon for the button. * Sets the disabled icon for the button.
* @param disabledIcon the icon used as the disabled image * @param disabledIcon the icon used as the disabled image
* @see #getDisabledIcon * @see #getDisabledIcon
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: The disabled icon for the button.
*/ */
@BeanProperty(visualUpdate = true, description
= "The disabled icon for the button.")
public void setDisabledIcon(Icon disabledIcon) { public void setDisabledIcon(Icon disabledIcon) {
Icon oldValue = this.disabledIcon; Icon oldValue = this.disabledIcon;
this.disabledIcon = disabledIcon; this.disabledIcon = disabledIcon;
@ -717,11 +693,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* @param disabledSelectedIcon the icon used as the disabled * @param disabledSelectedIcon the icon used as the disabled
* selection image * selection image
* @see #getDisabledSelectedIcon * @see #getDisabledSelectedIcon
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: The disabled selection icon for the button.
*/ */
@BeanProperty(visualUpdate = true, description
= "The disabled selection icon for the button.")
public void setDisabledSelectedIcon(Icon disabledSelectedIcon) { public void setDisabledSelectedIcon(Icon disabledSelectedIcon) {
Icon oldValue = this.disabledSelectedIcon; Icon oldValue = this.disabledSelectedIcon;
this.disabledSelectedIcon = disabledSelectedIcon; this.disabledSelectedIcon = disabledSelectedIcon;
@ -768,14 +742,12 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* </ul> * </ul>
* @throws IllegalArgumentException if the alignment is not one of the legal * @throws IllegalArgumentException if the alignment is not one of the legal
* values listed above * values listed above
* @beaninfo
* bound: true
* enum: TOP SwingConstants.TOP
* CENTER SwingConstants.CENTER
* BOTTOM SwingConstants.BOTTOM
* attribute: visualUpdate true
* description: The vertical alignment of the icon and text.
*/ */
@BeanProperty(visualUpdate = true, enumerationValues = {
"SwingConstants.TOP",
"SwingConstants.CENTER",
"SwingConstants.BOTTOM"}, description
= "The vertical alignment of the icon and text.")
public void setVerticalAlignment(int alignment) { public void setVerticalAlignment(int alignment) {
if (alignment == verticalAlignment) return; if (alignment == verticalAlignment) return;
int oldValue = verticalAlignment; int oldValue = verticalAlignment;
@ -817,16 +789,14 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* </ul> * </ul>
* @throws IllegalArgumentException if the alignment is not one of the * @throws IllegalArgumentException if the alignment is not one of the
* valid values * valid values
* @beaninfo
* bound: true
* enum: LEFT SwingConstants.LEFT
* CENTER SwingConstants.CENTER
* RIGHT SwingConstants.RIGHT
* LEADING SwingConstants.LEADING
* TRAILING SwingConstants.TRAILING
* attribute: visualUpdate true
* description: The horizontal alignment of the icon and text.
*/ */
@BeanProperty(visualUpdate = true, enumerationValues = {
"SwingConstants.LEFT",
"SwingConstants.CENTER",
"SwingConstants.RIGHT",
"SwingConstants.LEADING",
"SwingConstants.TRAILING"}, description
= "The horizontal alignment of the icon and text.")
public void setHorizontalAlignment(int alignment) { public void setHorizontalAlignment(int alignment) {
if (alignment == horizontalAlignment) return; if (alignment == horizontalAlignment) return;
int oldValue = horizontalAlignment; int oldValue = horizontalAlignment;
@ -860,14 +830,12 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* <li>{@code SwingConstants.TOP} * <li>{@code SwingConstants.TOP}
* <li>{@code SwingConstants.BOTTOM} * <li>{@code SwingConstants.BOTTOM}
* </ul> * </ul>
* @beaninfo
* bound: true
* enum: TOP SwingConstants.TOP
* CENTER SwingConstants.CENTER
* BOTTOM SwingConstants.BOTTOM
* attribute: visualUpdate true
* description: The vertical position of the text relative to the icon.
*/ */
@BeanProperty(visualUpdate = true, enumerationValues = {
"SwingConstants.TOP",
"SwingConstants.CENTER",
"SwingConstants.BOTTOM"}, description
= "The vertical position of the text relative to the icon.")
public void setVerticalTextPosition(int textPosition) { public void setVerticalTextPosition(int textPosition) {
if (textPosition == verticalTextPosition) return; if (textPosition == verticalTextPosition) return;
int oldValue = verticalTextPosition; int oldValue = verticalTextPosition;
@ -905,16 +873,14 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* </ul> * </ul>
* @exception IllegalArgumentException if <code>textPosition</code> * @exception IllegalArgumentException if <code>textPosition</code>
* is not one of the legal values listed above * is not one of the legal values listed above
* @beaninfo
* bound: true
* enum: LEFT SwingConstants.LEFT
* CENTER SwingConstants.CENTER
* RIGHT SwingConstants.RIGHT
* LEADING SwingConstants.LEADING
* TRAILING SwingConstants.TRAILING
* attribute: visualUpdate true
* description: The horizontal position of the text relative to the icon.
*/ */
@BeanProperty(visualUpdate = true, enumerationValues = {
"SwingConstants.LEFT",
"SwingConstants.CENTER",
"SwingConstants.RIGHT",
"SwingConstants.LEADING",
"SwingConstants.TRAILING"}, description
= "The horizontal position of the text relative to the icon.")
public void setHorizontalTextPosition(int textPosition) { public void setHorizontalTextPosition(int textPosition) {
if (textPosition == horizontalTextPosition) return; if (textPosition == horizontalTextPosition) return;
int oldValue = horizontalTextPosition; int oldValue = horizontalTextPosition;
@ -951,12 +917,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* @param iconTextGap the space between icon and text if these properties are set. * @param iconTextGap the space between icon and text if these properties are set.
* @since 1.4 * @since 1.4
* @see #getIconTextGap * @see #getIconTextGap
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: If both the icon and text properties are set, this
* property defines the space between them.
*/ */
@BeanProperty(visualUpdate = true, description
= "If both the icon and text properties are set, this property defines the space between them.")
public void setIconTextGap(int iconTextGap) { public void setIconTextGap(int iconTextGap) {
int oldValue = this.iconTextGap; int oldValue = this.iconTextGap;
this.iconTextGap = iconTextGap; this.iconTextGap = iconTextGap;
@ -1095,11 +1058,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* @see #configurePropertiesFromAction * @see #configurePropertiesFromAction
* @see #createActionPropertyChangeListener * @see #createActionPropertyChangeListener
* @see #actionPropertyChanged * @see #actionPropertyChanged
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: the Action instance connected with this ActionEvent source
*/ */
@BeanProperty(visualUpdate = true, description
= "the Action instance connected with this ActionEvent source")
public void setAction(Action a) { public void setAction(Action a) {
Action oldValue = getAction(); Action oldValue = getAction();
if (action==null || !action.equals(a)) { if (action==null || !action.equals(a)) {
@ -1393,11 +1354,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* @param b if true and border property is not <code>null</code>, * @param b if true and border property is not <code>null</code>,
* the border is painted * the border is painted
* @see #isBorderPainted * @see #isBorderPainted
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: Whether the border should be painted.
*/ */
@BeanProperty(visualUpdate = true, description
= "Whether the border should be painted.")
public void setBorderPainted(boolean b) { public void setBorderPainted(boolean b) {
boolean oldValue = paintBorder; boolean oldValue = paintBorder;
paintBorder = b; paintBorder = b;
@ -1443,11 +1402,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* *
* @param b if <code>true</code>, the focus state should be painted * @param b if <code>true</code>, the focus state should be painted
* @see #isFocusPainted * @see #isFocusPainted
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: Whether focus should be painted
*/ */
@BeanProperty(visualUpdate = true, description
= "Whether focus should be painted")
public void setFocusPainted(boolean b) { public void setFocusPainted(boolean b) {
boolean oldValue = paintFocus; boolean oldValue = paintFocus;
paintFocus = b; paintFocus = b;
@ -1486,12 +1443,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* the content area is not filled * the content area is not filled
* @see #isContentAreaFilled * @see #isContentAreaFilled
* @see #setOpaque * @see #setOpaque
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: Whether the button should paint the content area
* or leave it transparent.
*/ */
@BeanProperty(visualUpdate = true, description
= "Whether the button should paint the content area or leave it transparent.")
public void setContentAreaFilled(boolean b) { public void setContentAreaFilled(boolean b) {
boolean oldValue = contentAreaFilled; boolean oldValue = contentAreaFilled;
contentAreaFilled = b; contentAreaFilled = b;
@ -1522,11 +1476,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* *
* @param b if <code>true</code>, rollover effects should be painted * @param b if <code>true</code>, rollover effects should be painted
* @see #isRolloverEnabled * @see #isRolloverEnabled
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: Whether rollover effects should be enabled.
*/ */
@BeanProperty(visualUpdate = true, description
= "Whether rollover effects should be enabled.")
public void setRolloverEnabled(boolean b) { public void setRolloverEnabled(boolean b) {
boolean oldValue = rolloverEnabled; boolean oldValue = rolloverEnabled;
rolloverEnabled = b; rolloverEnabled = b;
@ -1569,12 +1521,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* @param mnemonic the key code which represents the mnemonic * @param mnemonic the key code which represents the mnemonic
* @see java.awt.event.KeyEvent * @see java.awt.event.KeyEvent
* @see #setDisplayedMnemonicIndex * @see #setDisplayedMnemonicIndex
*
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: the keyboard character mnemonic
*/ */
@BeanProperty(visualUpdate = true, description
= "the keyboard character mnemonic")
public void setMnemonic(int mnemonic) { public void setMnemonic(int mnemonic) {
int oldValue = getMnemonic(); int oldValue = getMnemonic();
model.setMnemonic(mnemonic); model.setMnemonic(mnemonic);
@ -1589,11 +1538,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* *
* @param mnemonic a char specifying the mnemonic value * @param mnemonic a char specifying the mnemonic value
* @see #setMnemonic(int) * @see #setMnemonic(int)
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: the keyboard character mnemonic
*/ */
@BeanProperty(visualUpdate = true, description
= "the keyboard character mnemonic")
public void setMnemonic(char mnemonic) { public void setMnemonic(char mnemonic) {
int vk = (int) mnemonic; int vk = (int) mnemonic;
if(vk >= 'a' && vk <='z') if(vk >= 'a' && vk <='z')
@ -1622,13 +1569,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* @exception IllegalArgumentException will be thrown if <code>index</code> * @exception IllegalArgumentException will be thrown if <code>index</code>
* is &gt;= length of the text, or &lt; -1 * is &gt;= length of the text, or &lt; -1
* @see #getDisplayedMnemonicIndex * @see #getDisplayedMnemonicIndex
*
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: the index into the String to draw the keyboard character
* mnemonic at
*/ */
@BeanProperty(visualUpdate = true, description
= "the index into the String to draw the keyboard character mnemonic at")
public void setDisplayedMnemonicIndex(int index) public void setDisplayedMnemonicIndex(int index)
throws IllegalArgumentException { throws IllegalArgumentException {
int oldValue = mnemonicIndex; int oldValue = mnemonicIndex;
@ -1743,10 +1686,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* Sets the model that this button represents. * Sets the model that this button represents.
* @param newModel the new <code>ButtonModel</code> * @param newModel the new <code>ButtonModel</code>
* @see #getModel * @see #getModel
* @beaninfo
* bound: true
* description: Model that the Button uses.
*/ */
@BeanProperty(description
= "Model that the Button uses.")
public void setModel(ButtonModel newModel) { public void setModel(ButtonModel newModel) {
ButtonModel oldModel = getModel(); ButtonModel oldModel = getModel();
@ -1804,12 +1746,9 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* Sets the L&amp;F object that renders this component. * Sets the L&amp;F object that renders this component.
* @param ui the <code>ButtonUI</code> L&amp;F object * @param ui the <code>ButtonUI</code> L&amp;F object
* @see #getUI * @see #getUI
* @beaninfo
* bound: true
* hidden: true
* attribute: visualUpdate true
* description: The UI object that implements the LookAndFeel.
*/ */
@BeanProperty(hidden = true, visualUpdate = true, description
= "The UI object that implements the LookAndFeel.")
public void setUI(ButtonUI ui) { public void setUI(ButtonUI ui) {
super.setUI(ui); super.setUI(ui);
// disabled icons are generated by the LF so they should be unset here // disabled icons are generated by the LF so they should be unset here
@ -1897,6 +1836,7 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* array if no listeners have been added * array if no listeners have been added
* @since 1.4 * @since 1.4
*/ */
@BeanProperty(bound = false)
public ChangeListener[] getChangeListeners() { public ChangeListener[] getChangeListeners() {
return listenerList.getListeners(ChangeListener.class); return listenerList.getListeners(ChangeListener.class);
} }
@ -1954,6 +1894,7 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* array if no listeners have been added * array if no listeners have been added
* @since 1.4 * @since 1.4
*/ */
@BeanProperty(bound = false)
public ActionListener[] getActionListeners() { public ActionListener[] getActionListeners() {
return listenerList.getListeners(ActionListener.class); return listenerList.getListeners(ActionListener.class);
} }
@ -2122,11 +2063,10 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* *
* @param label a <code>String</code> containing the text * @param label a <code>String</code> containing the text
* @deprecated - Replaced by <code>setText(text)</code> * @deprecated - Replaced by <code>setText(text)</code>
* @beaninfo
* bound: true
* description: Replace by setText(text)
*/ */
@Deprecated @Deprecated
@BeanProperty(description
= "Replace by setText(text)")
public void setLabel(String label) { public void setLabel(String label) {
setText(label); setText(label);
} }
@ -2155,6 +2095,7 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* array if no listeners have been added * array if no listeners have been added
* @since 1.4 * @since 1.4
*/ */
@BeanProperty(bound = false)
public ItemListener[] getItemListeners() { public ItemListener[] getItemListeners() {
return listenerList.getListeners(ItemListener.class); return listenerList.getListeners(ItemListener.class);
} }
@ -2166,7 +2107,8 @@ public abstract class AbstractButton extends JComponent implements ItemSelectabl
* @return an array containing 1 Object: the text of the button, * @return an array containing 1 Object: the text of the button,
* if the item is selected; otherwise <code>null</code> * if the item is selected; otherwise <code>null</code>
*/ */
public Object[] getSelectedObjects() { @BeanProperty(bound = false)
public Object[] getSelectedObjects() {
if (isSelected() == false) { if (isSelected() == false) {
return null; return null;
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -22,15 +22,12 @@
* or visit www.oracle.com if you need additional information or have any * or visit www.oracle.com if you need additional information or have any
* questions. * questions.
*/ */
package javax.swing; package javax.swing;
import java.awt.*; import java.awt.*;
import java.awt.event.*; import java.beans.JavaBean;
import java.beans.BeanProperty;
import java.beans.ConstructorProperties; import java.beans.ConstructorProperties;
import java.util.Locale;
import java.io.Serializable;
import javax.accessibility.*; import javax.accessibility.*;
/** /**
@ -77,6 +74,7 @@ import javax.accessibility.*;
* @author Timothy Prinzing * @author Timothy Prinzing
* @since 1.2 * @since 1.2
*/ */
@JavaBean(defaultProperty = "accessibleContext")
@SuppressWarnings("serial") @SuppressWarnings("serial")
public class Box extends JComponent implements Accessible { public class Box extends JComponent implements Accessible {
@ -413,6 +411,7 @@ public class Box extends JComponent implements Accessible {
* @return an AccessibleBox that serves as the * @return an AccessibleBox that serves as the
* AccessibleContext of this Box * AccessibleContext of this Box
*/ */
@BeanProperty(bound = false)
public AccessibleContext getAccessibleContext() { public AccessibleContext getAccessibleContext() {
if (accessibleContext == null) { if (accessibleContext == null) {
accessibleContext = new AccessibleBox(); accessibleContext = new AccessibleBox();

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -27,6 +27,7 @@ package javax.swing;
import java.awt.*; import java.awt.*;
import java.awt.image.*; import java.awt.image.*;
import java.beans.ConstructorProperties; import java.beans.ConstructorProperties;
import java.beans.BeanProperty;
import java.beans.Transient; import java.beans.Transient;
import java.net.URL; import java.net.URL;
@ -567,11 +568,10 @@ public class ImageIcon implements Icon, Serializable, Accessible {
* *
* @return an AccessibleImageIcon that serves as the * @return an AccessibleImageIcon that serves as the
* AccessibleContext of this ImageIcon * AccessibleContext of this ImageIcon
* @beaninfo
* expert: true
* description: The AccessibleContext associated with this ImageIcon.
* @since 1.3 * @since 1.3
*/ */
@BeanProperty(expert = true, description
= "The AccessibleContext associated with this ImageIcon.")
public AccessibleContext getAccessibleContext() { public AccessibleContext getAccessibleContext() {
if (accessibleContext == null) { if (accessibleContext == null) {
accessibleContext = new AccessibleImageIcon(); accessibleContext = new AccessibleImageIcon();

View File

@ -33,6 +33,8 @@ import java.awt.Container;
import java.awt.Graphics; import java.awt.Graphics;
import java.awt.HeadlessException; import java.awt.HeadlessException;
import java.awt.LayoutManager; import java.awt.LayoutManager;
import java.beans.BeanProperty;
import java.beans.JavaBean;
import javax.accessibility.Accessible; import javax.accessibility.Accessible;
import javax.accessibility.AccessibleContext; import javax.accessibility.AccessibleContext;
@ -87,14 +89,12 @@ import javax.accessibility.AccessibleContext;
* Please see {@link java.beans.XMLEncoder}. * Please see {@link java.beans.XMLEncoder}.
* *
* @see javax.swing.RootPaneContainer * @see javax.swing.RootPaneContainer
* @beaninfo
* attribute: isContainer true
* attribute: containerDelegate getContentPane
* description: Swing's Applet subclass.
* *
* @author Arnaud Weber * @author Arnaud Weber
* @since 1.2 * @since 1.2
*/ */
@JavaBean(defaultProperty = "JMenuBar", description = "Swing's Applet subclass.")
@SwingContainer(delegate = "getContentPane")
@SuppressWarnings("serial") // Same-version serialization only @SuppressWarnings("serial") // Same-version serialization only
public class JApplet extends Applet implements Accessible, public class JApplet extends Applet implements Accessible,
RootPaneContainer, RootPaneContainer,
@ -203,12 +203,9 @@ public class JApplet extends Applet implements Accessible,
* @see #getTransferHandler * @see #getTransferHandler
* @see java.awt.Component#setDropTarget * @see java.awt.Component#setDropTarget
* @since 1.6 * @since 1.6
*
* @beaninfo
* bound: true
* hidden: true
* description: Mechanism for transfer of data into the component
*/ */
@BeanProperty(hidden = true, description
= "Mechanism for transfer of data into the component")
public void setTransferHandler(TransferHandler newHandler) { public void setTransferHandler(TransferHandler newHandler) {
TransferHandler oldHandler = transferHandler; TransferHandler oldHandler = transferHandler;
transferHandler = newHandler; transferHandler = newHandler;
@ -242,11 +239,9 @@ public class JApplet extends Applet implements Accessible,
* @param menuBar the menubar being placed in the applet * @param menuBar the menubar being placed in the applet
* *
* @see #getJMenuBar * @see #getJMenuBar
*
* @beaninfo
* hidden: true
* description: The menubar for accessing pulldown menus from this applet.
*/ */
@BeanProperty(bound = false, hidden = true, description
= "The menubar for accessing pulldown menus from this applet.")
public void setJMenuBar(final JMenuBar menuBar) { public void setJMenuBar(final JMenuBar menuBar) {
getRootPane().setJMenuBar(menuBar); getRootPane().setJMenuBar(menuBar);
} }
@ -291,10 +286,9 @@ public class JApplet extends Applet implements Accessible,
* @see #setLayout * @see #setLayout
* @see #isRootPaneCheckingEnabled * @see #isRootPaneCheckingEnabled
* @see javax.swing.RootPaneContainer * @see javax.swing.RootPaneContainer
* @beaninfo
* hidden: true
* description: Whether the add and setLayout methods are forwarded
*/ */
@BeanProperty(hidden = true, description
= "Whether the add and setLayout methods are forwarded")
protected void setRootPaneCheckingEnabled(boolean enabled) { protected void setRootPaneCheckingEnabled(boolean enabled) {
rootPaneCheckingEnabled = enabled; rootPaneCheckingEnabled = enabled;
} }
@ -377,6 +371,8 @@ public class JApplet extends Applet implements Accessible,
* @see #setRootPane * @see #setRootPane
* @see RootPaneContainer#getRootPane * @see RootPaneContainer#getRootPane
*/ */
@BeanProperty(bound = false, hidden = true, description
= "the RootPane object for this applet.")
public JRootPane getRootPane() { public JRootPane getRootPane() {
return rootPane; return rootPane;
} }
@ -387,10 +383,6 @@ public class JApplet extends Applet implements Accessible,
* @param root the rootPane object for this applet * @param root the rootPane object for this applet
* *
* @see #getRootPane * @see #getRootPane
*
* @beaninfo
* hidden: true
* description: the RootPane object for this applet.
*/ */
protected void setRootPane(JRootPane root) { protected void setRootPane(JRootPane root) {
if(rootPane != null) { if(rootPane != null) {
@ -428,12 +420,9 @@ public class JApplet extends Applet implements Accessible,
* exception) if the content pane parameter is null * exception) if the content pane parameter is null
* @see #getContentPane * @see #getContentPane
* @see RootPaneContainer#setContentPane * @see RootPaneContainer#setContentPane
*
* @beaninfo
* hidden: true
* description: The client area of the applet where child
* components are normally inserted.
*/ */
@BeanProperty(bound = false, hidden = true, description
= "The client area of the applet where child components are normally inserted.")
public void setContentPane(Container contentPane) { public void setContentPane(Container contentPane) {
getRootPane().setContentPane(contentPane); getRootPane().setContentPane(contentPane);
} }
@ -456,11 +445,9 @@ public class JApplet extends Applet implements Accessible,
* *
* @see #getLayeredPane * @see #getLayeredPane
* @see RootPaneContainer#setLayeredPane * @see RootPaneContainer#setLayeredPane
*
* @beaninfo
* hidden: true
* description: The pane which holds the various applet layers.
*/ */
@BeanProperty(bound = false, hidden = true, description
= "The pane which holds the various applet layers.")
public void setLayeredPane(JLayeredPane layeredPane) { public void setLayeredPane(JLayeredPane layeredPane) {
getRootPane().setLayeredPane(layeredPane); getRootPane().setLayeredPane(layeredPane);
} }
@ -482,11 +469,9 @@ public class JApplet extends Applet implements Accessible,
* *
* @see #getGlassPane * @see #getGlassPane
* @see RootPaneContainer#setGlassPane * @see RootPaneContainer#setGlassPane
*
* @beaninfo
* hidden: true
* description: A transparent pane used for menu rendering.
*/ */
@BeanProperty(bound = false, hidden = true, description
= "A transparent pane used for menu rendering.")
public void setGlassPane(Component glassPane) { public void setGlassPane(Component glassPane) {
getRootPane().setGlassPane(glassPane); getRootPane().setGlassPane(glassPane);
} }
@ -496,6 +481,7 @@ public class JApplet extends Applet implements Accessible,
* *
* @since 1.6 * @since 1.6
*/ */
@BeanProperty(bound = false)
public Graphics getGraphics() { public Graphics getGraphics() {
JComponent.getGraphicsInvoked(this); JComponent.getGraphicsInvoked(this);
return super.getGraphics(); return super.getGraphics();

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -24,21 +24,16 @@
*/ */
package javax.swing; package javax.swing;
import java.beans.JavaBean;
import java.beans.BeanProperty;
import java.beans.ConstructorProperties; import java.beans.ConstructorProperties;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.plaf.*; import javax.swing.plaf.*;
import javax.swing.event.*;
import javax.accessibility.*; import javax.accessibility.*;
import java.io.ObjectOutputStream; import java.io.ObjectOutputStream;
import java.io.ObjectInputStream;
import java.io.IOException; import java.io.IOException;
/** /**
* An implementation of a "push" button. * An implementation of a "push" button.
* <p> * <p>
@ -69,13 +64,11 @@ import java.io.IOException;
* has been added to the <code>java.beans</code> package. * has been added to the <code>java.beans</code> package.
* Please see {@link java.beans.XMLEncoder}. * Please see {@link java.beans.XMLEncoder}.
* *
* @beaninfo
* attribute: isContainer false
* description: An implementation of a \"push\" button.
*
* @author Jeff Dinkins * @author Jeff Dinkins
* @since 1.2 * @since 1.2
*/ */
@JavaBean(defaultProperty = "UIClassID", description = "An implementation of a \"push\" button.")
@SwingContainer(false)
@SuppressWarnings("serial") @SuppressWarnings("serial")
public class JButton extends AbstractButton implements Accessible { public class JButton extends AbstractButton implements Accessible {
@ -156,10 +149,9 @@ public class JButton extends AbstractButton implements Accessible {
* @return the string "ButtonUI" * @return the string "ButtonUI"
* @see JComponent#getUIClassID * @see JComponent#getUIClassID
* @see UIDefaults#getUI * @see UIDefaults#getUI
* @beaninfo
* expert: true
* description: A string that specifies the name of the L&amp;F class.
*/ */
@BeanProperty(bound = false, expert = true, description
= "A string that specifies the name of the L&amp;F class.")
public String getUIClassID() { public String getUIClassID() {
return uiClassID; return uiClassID;
} }
@ -176,9 +168,9 @@ public class JButton extends AbstractButton implements Accessible {
* @return the value of the <code>defaultButton</code> property * @return the value of the <code>defaultButton</code> property
* @see JRootPane#setDefaultButton * @see JRootPane#setDefaultButton
* @see #isDefaultCapable * @see #isDefaultCapable
* @beaninfo
* description: Whether or not this button is the default button
*/ */
@BeanProperty(bound = false, description
= "Whether or not this button is the default button")
public boolean isDefaultButton() { public boolean isDefaultButton() {
JRootPane root = SwingUtilities.getRootPane(this); JRootPane root = SwingUtilities.getRootPane(this);
if (root != null) { if (root != null) {
@ -211,11 +203,9 @@ public class JButton extends AbstractButton implements Accessible {
* capable of being the default button on the * capable of being the default button on the
* <code>RootPane</code>; otherwise <code>false</code> * <code>RootPane</code>; otherwise <code>false</code>
* @see #isDefaultCapable * @see #isDefaultCapable
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: Whether or not this button can be the default button
*/ */
@BeanProperty(visualUpdate = true, description
= "Whether or not this button can be the default button")
public void setDefaultCapable(boolean defaultCapable) { public void setDefaultCapable(boolean defaultCapable) {
boolean oldDefaultCapable = this.defaultCapable; boolean oldDefaultCapable = this.defaultCapable;
this.defaultCapable = defaultCapable; this.defaultCapable = defaultCapable;
@ -283,10 +273,9 @@ public class JButton extends AbstractButton implements Accessible {
* *
* @return an <code>AccessibleJButton</code> that serves as the * @return an <code>AccessibleJButton</code> that serves as the
* <code>AccessibleContext</code> of this <code>JButton</code> * <code>AccessibleContext</code> of this <code>JButton</code>
* @beaninfo
* expert: true
* description: The AccessibleContext associated with this Button.
*/ */
@BeanProperty(bound = false, expert = true, description
= "The AccessibleContext associated with this Button.")
public AccessibleContext getAccessibleContext() { public AccessibleContext getAccessibleContext() {
if (accessibleContext == null) { if (accessibleContext == null) {
accessibleContext = new AccessibleJButton(); accessibleContext = new AccessibleJButton();

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -24,9 +24,8 @@
*/ */
package javax.swing; package javax.swing;
import java.awt.*; import java.beans.JavaBean;
import java.awt.event.*; import java.beans.BeanProperty;
import java.beans.*;
import javax.swing.plaf.*; import javax.swing.plaf.*;
import javax.accessibility.*; import javax.accessibility.*;
@ -35,7 +34,6 @@ import java.io.ObjectOutputStream;
import java.io.ObjectInputStream; import java.io.ObjectInputStream;
import java.io.IOException; import java.io.IOException;
/** /**
* An implementation of a check box -- an item that can be selected or * An implementation of a check box -- an item that can be selected or
* deselected, and which displays its state to the user. * deselected, and which displays its state to the user.
@ -69,13 +67,11 @@ import java.io.IOException;
* *
* @see JRadioButton * @see JRadioButton
* *
* @beaninfo
* attribute: isContainer false
* description: A component which can be selected or deselected.
*
* @author Jeff Dinkins * @author Jeff Dinkins
* @since 1.2 * @since 1.2
*/ */
@JavaBean(description = "A component which can be selected or deselected.")
@SwingContainer(false)
@SuppressWarnings("serial") // Same-version serialization only @SuppressWarnings("serial") // Same-version serialization only
public class JCheckBox extends JToggleButton implements Accessible { public class JCheckBox extends JToggleButton implements Accessible {
@ -195,12 +191,10 @@ public class JCheckBox extends JToggleButton implements Accessible {
* @param b <code>true</code> requests that the border be painted flat; * @param b <code>true</code> requests that the border be painted flat;
* <code>false</code> requests normal borders * <code>false</code> requests normal borders
* @see #isBorderPaintedFlat * @see #isBorderPaintedFlat
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: Whether the border is painted flat.
* @since 1.3 * @since 1.3
*/ */
@BeanProperty(visualUpdate = true, description
= "Whether the border is painted flat.")
public void setBorderPaintedFlat(boolean b) { public void setBorderPaintedFlat(boolean b) {
boolean oldValue = flat; boolean oldValue = flat;
flat = b; flat = b;
@ -239,10 +233,9 @@ public class JCheckBox extends JToggleButton implements Accessible {
* @return the string "CheckBoxUI" * @return the string "CheckBoxUI"
* @see JComponent#getUIClassID * @see JComponent#getUIClassID
* @see UIDefaults#getUI * @see UIDefaults#getUI
* @beaninfo
* expert: true
* description: A string that specifies the name of the L&amp;F class
*/ */
@BeanProperty(bound = false, expert = true, description
= "A string that specifies the name of the L&amp;F class")
public String getUIClassID() { public String getUIClassID() {
return uiClassID; return uiClassID;
} }
@ -311,10 +304,9 @@ public class JCheckBox extends JToggleButton implements Accessible {
* *
* @return an AccessibleJCheckBox that serves as the * @return an AccessibleJCheckBox that serves as the
* AccessibleContext of this JCheckBox * AccessibleContext of this JCheckBox
* @beaninfo
* expert: true
* description: The AccessibleContext associated with this CheckBox.
*/ */
@BeanProperty(bound = false, expert = true, description
= "The AccessibleContext associated with this CheckBox.")
public AccessibleContext getAccessibleContext() { public AccessibleContext getAccessibleContext() {
if (accessibleContext == null) { if (accessibleContext == null) {
accessibleContext = new AccessibleJCheckBox(); accessibleContext = new AccessibleJCheckBox();

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -24,20 +24,14 @@
*/ */
package javax.swing; package javax.swing;
import java.util.EventListener; import java.beans.JavaBean;
import java.beans.BeanProperty;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.ObjectOutputStream; import java.io.ObjectOutputStream;
import java.io.ObjectInputStream;
import java.io.IOException; import java.io.IOException;
import javax.swing.plaf.*;
import javax.accessibility.*; import javax.accessibility.*;
/** /**
* A menu item that can be selected or deselected. If selected, the menu * A menu item that can be selected or deselected. If selected, the menu
* item typically appears with a checkmark next to it. If unselected or * item typically appears with a checkmark next to it. If unselected or
@ -81,14 +75,12 @@ import javax.accessibility.*;
* has been added to the <code>java.beans</code> package. * has been added to the <code>java.beans</code> package.
* Please see {@link java.beans.XMLEncoder}. * Please see {@link java.beans.XMLEncoder}.
* *
* @beaninfo
* attribute: isContainer false
* description: A menu item which can be selected or deselected.
*
* @author Georges Saab * @author Georges Saab
* @author David Karlton * @author David Karlton
* @since 1.2 * @since 1.2
*/ */
@JavaBean(description = "A menu item which can be selected or deselected.")
@SwingContainer(false)
@SuppressWarnings("serial") // Same-version serialization only @SuppressWarnings("serial") // Same-version serialization only
public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants, public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants,
Accessible Accessible
@ -178,6 +170,7 @@ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants,
* @see JComponent#getUIClassID * @see JComponent#getUIClassID
* @see UIDefaults#getUI * @see UIDefaults#getUI
*/ */
@BeanProperty(bound = false)
public String getUIClassID() { public String getUIClassID() {
return uiClassID; return uiClassID;
} }
@ -200,10 +193,9 @@ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants,
* *
* @param b a boolean value indicating the item's * @param b a boolean value indicating the item's
* selected-state, where true=selected * selected-state, where true=selected
* @beaninfo
* description: The selection state of the check box menu item
* hidden: true
*/ */
@BeanProperty(bound = false, hidden = true, description
= "The selection state of the check box menu item")
public synchronized void setState(boolean b) { public synchronized void setState(boolean b) {
setSelected(b); setSelected(b);
} }
@ -216,6 +208,7 @@ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants,
* @return an array containing one Object -- the text of the menu item * @return an array containing one Object -- the text of the menu item
* -- if the item is selected; otherwise null * -- if the item is selected; otherwise null
*/ */
@BeanProperty(bound = false)
public Object[] getSelectedObjects() { public Object[] getSelectedObjects() {
if (isSelected() == false) if (isSelected() == false)
return null; return null;
@ -274,6 +267,7 @@ public class JCheckBoxMenuItem extends JMenuItem implements SwingConstants,
* @return an AccessibleJCheckBoxMenuItem that serves as the * @return an AccessibleJCheckBoxMenuItem that serves as the
* AccessibleContext of this AccessibleJCheckBoxMenuItem * AccessibleContext of this AccessibleJCheckBoxMenuItem
*/ */
@BeanProperty(bound = false)
public AccessibleContext getAccessibleContext() { public AccessibleContext getAccessibleContext() {
if (accessibleContext == null) { if (accessibleContext == null) {
accessibleContext = new AccessibleJCheckBoxMenuItem(); accessibleContext = new AccessibleJCheckBoxMenuItem();

View File

@ -22,11 +22,12 @@
* or visit www.oracle.com if you need additional information or have any * or visit www.oracle.com if you need additional information or have any
* questions. * questions.
*/ */
package javax.swing; package javax.swing;
import java.awt.*; import java.awt.*;
import java.awt.event.*; import java.awt.event.*;
import java.beans.JavaBean;
import java.beans.BeanProperty;
import java.io.*; import java.io.*;
import java.util.*; import java.util.*;
@ -36,7 +37,6 @@ import javax.accessibility.*;
import sun.swing.SwingUtilities2; import sun.swing.SwingUtilities2;
/** /**
* <code>JColorChooser</code> provides a pane of controls designed to allow * <code>JColorChooser</code> provides a pane of controls designed to allow
* a user to manipulate and select a color. * a user to manipulate and select a color.
@ -73,17 +73,13 @@ import sun.swing.SwingUtilities2;
* has been added to the <code>java.beans</code> package. * has been added to the <code>java.beans</code> package.
* Please see {@link java.beans.XMLEncoder}. * Please see {@link java.beans.XMLEncoder}.
* *
*
* @beaninfo
* attribute: isContainer false
* description: A component that supports selecting a Color.
*
*
* @author James Gosling * @author James Gosling
* @author Amy Fowler * @author Amy Fowler
* @author Steve Wilson * @author Steve Wilson
* @since 1.2 * @since 1.2
*/ */
@JavaBean(defaultProperty = "UI", description = "A component that supports selecting a Color.")
@SwingContainer(false)
@SuppressWarnings("serial") // Same-version serialization only @SuppressWarnings("serial") // Same-version serialization only
public class JColorChooser extends JComponent implements Accessible { public class JColorChooser extends JComponent implements Accessible {
@ -261,12 +257,9 @@ public class JColorChooser extends JComponent implements Accessible {
* *
* @param ui the <code>ColorChooserUI</code> L&amp;F object * @param ui the <code>ColorChooserUI</code> L&amp;F object
* @see UIDefaults#getUI * @see UIDefaults#getUI
*
* @beaninfo
* bound: true
* hidden: true
* description: The UI object that implements the color chooser's LookAndFeel.
*/ */
@BeanProperty(hidden = true, description
= "The UI object that implements the color chooser's LookAndFeel.")
public void setUI(ColorChooserUI ui) { public void setUI(ColorChooserUI ui) {
super.setUI(ui); super.setUI(ui);
} }
@ -289,6 +282,7 @@ public class JColorChooser extends JComponent implements Accessible {
* @see JComponent#getUIClassID * @see JComponent#getUIClassID
* @see UIDefaults#getUI * @see UIDefaults#getUI
*/ */
@BeanProperty(bound = false)
public String getUIClassID() { public String getUIClassID() {
return uiClassID; return uiClassID;
} }
@ -308,12 +302,9 @@ public class JColorChooser extends JComponent implements Accessible {
* The <code>ColorSelectionModel</code> will fire a <code>ChangeEvent</code> * The <code>ColorSelectionModel</code> will fire a <code>ChangeEvent</code>
* @param color the color to be set in the color chooser * @param color the color to be set in the color chooser
* @see JComponent#addPropertyChangeListener * @see JComponent#addPropertyChangeListener
*
* @beaninfo
* bound: false
* hidden: false
* description: The current color the chooser is to display.
*/ */
@BeanProperty(bound = false, description
= "The current color the chooser is to display.")
public void setColor(Color color) { public void setColor(Color color) {
selectionModel.setSelectedColor(color); selectionModel.setSelectedColor(color);
@ -381,11 +372,9 @@ public class JColorChooser extends JComponent implements Accessible {
* @see #getDragEnabled * @see #getDragEnabled
* @see #setTransferHandler * @see #setTransferHandler
* @see TransferHandler * @see TransferHandler
*
* @beaninfo
* description: Determines whether automatic drag handling is enabled.
* bound: false
*/ */
@BeanProperty(bound = false, description
= "Determines whether automatic drag handling is enabled.")
public void setDragEnabled(boolean b) { public void setDragEnabled(boolean b) {
if (b && GraphicsEnvironment.isHeadless()) { if (b && GraphicsEnvironment.isHeadless()) {
throw new HeadlessException(); throw new HeadlessException();
@ -411,12 +400,9 @@ public class JColorChooser extends JComponent implements Accessible {
* *
* @param preview the <code>JComponent</code> which displays the current color * @param preview the <code>JComponent</code> which displays the current color
* @see JComponent#addPropertyChangeListener * @see JComponent#addPropertyChangeListener
*
* @beaninfo
* bound: true
* hidden: true
* description: The UI component which displays the current color.
*/ */
@BeanProperty(hidden = true, description
= "The UI component which displays the current color.")
public void setPreviewPanel(JComponent preview) { public void setPreviewPanel(JComponent preview) {
if (previewPanel != preview) { if (previewPanel != preview) {
@ -496,12 +482,9 @@ public class JColorChooser extends JComponent implements Accessible {
* *
* @param panels an array of <code>AbstractColorChooserPanel</code> * @param panels an array of <code>AbstractColorChooserPanel</code>
* objects * objects
*
* @beaninfo
* bound: true
* hidden: true
* description: An array of different chooser types.
*/ */
@BeanProperty(hidden = true, description
= "An array of different chooser types.")
public void setChooserPanels( AbstractColorChooserPanel[] panels) { public void setChooserPanels( AbstractColorChooserPanel[] panels) {
AbstractColorChooserPanel[] oldValue = chooserPanels; AbstractColorChooserPanel[] oldValue = chooserPanels;
chooserPanels = panels; chooserPanels = panels;
@ -531,12 +514,9 @@ public class JColorChooser extends JComponent implements Accessible {
* Sets the model containing the selected color. * Sets the model containing the selected color.
* *
* @param newModel the new <code>ColorSelectionModel</code> object * @param newModel the new <code>ColorSelectionModel</code> object
*
* @beaninfo
* bound: true
* hidden: true
* description: The model which contains the currently selected color.
*/ */
@BeanProperty(hidden = true, description
= "The model which contains the currently selected color.")
public void setSelectionModel(ColorSelectionModel newModel ) { public void setSelectionModel(ColorSelectionModel newModel ) {
ColorSelectionModel oldModel = selectionModel; ColorSelectionModel oldModel = selectionModel;
selectionModel = newModel; selectionModel = newModel;
@ -603,6 +583,7 @@ public class JColorChooser extends JComponent implements Accessible {
* @return an AccessibleJColorChooser that serves as the * @return an AccessibleJColorChooser that serves as the
* AccessibleContext of this JColorChooser * AccessibleContext of this JColorChooser
*/ */
@BeanProperty(bound = false)
public AccessibleContext getAccessibleContext() { public AccessibleContext getAccessibleContext() {
if (accessibleContext == null) { if (accessibleContext == null) {
accessibleContext = new AccessibleJColorChooser(); accessibleContext = new AccessibleJColorChooser();

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -24,6 +24,8 @@
*/ */
package javax.swing; package javax.swing;
import java.beans.JavaBean;
import java.beans.BeanProperty;
import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener; import java.beans.PropertyChangeListener;
import java.beans.Transient; import java.beans.Transient;
@ -71,14 +73,12 @@ import javax.accessibility.*;
* *
* @param <E> the type of the elements of this combo box * @param <E> the type of the elements of this combo box
* *
* @beaninfo
* attribute: isContainer false
* description: A combination of a text field and a drop-down list.
*
* @author Arnaud Weber * @author Arnaud Weber
* @author Mark Davidson * @author Mark Davidson
* @since 1.2 * @since 1.2
*/ */
@JavaBean(defaultProperty = "UI", description = "A combination of a text field and a drop-down list.")
@SwingContainer(false)
@SuppressWarnings("serial") // Same-version serialization only @SuppressWarnings("serial") // Same-version serialization only
public class JComboBox<E> extends JComponent public class JComboBox<E> extends JComponent
implements ItemSelectable,ListDataListener,ActionListener, Accessible { implements ItemSelectable,ListDataListener,ActionListener, Accessible {
@ -255,13 +255,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* *
* @param ui the <code>ComboBoxUI</code> L&amp;F object * @param ui the <code>ComboBoxUI</code> L&amp;F object
* @see UIDefaults#getUI * @see UIDefaults#getUI
*
* @beaninfo
* bound: true
* hidden: true
* attribute: visualUpdate true
* description: The UI object that implements the Component's LookAndFeel.
*/ */
@BeanProperty(hidden = true, visualUpdate = true, description
= "The UI object that implements the Component's LookAndFeel.")
public void setUI(ComboBoxUI ui) { public void setUI(ComboBoxUI ui) {
super.setUI(ui); super.setUI(ui);
} }
@ -288,6 +284,7 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* @see JComponent#getUIClassID * @see JComponent#getUIClassID
* @see UIDefaults#getUI * @see UIDefaults#getUI
*/ */
@BeanProperty(bound = false)
public String getUIClassID() { public String getUIClassID() {
return uiClassID; return uiClassID;
} }
@ -308,11 +305,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* *
* @param aModel the <code>ComboBoxModel</code> that provides the * @param aModel the <code>ComboBoxModel</code> that provides the
* displayed list of items * displayed list of items
*
* @beaninfo
* bound: true
* description: Model that the combo box uses to get data to display.
*/ */
@BeanProperty(description
= "Model that the combo box uses to get data to display.")
public void setModel(ComboBoxModel<E> aModel) { public void setModel(ComboBoxModel<E> aModel) {
ComboBoxModel<E> oldModel = dataModel; ComboBoxModel<E> oldModel = dataModel;
if (oldModel != null) { if (oldModel != null) {
@ -363,12 +358,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* This method fires a property changed event. * This method fires a property changed event.
* *
* @param aFlag if <code>true</code>, lightweight popups are desired * @param aFlag if <code>true</code>, lightweight popups are desired
*
* @beaninfo
* bound: true
* expert: true
* description: Set to <code>false</code> to require heavyweight popups.
*/ */
@BeanProperty(expert = true, description
= "Set to <code>false</code> to require heavyweight popups.")
public void setLightWeightPopupEnabled(boolean aFlag) { public void setLightWeightPopupEnabled(boolean aFlag) {
boolean oldFlag = lightWeightPopupEnabled; boolean oldFlag = lightWeightPopupEnabled;
lightWeightPopupEnabled = aFlag; lightWeightPopupEnabled = aFlag;
@ -398,12 +390,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* *
* @param aFlag a boolean value, where true indicates that the * @param aFlag a boolean value, where true indicates that the
* field is editable * field is editable
*
* @beaninfo
* bound: true
* preferred: true
* description: If true, the user can type a new value in the combo box.
*/ */
@BeanProperty(preferred = true, description
= "If true, the user can type a new value in the combo box.")
public void setEditable(boolean aFlag) { public void setEditable(boolean aFlag) {
boolean oldFlag = isEditable; boolean oldFlag = isEditable;
isEditable = aFlag; isEditable = aFlag;
@ -427,11 +416,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* *
* @param count an integer specifying the maximum number of items to * @param count an integer specifying the maximum number of items to
* display in the list before using a scrollbar * display in the list before using a scrollbar
* @beaninfo
* bound: true
* preferred: true
* description: The maximum number of rows the popup should have
*/ */
@BeanProperty(preferred = true, description
= "The maximum number of rows the popup should have")
public void setMaximumRowCount(int count) { public void setMaximumRowCount(int count) {
int oldCount = maximumRowCount; int oldCount = maximumRowCount;
maximumRowCount = count; maximumRowCount = count;
@ -465,11 +452,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* @param aRenderer the <code>ListCellRenderer</code> that * @param aRenderer the <code>ListCellRenderer</code> that
* displays the selected item * displays the selected item
* @see #setEditor * @see #setEditor
* @beaninfo
* bound: true
* expert: true
* description: The renderer that paints the item selected in the list.
*/ */
@BeanProperty(expert = true, description
= "The renderer that paints the item selected in the list.")
public void setRenderer(ListCellRenderer<? super E> aRenderer) { public void setRenderer(ListCellRenderer<? super E> aRenderer) {
ListCellRenderer<? super E> oldRenderer = renderer; ListCellRenderer<? super E> oldRenderer = renderer;
renderer = aRenderer; renderer = aRenderer;
@ -497,11 +482,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* @param anEditor the <code>ComboBoxEditor</code> that * @param anEditor the <code>ComboBoxEditor</code> that
* displays the selected item * displays the selected item
* @see #setRenderer * @see #setRenderer
* @beaninfo
* bound: true
* expert: true
* description: The editor that combo box uses to edit the current value
*/ */
@BeanProperty(expert = true, description
= "The editor that combo box uses to edit the current value")
public void setEditor(ComboBoxEditor anEditor) { public void setEditor(ComboBoxEditor anEditor) {
ComboBoxEditor oldEditor = editor; ComboBoxEditor oldEditor = editor;
@ -553,10 +536,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* *
* @param anObject the list object to select; use <code>null</code> to * @param anObject the list object to select; use <code>null</code> to
clear the selection clear the selection
* @beaninfo
* preferred: true
* description: Sets the selected item in the JComboBox.
*/ */
@BeanProperty(bound = false, preferred = true, description
= "Sets the selected item in the JComboBox.")
public void setSelectedItem(Object anObject) { public void setSelectedItem(Object anObject) {
Object oldSelection = selectedItemReminder; Object oldSelection = selectedItemReminder;
Object objectToSelect = anObject; Object objectToSelect = anObject;
@ -618,10 +600,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* where 0 specifies the first item in the list and -1 indicates no selection * where 0 specifies the first item in the list and -1 indicates no selection
* @exception IllegalArgumentException if <code>anIndex</code> &lt; -1 or * @exception IllegalArgumentException if <code>anIndex</code> &lt; -1 or
* <code>anIndex</code> is greater than or equal to size * <code>anIndex</code> is greater than or equal to size
* @beaninfo
* preferred: true
* description: The item at index is selected.
*/ */
@BeanProperty(bound = false, preferred = true, description
= "The item at index is selected.")
public void setSelectedIndex(int anIndex) { public void setSelectedIndex(int anIndex) {
int size = dataModel.getSize(); int size = dataModel.getSize();
@ -689,11 +670,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* @param prototypeDisplayValue the prototype display value * @param prototypeDisplayValue the prototype display value
* @see #getPrototypeDisplayValue * @see #getPrototypeDisplayValue
* @since 1.4 * @since 1.4
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: The display prototype value, used to compute display width and height.
*/ */
@BeanProperty(visualUpdate = true, description
= "The display prototype value, used to compute display width and height.")
public void setPrototypeDisplayValue(E prototypeDisplayValue) { public void setPrototypeDisplayValue(E prototypeDisplayValue) {
Object oldValue = this.prototypeDisplayValue; Object oldValue = this.prototypeDisplayValue;
this.prototypeDisplayValue = prototypeDisplayValue; this.prototypeDisplayValue = prototypeDisplayValue;
@ -869,6 +848,7 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* array if no listeners have been added * array if no listeners have been added
* @since 1.4 * @since 1.4
*/ */
@BeanProperty(bound = false)
public ItemListener[] getItemListeners() { public ItemListener[] getItemListeners() {
return listenerList.getListeners(ItemListener.class); return listenerList.getListeners(ItemListener.class);
} }
@ -907,6 +887,7 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* array if no listeners have been added * array if no listeners have been added
* @since 1.4 * @since 1.4
*/ */
@BeanProperty(bound = false)
public ActionListener[] getActionListeners() { public ActionListener[] getActionListeners() {
return listenerList.getListeners(ActionListener.class); return listenerList.getListeners(ActionListener.class);
} }
@ -946,6 +927,7 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* array if no listeners have been added * array if no listeners have been added
* @since 1.4 * @since 1.4
*/ */
@BeanProperty(bound = false)
public PopupMenuListener[] getPopupMenuListeners() { public PopupMenuListener[] getPopupMenuListeners() {
return listenerList.getListeners(PopupMenuListener.class); return listenerList.getListeners(PopupMenuListener.class);
} }
@ -1074,11 +1056,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* @see #configurePropertiesFromAction * @see #configurePropertiesFromAction
* @see #createActionPropertyChangeListener * @see #createActionPropertyChangeListener
* @see #actionPropertyChanged * @see #actionPropertyChanged
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: the Action instance connected with this ActionEvent source
*/ */
@BeanProperty(visualUpdate = true, description
= "the Action instance connected with this ActionEvent source")
public void setAction(Action a) { public void setAction(Action a) {
Action oldValue = getAction(); Action oldValue = getAction();
if (action==null || !action.equals(a)) { if (action==null || !action.equals(a)) {
@ -1305,6 +1285,7 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* @return an array of <code>Objects</code> containing one * @return an array of <code>Objects</code> containing one
* element -- the selected item * element -- the selected item
*/ */
@BeanProperty(bound = false)
public Object[] getSelectedObjects() { public Object[] getSelectedObjects() {
Object selectedObject = getSelectedItem(); Object selectedObject = getSelectedItem();
if ( selectedObject == null ) if ( selectedObject == null )
@ -1394,11 +1375,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* *
* @param b a boolean value, where true enables the component and * @param b a boolean value, where true enables the component and
* false disables it * false disables it
* @beaninfo
* bound: true
* preferred: true
* description: Whether the combo box is enabled.
*/ */
@BeanProperty(preferred = true, description
= "The enabled state of the component.")
public void setEnabled(boolean b) { public void setEnabled(boolean b) {
super.setEnabled(b); super.setEnabled(b);
firePropertyChange( "enabled", !isEnabled(), isEnabled() ); firePropertyChange( "enabled", !isEnabled(), isEnabled() );
@ -1458,10 +1437,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* character becomes the selected item. * character becomes the selected item.
* *
* @param aManager a key selection manager * @param aManager a key selection manager
* @beaninfo
* expert: true
* description: The objects that changes the selection when a key is pressed.
*/ */
@BeanProperty(bound = false, expert = true, description
= "The objects that changes the selection when a key is pressed.")
public void setKeySelectionManager(KeySelectionManager aManager) { public void setKeySelectionManager(KeySelectionManager aManager) {
keySelectionManager = aManager; keySelectionManager = aManager;
} }
@ -1481,6 +1459,7 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* *
* @return an integer equal to the number of items in the list * @return an integer equal to the number of items in the list
*/ */
@BeanProperty(bound = false)
public int getItemCount() { public int getItemCount() {
return dataModel.getSize(); return dataModel.getSize();
} }
@ -1629,6 +1608,7 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* @return an AccessibleJComboBox that serves as the * @return an AccessibleJComboBox that serves as the
* AccessibleContext of this JComboBox * AccessibleContext of this JComboBox
*/ */
@BeanProperty(bound = false)
public AccessibleContext getAccessibleContext() { public AccessibleContext getAccessibleContext() {
if ( accessibleContext == null ) { if ( accessibleContext == null ) {
accessibleContext = new AccessibleJComboBox(); accessibleContext = new AccessibleJComboBox();
@ -2131,11 +2111,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* *
* @see #getAccessibleName * @see #getAccessibleName
* @see #addPropertyChangeListener * @see #addPropertyChangeListener
*
* @beaninfo
* preferred: true
* description: Sets the accessible name for the component.
*/ */
@BeanProperty(preferred = true, description
= "Sets the accessible name for the component.")
public void setAccessibleName(String s) { public void setAccessibleName(String s) {
ac.setAccessibleName(s); ac.setAccessibleName(s);
} }
@ -2165,11 +2143,9 @@ implements ItemSelectable,ListDataListener,ActionListener, Accessible {
* *
* @see #setAccessibleName * @see #setAccessibleName
* @see #addPropertyChangeListener * @see #addPropertyChangeListener
*
* @beaninfo
* preferred: true
* description: Sets the accessible description for the component.
*/ */
@BeanProperty(preferred = true, description
= "Sets the accessible description for the component.")
public void setAccessibleDescription(String s) { public void setAccessibleDescription(String s) {
ac.setAccessibleDescription(s); ac.setAccessibleDescription(s);
} }

View File

@ -25,6 +25,7 @@
package javax.swing; package javax.swing;
import java.beans.*;
import java.util.HashSet; import java.util.HashSet;
import java.util.Hashtable; import java.util.Hashtable;
import java.util.Enumeration; import java.util.Enumeration;
@ -36,10 +37,6 @@ import java.util.Set;
import java.awt.*; import java.awt.*;
import java.awt.event.*; import java.awt.event.*;
import java.awt.peer.LightweightPeer; import java.awt.peer.LightweightPeer;
import java.beans.PropertyChangeListener;
import java.beans.VetoableChangeListener;
import java.beans.VetoableChangeSupport;
import java.beans.Transient;
import java.applet.Applet; import java.applet.Applet;
@ -176,6 +173,7 @@ import sun.swing.UIClientPropertyKey;
* @author Arnaud Weber * @author Arnaud Weber
* @since 1.2 * @since 1.2
*/ */
@JavaBean(defaultProperty = "UIClassID")
@SuppressWarnings("serial") // Same-version serialization only @SuppressWarnings("serial") // Same-version serialization only
public abstract class JComponent extends Container implements Serializable, public abstract class JComponent extends Container implements Serializable,
TransferHandler.HasGetTransferHandler TransferHandler.HasGetTransferHandler
@ -479,11 +477,10 @@ public abstract class JComponent extends Container implements Serializable,
* *
* @param value whether or not the JPopupMenu is inherited * @param value whether or not the JPopupMenu is inherited
* @see #setComponentPopupMenu * @see #setComponentPopupMenu
* @beaninfo
* bound: true
* description: Whether or not the JPopupMenu is inherited
* @since 1.5 * @since 1.5
*/ */
@BeanProperty(description
= "Whether or not the JPopupMenu is inherited")
public void setInheritsPopupMenu(boolean value) { public void setInheritsPopupMenu(boolean value) {
boolean oldValue = getFlag(INHERITS_POPUP_MENU); boolean oldValue = getFlag(INHERITS_POPUP_MENU);
setFlag(INHERITS_POPUP_MENU, value); setFlag(INHERITS_POPUP_MENU, value);
@ -519,12 +516,10 @@ public abstract class JComponent extends Container implements Serializable,
* @param popup - the popup that will be assigned to this component * @param popup - the popup that will be assigned to this component
* may be null * may be null
* @see #getComponentPopupMenu * @see #getComponentPopupMenu
* @beaninfo
* bound: true
* preferred: true
* description: Popup to show
* @since 1.5 * @since 1.5
*/ */
@BeanProperty(preferred = true, description
= "Popup to show")
public void setComponentPopupMenu(JPopupMenu popup) { public void setComponentPopupMenu(JPopupMenu popup) {
if(popup != null) { if(popup != null) {
enableEvents(AWTEvent.MOUSE_EVENT_MASK); enableEvents(AWTEvent.MOUSE_EVENT_MASK);
@ -649,12 +644,9 @@ public abstract class JComponent extends Container implements Serializable,
* @see #updateUI * @see #updateUI
* @see UIManager#getLookAndFeel * @see UIManager#getLookAndFeel
* @see UIManager#getUI * @see UIManager#getUI
* @beaninfo
* bound: true
* hidden: true
* attribute: visualUpdate true
* description: The component's look and feel delegate.
*/ */
@BeanProperty(hidden = true, visualUpdate = true, description
= "The component's look and feel delegate.")
protected void setUI(ComponentUI newUI) { protected void setUI(ComponentUI newUI) {
/* We do not check that the UI instance is different /* We do not check that the UI instance is different
* before allowing the switch in order to enable the * before allowing the switch in order to enable the
@ -718,10 +710,9 @@ public abstract class JComponent extends Container implements Serializable,
* @return the <code>UIDefaults</code> key for a * @return the <code>UIDefaults</code> key for a
* <code>ComponentUI</code> subclass * <code>ComponentUI</code> subclass
* @see UIDefaults#getUI * @see UIDefaults#getUI
* @beaninfo
* expert: true
* description: UIClassID
*/ */
@BeanProperty(bound = false, expert = true, description
= "UIClassID")
public String getUIClassID() { public String getUIClassID() {
return uiClassID; return uiClassID;
} }
@ -1265,6 +1256,7 @@ public abstract class JComponent extends Container implements Serializable,
* @return true if the component is currently painting a tile, * @return true if the component is currently painting a tile,
* false otherwise * false otherwise
*/ */
@BeanProperty(bound = false)
public boolean isPaintingTile() { public boolean isPaintingTile() {
return getFlag(IS_PAINTING_TILE); return getFlag(IS_PAINTING_TILE);
} }
@ -1295,6 +1287,7 @@ public abstract class JComponent extends Container implements Serializable,
* @see #print * @see #print
* @since 1.6 * @since 1.6
*/ */
@BeanProperty(bound = false)
public final boolean isPaintingForPrint() { public final boolean isPaintingForPrint() {
return getFlag(IS_PRINTING); return getFlag(IS_PRINTING);
} }
@ -1319,6 +1312,7 @@ public abstract class JComponent extends Container implements Serializable,
* <code>Container.setFocusCycleRoot(boolean)</code>. * <code>Container.setFocusCycleRoot(boolean)</code>.
*/ */
@Deprecated @Deprecated
@BeanProperty(bound = false)
public boolean isManagingFocus() { public boolean isManagingFocus() {
return false; return false;
} }
@ -1589,11 +1583,9 @@ public abstract class JComponent extends Container implements Serializable,
* @see #getVerifyInputWhenFocusTarget * @see #getVerifyInputWhenFocusTarget
* *
* @since 1.3 * @since 1.3
* @beaninfo
* bound: true
* description: Whether the Component verifies input before accepting
* focus.
*/ */
@BeanProperty(description
= "Whether the Component verifies input before accepting focus.")
public void setVerifyInputWhenFocusTarget(boolean public void setVerifyInputWhenFocusTarget(boolean
verifyInputWhenFocusTarget) { verifyInputWhenFocusTarget) {
boolean oldVerifyInputWhenFocusTarget = boolean oldVerifyInputWhenFocusTarget =
@ -1641,11 +1633,9 @@ public abstract class JComponent extends Container implements Serializable,
* Sets the preferred size of this component. * Sets the preferred size of this component.
* If <code>preferredSize</code> is <code>null</code>, the UI will * If <code>preferredSize</code> is <code>null</code>, the UI will
* be asked for the preferred size. * be asked for the preferred size.
* @beaninfo
* preferred: true
* bound: true
* description: The preferred size of the component.
*/ */
@BeanProperty(preferred = true, description
= "The preferred size of the component.")
public void setPreferredSize(Dimension preferredSize) { public void setPreferredSize(Dimension preferredSize) {
super.setPreferredSize(preferredSize); super.setPreferredSize(preferredSize);
} }
@ -1685,10 +1675,9 @@ public abstract class JComponent extends Container implements Serializable,
* @param maximumSize a <code>Dimension</code> containing the * @param maximumSize a <code>Dimension</code> containing the
* desired maximum allowable size * desired maximum allowable size
* @see #getMaximumSize * @see #getMaximumSize
* @beaninfo
* bound: true
* description: The maximum size of the component.
*/ */
@BeanProperty(description
= "The maximum size of the component.")
public void setMaximumSize(Dimension maximumSize) { public void setMaximumSize(Dimension maximumSize) {
super.setMaximumSize(maximumSize); super.setMaximumSize(maximumSize);
} }
@ -1726,10 +1715,9 @@ public abstract class JComponent extends Container implements Serializable,
* *
* @param minimumSize the new minimum size of this component * @param minimumSize the new minimum size of this component
* @see #getMinimumSize * @see #getMinimumSize
* @beaninfo
* bound: true
* description: The minimum size of the component.
*/ */
@BeanProperty(description
= "The minimum size of the component.")
public void setMinimumSize(Dimension minimumSize) { public void setMinimumSize(Dimension minimumSize) {
super.setMinimumSize(minimumSize); super.setMinimumSize(minimumSize);
} }
@ -1793,12 +1781,9 @@ public abstract class JComponent extends Container implements Serializable,
* @param border the border to be rendered for this component * @param border the border to be rendered for this component
* @see Border * @see Border
* @see CompoundBorder * @see CompoundBorder
* @beaninfo
* bound: true
* preferred: true
* attribute: visualUpdate true
* description: The component's border.
*/ */
@BeanProperty(preferred = true, visualUpdate = true, description
= "The component's border.")
public void setBorder(Border border) { public void setBorder(Border border) {
Border oldBorder = this.border; Border oldBorder = this.border;
@ -1831,6 +1816,7 @@ public abstract class JComponent extends Container implements Serializable,
* @return the value of the insets property * @return the value of the insets property
* @see #setBorder * @see #setBorder
*/ */
@BeanProperty(expert = true)
public Insets getInsets() { public Insets getInsets() {
if (border != null) { if (border != null) {
return border.getBorderInsets(this); return border.getBorderInsets(this);
@ -1849,8 +1835,6 @@ public abstract class JComponent extends Container implements Serializable,
* @param insets the <code>Insets</code> object, which can be reused * @param insets the <code>Insets</code> object, which can be reused
* @return the <code>Insets</code> object * @return the <code>Insets</code> object
* @see #getInsets * @see #getInsets
* @beaninfo
* expert: true
*/ */
public Insets getInsets(Insets insets) { public Insets getInsets(Insets insets) {
if (insets == null) { if (insets == null) {
@ -1892,9 +1876,9 @@ public abstract class JComponent extends Container implements Serializable,
* *
* @param alignmentY the new vertical alignment * @param alignmentY the new vertical alignment
* @see #getAlignmentY * @see #getAlignmentY
* @beaninfo
* description: The preferred vertical alignment of the component.
*/ */
@BeanProperty(description
= "The preferred vertical alignment of the component.")
public void setAlignmentY(float alignmentY) { public void setAlignmentY(float alignmentY) {
this.alignmentY = validateAlignment(alignmentY); this.alignmentY = validateAlignment(alignmentY);
isAlignmentYSet = true; isAlignmentYSet = true;
@ -1921,9 +1905,9 @@ public abstract class JComponent extends Container implements Serializable,
* *
* @param alignmentX the new horizontal alignment * @param alignmentX the new horizontal alignment
* @see #getAlignmentX * @see #getAlignmentX
* @beaninfo
* description: The preferred horizontal alignment of the component.
*/ */
@BeanProperty(description
= "The preferred horizontal alignment of the component.")
public void setAlignmentX(float alignmentX) { public void setAlignmentX(float alignmentX) {
this.alignmentX = validateAlignment(alignmentX); this.alignmentX = validateAlignment(alignmentX);
isAlignmentXSet = true; isAlignmentXSet = true;
@ -1939,10 +1923,9 @@ public abstract class JComponent extends Container implements Serializable,
* @param inputVerifier the new input verifier * @param inputVerifier the new input verifier
* @since 1.3 * @since 1.3
* @see InputVerifier * @see InputVerifier
* @beaninfo
* bound: true
* description: The component's input verifier.
*/ */
@BeanProperty(description
= "The component's input verifier.")
public void setInputVerifier(InputVerifier inputVerifier) { public void setInputVerifier(InputVerifier inputVerifier) {
InputVerifier oldInputVerifier = (InputVerifier)getClientProperty( InputVerifier oldInputVerifier = (InputVerifier)getClientProperty(
JComponent_INPUT_VERIFIER); JComponent_INPUT_VERIFIER);
@ -1967,6 +1950,7 @@ public abstract class JComponent extends Container implements Serializable,
* then invoke operations on that object to draw on the component. * then invoke operations on that object to draw on the component.
* @return this components graphics context * @return this components graphics context
*/ */
@BeanProperty(bound = false)
public Graphics getGraphics() { public Graphics getGraphics() {
if (DEBUG_GRAPHICS_LOADED && shouldDebugGraphics() != 0) { if (DEBUG_GRAPHICS_LOADED && shouldDebugGraphics() != 0) {
DebugGraphics graphics = new DebugGraphics(super.getGraphics(), DebugGraphics graphics = new DebugGraphics(super.getGraphics(),
@ -1993,15 +1977,13 @@ public abstract class JComponent extends Container implements Serializable,
* <li>A value of 0 causes no changes to the debugging options. * <li>A value of 0 causes no changes to the debugging options.
* </ul> * </ul>
* <code>debugOptions</code> is bitwise OR'd into the current value * <code>debugOptions</code> is bitwise OR'd into the current value
*
* @beaninfo
* preferred: true
* enum: NONE_OPTION DebugGraphics.NONE_OPTION
* LOG_OPTION DebugGraphics.LOG_OPTION
* FLASH_OPTION DebugGraphics.FLASH_OPTION
* BUFFERED_OPTION DebugGraphics.BUFFERED_OPTION
* description: Diagnostic options for graphics operations.
*/ */
@BeanProperty(bound = false, preferred = true, enumerationValues = {
"DebugGraphics.NONE_OPTION",
"DebugGraphics.LOG_OPTION",
"DebugGraphics.FLASH_OPTION",
"DebugGraphics.BUFFERED_OPTION"}, description
= "Diagnostic options for graphics operations.")
public void setDebugGraphicsOptions(int debugOptions) { public void setDebugGraphicsOptions(int debugOptions) {
DebugGraphics.setDebugOptions(this, debugOptions); DebugGraphics.setDebugOptions(this, debugOptions);
} }
@ -2278,6 +2260,7 @@ public abstract class JComponent extends Container implements Serializable,
* @return an array of <code>KeyStroke</code> objects * @return an array of <code>KeyStroke</code> objects
* @see #registerKeyboardAction * @see #registerKeyboardAction
*/ */
@BeanProperty(bound = false)
public KeyStroke[] getRegisteredKeyStrokes() { public KeyStroke[] getRegisteredKeyStrokes() {
int[] counts = new int[3]; int[] counts = new int[3];
KeyStroke[][] strokes = new KeyStroke[3][]; KeyStroke[][] strokes = new KeyStroke[3][];
@ -2616,6 +2599,7 @@ public abstract class JComponent extends Container implements Serializable,
* @see #getBaseline(int, int) * @see #getBaseline(int, int)
* @since 1.6 * @since 1.6
*/ */
@BeanProperty(bound = false)
public BaselineResizeBehavior getBaselineResizeBehavior() { public BaselineResizeBehavior getBaselineResizeBehavior() {
if (ui != null) { if (ui != null) {
return ui.getBaselineResizeBehavior(this); return ui.getBaselineResizeBehavior(this);
@ -2666,10 +2650,8 @@ public abstract class JComponent extends Container implements Serializable,
* *
* @param aFlag true to make the component visible; false to * @param aFlag true to make the component visible; false to
* make it invisible * make it invisible
*
* @beaninfo
* attribute: visualUpdate true
*/ */
@BeanProperty(hidden = true, visualUpdate = true)
public void setVisible(boolean aFlag) { public void setVisible(boolean aFlag) {
if (aFlag != isVisible()) { if (aFlag != isVisible()) {
super.setVisible(aFlag); super.setVisible(aFlag);
@ -2699,13 +2681,9 @@ public abstract class JComponent extends Container implements Serializable,
* @param enabled true if this component should be enabled, false otherwise * @param enabled true if this component should be enabled, false otherwise
* @see java.awt.Component#isEnabled * @see java.awt.Component#isEnabled
* @see java.awt.Component#isLightweight * @see java.awt.Component#isLightweight
*
* @beaninfo
* preferred: true
* bound: true
* attribute: visualUpdate true
* description: The enabled state of the component.
*/ */
@BeanProperty(expert = true, preferred = true, visualUpdate = true, description
= "The enabled state of the component.")
public void setEnabled(boolean enabled) { public void setEnabled(boolean enabled) {
boolean oldEnabled = isEnabled(); boolean oldEnabled = isEnabled();
super.setEnabled(enabled); super.setEnabled(enabled);
@ -2722,13 +2700,9 @@ public abstract class JComponent extends Container implements Serializable,
* *
* @param fg the desired foreground <code>Color</code> * @param fg the desired foreground <code>Color</code>
* @see java.awt.Component#getForeground * @see java.awt.Component#getForeground
*
* @beaninfo
* preferred: true
* bound: true
* attribute: visualUpdate true
* description: The foreground color of the component.
*/ */
@BeanProperty(preferred = true, visualUpdate = true, description
= "The foreground color of the component.")
public void setForeground(Color fg) { public void setForeground(Color fg) {
Color oldFg = getForeground(); Color oldFg = getForeground();
super.setForeground(fg); super.setForeground(fg);
@ -2752,13 +2726,9 @@ public abstract class JComponent extends Container implements Serializable,
* @param bg the desired background <code>Color</code> * @param bg the desired background <code>Color</code>
* @see java.awt.Component#getBackground * @see java.awt.Component#getBackground
* @see #setOpaque * @see #setOpaque
*
* @beaninfo
* preferred: true
* bound: true
* attribute: visualUpdate true
* description: The background color of the component.
*/ */
@BeanProperty(preferred = true, visualUpdate = true, description
= "The background color of the component.")
public void setBackground(Color bg) { public void setBackground(Color bg) {
Color oldBg = getBackground(); Color oldBg = getBackground();
super.setBackground(bg); super.setBackground(bg);
@ -2773,13 +2743,9 @@ public abstract class JComponent extends Container implements Serializable,
* *
* @param font the desired <code>Font</code> for this component * @param font the desired <code>Font</code> for this component
* @see java.awt.Component#getFont * @see java.awt.Component#getFont
*
* @beaninfo
* preferred: true
* bound: true
* attribute: visualUpdate true
* description: The font for the component.
*/ */
@BeanProperty(preferred = true, visualUpdate = true, description
= "The font for the component.")
public void setFont(Font font) { public void setFont(Font font) {
Font oldFont = getFont(); Font oldFont = getFont();
super.setFont(font); super.setFont(font);
@ -3028,10 +2994,9 @@ public abstract class JComponent extends Container implements Serializable,
* @param text the string to display; if the text is <code>null</code>, * @param text the string to display; if the text is <code>null</code>,
* the tool tip is turned off for this component * the tool tip is turned off for this component
* @see #TOOL_TIP_TEXT_KEY * @see #TOOL_TIP_TEXT_KEY
* @beaninfo
* preferred: true
* description: The text to display in a tool tip.
*/ */
@BeanProperty(bound = false, preferred = true, description
= "The text to display in a tool tip.")
public void setToolTipText(String text) { public void setToolTipText(String text) {
String oldText = getToolTipText(); String oldText = getToolTipText();
putClientProperty(TOOL_TIP_TEXT_KEY, text); putClientProperty(TOOL_TIP_TEXT_KEY, text);
@ -3190,11 +3155,9 @@ public abstract class JComponent extends Container implements Serializable,
* @see #getAutoscrolls * @see #getAutoscrolls
* @see JViewport * @see JViewport
* @see JScrollPane * @see JScrollPane
*
* @beaninfo
* expert: true
* description: Determines if this component automatically scrolls its contents when dragged.
*/ */
@BeanProperty(bound = false, expert = true, description
= "Determines if this component automatically scrolls its contents when dragged.")
public void setAutoscrolls(boolean autoscrolls) { public void setAutoscrolls(boolean autoscrolls) {
setFlag(AUTOSCROLLS_SET, true); setFlag(AUTOSCROLLS_SET, true);
if (this.autoscrolls != autoscrolls) { if (this.autoscrolls != autoscrolls) {
@ -3254,11 +3217,9 @@ public abstract class JComponent extends Container implements Serializable,
* @see TransferHandler * @see TransferHandler
* @see #getTransferHandler * @see #getTransferHandler
* @since 1.4 * @since 1.4
* @beaninfo
* bound: true
* hidden: true
* description: Mechanism for transfer of data to and from the component
*/ */
@BeanProperty(hidden = true, description
= "Mechanism for transfer of data to and from the component")
public void setTransferHandler(TransferHandler newHandler) { public void setTransferHandler(TransferHandler newHandler) {
TransferHandler oldHandler = (TransferHandler)getClientProperty( TransferHandler oldHandler = (TransferHandler)getClientProperty(
JComponent_TRANSFER_HANDLER); JComponent_TRANSFER_HANDLER);
@ -4208,8 +4169,6 @@ public abstract class JComponent extends Container implements Serializable,
* or if any keystroke already maps to another focus traversal * or if any keystroke already maps to another focus traversal
* operation for this Component * operation for this Component
* @since 1.5 * @since 1.5
* @beaninfo
* bound: true
*/ */
public void public void
setFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes) setFocusTraversalKeys(int id, Set<? extends AWTKeyStroke> keystrokes)
@ -4336,6 +4295,7 @@ public abstract class JComponent extends Container implements Serializable,
* *
* @return the current x coordinate of the component's origin * @return the current x coordinate of the component's origin
*/ */
@BeanProperty(bound = false)
public int getX() { return super.getX(); } public int getX() { return super.getX(); }
@ -4348,6 +4308,7 @@ public abstract class JComponent extends Container implements Serializable,
* *
* @return the current y coordinate of the component's origin * @return the current y coordinate of the component's origin
*/ */
@BeanProperty(bound = false)
public int getY() { return super.getY(); } public int getY() { return super.getY(); }
@ -4360,6 +4321,7 @@ public abstract class JComponent extends Container implements Serializable,
* *
* @return the current width of this component * @return the current width of this component
*/ */
@BeanProperty(bound = false)
public int getWidth() { return super.getWidth(); } public int getWidth() { return super.getWidth(); }
@ -4372,6 +4334,7 @@ public abstract class JComponent extends Container implements Serializable,
* *
* @return the current height of this component * @return the current height of this component
*/ */
@BeanProperty(bound = false)
public int getHeight() { return super.getHeight(); } public int getHeight() { return super.getHeight(); }
/** /**
@ -4405,11 +4368,9 @@ public abstract class JComponent extends Container implements Serializable,
* *
* @param isOpaque true if this component should be opaque * @param isOpaque true if this component should be opaque
* @see #isOpaque * @see #isOpaque
* @beaninfo
* bound: true
* expert: true
* description: The component's opacity
*/ */
@BeanProperty(expert = true, description
= "The component's opacity")
public void setOpaque(boolean isOpaque) { public void setOpaque(boolean isOpaque) {
boolean oldValue = getFlag(IS_OPAQUE); boolean oldValue = getFlag(IS_OPAQUE);
setFlag(IS_OPAQUE, isOpaque); setFlag(IS_OPAQUE, isOpaque);
@ -4520,6 +4481,7 @@ public abstract class JComponent extends Container implements Serializable,
* *
* @return the visible rectangle * @return the visible rectangle
*/ */
@BeanProperty(bound = false)
public Rectangle getVisibleRect() { public Rectangle getVisibleRect() {
Rectangle visibleRect = new Rectangle(); Rectangle visibleRect = new Rectangle();
@ -4628,6 +4590,7 @@ public abstract class JComponent extends Container implements Serializable,
* *
* @since 1.4 * @since 1.4
*/ */
@BeanProperty(bound = false)
public synchronized VetoableChangeListener[] getVetoableChangeListeners() { public synchronized VetoableChangeListener[] getVetoableChangeListeners() {
if (vetoableChangeSupport == null) { if (vetoableChangeSupport == null) {
return new VetoableChangeListener[0]; return new VetoableChangeListener[0];
@ -4645,6 +4608,7 @@ public abstract class JComponent extends Container implements Serializable,
* @return the top-level <code>Container</code> that this component is in, * @return the top-level <code>Container</code> that this component is in,
* or <code>null</code> if not in any container * or <code>null</code> if not in any container
*/ */
@BeanProperty(bound = false)
public Container getTopLevelAncestor() { public Container getTopLevelAncestor() {
for(Container p = this; p != null; p = p.getParent()) { for(Container p = this; p != null; p = p.getParent()) {
if(p instanceof Window || p instanceof Applet) { if(p instanceof Window || p instanceof Applet) {
@ -4711,6 +4675,7 @@ public abstract class JComponent extends Container implements Serializable,
* *
* @since 1.4 * @since 1.4
*/ */
@BeanProperty(bound = false)
public AncestorListener[] getAncestorListeners() { public AncestorListener[] getAncestorListeners() {
AncestorNotifier ancestorNotifier = getAncestorNotifier(); AncestorNotifier ancestorNotifier = getAncestorNotifier();
if (ancestorNotifier == null) { if (ancestorNotifier == null) {
@ -4943,6 +4908,7 @@ public abstract class JComponent extends Container implements Serializable,
* *
* @return always returns true * @return always returns true
*/ */
@BeanProperty(bound = false)
public boolean isOptimizedDrawingEnabled() { public boolean isOptimizedDrawingEnabled() {
return true; return true;
} }
@ -5392,6 +5358,7 @@ public abstract class JComponent extends Container implements Serializable,
* @return the <code>JRootPane</code> that contains this component, * @return the <code>JRootPane</code> that contains this component,
* or <code>null</code> if no <code>JRootPane</code> is found * or <code>null</code> if no <code>JRootPane</code> is found
*/ */
@BeanProperty(bound = false)
public JRootPane getRootPane() { public JRootPane getRootPane() {
return SwingUtilities.getRootPane(this); return SwingUtilities.getRootPane(this);
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -22,7 +22,6 @@
* or visit www.oracle.com if you need additional information or have any * or visit www.oracle.com if you need additional information or have any
* questions. * questions.
*/ */
package javax.swing; package javax.swing;
import java.util.List; import java.util.List;
@ -34,16 +33,15 @@ import javax.accessibility.*;
import java.awt.Component; import java.awt.Component;
import java.awt.Container; import java.awt.Container;
import java.awt.DefaultFocusTraversalPolicy; import java.beans.JavaBean;
import java.awt.FocusTraversalPolicy; import java.beans.BeanProperty;
import java.awt.Window;
import java.io.ObjectOutputStream; import java.io.ObjectOutputStream;
import java.io.ObjectInputStream;
import java.io.IOException; import java.io.IOException;
import java.beans.PropertyVetoException; import java.beans.PropertyVetoException;
import java.util.Set; import java.util.Set;
import java.util.TreeSet; import java.util.TreeSet;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
/** /**
* A container used to create a multiple-document interface or a virtual desktop. * A container used to create a multiple-document interface or a virtual desktop.
* You create <code>JInternalFrame</code> objects and add them to the * You create <code>JInternalFrame</code> objects and add them to the
@ -88,6 +86,7 @@ import java.util.LinkedHashSet;
* @author David Kloba * @author David Kloba
* @since 1.2 * @since 1.2
*/ */
@JavaBean(defaultProperty = "UI")
@SuppressWarnings("serial") // Same-version serialization only @SuppressWarnings("serial") // Same-version serialization only
public class JDesktopPane extends JLayeredPane implements Accessible public class JDesktopPane extends JLayeredPane implements Accessible
{ {
@ -163,12 +162,9 @@ public class JDesktopPane extends JLayeredPane implements Accessible
* *
* @param ui the DesktopPaneUI L&amp;F object * @param ui the DesktopPaneUI L&amp;F object
* @see UIDefaults#getUI * @see UIDefaults#getUI
* @beaninfo
* bound: true
* hidden: true
* attribute: visualUpdate true
* description: The UI object that implements the Component's LookAndFeel.
*/ */
@BeanProperty(hidden = true, visualUpdate = true, description
= "The UI object that implements the Component's LookAndFeel.")
public void setUI(DesktopPaneUI ui) { public void setUI(DesktopPaneUI ui) {
super.setUI(ui); super.setUI(ui);
} }
@ -183,13 +179,12 @@ public class JDesktopPane extends JLayeredPane implements Accessible
* @see #LIVE_DRAG_MODE * @see #LIVE_DRAG_MODE
* @see #OUTLINE_DRAG_MODE * @see #OUTLINE_DRAG_MODE
* *
* @beaninfo
* bound: true
* description: Dragging style for internal frame children.
* enum: LIVE_DRAG_MODE JDesktopPane.LIVE_DRAG_MODE
* OUTLINE_DRAG_MODE JDesktopPane.OUTLINE_DRAG_MODE
* @since 1.3 * @since 1.3
*/ */
@BeanProperty(enumerationValues = {
"JDesktopPane.LIVE_DRAG_MODE",
"JDesktopPane.OUTLINE_DRAG_MODE"}, description
= "Dragging style for internal frame children.")
public void setDragMode(int dragMode) { public void setDragMode(int dragMode) {
int oldDragMode = this.dragMode; int oldDragMode = this.dragMode;
this.dragMode = dragMode; this.dragMode = dragMode;
@ -225,12 +220,9 @@ public class JDesktopPane extends JLayeredPane implements Accessible
* {@code LookAndFeel}. * {@code LookAndFeel}.
* *
* @param d the <code>DesktopManager</code> to use * @param d the <code>DesktopManager</code> to use
*
* @beaninfo
* bound: true
* description: Desktop manager to handle the internal frames in the
* desktop pane.
*/ */
@BeanProperty(description
= "Desktop manager to handle the internal frames in the desktop pane.")
public void setDesktopManager(DesktopManager d) { public void setDesktopManager(DesktopManager d) {
DesktopManager oldValue = desktopManager; DesktopManager oldValue = desktopManager;
desktopManager = d; desktopManager = d;
@ -256,6 +248,7 @@ public class JDesktopPane extends JLayeredPane implements Accessible
* @see JComponent#getUIClassID * @see JComponent#getUIClassID
* @see UIDefaults#getUI * @see UIDefaults#getUI
*/ */
@BeanProperty(bound = false)
public String getUIClassID() { public String getUIClassID() {
return uiClassID; return uiClassID;
} }
@ -266,6 +259,7 @@ public class JDesktopPane extends JLayeredPane implements Accessible
* *
* @return an array of <code>JInternalFrame</code> objects * @return an array of <code>JInternalFrame</code> objects
*/ */
@BeanProperty(bound = false)
public JInternalFrame[] getAllFrames() { public JInternalFrame[] getAllFrames() {
return getAllFrames(this).toArray(new JInternalFrame[0]); return getAllFrames(this).toArray(new JInternalFrame[0]);
} }
@ -600,6 +594,7 @@ public class JDesktopPane extends JLayeredPane implements Accessible
* @return an <code>AccessibleJDesktopPane</code> that serves as the * @return an <code>AccessibleJDesktopPane</code> that serves as the
* <code>AccessibleContext</code> of this <code>JDesktopPane</code> * <code>AccessibleContext</code> of this <code>JDesktopPane</code>
*/ */
@BeanProperty(bound = false)
public AccessibleContext getAccessibleContext() { public AccessibleContext getAccessibleContext() {
if (accessibleContext == null) { if (accessibleContext == null) {
accessibleContext = new AccessibleJDesktopPane(); accessibleContext = new AccessibleJDesktopPane();

View File

@ -26,6 +26,8 @@ package javax.swing;
import java.awt.*; import java.awt.*;
import java.awt.event.*; import java.awt.event.*;
import java.beans.JavaBean;
import java.beans.BeanProperty;
import javax.accessibility.*; import javax.accessibility.*;
/** /**
@ -86,16 +88,13 @@ import javax.accessibility.*;
* @see JRootPane * @see JRootPane
* @see javax.swing.RootPaneContainer * @see javax.swing.RootPaneContainer
* *
* @beaninfo
* attribute: isContainer true
* attribute: containerDelegate getContentPane
* description: A toplevel window for creating dialog boxes.
*
* @author David Kloba * @author David Kloba
* @author James Gosling * @author James Gosling
* @author Scott Violet * @author Scott Violet
* @since 1.2 * @since 1.2
*/ */
@JavaBean(defaultProperty = "JMenuBar", description = "A toplevel window for creating dialog boxes.")
@SwingContainer(delegate = "getContentPane")
@SuppressWarnings("serial") // Same-version serialization only @SuppressWarnings("serial") // Same-version serialization only
public class JDialog extends Dialog implements WindowConstants, public class JDialog extends Dialog implements WindowConstants,
Accessible, Accessible,
@ -743,15 +742,12 @@ public class JDialog extends Dialog implements WindowConstants,
* @see #addWindowListener * @see #addWindowListener
* @see #getDefaultCloseOperation * @see #getDefaultCloseOperation
* @see WindowConstants * @see WindowConstants
*
* @beaninfo
* preferred: true
* bound: true
* enum: DO_NOTHING_ON_CLOSE WindowConstants.DO_NOTHING_ON_CLOSE
* HIDE_ON_CLOSE WindowConstants.HIDE_ON_CLOSE
* DISPOSE_ON_CLOSE WindowConstants.DISPOSE_ON_CLOSE
* description: The dialog's default close operation.
*/ */
@BeanProperty(preferred = true, enumerationValues = {
"WindowConstants.DO_NOTHING_ON_CLOSE",
"WindowConstants.HIDE_ON_CLOSE",
"WindowConstants.DISPOSE_ON_CLOSE"}, description
= "The dialog's default close operation.")
public void setDefaultCloseOperation(int operation) { public void setDefaultCloseOperation(int operation) {
if (operation != DO_NOTHING_ON_CLOSE && if (operation != DO_NOTHING_ON_CLOSE &&
operation != HIDE_ON_CLOSE && operation != HIDE_ON_CLOSE &&
@ -802,12 +798,9 @@ public class JDialog extends Dialog implements WindowConstants,
* @see #getTransferHandler * @see #getTransferHandler
* @see java.awt.Component#setDropTarget * @see java.awt.Component#setDropTarget
* @since 1.6 * @since 1.6
*
* @beaninfo
* bound: true
* hidden: true
* description: Mechanism for transfer of data into the component
*/ */
@BeanProperty(hidden = true, description
= "Mechanism for transfer of data into the component")
public void setTransferHandler(TransferHandler newHandler) { public void setTransferHandler(TransferHandler newHandler) {
TransferHandler oldHandler = transferHandler; TransferHandler oldHandler = transferHandler;
transferHandler = newHandler; transferHandler = newHandler;
@ -844,11 +837,9 @@ public class JDialog extends Dialog implements WindowConstants,
* @param menu the menubar being placed in the dialog * @param menu the menubar being placed in the dialog
* *
* @see #getJMenuBar * @see #getJMenuBar
*
* @beaninfo
* hidden: true
* description: The menubar for accessing pulldown menus from this dialog.
*/ */
@BeanProperty(bound = false, hidden = true, description
= "The menubar for accessing pulldown menus from this dialog.")
public void setJMenuBar(final JMenuBar menu) { public void setJMenuBar(final JMenuBar menu) {
getRootPane().setJMenuBar(menu); getRootPane().setJMenuBar(menu);
} }
@ -892,10 +883,9 @@ public class JDialog extends Dialog implements WindowConstants,
* @see #setLayout * @see #setLayout
* @see #isRootPaneCheckingEnabled * @see #isRootPaneCheckingEnabled
* @see javax.swing.RootPaneContainer * @see javax.swing.RootPaneContainer
* @beaninfo
* hidden: true
* description: Whether the add and setLayout methods are forwarded
*/ */
@BeanProperty(hidden = true, description
= "Whether the add and setLayout methods are forwarded")
protected void setRootPaneCheckingEnabled(boolean enabled) { protected void setRootPaneCheckingEnabled(boolean enabled) {
rootPaneCheckingEnabled = enabled; rootPaneCheckingEnabled = enabled;
} }
@ -977,6 +967,8 @@ public class JDialog extends Dialog implements WindowConstants,
* @see #setRootPane * @see #setRootPane
* @see RootPaneContainer#getRootPane * @see RootPaneContainer#getRootPane
*/ */
@BeanProperty(bound = false, hidden = true, description
= "the RootPane object for this dialog.")
public JRootPane getRootPane() { public JRootPane getRootPane() {
return rootPane; return rootPane;
} }
@ -989,10 +981,6 @@ public class JDialog extends Dialog implements WindowConstants,
* @param root the {@code rootPane} object for this dialog * @param root the {@code rootPane} object for this dialog
* *
* @see #getRootPane * @see #getRootPane
*
* @beaninfo
* hidden: true
* description: the RootPane object for this dialog.
*/ */
protected void setRootPane(JRootPane root) { protected void setRootPane(JRootPane root) {
if(rootPane != null) { if(rootPane != null) {
@ -1041,12 +1029,9 @@ public class JDialog extends Dialog implements WindowConstants,
* exception) if the content pane parameter is {@code null} * exception) if the content pane parameter is {@code null}
* @see #getContentPane * @see #getContentPane
* @see RootPaneContainer#setContentPane * @see RootPaneContainer#setContentPane
*
* @beaninfo
* hidden: true
* description: The client area of the dialog where child
* components are normally inserted.
*/ */
@BeanProperty(bound = false, hidden = true, description
= "The client area of the dialog where child components are normally inserted.")
public void setContentPane(Container contentPane) { public void setContentPane(Container contentPane) {
getRootPane().setContentPane(contentPane); getRootPane().setContentPane(contentPane);
} }
@ -1073,11 +1058,9 @@ public class JDialog extends Dialog implements WindowConstants,
* exception) if the layered pane parameter is null * exception) if the layered pane parameter is null
* @see #getLayeredPane * @see #getLayeredPane
* @see RootPaneContainer#setLayeredPane * @see RootPaneContainer#setLayeredPane
*
* @beaninfo
* hidden: true
* description: The pane which holds the various dialog layers.
*/ */
@BeanProperty(bound = false, hidden = true, description
= "The pane which holds the various dialog layers.")
public void setLayeredPane(JLayeredPane layeredPane) { public void setLayeredPane(JLayeredPane layeredPane) {
getRootPane().setLayeredPane(layeredPane); getRootPane().setLayeredPane(layeredPane);
} }
@ -1101,11 +1084,9 @@ public class JDialog extends Dialog implements WindowConstants,
* @param glassPane the {@code glassPane} object for this dialog * @param glassPane the {@code glassPane} object for this dialog
* @see #getGlassPane * @see #getGlassPane
* @see RootPaneContainer#setGlassPane * @see RootPaneContainer#setGlassPane
*
* @beaninfo
* hidden: true
* description: A transparent pane used for menu rendering.
*/ */
@BeanProperty(bound = false, hidden = true, description
= "A transparent pane used for menu rendering.")
public void setGlassPane(Component glassPane) { public void setGlassPane(Component glassPane) {
getRootPane().setGlassPane(glassPane); getRootPane().setGlassPane(glassPane);
} }
@ -1115,6 +1096,7 @@ public class JDialog extends Dialog implements WindowConstants,
* *
* @since 1.6 * @since 1.6
*/ */
@BeanProperty(bound = false)
public Graphics getGraphics() { public Graphics getGraphics() {
JComponent.getGraphicsInvoked(this); JComponent.getGraphicsInvoked(this);
return super.getGraphics(); return super.getGraphics();

View File

@ -24,15 +24,13 @@
*/ */
package javax.swing; package javax.swing;
import sun.swing.SwingUtilities2;
import java.awt.*; import java.awt.*;
import java.awt.event.*; import java.beans.JavaBean;
import java.beans.BeanProperty;
import java.lang.reflect.*; import java.lang.reflect.*;
import java.net.*; import java.net.*;
import java.util.*; import java.util.*;
import java.io.*; import java.io.*;
import java.util.*;
import javax.swing.plaf.*; import javax.swing.plaf.*;
import javax.swing.text.*; import javax.swing.text.*;
@ -184,13 +182,11 @@ import sun.reflect.misc.ReflectUtil;
* has been added to the <code>java.beans</code> package. * has been added to the <code>java.beans</code> package.
* Please see {@link java.beans.XMLEncoder}. * Please see {@link java.beans.XMLEncoder}.
* *
* @beaninfo
* attribute: isContainer false
* description: A text component to edit various types of content.
*
* @author Timothy Prinzing * @author Timothy Prinzing
* @since 1.2 * @since 1.2
*/ */
@JavaBean(defaultProperty = "UIClassID", description = "A text component to edit various types of content.")
@SwingContainer(false)
@SuppressWarnings("serial") // Same-version serialization only @SuppressWarnings("serial") // Same-version serialization only
public class JEditorPane extends JTextComponent { public class JEditorPane extends JTextComponent {
@ -323,6 +319,7 @@ public class JEditorPane extends JTextComponent {
* array if no listeners have been added * array if no listeners have been added
* @since 1.4 * @since 1.4
*/ */
@BeanProperty(bound = false)
public synchronized HyperlinkListener[] getHyperlinkListeners() { public synchronized HyperlinkListener[] getHyperlinkListeners() {
return listenerList.getListeners(javax.swing.event.HyperlinkListener.class); return listenerList.getListeners(javax.swing.event.HyperlinkListener.class);
} }
@ -411,11 +408,9 @@ public class JEditorPane extends JTextComponent {
* @exception IOException for a <code>null</code> or invalid * @exception IOException for a <code>null</code> or invalid
* page specification, or exception from the stream being read * page specification, or exception from the stream being read
* @see #getPage * @see #getPage
* @beaninfo
* description: the URL used to set content
* bound: true
* expert: true
*/ */
@BeanProperty(expert = true, description
= "the URL used to set content")
public void setPage(URL page) throws IOException { public void setPage(URL page) throws IOException {
if (page == null) { if (page == null) {
throw new IOException("invalid url"); throw new IOException("invalid url");
@ -895,6 +890,7 @@ public class JEditorPane extends JTextComponent {
* @see JComponent#getUIClassID * @see JComponent#getUIClassID
* @see UIDefaults#getUI * @see UIDefaults#getUI
*/ */
@BeanProperty(bound = false)
public String getUIClassID() { public String getUIClassID() {
return uiClassID; return uiClassID;
} }
@ -960,11 +956,11 @@ public class JEditorPane extends JTextComponent {
* @param type the non-<code>null</code> mime type for the content editing * @param type the non-<code>null</code> mime type for the content editing
* support * support
* @see #getContentType * @see #getContentType
* @beaninfo
* description: the type of content
* @throws NullPointerException if the <code>type</code> parameter * @throws NullPointerException if the <code>type</code> parameter
* is <code>null</code> * is <code>null</code>
*/ */
@BeanProperty(bound = false, description
= "the type of content")
public final void setContentType(String type) { public final void setContentType(String type) {
// The type could have optional info is part of it, // The type could have optional info is part of it,
// for example some charset info. We need to strip that // for example some charset info. We need to strip that
@ -1046,11 +1042,9 @@ public class JEditorPane extends JTextComponent {
* *
* @param kit the desired editor behavior * @param kit the desired editor behavior
* @see #getEditorKit * @see #getEditorKit
* @beaninfo
* description: the currently installed kit for handling content
* bound: true
* expert: true
*/ */
@BeanProperty(expert = true, description
= "the currently installed kit for handling content")
public void setEditorKit(EditorKit kit) { public void setEditorKit(EditorKit kit) {
EditorKit old = this.kit; EditorKit old = this.kit;
isUserSetEditorKit = true; isUserSetEditorKit = true;
@ -1414,9 +1408,9 @@ public class JEditorPane extends JTextComponent {
* @param t the new text to be set; if <code>null</code> the old * @param t the new text to be set; if <code>null</code> the old
* text will be deleted * text will be deleted
* @see #getText * @see #getText
* @beaninfo
* description: the text of this component
*/ */
@BeanProperty(bound = false, description
= "the text of this component")
public void setText(String t) { public void setText(String t) {
try { try {
Document doc = getDocument(); Document doc = getDocument();
@ -1466,6 +1460,7 @@ public class JEditorPane extends JTextComponent {
* @return true if a viewport should force the Scrollables width to * @return true if a viewport should force the Scrollables width to
* match its own, false otherwise * match its own, false otherwise
*/ */
@BeanProperty(bound = false)
public boolean getScrollableTracksViewportWidth() { public boolean getScrollableTracksViewportWidth() {
Container parent = SwingUtilities.getUnwrappedParent(this); Container parent = SwingUtilities.getUnwrappedParent(this);
if (parent instanceof JViewport) { if (parent instanceof JViewport) {
@ -1489,6 +1484,7 @@ public class JEditorPane extends JTextComponent {
* <code>Scrollable</code>'s height to match its own, * <code>Scrollable</code>'s height to match its own,
* false otherwise * false otherwise
*/ */
@BeanProperty(bound = false)
public boolean getScrollableTracksViewportHeight() { public boolean getScrollableTracksViewportHeight() {
Container parent = SwingUtilities.getUnwrappedParent(this); Container parent = SwingUtilities.getUnwrappedParent(this);
if (parent instanceof JViewport) { if (parent instanceof JViewport) {
@ -1626,6 +1622,7 @@ public class JEditorPane extends JTextComponent {
* @return an AccessibleJEditorPane that serves as the * @return an AccessibleJEditorPane that serves as the
* AccessibleContext of this JEditorPane * AccessibleContext of this JEditorPane
*/ */
@BeanProperty(bound = false)
public AccessibleContext getAccessibleContext() { public AccessibleContext getAccessibleContext() {
if (getEditorKit() instanceof HTMLEditorKit) { if (getEditorKit() instanceof HTMLEditorKit) {
if (accessibleContext == null || accessibleContext.getClass() != if (accessibleContext == null || accessibleContext.getClass() !=

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -22,7 +22,6 @@
* or visit www.oracle.com if you need additional information or have any * or visit www.oracle.com if you need additional information or have any
* questions. * questions.
*/ */
package javax.swing; package javax.swing;
import javax.swing.event.*; import javax.swing.event.*;
@ -48,6 +47,8 @@ import java.awt.HeadlessException;
import java.awt.EventQueue; import java.awt.EventQueue;
import java.awt.Toolkit; import java.awt.Toolkit;
import java.awt.event.*; import java.awt.event.*;
import java.beans.JavaBean;
import java.beans.BeanProperty;
import java.beans.PropertyChangeListener; import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeEvent;
import java.io.InvalidObjectException; import java.io.InvalidObjectException;
@ -83,13 +84,11 @@ import java.lang.ref.WeakReference;
* href="package-summary.html#threading">Swing's Threading * href="package-summary.html#threading">Swing's Threading
* Policy</a>. * Policy</a>.
* *
* @beaninfo
* attribute: isContainer false
* description: A component which allows for the interactive selection of a file.
*
* @author Jeff Dinkins * @author Jeff Dinkins
* @since 1.2 * @since 1.2
*/ */
@JavaBean(defaultProperty = "UI", description = "A component which allows for the interactive selection of a file.")
@SwingContainer(false)
@SuppressWarnings("serial") // Superclass is not serializable across versions @SuppressWarnings("serial") // Superclass is not serializable across versions
public class JFileChooser extends JComponent implements Accessible { public class JFileChooser extends JComponent implements Accessible {
@ -456,11 +455,9 @@ public class JFileChooser extends JComponent implements Accessible {
* @see #setTransferHandler * @see #setTransferHandler
* @see TransferHandler * @see TransferHandler
* @since 1.4 * @since 1.4
*
* @beaninfo
* description: determines whether automatic drag handling is enabled
* bound: false
*/ */
@BeanProperty(bound = false, description
= "determines whether automatic drag handling is enabled")
public void setDragEnabled(boolean b) { public void setDragEnabled(boolean b) {
checkDragEnabled(b); checkDragEnabled(b);
dragEnabled = b; dragEnabled = b;
@ -505,14 +502,11 @@ public class JFileChooser extends JComponent implements Accessible {
* not the current directory, changes the current directory * not the current directory, changes the current directory
* to be the file's parent directory. * to be the file's parent directory.
* *
* @beaninfo
* preferred: true
* bound: true
*
* @see #getSelectedFile * @see #getSelectedFile
* *
* @param file the selected file * @param file the selected file
*/ */
@BeanProperty(preferred = true)
public void setSelectedFile(File file) { public void setSelectedFile(File file) {
File oldValue = selectedFile; File oldValue = selectedFile;
selectedFile = file; selectedFile = file;
@ -546,10 +540,9 @@ public class JFileChooser extends JComponent implements Accessible {
* set to allow multiple selection. * set to allow multiple selection.
* *
* @param selectedFiles an array {@code File}s to be selected * @param selectedFiles an array {@code File}s to be selected
* @beaninfo
* bound: true
* description: The list of selected files if the chooser is in multiple selection mode.
*/ */
@BeanProperty(description
= "The list of selected files if the chooser is in multiple selection mode.")
public void setSelectedFiles(File[] selectedFiles) { public void setSelectedFiles(File[] selectedFiles) {
File[] oldValue = this.selectedFiles; File[] oldValue = this.selectedFiles;
if (selectedFiles == null || selectedFiles.length == 0) { if (selectedFiles == null || selectedFiles.length == 0) {
@ -586,14 +579,11 @@ public class JFileChooser extends JComponent implements Accessible {
* until it finds a traversable directory, or hits the root of the * until it finds a traversable directory, or hits the root of the
* file system. * file system.
* *
* @beaninfo
* preferred: true
* bound: true
* description: The directory that the JFileChooser is showing files of.
*
* @param dir the current directory to point to * @param dir the current directory to point to
* @see #getCurrentDirectory * @see #getCurrentDirectory
*/ */
@BeanProperty(preferred = true, description
= "The directory that the JFileChooser is showing files of.")
public void setCurrentDirectory(File dir) { public void setCurrentDirectory(File dir) {
File oldValue = currentDirectory; File oldValue = currentDirectory;
@ -881,15 +871,12 @@ public class JFileChooser extends JComponent implements Accessible {
* @param b <code>false</code> if control buttons should not be * @param b <code>false</code> if control buttons should not be
* shown; otherwise, <code>true</code> * shown; otherwise, <code>true</code>
* *
* @beaninfo
* preferred: true
* bound: true
* description: Sets whether the approve &amp; cancel buttons are shown.
*
* @see #getControlButtonsAreShown * @see #getControlButtonsAreShown
* @see #CONTROL_BUTTONS_ARE_SHOWN_CHANGED_PROPERTY * @see #CONTROL_BUTTONS_ARE_SHOWN_CHANGED_PROPERTY
* @since 1.3 * @since 1.3
*/ */
@BeanProperty(preferred = true, description
= "Sets whether the approve &amp; cancel buttons are shown.")
public void setControlButtonsAreShown(boolean b) { public void setControlButtonsAreShown(boolean b) {
if(controlsShown == b) { if(controlsShown == b) {
return; return;
@ -939,19 +926,16 @@ public class JFileChooser extends JComponent implements Accessible {
* *
* @exception IllegalArgumentException if <code>dialogType</code> is * @exception IllegalArgumentException if <code>dialogType</code> is
* not legal * not legal
* @beaninfo
* preferred: true
* bound: true
* description: The type (open, save, custom) of the JFileChooser.
* enum:
* OPEN_DIALOG JFileChooser.OPEN_DIALOG
* SAVE_DIALOG JFileChooser.SAVE_DIALOG
* CUSTOM_DIALOG JFileChooser.CUSTOM_DIALOG
* *
* @see #getDialogType * @see #getDialogType
* @see #setApproveButtonText * @see #setApproveButtonText
*/ */
// PENDING(jeff) - fire button text change property // PENDING(jeff) - fire button text change property
@BeanProperty(preferred = true, enumerationValues = {
"JFileChooser.OPEN_DIALOG",
"JFileChooser.SAVE_DIALOG",
"JFileChooser.CUSTOM_DIALOG"}, description
= "The type (open, save, custom) of the JFileChooser.")
public void setDialogType(int dialogType) { public void setDialogType(int dialogType) {
if(this.dialogType == dialogType) { if(this.dialogType == dialogType) {
return; return;
@ -979,14 +963,11 @@ public class JFileChooser extends JComponent implements Accessible {
* *
* @param dialogTitle the new <code>String</code> for the title bar * @param dialogTitle the new <code>String</code> for the title bar
* *
* @beaninfo
* preferred: true
* bound: true
* description: The title of the JFileChooser dialog window.
*
* @see #getDialogTitle * @see #getDialogTitle
* *
*/ */
@BeanProperty(preferred = true, description
= "The title of the JFileChooser dialog window.")
public void setDialogTitle(String dialogTitle) { public void setDialogTitle(String dialogTitle) {
String oldValue = this.dialogTitle; String oldValue = this.dialogTitle;
this.dialogTitle = dialogTitle; this.dialogTitle = dialogTitle;
@ -1016,16 +997,13 @@ public class JFileChooser extends JComponent implements Accessible {
* Sets the tooltip text used in the <code>ApproveButton</code>. * Sets the tooltip text used in the <code>ApproveButton</code>.
* If <code>null</code>, the UI object will determine the button's text. * If <code>null</code>, the UI object will determine the button's text.
* *
* @beaninfo
* preferred: true
* bound: true
* description: The tooltip text for the ApproveButton.
*
* @param toolTipText the tooltip text for the approve button * @param toolTipText the tooltip text for the approve button
* @see #setApproveButtonText * @see #setApproveButtonText
* @see #setDialogType * @see #setDialogType
* @see #showDialog * @see #showDialog
*/ */
@BeanProperty(preferred = true, description
= "The tooltip text for the ApproveButton.")
public void setApproveButtonToolTipText(String toolTipText) { public void setApproveButtonToolTipText(String toolTipText) {
if(approveButtonToolTipText == toolTipText) { if(approveButtonToolTipText == toolTipText) {
return; return;
@ -1065,13 +1043,10 @@ public class JFileChooser extends JComponent implements Accessible {
* *
* @param mnemonic an integer value for the mnemonic key * @param mnemonic an integer value for the mnemonic key
* *
* @beaninfo
* preferred: true
* bound: true
* description: The mnemonic key accelerator for the ApproveButton.
*
* @see #getApproveButtonMnemonic * @see #getApproveButtonMnemonic
*/ */
@BeanProperty(preferred = true, description
= "The mnemonic key accelerator for the ApproveButton.")
public void setApproveButtonMnemonic(int mnemonic) { public void setApproveButtonMnemonic(int mnemonic) {
if(approveButtonMnemonic == mnemonic) { if(approveButtonMnemonic == mnemonic) {
return; return;
@ -1100,11 +1075,6 @@ public class JFileChooser extends JComponent implements Accessible {
* Sets the text used in the <code>ApproveButton</code> in the * Sets the text used in the <code>ApproveButton</code> in the
* <code>FileChooserUI</code>. * <code>FileChooserUI</code>.
* *
* @beaninfo
* preferred: true
* bound: true
* description: The text that goes in the ApproveButton.
*
* @param approveButtonText the text used in the <code>ApproveButton</code> * @param approveButtonText the text used in the <code>ApproveButton</code>
* *
* @see #getApproveButtonText * @see #getApproveButtonText
@ -1112,6 +1082,8 @@ public class JFileChooser extends JComponent implements Accessible {
* @see #showDialog * @see #showDialog
*/ */
// PENDING(jeff) - have ui set this on dialog type change // PENDING(jeff) - have ui set this on dialog type change
@BeanProperty(preferred = true, description
= "The text that goes in the ApproveButton.")
public void setApproveButtonText(String approveButtonText) { public void setApproveButtonText(String approveButtonText) {
if(this.approveButtonText == approveButtonText) { if(this.approveButtonText == approveButtonText) {
return; return;
@ -1148,6 +1120,7 @@ public class JFileChooser extends JComponent implements Accessible {
* @see #removeChoosableFileFilter * @see #removeChoosableFileFilter
* @see #resetChoosableFileFilters * @see #resetChoosableFileFilters
*/ */
@BeanProperty(bound = false)
public FileFilter[] getChoosableFileFilters() { public FileFilter[] getChoosableFileFilters() {
FileFilter[] filterArray = new FileFilter[filters.size()]; FileFilter[] filterArray = new FileFilter[filters.size()];
filters.copyInto(filterArray); filters.copyInto(filterArray);
@ -1162,16 +1135,13 @@ public class JFileChooser extends JComponent implements Accessible {
* @param filter the <code>FileFilter</code> to add to the choosable file * @param filter the <code>FileFilter</code> to add to the choosable file
* filter list * filter list
* *
* @beaninfo
* preferred: true
* bound: true
* description: Adds a filter to the list of user choosable file filters.
*
* @see #getChoosableFileFilters * @see #getChoosableFileFilters
* @see #removeChoosableFileFilter * @see #removeChoosableFileFilter
* @see #resetChoosableFileFilters * @see #resetChoosableFileFilters
* @see #setFileSelectionMode * @see #setFileSelectionMode
*/ */
@BeanProperty(preferred = true, description
= "Adds a filter to the list of user choosable file filters.")
public void addChoosableFileFilter(FileFilter filter) { public void addChoosableFileFilter(FileFilter filter) {
if(filter != null && !filters.contains(filter)) { if(filter != null && !filters.contains(filter)) {
FileFilter[] oldValue = getChoosableFileFilters(); FileFilter[] oldValue = getChoosableFileFilters();
@ -1249,6 +1219,7 @@ public class JFileChooser extends JComponent implements Accessible {
* *
* @return the {@code AcceptAll} file filter * @return the {@code AcceptAll} file filter
*/ */
@BeanProperty(bound = false)
public FileFilter getAcceptAllFileFilter() { public FileFilter getAcceptAllFileFilter() {
FileFilter filter = null; FileFilter filter = null;
if(getUI() != null) { if(getUI() != null) {
@ -1277,16 +1248,14 @@ public class JFileChooser extends JComponent implements Accessible {
* *
* @param b a {@code boolean} which determines whether the {@code AcceptAll} * @param b a {@code boolean} which determines whether the {@code AcceptAll}
* file filter is an available choice in the choosable filter list * file filter is an available choice in the choosable filter list
* @beaninfo
* preferred: true
* bound: true
* description: Sets whether the AcceptAll FileFilter is used as an available choice in the choosable filter list.
* *
* @see #isAcceptAllFileFilterUsed * @see #isAcceptAllFileFilterUsed
* @see #getAcceptAllFileFilter * @see #getAcceptAllFileFilter
* @see #setFileFilter * @see #setFileFilter
* @since 1.3 * @since 1.3
*/ */
@BeanProperty(preferred = true, description
= "Sets whether the AcceptAll FileFilter is used as an available choice in the choosable filter list.")
public void setAcceptAllFileFilterUsed(boolean b) { public void setAcceptAllFileFilterUsed(boolean b) {
boolean oldValue = useAcceptAllFileFilter; boolean oldValue = useAcceptAllFileFilter;
useAcceptAllFileFilter = b; useAcceptAllFileFilter = b;
@ -1320,11 +1289,9 @@ public class JFileChooser extends JComponent implements Accessible {
* file chooser. * file chooser.
* *
* @param newAccessory the accessory component to be set * @param newAccessory the accessory component to be set
* @beaninfo
* preferred: true
* bound: true
* description: Sets the accessory component on the JFileChooser.
*/ */
@BeanProperty(preferred = true, description
= "Sets the accessory component on the JFileChooser.")
public void setAccessory(JComponent newAccessory) { public void setAccessory(JComponent newAccessory) {
JComponent oldValue = accessory; JComponent oldValue = accessory;
accessory = newAccessory; accessory = newAccessory;
@ -1346,17 +1313,14 @@ public class JFileChooser extends JComponent implements Accessible {
* *
* @exception IllegalArgumentException if <code>mode</code> is an * @exception IllegalArgumentException if <code>mode</code> is an
* illegal file selection mode * illegal file selection mode
* @beaninfo
* preferred: true
* bound: true
* description: Sets the types of files that the JFileChooser can choose.
* enum: FILES_ONLY JFileChooser.FILES_ONLY
* DIRECTORIES_ONLY JFileChooser.DIRECTORIES_ONLY
* FILES_AND_DIRECTORIES JFileChooser.FILES_AND_DIRECTORIES
*
* *
* @see #getFileSelectionMode * @see #getFileSelectionMode
*/ */
@BeanProperty(preferred = true, enumerationValues = {
"JFileChooser.FILES_ONLY",
"JFileChooser.DIRECTORIES_ONLY",
"JFileChooser.FILES_AND_DIRECTORIES"}, description
= "Sets the types of files that the JFileChooser can choose.")
public void setFileSelectionMode(int mode) { public void setFileSelectionMode(int mode) {
if(fileSelectionMode == mode) { if(fileSelectionMode == mode) {
return; return;
@ -1400,6 +1364,7 @@ public class JFileChooser extends JComponent implements Accessible {
* @see #setFileSelectionMode * @see #setFileSelectionMode
* @see #getFileSelectionMode * @see #getFileSelectionMode
*/ */
@BeanProperty(bound = false)
public boolean isFileSelectionEnabled() { public boolean isFileSelectionEnabled() {
return ((fileSelectionMode == FILES_ONLY) || (fileSelectionMode == FILES_AND_DIRECTORIES)); return ((fileSelectionMode == FILES_ONLY) || (fileSelectionMode == FILES_AND_DIRECTORIES));
} }
@ -1412,6 +1377,7 @@ public class JFileChooser extends JComponent implements Accessible {
* @see #setFileSelectionMode * @see #setFileSelectionMode
* @see #getFileSelectionMode * @see #getFileSelectionMode
*/ */
@BeanProperty(bound = false)
public boolean isDirectorySelectionEnabled() { public boolean isDirectorySelectionEnabled() {
return ((fileSelectionMode == DIRECTORIES_ONLY) || (fileSelectionMode == FILES_AND_DIRECTORIES)); return ((fileSelectionMode == DIRECTORIES_ONLY) || (fileSelectionMode == FILES_AND_DIRECTORIES));
} }
@ -1420,12 +1386,11 @@ public class JFileChooser extends JComponent implements Accessible {
* Sets the file chooser to allow multiple file selections. * Sets the file chooser to allow multiple file selections.
* *
* @param b true if multiple files may be selected * @param b true if multiple files may be selected
* @beaninfo
* bound: true
* description: Sets multiple file selection mode.
* *
* @see #isMultiSelectionEnabled * @see #isMultiSelectionEnabled
*/ */
@BeanProperty(description
= "Sets multiple file selection mode.")
public void setMultiSelectionEnabled(boolean b) { public void setMultiSelectionEnabled(boolean b) {
if(multiSelectionEnabled == b) { if(multiSelectionEnabled == b) {
return; return;
@ -1461,15 +1426,12 @@ public class JFileChooser extends JComponent implements Accessible {
* in the file chooser. The job of determining which files are * in the file chooser. The job of determining which files are
* shown is done by the <code>FileView</code>. * shown is done by the <code>FileView</code>.
* *
* @beaninfo
* preferred: true
* bound: true
* description: Sets file hiding on or off.
*
* @param b the boolean value that determines whether file hiding is * @param b the boolean value that determines whether file hiding is
* turned on * turned on
* @see #isFileHidingEnabled * @see #isFileHidingEnabled
*/ */
@BeanProperty(preferred = true, description
= "Sets file hiding on or off.")
public void setFileHidingEnabled(boolean b) { public void setFileHidingEnabled(boolean b) {
// Dump showFilesListener since we'll ignore it from now on // Dump showFilesListener since we'll ignore it from now on
if (showFilesListener != null) { if (showFilesListener != null) {
@ -1485,14 +1447,11 @@ public class JFileChooser extends JComponent implements Accessible {
* Sets the current file filter. The file filter is used by the * Sets the current file filter. The file filter is used by the
* file chooser to filter out files from the user's view. * file chooser to filter out files from the user's view.
* *
* @beaninfo
* preferred: true
* bound: true
* description: Sets the File Filter used to filter out files of type.
*
* @param filter the new current file filter to use * @param filter the new current file filter to use
* @see #getFileFilter * @see #getFileFilter
*/ */
@BeanProperty(preferred = true, description
= "Sets the File Filter used to filter out files of type.")
public void setFileFilter(FileFilter filter) { public void setFileFilter(FileFilter filter) {
FileFilter oldValue = fileFilter; FileFilter oldValue = fileFilter;
fileFilter = filter; fileFilter = filter;
@ -1534,13 +1493,11 @@ public class JFileChooser extends JComponent implements Accessible {
* the icon that represents a file or the type description of a file. * the icon that represents a file or the type description of a file.
* *
* @param fileView a {@code FileView} to be used to retrieve UI information * @param fileView a {@code FileView} to be used to retrieve UI information
* @beaninfo
* preferred: true
* bound: true
* description: Sets the File View used to get file type information.
* *
* @see #getFileView * @see #getFileView
*/ */
@BeanProperty(preferred = true, description
= "Sets the File View used to get file type information.")
public void setFileView(FileView fileView) { public void setFileView(FileView fileView) {
FileView oldValue = this.fileView; FileView oldValue = this.fileView;
this.fileView = fileView; this.fileView = fileView;
@ -1704,13 +1661,10 @@ public class JFileChooser extends JComponent implements Accessible {
* the floppy drive and getting a list of root drives. * the floppy drive and getting a list of root drives.
* @param fsv the new <code>FileSystemView</code> * @param fsv the new <code>FileSystemView</code>
* *
* @beaninfo
* expert: true
* bound: true
* description: Sets the FileSytemView used to get filesystem information.
*
* @see FileSystemView * @see FileSystemView
*/ */
@BeanProperty(expert = true, description
= "Sets the FileSytemView used to get filesystem information.")
public void setFileSystemView(FileSystemView fsv) { public void setFileSystemView(FileSystemView fsv) {
FileSystemView oldValue = fileSystemView; FileSystemView oldValue = fileSystemView;
fileSystemView = fsv; fileSystemView = fsv;
@ -1801,6 +1755,7 @@ public class JFileChooser extends JComponent implements Accessible {
* *
* @since 1.4 * @since 1.4
*/ */
@BeanProperty(bound = false)
public ActionListener[] getActionListeners() { public ActionListener[] getActionListeners() {
return listenerList.getListeners(ActionListener.class); return listenerList.getListeners(ActionListener.class);
} }
@ -1895,10 +1850,9 @@ public class JFileChooser extends JComponent implements Accessible {
* @return the string "FileChooserUI" * @return the string "FileChooserUI"
* @see JComponent#getUIClassID * @see JComponent#getUIClassID
* @see UIDefaults#getUI * @see UIDefaults#getUI
* @beaninfo
* expert: true
* description: A string that specifies the name of the L&amp;F class.
*/ */
@BeanProperty(bound = false, expert = true, description
= "A string that specifies the name of the L&amp;F class.")
public String getUIClassID() { public String getUIClassID() {
return uiClassID; return uiClassID;
} }
@ -1908,6 +1862,7 @@ public class JFileChooser extends JComponent implements Accessible {
* *
* @return the FileChooserUI object that implements the FileChooserUI L&amp;F * @return the FileChooserUI object that implements the FileChooserUI L&amp;F
*/ */
@BeanProperty(bound = false)
public FileChooserUI getUI() { public FileChooserUI getUI() {
return (FileChooserUI) ui; return (FileChooserUI) ui;
} }
@ -2070,6 +2025,7 @@ public class JFileChooser extends JComponent implements Accessible {
* @return an AccessibleJFileChooser that serves as the * @return an AccessibleJFileChooser that serves as the
* AccessibleContext of this JFileChooser * AccessibleContext of this JFileChooser
*/ */
@BeanProperty(bound = false)
public AccessibleContext getAccessibleContext() { public AccessibleContext getAccessibleContext() {
if (accessibleContext == null) { if (accessibleContext == null) {
accessibleContext = new AccessibleJFileChooser(); accessibleContext = new AccessibleJFileChooser();

View File

@ -27,6 +27,8 @@ package javax.swing;
import java.awt.*; import java.awt.*;
import java.awt.event.*; import java.awt.event.*;
import java.awt.im.InputContext; import java.awt.im.InputContext;
import java.beans.BeanProperty;
import java.beans.JavaBean;
import java.io.*; import java.io.*;
import java.text.*; import java.text.*;
import java.util.*; import java.util.*;
@ -176,6 +178,7 @@ import javax.swing.text.*;
* *
* @since 1.4 * @since 1.4
*/ */
@JavaBean
@SuppressWarnings("serial") // Same-version serialization only @SuppressWarnings("serial") // Same-version serialization only
public class JFormattedTextField extends JTextField { public class JFormattedTextField extends JTextField {
private static final String uiClassID = "FormattedTextFieldUI"; private static final String uiClassID = "FormattedTextFieldUI";
@ -357,13 +360,13 @@ public class JFormattedTextField extends JTextField {
* @param behavior Identifies behavior when focus is lost * @param behavior Identifies behavior when focus is lost
* @throws IllegalArgumentException if behavior is not one of the known * @throws IllegalArgumentException if behavior is not one of the known
* values * values
* @beaninfo
* enum: COMMIT JFormattedTextField.COMMIT
* COMMIT_OR_REVERT JFormattedTextField.COMMIT_OR_REVERT
* REVERT JFormattedTextField.REVERT
* PERSIST JFormattedTextField.PERSIST
* description: Behavior when component loses focus
*/ */
@BeanProperty(bound = false, enumerationValues = {
"JFormattedTextField.COMMIT",
"JFormattedTextField.COMMIT_OR_REVERT",
"JFormattedTextField.REVERT",
"JFormattedTextField.PERSIST"}, description
= "Behavior when component loses focus")
public void setFocusLostBehavior(int behavior) { public void setFocusLostBehavior(int behavior) {
if (behavior != COMMIT && behavior != COMMIT_OR_REVERT && if (behavior != COMMIT && behavior != COMMIT_OR_REVERT &&
behavior != PERSIST && behavior != REVERT) { behavior != PERSIST && behavior != REVERT) {
@ -407,12 +410,9 @@ public class JFormattedTextField extends JTextField {
* *
* @param tf <code>AbstractFormatterFactory</code> used to lookup * @param tf <code>AbstractFormatterFactory</code> used to lookup
* instances of <code>AbstractFormatter</code> * instances of <code>AbstractFormatter</code>
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: AbstractFormatterFactory, responsible for returning an
* AbstractFormatter that can format the current value.
*/ */
@BeanProperty(visualUpdate = true, description
= "AbstractFormatterFactory, responsible for returning an AbstractFormatter that can format the current value.")
public void setFormatterFactory(AbstractFormatterFactory tf) { public void setFormatterFactory(AbstractFormatterFactory tf) {
AbstractFormatterFactory oldFactory = factory; AbstractFormatterFactory oldFactory = factory;
@ -448,10 +448,6 @@ public class JFormattedTextField extends JTextField {
* *
* @see #setFormatterFactory * @see #setFormatterFactory
* @param format AbstractFormatter to use for formatting * @param format AbstractFormatter to use for formatting
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: TextFormatter, responsible for formatting the current value
*/ */
protected void setFormatter(AbstractFormatter format) { protected void setFormatter(AbstractFormatter format) {
AbstractFormatter oldFormat = this.format; AbstractFormatter oldFormat = this.format;
@ -474,6 +470,8 @@ public class JFormattedTextField extends JTextField {
* *
* @return AbstractFormatter used for formatting * @return AbstractFormatter used for formatting
*/ */
@BeanProperty(visualUpdate = true, description
= "TextFormatter, responsible for formatting the current value")
public AbstractFormatter getFormatter() { public AbstractFormatter getFormatter() {
return format; return format;
} }
@ -490,11 +488,9 @@ public class JFormattedTextField extends JTextField {
* This is a JavaBeans bound property. * This is a JavaBeans bound property.
* *
* @param value Current value to display * @param value Current value to display
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: The value to be formatted.
*/ */
@BeanProperty(visualUpdate = true, description
= "The value to be formatted.")
public void setValue(Object value) { public void setValue(Object value) {
if (value != null && getFormatterFactory() == null) { if (value != null && getFormatterFactory() == null) {
setFormatterFactory(getDefaultFormatterFactory(value)); setFormatterFactory(getDefaultFormatterFactory(value));
@ -544,11 +540,9 @@ public class JFormattedTextField extends JTextField {
* *
* @param isValid boolean indicating if the currently edited value is * @param isValid boolean indicating if the currently edited value is
* valid. * valid.
* @beaninfo
* bound: true
* attribute: visualUpdate true
* description: True indicates the edited value is valid
*/ */
@BeanProperty(visualUpdate = true, description
= "True indicates the edited value is valid")
private void setEditValid(boolean isValid) { private void setEditValid(boolean isValid) {
if (isValid != editValid) { if (isValid != editValid) {
editValid = isValid; editValid = isValid;
@ -564,6 +558,7 @@ public class JFormattedTextField extends JTextField {
* *
* @return true if the current value being edited is valid. * @return true if the current value being edited is valid.
*/ */
@BeanProperty(bound = false)
public boolean isEditValid() { public boolean isEditValid() {
return editValid; return editValid;
} }
@ -673,6 +668,7 @@ public class JFormattedTextField extends JTextField {
* *
* @return the command list * @return the command list
*/ */
@BeanProperty(bound = false)
public Action[] getActions() { public Action[] getActions() {
return TextAction.augmentList(super.getActions(), defaultActions); return TextAction.augmentList(super.getActions(), defaultActions);
} }
@ -683,6 +679,7 @@ public class JFormattedTextField extends JTextField {
* @return the string "FormattedTextFieldUI" * @return the string "FormattedTextFieldUI"
* @see JComponent#getUIClassID * @see JComponent#getUIClassID
*/ */
@BeanProperty(bound = false)
public String getUIClassID() { public String getUIClassID() {
return uiClassID; return uiClassID;
} }
@ -695,11 +692,9 @@ public class JFormattedTextField extends JTextField {
* *
* @param doc the document to display/edit * @param doc the document to display/edit
* @see #getDocument * @see #getDocument
* @beaninfo
* description: the text document model
* bound: true
* expert: true
*/ */
@BeanProperty(expert = true, description
= "the text document model")
public void setDocument(Document doc) { public void setDocument(Document doc) {
if (documentListener != null && getDocument() != null) { if (documentListener != null && getDocument() != null) {
getDocument().removeDocumentListener(documentListener); getDocument().removeDocumentListener(documentListener);

View File

@ -36,12 +36,14 @@ import java.awt.Image;
import java.awt.LayoutManager; import java.awt.LayoutManager;
import java.awt.event.WindowEvent; import java.awt.event.WindowEvent;
import java.beans.JavaBean;
import java.beans.BeanProperty;
import javax.accessibility.Accessible; import javax.accessibility.Accessible;
import javax.accessibility.AccessibleContext; import javax.accessibility.AccessibleContext;
import javax.accessibility.AccessibleState; import javax.accessibility.AccessibleState;
import javax.accessibility.AccessibleStateSet; import javax.accessibility.AccessibleStateSet;
/** /**
* An extended version of <code>java.awt.Frame</code> that adds support for * An extended version of <code>java.awt.Frame</code> that adds support for
* the JFC/Swing component architecture. * the JFC/Swing component architecture.
@ -111,16 +113,13 @@ import javax.accessibility.AccessibleStateSet;
* @see java.awt.event.WindowListener#windowClosing * @see java.awt.event.WindowListener#windowClosing
* @see javax.swing.RootPaneContainer * @see javax.swing.RootPaneContainer
* *
* @beaninfo
* attribute: isContainer true
* attribute: containerDelegate getContentPane
* description: A toplevel window which can be minimized to an icon.
*
* @author Jeff Dinkins * @author Jeff Dinkins
* @author Georges Saab * @author Georges Saab
* @author David Kloba * @author David Kloba
* @since 1.2 * @since 1.2
*/ */
@JavaBean(defaultProperty = "JMenuBar", description = "A toplevel window which can be minimized to an icon.")
@SwingContainer(delegate = "getContentPane")
@SuppressWarnings("serial") // Same-version serialization only @SuppressWarnings("serial") // Same-version serialization only
public class JFrame extends Frame implements WindowConstants, public class JFrame extends Frame implements WindowConstants,
Accessible, Accessible,
@ -368,16 +367,13 @@ public class JFrame extends Frame implements WindowConstants,
* <code>SecurityManager</code> will * <code>SecurityManager</code> will
* not allow the caller to invoke <code>System.exit</code> * not allow the caller to invoke <code>System.exit</code>
* @see java.lang.Runtime#exit(int) * @see java.lang.Runtime#exit(int)
*
* @beaninfo
* preferred: true
* bound: true
* enum: DO_NOTHING_ON_CLOSE WindowConstants.DO_NOTHING_ON_CLOSE
* HIDE_ON_CLOSE WindowConstants.HIDE_ON_CLOSE
* DISPOSE_ON_CLOSE WindowConstants.DISPOSE_ON_CLOSE
* EXIT_ON_CLOSE WindowConstants.EXIT_ON_CLOSE
* description: The frame's default close operation.
*/ */
@BeanProperty(preferred = true, enumerationValues = {
"WindowConstants.DO_NOTHING_ON_CLOSE",
"WindowConstants.HIDE_ON_CLOSE",
"WindowConstants.DISPOSE_ON_CLOSE",
"WindowConstants.EXIT_ON_CLOSE"}, description
= "The frame's default close operation.")
public void setDefaultCloseOperation(int operation) { public void setDefaultCloseOperation(int operation) {
if (operation != DO_NOTHING_ON_CLOSE && if (operation != DO_NOTHING_ON_CLOSE &&
operation != HIDE_ON_CLOSE && operation != HIDE_ON_CLOSE &&
@ -440,12 +436,9 @@ public class JFrame extends Frame implements WindowConstants,
* @see #getTransferHandler * @see #getTransferHandler
* @see java.awt.Component#setDropTarget * @see java.awt.Component#setDropTarget
* @since 1.6 * @since 1.6
*
* @beaninfo
* bound: true
* hidden: true
* description: Mechanism for transfer of data into the component
*/ */
@BeanProperty(hidden = true, description
= "Mechanism for transfer of data into the component")
public void setTransferHandler(TransferHandler newHandler) { public void setTransferHandler(TransferHandler newHandler) {
TransferHandler oldHandler = transferHandler; TransferHandler oldHandler = transferHandler;
transferHandler = newHandler; transferHandler = newHandler;
@ -481,11 +474,9 @@ public class JFrame extends Frame implements WindowConstants,
* @param menubar the menubar being placed in the frame * @param menubar the menubar being placed in the frame
* *
* @see #getJMenuBar * @see #getJMenuBar
*
* @beaninfo
* hidden: true
* description: The menubar for accessing pulldown menus from this frame.
*/ */
@BeanProperty(bound = false, hidden = true, description
= "The menubar for accessing pulldown menus from this frame.")
public void setJMenuBar(final JMenuBar menubar) { public void setJMenuBar(final JMenuBar menubar) {
getRootPane().setJMenuBar(menubar); getRootPane().setJMenuBar(menubar);
} }
@ -529,10 +520,9 @@ public class JFrame extends Frame implements WindowConstants,
* @see #setLayout * @see #setLayout
* @see #isRootPaneCheckingEnabled * @see #isRootPaneCheckingEnabled
* @see javax.swing.RootPaneContainer * @see javax.swing.RootPaneContainer
* @beaninfo
* hidden: true
* description: Whether the add and setLayout methods are forwarded
*/ */
@BeanProperty(hidden = true, description
= "Whether the add and setLayout methods are forwarded")
protected void setRootPaneCheckingEnabled(boolean enabled) { protected void setRootPaneCheckingEnabled(boolean enabled) {
rootPaneCheckingEnabled = enabled; rootPaneCheckingEnabled = enabled;
} }
@ -616,6 +606,8 @@ public class JFrame extends Frame implements WindowConstants,
* @see #setRootPane * @see #setRootPane
* @see RootPaneContainer#getRootPane * @see RootPaneContainer#getRootPane
*/ */
@BeanProperty(bound = false, hidden = true, description
= "the RootPane object for this frame.")
public JRootPane getRootPane() { public JRootPane getRootPane() {
return rootPane; return rootPane;
} }
@ -627,10 +619,6 @@ public class JFrame extends Frame implements WindowConstants,
* @param root the <code>rootPane</code> object for this frame * @param root the <code>rootPane</code> object for this frame
* *
* @see #getRootPane * @see #getRootPane
*
* @beaninfo
* hidden: true
* description: the RootPane object for this frame.
*/ */
protected void setRootPane(JRootPane root) protected void setRootPane(JRootPane root)
{ {
@ -684,12 +672,9 @@ public class JFrame extends Frame implements WindowConstants,
* @see #getContentPane * @see #getContentPane
* @see RootPaneContainer#setContentPane * @see RootPaneContainer#setContentPane
* @see JRootPane * @see JRootPane
*
* @beaninfo
* hidden: true
* description: The client area of the frame where child
* components are normally inserted.
*/ */
@BeanProperty(bound = false, hidden = true, description
= "The client area of the frame where child components are normally inserted.")
public void setContentPane(Container contentPane) { public void setContentPane(Container contentPane) {
getRootPane().setContentPane(contentPane); getRootPane().setContentPane(contentPane);
} }
@ -714,11 +699,9 @@ public class JFrame extends Frame implements WindowConstants,
* exception) if the layered pane parameter is <code>null</code> * exception) if the layered pane parameter is <code>null</code>
* @see #getLayeredPane * @see #getLayeredPane
* @see RootPaneContainer#setLayeredPane * @see RootPaneContainer#setLayeredPane
*
* @beaninfo
* hidden: true
* description: The pane that holds the various frame layers.
*/ */
@BeanProperty(bound = false, hidden = true, description
= "The pane that holds the various frame layers.")
public void setLayeredPane(JLayeredPane layeredPane) { public void setLayeredPane(JLayeredPane layeredPane) {
getRootPane().setLayeredPane(layeredPane); getRootPane().setLayeredPane(layeredPane);
} }
@ -741,11 +724,9 @@ public class JFrame extends Frame implements WindowConstants,
* *
* @see #getGlassPane * @see #getGlassPane
* @see RootPaneContainer#setGlassPane * @see RootPaneContainer#setGlassPane
*
* @beaninfo
* hidden: true
* description: A transparent pane used for menu rendering.
*/ */
@BeanProperty(bound = false, hidden = true, description
= "A transparent pane used for menu rendering.")
public void setGlassPane(Component glassPane) { public void setGlassPane(Component glassPane) {
getRootPane().setGlassPane(glassPane); getRootPane().setGlassPane(glassPane);
} }
@ -755,6 +736,7 @@ public class JFrame extends Frame implements WindowConstants,
* *
* @since 1.6 * @since 1.6
*/ */
@BeanProperty(bound = false)
public Graphics getGraphics() { public Graphics getGraphics() {
JComponent.getGraphicsInvoked(this); JComponent.getGraphicsInvoked(this);
return super.getGraphics(); return super.getGraphics();

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