This commit is contained in:
David Holmes 2015-10-29 21:38:11 -04:00
commit 90176d92ba
309 changed files with 10237 additions and 3963 deletions

View File

@ -329,3 +329,4 @@ f61a63b7d1e52e307abc0bfc751203155d362ec4 jdk9-b83
51b2db2fa04c16d767b66113dbf08c5349ce382a jdk9-b84
8392405ab038b22e69a3728e17dbdd9e3d3a22ed jdk9-b85
7db0663a5e968059fa7c772172187ebd60b6492d jdk9-b86
1a52a30674cd28c24d4d388150336121f2e9ddf9 jdk9-b87

View File

@ -329,3 +329,4 @@ ce5c14d97d95084504c32b9320cb33cce4235588 jdk9-b83
1c8134475511ffe6726677e1418a89a7a45e92d6 jdk9-b84
1f345217c9bab05f192d00cf1665b3286c49ccdb jdk9-b85
2aa1daf98d3e2ee37f20f6858c53cc37020f6937 jdk9-b86
fd4f4f7561074dc0dbc1772c8489c7b902b6b8a9 jdk9-b87

View File

@ -4587,7 +4587,7 @@ VS_SDK_PLATFORM_NAME_2013=
#CUSTOM_AUTOCONF_INCLUDE
# Do not change or remove the following line, it is needed for consistency checks:
DATE_WHEN_GENERATED=1444224363
DATE_WHEN_GENERATED=1444643341
###############################################################################
#
@ -46678,10 +46678,24 @@ $as_echo "$as_me: WARNING: X11 is not used, so --with-x is ignored" >&2;}
X_CFLAGS=
X_LIBS=
else
# Check if the user has specified sysroot, but not --x-includes or --x-libraries.
# Make a simple check for the libraries at the sysroot, and setup --x-includes and
# --x-libraries for the sysroot, if that seems to be correct.
if test "x$OPENJDK_TARGET_OS" = "xlinux"; then
if test "x${with_x}" = xno; then
as_fn_error $? "It is not possible to disable the use of X11. Remove the --without-x option." "$LINENO" 5
fi
if test "x${with_x}" != x && test "x${with_x}" != xyes; then
# The user has specified a X11 base directory. Use it for includes and
# libraries, unless explicitely overridden.
if test "x$x_includes" = xNONE; then
x_includes="${with_x}/include"
fi
if test "x$x_libraries" = xNONE; then
x_libraries="${with_x}/lib"
fi
else
# Check if the user has specified sysroot, but not --with-x, --x-includes or --x-libraries.
# Make a simple check for the libraries at the sysroot, and setup --x-includes and
# --x-libraries for the sysroot, if that seems to be correct.
if test "x$SYSROOT" != "x"; then
if test "x$x_includes" = xNONE; then
if test -f "$SYSROOT/usr/X11R6/include/X11/Xlib.h"; then

View File

@ -35,10 +35,24 @@ AC_DEFUN_ONCE([LIB_SETUP_X11],
X_CFLAGS=
X_LIBS=
else
# Check if the user has specified sysroot, but not --x-includes or --x-libraries.
# Make a simple check for the libraries at the sysroot, and setup --x-includes and
# --x-libraries for the sysroot, if that seems to be correct.
if test "x$OPENJDK_TARGET_OS" = "xlinux"; then
if test "x${with_x}" = xno; then
AC_MSG_ERROR([It is not possible to disable the use of X11. Remove the --without-x option.])
fi
if test "x${with_x}" != x && test "x${with_x}" != xyes; then
# The user has specified a X11 base directory. Use it for includes and
# libraries, unless explicitely overridden.
if test "x$x_includes" = xNONE; then
x_includes="${with_x}/include"
fi
if test "x$x_libraries" = xNONE; then
x_libraries="${with_x}/lib"
fi
else
# Check if the user has specified sysroot, but not --with-x, --x-includes or --x-libraries.
# Make a simple check for the libraries at the sysroot, and setup --x-includes and
# --x-libraries for the sysroot, if that seems to be correct.
if test "x$SYSROOT" != "x"; then
if test "x$x_includes" = xNONE; then
if test -f "$SYSROOT/usr/X11R6/include/X11/Xlib.h"; then

View File

@ -329,3 +329,4 @@ ca8a1719588424f6e04e943790c7fcb7cb0b8c8f jdk9-b83
df70bb200356fec686681f0295c50cc3ed43c3b3 jdk9-b84
3ec06af1368924469f7ce60a00324bac55eaeecc jdk9-b85
0a3f0d25c201b40575a7c3920fce4d6f4d3ae310 jdk9-b86
a5c40ac9b916ff44d512ee764fa919ed2097e149 jdk9-b87

View File

@ -489,3 +489,4 @@ e9e63d93bbfe2c6c23447e2c1f5cc71c98671cba jdk9-b79
184c4328444974edd6b3b490b9d0177ace7e331c jdk9-b84
03845376ea9dbf9690b6a9cfb4ed63f8cc0541c0 jdk9-b85
1ae4191359d811a51512f17dca80ffe79837a5ff jdk9-b86
d7ffd16382fe7071181b967932b47cff6d1312e1 jdk9-b87

View File

@ -329,3 +329,4 @@ f464f9b2fb1178f6a957e5730b4b5252c6149ed9 jdk9-b80
91795d86744f3074d1e59b1e75d9c851c098688f jdk9-b84
1d9850c1b35c74e8b5c17970ed5d46dc0fc33f06 jdk9-b85
88d9b1f6b73e0c46fcb5ccabe1231a30ce758a22 jdk9-b86
eb435c878c2cbbfb043d0b205f4d5bd6faffd44a jdk9-b87

View File

@ -332,3 +332,4 @@ d7ee8157f4feced67924e421225c6f844079a03d jdk9-b83
51729143f8fe038f52cf55720c4c1f89267f5948 jdk9-b84
67b626ec730d2601d95ef036d06be34b37fa9ce6 jdk9-b85
5289646179079394890a34a898a8ab70fcde0331 jdk9-b86
f7dba191a38cfc29665b0d77174615a530803297 jdk9-b87

View File

@ -30,6 +30,7 @@ import com.sun.tools.internal.xjc.BadCommandLineException;
import com.sun.xml.internal.bind.util.Which;
import javax.lang.model.SourceVersion;
import javax.tools.Diagnostic;
import javax.tools.DiagnosticCollector;
import javax.tools.JavaCompiler;
import javax.tools.JavaFileObject;
@ -248,7 +249,12 @@ public class SchemaGenerator {
if (episode != null)
r.setEpisodeFile(episode);
task.setProcessors(Collections.singleton(r));
return task.call();
boolean res = task.call();
//Print messages generated by compiler
for (Diagnostic<? extends JavaFileObject> d : diagnostics.getDiagnostics()) {
System.err.println(d.toString());
}
return res;
}
}

View File

@ -329,3 +329,5 @@ d11f25ce3c545823f53bb978d454a4d2901abac3 jdk9-b83
757ef7f6d0042934edea3e0bf616fad2c1a22789 jdk9-b84
fe40b31c0e526d357cf5b62044fea006e43b53a5 jdk9-b85
e8a66c0b05d786a282a7ff1d7eb4989afa30c891 jdk9-b86
110fc90bdfa0fe59606c047c2301ed75d2bad6cf jdk9-b87
6e50b992bef4def597a5033e696e5b1d4fe5b294 jdk9-b88

View File

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

View File

@ -243,36 +243,35 @@ class CharacterData01 extends CharacterData {
case 0x10131: retval = 70000; break; // AEGEAN NUMBER SEVENTY THOUSAND
case 0x10132: retval = 80000; break; // AEGEAN NUMBER EIGHTY THOUSAND
case 0x10133: retval = 90000; break; // AEGEAN NUMBER NINETY THOUSAND
case 0x10323: retval = 50; break; // OLD ITALIC NUMERAL FIFTY
case 0x10144: retval = 50; break; // ACROPHONIC ATTIC FIFTY
case 0x10145: retval = 500; break; // ACROPHONIC ATTIC FIVE HUNDRED
case 0x10146: retval = 5000; break; // ACROPHONIC ATTIC FIVE THOUSAND
case 0x10147: retval = 50000; break; // ACROPHONIC ATTIC FIFTY THOUSAND
case 0x1014A: retval = 50; break; // ACROPHONIC ATTIC FIFTY TALENTS
case 0x1014B: retval = 100; break; // ACROPHONIC ATTIC ONE HUNDRED TALENTS
case 0x1014C: retval = 500; break; // ACROPHONIC ATTIC FIVE HUNDRED TALENTS
case 0x1014D: retval = 1000; break; // ACROPHONIC ATTIC ONE THOUSAND TALENTS
case 0x1014E: retval = 5000; break; // ACROPHONIC ATTIC FIVE THOUSAND TALENTS
case 0x10151: retval = 50; break; // ACROPHONIC ATTIC FIFTY STATERS
case 0x10152: retval = 100; break; // ACROPHONIC ATTIC ONE HUNDRED STATERS
case 0x10153: retval = 500; break; // ACROPHONIC ATTIC FIVE HUNDRED STATERS
case 0x10154: retval = 1000; break; // ACROPHONIC ATTIC ONE THOUSAND STATERS
case 0x10155: retval = 10000; break; // ACROPHONIC ATTIC TEN THOUSAND STATERS
case 0x10156: retval = 50000; break; // ACROPHONIC ATTIC FIFTY THOUSAND STATERS
case 0x10166: retval = 50; break; // ACROPHONIC TROEZENIAN FIFTY
case 0x10167: retval = 50; break; // ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM
case 0x10168: retval = 50; break; // ACROPHONIC HERMIONIAN FIFTY
case 0x10169: retval = 50; break; // ACROPHONIC THESPIAN FIFTY
case 0x1016A: retval = 100; break; // ACROPHONIC THESPIAN ONE HUNDRED
case 0x1016B: retval = 300; break; // ACROPHONIC THESPIAN THREE HUNDRED
case 0x1016C: retval = 500; break; // ACROPHONIC EPIDAUREAN FIVE HUNDRED
case 0x1016D: retval = 500; break; // ACROPHONIC TROEZENIAN FIVE HUNDRED
case 0x1016E: retval = 500; break; // ACROPHONIC THESPIAN FIVE HUNDRED
case 0x1016F: retval = 500; break; // ACROPHONIC CARYSTIAN FIVE HUNDRED
case 0x10170: retval = 500; break; // ACROPHONIC NAXIAN FIVE HUNDRED
case 0x10171: retval = 1000; break; // ACROPHONIC THESPIAN ONE THOUSAND
case 0x10172: retval = 5000; break; // ACROPHONIC THESPIAN FIVE THOUSAND
case 0x10174: retval = 50; break; // ACROPHONIC STRATIAN FIFTY MNAS
case 0x10144: retval = 50; break; // GREEK ACROPHONIC ATTIC FIFTY
case 0x10145: retval = 500; break; // GREEK ACROPHONIC ATTIC FIVE HUNDRED
case 0x10146: retval = 5000; break; // GREEK ACROPHONIC ATTIC FIVE THOUSAND
case 0x10147: retval = 50000; break; // GREEK ACROPHONIC ATTIC FIFTY THOUSAND
case 0x1014A: retval = 50; break; // GREEK ACROPHONIC ATTIC FIFTY TALENTS
case 0x1014B: retval = 100; break; // GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS
case 0x1014C: retval = 500; break; // GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS
case 0x1014D: retval = 1000; break; // GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS
case 0x1014E: retval = 5000; break; // GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS
case 0x10151: retval = 50; break; // GREEK ACROPHONIC ATTIC FIFTY STATERS
case 0x10152: retval = 100; break; // GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS
case 0x10153: retval = 500; break; // GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS
case 0x10154: retval = 1000; break; // GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS
case 0x10155: retval = 10000; break; // GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS
case 0x10156: retval = 50000; break; // GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS
case 0x10166: retval = 50; break; // GREEK ACROPHONIC TROEZENIAN FIFTY
case 0x10167: retval = 50; break; // GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM
case 0x10168: retval = 50; break; // GREEK ACROPHONIC HERMIONIAN FIFTY
case 0x10169: retval = 50; break; // GREEK ACROPHONIC THESPIAN FIFTY
case 0x1016A: retval = 100; break; // GREEK ACROPHONIC THESPIAN ONE HUNDRED
case 0x1016B: retval = 300; break; // GREEK ACROPHONIC THESPIAN THREE HUNDRED
case 0x1016C: retval = 500; break; // GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED
case 0x1016D: retval = 500; break; // GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED
case 0x1016E: retval = 500; break; // GREEK ACROPHONIC THESPIAN FIVE HUNDRED
case 0x1016F: retval = 500; break; // GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED
case 0x10170: retval = 500; break; // GREEK ACROPHONIC NAXIAN FIVE HUNDRED
case 0x10171: retval = 1000; break; // GREEK ACROPHONIC THESPIAN ONE THOUSAND
case 0x10172: retval = 5000; break; // GREEK ACROPHONIC THESPIAN FIVE THOUSAND
case 0x10174: retval = 50; break; // GREEK ACROPHONIC STRATIAN FIFTY MNAS
case 0x102ED: retval = 40; break; // COPTIC EPACT NUMBER FORTY
case 0x102EE: retval = 50; break; // COPTIC EPACT NUMBER FIFTY
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 0x102FA: retval = 800; break; // COPTIC EPACT NUMBER EIGHT 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 0x1034A: retval = 900; break; // GOTHIC LETTER NINE 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 0x1085F: retval = 10000; break; // IMPERIAL ARAMAIC NUMBER TEN THOUSAND
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 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 0x10A47: retval = 1000; break; // KHAROSHTHI NUMBER ONE THOUSAND
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 0x10B7F: retval = 1000; break; // INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND
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 0x10E6D: retval = 50; break; // RUMI NUMBER FIFTY
case 0x10E6E: retval = 60; break; // RUMI NUMBER SIXTY

View File

@ -1,8 +1,8 @@
# PropList-7.0.0.txt
# Date: 2014-02-19, 15:51:26 GMT [MD]
# PropList-8.0.0.txt
# Date: 2015-05-16, 17:50:38 GMT [MD]
#
# 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 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
111C5..111C6 ; Terminal_Punctuation # Po [2] SHARADA DANDA..SHARADA DOUBLE DANDA
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
112A9 ; Terminal_Punctuation # Po MULTANI SECTION MARK
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
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
16A6E..16A6F ; Terminal_Punctuation # Po [2] MRO DANDA..MRO DOUBLE DANDA
16AF5 ; Terminal_Punctuation # Po BASSA VAH FULL STOP
16B37..16B39 ; Terminal_Punctuation # Po [3] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN CIM CHEEM
16B44 ; Terminal_Punctuation # Po PAHAWH HMONG SIGN XAUS
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
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
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
0903 ; Other_Alphabetic # Mc DEVANAGARI SIGN VISARGA
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
1932 ; Other_Alphabetic # Mn LIMBU SMALL LETTER ANUSVARA
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
1A19..1A1A ; Other_Alphabetic # Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O
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
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
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
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
@ -672,7 +674,7 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA
112DF ; Other_Alphabetic # Mn KHUDAWADI SIGN ANUSVARA
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
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
1133E..1133F ; Other_Alphabetic # Mc [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I
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
115BC..115BD ; Other_Alphabetic # Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA
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
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
@ -704,6 +707,11 @@ FB1E ; Other_Alphabetic # Mn HEBREW POINT JUDEO-SPANISH VARIKA
116AD ; Other_Alphabetic # Mn TAKRI VOWEL SIGN AA
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
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
16F51..16F7E ; Other_Alphabetic # Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG
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
3038..303A ; Ideographic # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
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
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
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
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
# 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
07F4..07F5 ; Diacritic # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
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
094D ; Diacritic # Mn DEVANAGARI SIGN VIRAMA
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
ABED ; Diacritic # Mn MEETEI MAYEK APUN IYEK
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
FF40 ; Diacritic # Sk FULLWIDTH GRAVE ACCENT
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
11173 ; Diacritic # Mn MAHAJANI SIGN NUKTA
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
11236 ; Diacritic # Mn KHOJKI SIGN NUKTA
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
116B6 ; Diacritic # Mc TAKRI SIGN VIRAMA
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
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
@ -911,7 +922,7 @@ FFE3 ; Diacritic # Sk FULLWIDTH MACRON
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
# 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
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
FA11 ; Unified_Ideograph # Lo CJK COMPATIBILITY IDEOGRAPH-FA11
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
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
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
232A ; Deprecated # Pe RIGHT-POINTING ANGLE BRACKET
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
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
AAB9 ; Logical_Order_Exception # Lo TAI VIET VOWEL UEA
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
111C5..111C6 ; STerm # Po [2] SHARADA DANDA..SHARADA DOUBLE DANDA
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
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
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
1173C..1173E ; STerm # Po [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI
16A6E..16A6F ; STerm # Po [2] MRO DANDA..MRO DOUBLE DANDA
16AF5 ; STerm # Po BASSA VAH FULL STOP
16B37..16B38 ; STerm # Po [2] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS TSHAB CEEB
16B44 ; STerm # Po PAHAWH HMONG SIGN XAUS
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
2BC9 ; Pattern_Syntax # Cn <reserved-2BC9>
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
2E02 ; Pattern_Syntax # Pi LEFT SUBSTITUTION BRACKET
2E03 ; Pattern_Syntax # Pf RIGHT SUBSTITUTION BRACKET

View File

@ -1,10 +1,16 @@
# Scripts-7.0.0.txt
# Date: 2014-05-15, 00:11:35 GMT [MD]
# Scripts-8.0.0.txt
# Date: 2015-03-11, 22:29:42 GMT [MD]
#
# 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 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
061F ; Common # Po ARABIC QUESTION MARK
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
0964..0965 ; Common # Po [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
0E3F ; Common # Sc THAI CURRENCY SYMBOL BAHT
@ -148,7 +153,7 @@
208A..208C ; Common # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
208D ; Common # Ps SUBSCRIPT LEFT 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
2102 ; Common # L& DOUBLE-STRUCK CAPITAL C
2103..2106 ; Common # So [4] DEGREE CELSIUS..CADA UNA
@ -182,6 +187,7 @@
214F ; Common # So SYMBOL FOR SAMARITAN SOURCE
2150..215F ; Common # No [16] VULGAR FRACTION ONE SEVENTH..FRACTION NUMERATOR ONE
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
2195..2199 ; Common # So [5] UP DOWN ARROW..SOUTH WEST ARROW
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
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
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
2E02 ; Common # Pi LEFT 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
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
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
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
@ -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
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
1F300..1F32C ; Common # So [45] CYCLONE..WIND BLOWING FACE
1F330..1F37D ; Common # So [78] CHESTNUT..FORK AND KNIFE WITH PLATE
1F380..1F3CE ; Common # So [79] RIBBON..RACING CAR
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
1F300..1F3FA ; Common # So [251] CYCLONE..AMPHORA
1F3FB..1F3FF ; Common # Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
1F400..1F579 ; Common # So [378] RAT..JOYSTICK
1F57B..1F5A3 ; Common # So [41] LEFT HAND TELEPHONE RECEIVER..BLACK DOWN POINTING BACKHAND INDEX
1F5A5..1F642 ; Common # So [158] DESKTOP COMPUTER..SLIGHTLY SMILING FACE
1F645..1F6CF ; Common # So [139] FACE WITH NO GOOD GESTURE..BED
1F5A5..1F6D0 ; Common # So [300] DESKTOP COMPUTER..PLACE OF WORSHIP
1F6E0..1F6EC ; Common # So [13] HAMMER AND WRENCH..AIRPLANE ARRIVING
1F6F0..1F6F3 ; Common # So [4] SATELLITE..PASSENGER SHIP
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
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
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
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
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
A78F ; Latin # Lo LATIN LETTER SINOLOGICAL DOT
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
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
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
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
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
# Total code points: 1338
# Total code points: 1349
# ================================================
@ -731,9 +737,10 @@ A67E ; Cyrillic # Po CYRILLIC KAVYKA
A67F ; Cyrillic # Lm CYRILLIC PAYEROK
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
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
0641..064A ; Arabic # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH
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
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
@ -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
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
08A0..08B2 ; Arabic # Lo [19] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER ZAIN WITH INVERTED V ABOVE
08E4..08FF ; Arabic # Mn [28] ARABIC CURLY FATHA..ARABIC MARK SIDEWAYS NOON GHUNNA
08A0..08B4 ; Arabic # Lo [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
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
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
@ -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
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
A8F8..A8FA ; Devanagari # Po [3] DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET
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
0AF0 ; Gujarati # Po GUJARATI ABBREVIATION 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
0C4A..0C4D ; Telugu # Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
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
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
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
# Total code points: 95
# Total code points: 96
# ================================================
@ -1115,14 +1126,14 @@ A8FB ; Devanagari # Lo DEVANAGARI HEADSTROKE
0D4D ; Malayalam # Mn MALAYALAM SIGN VIRAMA
0D4E ; Malayalam # Lo MALAYALAM LETTER DOT REPH
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
0D66..0D6F ; Malayalam # Nd [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
0D70..0D75 ; Malayalam # No [6] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE QUARTERS
0D79 ; Malayalam # So MALAYALAM DATE MARK
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
303B ; Han # Lm VERTICAL IDEOGRAPHIC ITERATION MARK
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
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
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
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
# 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
19B0..19C0 ; New_Tai_Lue # Mc [17] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE VOWEL SIGN IY
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
19B0..19C9 ; New_Tai_Lue # Lo [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2
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
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
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
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
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
111BF..111C0 ; Sharada # Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA
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
111D0..111D9 ; Sharada # Nd [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE
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
11305..1130C ; Grantha # Lo [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L
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
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
11350 ; Grantha # Lo GRANTHA OM
11357 ; Grantha # Mc GRANTHA AU LENGTH MARK
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
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
# 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
115BE ; Siddham # Mc SIDDHAM SIGN VISARGA
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
# ================================================
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

View File

@ -1,5 +1,5 @@
# SpecialCasing-7.0.0.txt
# Date: 2014-03-18, 07:18:02 GMT [MD]
# SpecialCasing-8.0.0.txt
# Date: 2014-12-16, 23:08:04 GMT [MD]
#
# Unicode Character Database
# 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"
$(MKDIR) -p $(@D)
$(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)

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
#
# 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)
GENSRC_JAVA_DESKTOP += $(GENSRC_SWING_NIMBUS)

View File

@ -40,7 +40,7 @@ UNPACKEXE_CFLAGS := -I$(JDK_TOPDIR)/src/jdk.pack200/share/native/common-unpack \
ifeq ($(USE_EXTERNAL_LIBZ), true)
UNPACKEXE_CFLAGS += -DSYSTEM_ZLIB
UNPACKEXE_ZIPOBJS := -lz
UNPACKEXE_LIBS := -lz
else
UNPACKEXE_CFLAGS += -I$(JDK_TOPDIR)/src/java.base/share/native/libzip/zlib-1.2.8
UNPACKEXE_ZIPOBJS := $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/zcrc32$(OBJ_SUFFIX) \
@ -90,9 +90,9 @@ $(eval $(call SetupNativeCompilation,BUILD_UNPACKEXE, \
$(LDFLAGS_JDKEXE) $(LDFLAGS_CXX_JDK) \
$(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)unpack$(SHARED_LIBRARY_SUFFIX)) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
LDFLAGS_linux := -lc, \
LDFLAGS_linux := , \
LDFLAGS_solaris := $(UNPACKEXE_LDFLAGS_solaris) -lc, \
LDFLAGS_SUFFIX := $(LIBCXX), \
LDFLAGS_SUFFIX := $(UNPACKEXE_LIBS) $(LIBCXX), \
OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/unpackexe$(OUTPUT_SUBDIR), \
OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/modules_cmds/$(MODULE), \
PROGRAM := unpack200, \

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 \
$(LIBJAVA_HEADER_FLAGS) \
#
# The fast floor code loses precision.
LCMS_CFLAGS=-DCMS_DONT_USE_FAST_FLOOR
ifeq ($(USE_EXTERNAL_LCMS), true)
# If we're using an external library, we'll just need the wrapper part.
@ -498,10 +500,10 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBJAVAJPEG, \
DISABLED_WARNINGS_clang := logical-op-parentheses, \
DISABLED_WARNINGS_microsoft := 4267, \
MAPFILE := $(BUILD_LIBJAVAJPEG_MAPFILE), \
LDFLAGS := $(LDFLAGS_JDKLIB) $(LIBJPEG_LIBS) \
LDFLAGS := $(LDFLAGS_JDKLIB) \
$(call SET_SHARED_LIBRARY_ORIGIN), \
LDFLAGS_windows := $(WIN_JAVA_LIB) jvm.lib, \
LDFLAGS_SUFFIX := $(LDFLAGS_JDKLIB_SUFFIX), \
LDFLAGS_SUFFIX := $(LIBJPEG_LIBS) $(LDFLAGS_JDKLIB_SUFFIX), \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \
-D "JDK_FNAME=javajpeg.dll" \

View File

@ -28,6 +28,7 @@ package build.tools.cldrconverter;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Formatter;
import java.util.HashSet;
import java.util.HashMap;
@ -285,15 +286,16 @@ class ResourceBundleGenerator implements BundleGenerator {
out.printf(" parentLocalesMap.put(Locale.forLanguageTag(\"%s\"),\n",
parentTag);
}
String[] childlen = toLocaleList(metaInfo.get(key), true).split(" ");
String[] children = toLocaleList(metaInfo.get(key), true).split(" ");
Arrays.sort(children);
out.printf(" new String[] {\n" +
" ");
int count = 0;
for (int i = 0; i < childlen.length; i++) {
String child = childlen[i];
for (int i = 0; i < children.length; i++) {
String child = children[i];
out.printf("\"%s\", ", child);
count += child.length() + 4;
if (i != childlen.length - 1 && count > 64) {
if (i != children.length - 1 && count > 64) {
out.printf("\n ");
count = 0;
}

View File

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

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 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
@ -57,13 +57,13 @@ import sun.util.spi.CalendarProvider;
public class HostLocaleProviderAdapterImpl {
// per supported locale instances
private static ConcurrentMap<Locale, SoftReference<AtomicReferenceArray<String>>> dateFormatPatternsMap =
private static final ConcurrentMap<Locale, SoftReference<AtomicReferenceArray<String>>> dateFormatPatternsMap =
new ConcurrentHashMap<>(2);
private static ConcurrentMap<Locale, SoftReference<AtomicReferenceArray<String>>> numberFormatPatternsMap =
private static final ConcurrentMap<Locale, SoftReference<AtomicReferenceArray<String>>> numberFormatPatternsMap =
new ConcurrentHashMap<>(2);
private static ConcurrentMap<Locale, SoftReference<DateFormatSymbols>> dateFormatSymbolsMap =
private static final ConcurrentMap<Locale, SoftReference<DateFormatSymbols>> dateFormatSymbolsMap =
new ConcurrentHashMap<>(2);
private static ConcurrentMap<Locale, SoftReference<DecimalFormatSymbols>> decimalFormatSymbolsMap =
private static final ConcurrentMap<Locale, SoftReference<DecimalFormatSymbols>> decimalFormatSymbolsMap =
new ConcurrentHashMap<>(2);
// locale categories

View File

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

View File

@ -242,7 +242,7 @@ class Direct$Type$Buffer$RW$$BO$
}
private long ix(int i) {
return address + (i << $LG_BYTES_PER_VALUE$);
return address + ((long)i << $LG_BYTES_PER_VALUE$);
}
public $type$ get() {
@ -261,7 +261,7 @@ class Direct$Type$Buffer$RW$$BO$
public $Type$Buffer get($type$[] dst, int offset, int length) {
#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);
int pos = position();
int lim = limit();
@ -273,13 +273,13 @@ class Direct$Type$Buffer$RW$$BO$
#if[!byte]
if (order() != ByteOrder.nativeOrder())
Bits.copyTo$Memtype$Array(ix(pos), dst,
offset << $LG_BYTES_PER_VALUE$,
length << $LG_BYTES_PER_VALUE$);
(long)offset << $LG_BYTES_PER_VALUE$,
(long)length << $LG_BYTES_PER_VALUE$);
else
#end[!byte]
Bits.copyToArray(ix(pos), dst, arrayBaseOffset,
offset << $LG_BYTES_PER_VALUE$,
length << $LG_BYTES_PER_VALUE$);
(long)offset << $LG_BYTES_PER_VALUE$,
(long)length << $LG_BYTES_PER_VALUE$);
position(pos + length);
} else {
super.get(dst, offset, length);
@ -329,7 +329,7 @@ class Direct$Type$Buffer$RW$$BO$
if (srem > rem)
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);
position(pos + srem);
} 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) {
#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);
int pos = position();
int lim = limit();
@ -364,12 +364,16 @@ class Direct$Type$Buffer$RW$$BO$
#if[!byte]
if (order() != ByteOrder.nativeOrder())
Bits.copyFrom$Memtype$Array(src, offset << $LG_BYTES_PER_VALUE$,
ix(pos), length << $LG_BYTES_PER_VALUE$);
Bits.copyFrom$Memtype$Array(src,
(long)offset << $LG_BYTES_PER_VALUE$,
ix(pos),
(long)length << $LG_BYTES_PER_VALUE$);
else
#end[!byte]
Bits.copyFromArray(src, arrayBaseOffset, offset << $LG_BYTES_PER_VALUE$,
ix(pos), length << $LG_BYTES_PER_VALUE$);
Bits.copyFromArray(src, arrayBaseOffset,
(long)offset << $LG_BYTES_PER_VALUE$,
ix(pos),
(long)length << $LG_BYTES_PER_VALUE$);
position(pos + length);
} else {
super.put(src, offset, length);
@ -387,7 +391,7 @@ class Direct$Type$Buffer$RW$$BO$
assert (pos <= lim);
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);
limit(capacity());
discardMark();

View File

@ -138,6 +138,13 @@ public class AlgorithmParameterGenerator {
* <p> Note that the list of registered providers may be retrieved via
* 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
* parameter generator is associated with.
* 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.
*
* 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
* 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.
* See the AlgorithmParameters section in the <a href=
* "{@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.
*
* 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
* 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.
* See the KeyFactory section in the <a href=
* "{@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
* 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.
* See the KeyPairGenerator section in the <a href=
* "{@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
* 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.
* See the KeyStore section in the <a href=
* "{@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
* 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.
* See the MessageDigest section in the <a href=
* "{@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
* 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
* <a href=
* "{@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.
*
* 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
* 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.
* See the SecureRandom section in the <a href=
* "{@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
* 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.
* See the Signature section in the <a href=
* "{@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.
*
* 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
* 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}
* algorithm. See the CertPathBuilder section in the <a href=
* "{@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.
*
* 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
* 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}
* algorithm. See the CertPathValidator section in the <a href=
* "{@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.
*
* 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
* 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.
* See the CertStore section in the <a href=
* "{@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.
*
* 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
* 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.
* See the CertificateFactory section in the <a href=
* "{@docRoot}/../technotes/guides/security/StandardNames.html#CertificateFactory">

View File

@ -384,6 +384,7 @@ public class DecimalFormatSymbols implements Cloneable, Serializable {
*/
public String getCurrencySymbol()
{
initializeCurrency(locale);
return currencySymbol;
}
@ -396,6 +397,7 @@ public class DecimalFormatSymbols implements Cloneable, Serializable {
*/
public void setCurrencySymbol(String currency)
{
initializeCurrency(locale);
currencySymbol = currency;
}
@ -408,6 +410,7 @@ public class DecimalFormatSymbols implements Cloneable, Serializable {
*/
public String getInternationalCurrencySymbol()
{
initializeCurrency(locale);
return intlCurrencySymbol;
}
@ -429,6 +432,7 @@ public class DecimalFormatSymbols implements Cloneable, Serializable {
*/
public void setInternationalCurrencySymbol(String currencyCode)
{
initializeCurrency(locale);
intlCurrencySymbol = currencyCode;
currency = null;
if (currencyCode != null) {
@ -449,6 +453,7 @@ public class DecimalFormatSymbols implements Cloneable, Serializable {
* @since 1.4
*/
public Currency getCurrency() {
initializeCurrency(locale);
return currency;
}
@ -468,6 +473,7 @@ public class DecimalFormatSymbols implements Cloneable, Serializable {
if (currency == null) {
throw new NullPointerException();
}
initializeCurrency(locale);
this.currency = currency;
intlCurrencySymbol = currency.getCurrencyCode();
currencySymbol = currency.getSymbol(locale);
@ -507,14 +513,15 @@ public class DecimalFormatSymbols implements Cloneable, Serializable {
{
return exponential;
}
/**
* Returns the string used to separate the mantissa from the exponent.
* Examples: "x10^" for 1.23x10^4, "E" for 1.23E4.
*
* @return the exponent separator string
* @see #setExponentSeparator(java.lang.String)
* @since 1.6
*/
/**
* Returns the string used to separate the mantissa from the exponent.
* Examples: "x10^" for 1.23x10^4, "E" for 1.23E4.
*
* @return the exponent separator string
* @see #setExponentSeparator(java.lang.String)
* @since 1.6
*/
public String getExponentSeparator()
{
return exponentialSeparator;
@ -528,22 +535,22 @@ public class DecimalFormatSymbols implements Cloneable, Serializable {
exponential = exp;
}
/**
* Sets the string used to separate the mantissa from the exponent.
* Examples: "x10^" for 1.23x10^4, "E" for 1.23E4.
*
* @param exp the exponent separator string
* @exception NullPointerException if <code>exp</code> is null
* @see #getExponentSeparator()
* @since 1.6
*/
/**
* Sets the string used to separate the mantissa from the exponent.
* Examples: "x10^" for 1.23x10^4, "E" for 1.23E4.
*
* @param exp the exponent separator string
* @exception NullPointerException if <code>exp</code> is null
* @see #getExponentSeparator()
* @since 1.6
*/
public void setExponentSeparator(String exp)
{
if (exp == null) {
throw new NullPointerException();
}
exponentialSeparator = exp;
}
}
//------------------------------------------------------------
@ -582,7 +589,7 @@ public class DecimalFormatSymbols implements Cloneable, Serializable {
patternSeparator == other.patternSeparator &&
infinity.equals(other.infinity) &&
NaN.equals(other.NaN) &&
currencySymbol.equals(other.currencySymbol) &&
getCurrencySymbol().equals(other.getCurrencySymbol()) && // possible currency init occurs here
intlCurrencySymbol.equals(other.intlCurrencySymbol) &&
currency == other.currency &&
monetarySeparator == other.monetarySeparator &&
@ -629,6 +636,24 @@ public class DecimalFormatSymbols implements Cloneable, Serializable {
infinity = numberElements[9];
NaN = numberElements[10];
// maybe filled with previously cached values, or null.
intlCurrencySymbol = (String) data[1];
currencySymbol = (String) data[2];
// Currently the monetary decimal separator is the same as the
// standard decimal separator for all locales that we support.
// If that changes, add a new entry to NumberElements.
monetarySeparator = decimalSeparator;
}
/**
* Lazy initialization for currency related fields
*/
private void initializeCurrency(Locale locale) {
if (currencyInitialized) {
return;
}
// Try to obtain the currency used in the locale's country.
// Check for empty country string separately because it's a valid
// country ID for Locale (and used for the C locale), but not a valid
@ -640,7 +665,16 @@ public class DecimalFormatSymbols implements Cloneable, Serializable {
// use default values below for compatibility
}
}
if (currency != null) {
// get resource bundle data
LocaleProviderAdapter adapter =
LocaleProviderAdapter.getAdapter(DecimalFormatSymbolsProvider.class, locale);
// Avoid potential recursions
if (!(adapter instanceof ResourceBundleBasedAdapter)) {
adapter = LocaleProviderAdapter.getResourceBundleBased();
}
Object[] data = adapter.getLocaleResources(locale).getDecimalFormatSymbolsData();
intlCurrencySymbol = currency.getCurrencyCode();
if (data[1] != null && data[1] == intlCurrencySymbol) {
currencySymbol = (String) data[2];
@ -658,10 +692,8 @@ public class DecimalFormatSymbols implements Cloneable, Serializable {
}
currencySymbol = "\u00A4";
}
// Currently the monetary decimal separator is the same as the
// standard decimal separator for all locales that we support.
// If that changes, add a new entry to NumberElements.
monetarySeparator = decimalSeparator;
currencyInitialized = true;
}
/**
@ -705,6 +737,7 @@ public class DecimalFormatSymbols implements Cloneable, Serializable {
currency = Currency.getInstance(intlCurrencySymbol);
} catch (IllegalArgumentException e) {
}
currencyInitialized = true;
}
}
@ -820,16 +853,16 @@ public class DecimalFormatSymbols implements Cloneable, Serializable {
*/
private char exponential; // Field new in JDK 1.1.6
/**
* The string used to separate the mantissa from the exponent.
* Examples: "x10^" for 1.23x10^4, "E" for 1.23E4.
* <p>
* If both <code>exponential</code> and <code>exponentialSeparator</code>
* exist, this <code>exponentialSeparator</code> has the precedence.
*
* @serial
* @since 1.6
*/
/**
* The string used to separate the mantissa from the exponent.
* Examples: "x10^" for 1.23x10^4, "E" for 1.23E4.
* <p>
* If both <code>exponential</code> and <code>exponentialSeparator</code>
* exist, this <code>exponentialSeparator</code> has the precedence.
*
* @serial
* @since 1.6
*/
private String exponentialSeparator; // Field new in JDK 1.6
/**
@ -842,6 +875,7 @@ public class DecimalFormatSymbols implements Cloneable, Serializable {
// currency; only the ISO code is serialized.
private transient Currency currency;
private transient volatile boolean currencyInitialized = false;
// Proclaim JDK 1.1 FCS compatibility
static final long serialVersionUID = 5772796243397350300L;

View File

@ -758,7 +758,7 @@ public final class Instant
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 result = (nod / dur) * dur;
long result = Math.floorDiv(nod, dur) * dur ;
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.
*
* This code is free software; you can redistribute it and/or modify it
@ -281,6 +281,43 @@ public final class Objects {
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
* throws a customized {@link NullPointerException} if it is.

View File

@ -478,6 +478,13 @@ public class Cipher {
* <p> Note that the list of registered providers may be retrieved via
* 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.,
* <i>DES/CBC/PKCS5Padding</i>.
* 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.
*
* 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
* 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
* mechanism.
* 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.
*
* 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
* 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
* algorithm.
* 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.
*
* 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
* 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.
* See the KeyGenerator section in the <a href=
* "{@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.
*
* 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
* 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.
* See the Mac section in the <a href=
* "{@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.
*
* 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
* 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
* algorithm.
* 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
* 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.
* See the <a href=
* "{@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
* 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.
* See the SSLContext section in the <a href=
* "{@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
* 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
* algorithm. See the <a href=
* "{@docRoot}/../technotes/guides/security/jsse/JSSERefGuide.html">

View File

@ -101,6 +101,18 @@ package javax.security.auth;
* login Configuration.
* </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
* {@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
* 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
* section in the <a href=
* "{@docRoot}/../technotes/guides/security/StandardNames.html#Configuration">

View File

@ -3,7 +3,7 @@
<head>
<!--
Copyright (c) 1998, 2011, 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.
This code is free software; you can redistribute it and/or modify it
@ -30,9 +30,6 @@ questions.
</head>
<body bgcolor="white">
<body>
This document is the API specification for the Java&#x2122;
Platform, Standard Edition.

View File

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

View File

@ -27,8 +27,11 @@ package sun.security.jca;
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.Security;
/**
* List of Providers. Used to represent the provider preferences.
@ -65,6 +68,9 @@ public final class ProviderList {
// constant for an ProviderList with no elements
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
// used to avoid explicit null checks in various places
private static final Provider EMPTY_PROVIDER =
@ -162,11 +168,10 @@ public final class ProviderList {
*/
private ProviderList() {
List<ProviderConfig> configList = new ArrayList<>();
for (int i = 1; true; i++) {
String entry = Security.getProperty("security.provider." + i);
if (entry == null) {
break;
}
String entry;
int i = 1;
while ((entry = Security.getProperty("security.provider." + i)) != null) {
entry = entry.trim();
if (entry.length() == 0) {
System.err.println("invalid entry for " +
@ -187,10 +192,36 @@ public final class ProviderList {
if (configList.contains(config) == false) {
configList.add(config);
}
i++;
}
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) {
debug.println("provider configuration: " + configList);
debug.println("config configuration: " +
ProviderList.preferredPropList);
}
}
@ -327,7 +358,22 @@ public final class ProviderList {
* algorithm.
*/
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);
Service s = p.getService(type, name);
if (s != null) {
@ -394,7 +440,11 @@ public final class ProviderList {
private List<Service> services;
// 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) {
this.type = type;
@ -421,6 +471,14 @@ public final class ProviderList {
}
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) {
if ((index == 0) && (firstService != null)) {
return firstService;
@ -430,8 +488,27 @@ public final class ProviderList {
if (providerIndex >= configs.length) {
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) {
// simple lookup
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.
*
* 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 =
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
certPathDefaultConstraints = new DisabledAlgorithmConstraints(
DisabledAlgorithmConstraints.PROPERTY_CERTPATH_DISABLED_ALGS);
@ -210,9 +217,11 @@ public final class AlgorithmChecker extends PKIXCertPathChecker {
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) {
Set<CryptoPrimitive> primitives =
EnumSet.noneOf(CryptoPrimitive.class);
primitives = EnumSet.noneOf(CryptoPrimitive.class);
if (keyUsage[0] || keyUsage[1] || keyUsage[5] || keyUsage[6]) {
// keyUsage[0]: KeyUsage.digitalSignature
@ -237,15 +246,19 @@ public final class AlgorithmChecker extends PKIXCertPathChecker {
// KeyUsage.encipherOnly and KeyUsage.decipherOnly are
// undefined in the absence of the keyAgreement bit.
if (!primitives.isEmpty()) {
if (!constraints.permits(primitives, currPubKey)) {
throw new CertPathValidatorException(
"algorithm constraints check failed",
null, null, -1, BasicReason.ALGORITHM_CONSTRAINED);
}
if (primitives.isEmpty()) {
throw new CertPathValidatorException(
"incorrect KeyUsage extension",
null, null, -1, PKIXReason.INVALID_KEY_USAGE);
}
}
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
if (prevPubKey != null) {
if (currSigAlg != null) {

View File

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

View File

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

View File

@ -26,6 +26,11 @@
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.security.*;
import java.io.IOException;
@ -95,9 +100,35 @@ final class DHCrypt {
* Generate a Diffie-Hellman keypair of the specified size.
*/
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 {
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);
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) {
if (key instanceof DHPublicKey) {
DHPublicKey dhKey = (DHPublicKey)key;
@ -268,4 +272,141 @@ final class DHCrypt {
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);
plaintext.position(frgPos);
if (remains < (handshakeLen + 1)) { // 1: handshake type
if (remains < (handshakeLen + 4)) { // 4: handshake header
// This handshake message is fragmented.
prevType = handshakeType;
hsMsgOff = remains - 4; // 4: handshake header

View File

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

View File

@ -26,13 +26,11 @@
package sun.util.cldr;
import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.text.spi.BreakIteratorProvider;
import java.text.spi.CollatorProvider;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
@ -41,7 +39,7 @@ import java.util.Objects;
import java.util.ServiceLoader;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.stream.Stream;
import java.util.concurrent.ConcurrentHashMap;
import sun.util.locale.provider.JRELocaleProviderAdapter;
import sun.util.locale.provider.LocaleProviderAdapter;
import sun.util.locale.provider.LocaleDataMetaInfo;
@ -59,12 +57,21 @@ public class CLDRLocaleProviderAdapter extends JRELocaleProviderAdapter {
private final LocaleDataMetaInfo nonBaseMetaInfo;
// parent locales map
private static volatile Map<Locale, Locale> parentLocalesMap = null;
private static volatile Map<Locale, Locale> parentLocalesMap;
static {
parentLocalesMap = new ConcurrentHashMap<>();
// Assuming these locales do NOT have irregular parent locales.
parentLocalesMap.put(Locale.ROOT, Locale.ROOT);
parentLocalesMap.put(Locale.ENGLISH, Locale.ENGLISH);
parentLocalesMap.put(Locale.US, Locale.US);
}
public CLDRLocaleProviderAdapter() {
LocaleDataMetaInfo nbmi = null;
try {
nonBaseMetaInfo = AccessController.doPrivileged(new PrivilegedExceptionAction<LocaleDataMetaInfo>() {
@Override
nbmi = AccessController.doPrivileged(new PrivilegedExceptionAction<LocaleDataMetaInfo>() {
@Override
public LocaleDataMetaInfo run() {
for (LocaleDataMetaInfo ldmi : ServiceLoader.loadInstalled(LocaleDataMetaInfo.class)) {
if (ldmi.getType() == LocaleProviderAdapter.Type.CLDR) {
@ -72,18 +79,13 @@ public class CLDRLocaleProviderAdapter extends JRELocaleProviderAdapter {
}
}
return null;
}
});
}
});
} catch (Exception e) {
// Catch any exception, and fail gracefully as if CLDR locales do not exist.
// It's ok ignore it if something wrong happens because there always is the
// JRE or FALLBACK LocaleProviderAdapter that will do the right thing.
throw new UnsupportedOperationException(e);
// Catch any exception, and continue as if only CLDR's base locales exist.
}
if (nonBaseMetaInfo == null) {
throw new UnsupportedOperationException("CLDR locale data could not be found.");
}
nonBaseMetaInfo = nbmi;
}
/**
@ -120,7 +122,11 @@ public class CLDRLocaleProviderAdapter extends JRELocaleProviderAdapter {
protected Set<String> createLanguageTagSet(String category) {
// Directly call Base tags, as we know it's in the base module.
String supportedLocaleString = baseMetaInfo.availableLanguageTags(category);
String nonBaseTags = nonBaseMetaInfo.availableLanguageTags(category);
String nonBaseTags = null;
if (nonBaseMetaInfo != null) {
nonBaseTags = nonBaseMetaInfo.availableLanguageTags(category);
}
if (nonBaseTags != null) {
if (supportedLocaleString != null) {
supportedLocaleString += " " + nonBaseTags;
@ -144,35 +150,51 @@ public class CLDRLocaleProviderAdapter extends JRELocaleProviderAdapter {
public List<Locale> getCandidateLocales(String baseName, Locale locale) {
List<Locale> candidates = super.getCandidateLocales(baseName, locale);
return applyParentLocales(baseName, candidates);
}
}
private List<Locale> applyParentLocales(String baseName, List<Locale> candidates) {
if (Objects.isNull(parentLocalesMap)) {
Map<Locale, Locale> map = new HashMap<>();
baseMetaInfo.parentLocales().forEach((parent, children) -> {
Stream.of(children).forEach(child -> {
map.put(Locale.forLanguageTag(child), parent);
});
});
parentLocalesMap = Collections.unmodifiableMap(map);
}
// check irregular parents
for (int i = 0; i < candidates.size(); i++) {
Locale l = candidates.get(i);
Locale p = parentLocalesMap.get(l);
if (!l.equals(Locale.ROOT) &&
Objects.nonNull(p) &&
!candidates.get(i+1).equals(p)) {
List<Locale> applied = candidates.subList(0, i+1);
applied.addAll(applyParentLocales(baseName, super.getCandidateLocales(baseName, p)));
return applied;
if (!l.equals(Locale.ROOT)) {
Locale p = getParentLocale(l);
if (p != null &&
!candidates.get(i+1).equals(p)) {
List<Locale> applied = candidates.subList(0, i+1);
applied.addAll(applyParentLocales(baseName, super.getCandidateLocales(baseName, p)));
return applied;
}
}
}
return candidates;
}
private static Locale getParentLocale(Locale locale) {
Locale parent = parentLocalesMap.get(locale);
if (parent == null) {
String tag = locale.toLanguageTag();
for (Map.Entry<Locale, String[]> entry : baseMetaInfo.parentLocales().entrySet()) {
if (Arrays.binarySearch(entry.getValue(), tag) >= 0) {
parent = entry.getKey();
break;
}
}
if (parent == null) {
parent = locale; // non existent marker
}
parentLocalesMap.putIfAbsent(locale, parent);
}
if (locale.equals(parent)) {
// means no irregular parent.
parent = null;
}
return parent;
}
@Override
public boolean isSupportedProviderLocale(Locale locale, Set<String> langtags) {
return Locale.ROOT.equals(locale) ||

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 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
@ -33,10 +33,10 @@ import java.text.spi.DateFormatProvider;
import java.text.spi.DateFormatSymbolsProvider;
import java.text.spi.DecimalFormatSymbolsProvider;
import java.text.spi.NumberFormatProvider;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.spi.CalendarDataProvider;
@ -161,7 +161,7 @@ public abstract class AuxLocaleProviderAdapter extends LocaleProviderAdapter {
@Override
public Locale[] getAvailableLocales() {
if (availableLocales == null) {
Set<Locale> avail = new HashSet<>();
List<Locale> avail = new ArrayList<>();
for (Class<? extends LocaleServiceProvider> c :
LocaleServiceProviderPool.spiClasses) {
LocaleServiceProvider lsp = getLocaleServiceProvider(c);
@ -169,6 +169,7 @@ public abstract class AuxLocaleProviderAdapter extends LocaleProviderAdapter {
avail.addAll(Arrays.asList(lsp.getAvailableLocales()));
}
}
availableLocales = avail.toArray(new Locale[0]);
}
// assuming caller won't mutate the array.

View File

@ -50,7 +50,7 @@ public class CalendarDataUtility {
LocaleServiceProviderPool pool =
LocaleServiceProviderPool.getPool(CalendarDataProvider.class);
Integer value = pool.getLocalizedObject(CalendarWeekParameterGetter.INSTANCE,
locale, FIRST_DAY_OF_WEEK);
locale, true, FIRST_DAY_OF_WEEK);
return (value != null && (value >= SUNDAY && value <= SATURDAY)) ? value : SUNDAY;
}
@ -58,7 +58,7 @@ public class CalendarDataUtility {
LocaleServiceProviderPool pool =
LocaleServiceProviderPool.getPool(CalendarDataProvider.class);
Integer value = pool.getLocalizedObject(CalendarWeekParameterGetter.INSTANCE,
locale, MINIMAL_DAYS_IN_FIRST_WEEK);
locale, true, MINIMAL_DAYS_IN_FIRST_WEEK);
return (value != null && (value >= 1 && value <= 7)) ? value : 1;
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2013, 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
@ -26,7 +26,6 @@
package sun.util.locale.provider;
import java.util.Calendar;
import java.util.Calendar.Builder;
import java.util.Locale;
import java.util.Set;
import java.util.TimeZone;

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 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
@ -26,7 +26,6 @@
package sun.util.locale.provider;
import java.util.Collections;
import java.util.HashSet;
import java.util.Locale;
import java.util.Set;
@ -70,5 +69,5 @@ public class FallbackLocaleProviderAdapter extends JRELocaleProviderAdapter {
@Override
public boolean isSupportedProviderLocale(Locale locale, Set<String>langtags) {
return Locale.ROOT.equals(locale);
}
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 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
@ -36,6 +36,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.ResourceBundle;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@ -46,7 +47,6 @@ import java.util.spi.CurrencyNameProvider;
import java.util.spi.LocaleNameProvider;
import java.util.spi.LocaleServiceProvider;
import java.util.spi.TimeZoneNameProvider;
import sun.util.cldr.CLDRLocaleProviderAdapter;
import sun.util.spi.CalendarProvider;
/**
@ -60,24 +60,30 @@ public abstract class LocaleProviderAdapter {
* Adapter type.
*/
public static enum Type {
JRE("sun.util.resources", "sun.text.resources"),
CLDR("sun.util.resources.cldr", "sun.text.resources.cldr"),
SPI,
HOST,
FALLBACK("sun.util.resources", "sun.text.resources");
JRE("sun.util.locale.provider.JRELocaleProviderAdapter", "sun.util.resources", "sun.text.resources"),
CLDR("sun.util.cldr.CLDRLocaleProviderAdapter", "sun.util.resources.cldr", "sun.text.resources.cldr"),
SPI("sun.util.locale.provider.SPILocaleProviderAdapter"),
HOST("sun.util.locale.provider.HostLocaleProviderAdapter"),
FALLBACK("sun.util.locale.provider.FallbackLocaleProviderAdapter", "sun.util.resources", "sun.text.resources");
private final String CLASSNAME;
private final String UTIL_RESOURCES_PACKAGE;
private final String TEXT_RESOURCES_PACKAGE;
private Type() {
this(null, null);
private Type(String className) {
this(className, null, null);
}
private Type(String util, String text) {
private Type(String className, String util, String text) {
CLASSNAME = className;
UTIL_RESOURCES_PACKAGE = util;
TEXT_RESOURCES_PACKAGE = text;
}
public String getAdapterClassName() {
return CLASSNAME;
}
public String getUtilResourcesPackage() {
return UTIL_RESOURCES_PACKAGE;
}
@ -93,36 +99,15 @@ public abstract class LocaleProviderAdapter {
private static final List<Type> adapterPreference;
/**
* JRE Locale Data Adapter instance
* LocaleProviderAdapter instances
*/
private static LocaleProviderAdapter jreLocaleProviderAdapter = new JRELocaleProviderAdapter();
/**
* SPI Locale Data Adapter instance
*/
private static LocaleProviderAdapter spiLocaleProviderAdapter = new SPILocaleProviderAdapter();
/**
* CLDR Locale Data Adapter instance, if any.
*/
private static LocaleProviderAdapter cldrLocaleProviderAdapter = null;
/**
* HOST Locale Data Adapter instance, if any.
*/
private static LocaleProviderAdapter hostLocaleProviderAdapter = null;
/**
* FALLBACK Locale Data Adapter instance. It's basically the same with JRE, but only kicks
* in for the root locale.
*/
private static LocaleProviderAdapter fallbackLocaleProviderAdapter = null;
private static final Map<Type, LocaleProviderAdapter> adapterInstances = new ConcurrentHashMap<>();
/**
* Default fallback adapter type, which should return something meaningful in any case.
* This is either JRE or FALLBACK.
* This is either CLDR or FALLBACK.
*/
static LocaleProviderAdapter.Type defaultLocaleProviderAdapter = null;
static volatile LocaleProviderAdapter.Type defaultLocaleProviderAdapter = null;
/**
* Adapter lookup cache.
@ -141,20 +126,6 @@ public abstract class LocaleProviderAdapter {
for (String type : types) {
try {
Type aType = Type.valueOf(type.trim().toUpperCase(Locale.ROOT));
// load adapter if necessary
switch (aType) {
case CLDR:
if (cldrLocaleProviderAdapter == null) {
cldrLocaleProviderAdapter = new CLDRLocaleProviderAdapter();
}
break;
case HOST:
if (hostLocaleProviderAdapter == null) {
hostLocaleProviderAdapter = new HostLocaleProviderAdapter();
}
break;
}
if (!typeList.contains(aType)) {
typeList.add(aType);
}
@ -166,28 +137,19 @@ public abstract class LocaleProviderAdapter {
}
}
defaultLocaleProviderAdapter = Type.CLDR;
if (!typeList.isEmpty()) {
if (!typeList.contains(Type.JRE)) {
// bona fide preference exists
if (!typeList.contains(Type.CLDR)) {
// Append FALLBACK as the last resort.
fallbackLocaleProviderAdapter = new FallbackLocaleProviderAdapter();
typeList.add(Type.FALLBACK);
defaultLocaleProviderAdapter = Type.FALLBACK;
} else {
defaultLocaleProviderAdapter = Type.JRE;
}
} else {
// Default preference list.
try {
cldrLocaleProviderAdapter = new CLDRLocaleProviderAdapter();
typeList.add(Type.CLDR);
defaultLocaleProviderAdapter = Type.CLDR;
} catch (UnsupportedOperationException e) {
LocaleServiceProviderPool.config(LocaleProviderAdapter.class, e.toString());
}
typeList.add(Type.CLDR);
typeList.add(Type.JRE);
defaultLocaleProviderAdapter = Type.JRE;
}
adapterPreference = Collections.unmodifiableList(typeList);
}
@ -197,22 +159,42 @@ public abstract class LocaleProviderAdapter {
public static LocaleProviderAdapter forType(Type type) {
switch (type) {
case JRE:
return jreLocaleProviderAdapter;
case CLDR:
return cldrLocaleProviderAdapter;
case SPI:
return spiLocaleProviderAdapter;
case HOST:
return hostLocaleProviderAdapter;
case FALLBACK:
return fallbackLocaleProviderAdapter;
LocaleProviderAdapter adapter = null;
LocaleProviderAdapter cached = adapterInstances.get(type);
if (cached == null) {
try {
// lazily load adapters here
adapter = (LocaleProviderAdapter)Class.forName(type.getAdapterClassName())
.newInstance();
cached = adapterInstances.putIfAbsent(type, adapter);
if (cached != null) {
adapter = cached;
}
} catch (ClassNotFoundException |
IllegalAccessException |
InstantiationException |
UnsupportedOperationException e) {
LocaleServiceProviderPool.config(LocaleProviderAdapter.class, e.toString());
adapterInstances.putIfAbsent(type, NONEXISTENT_ADAPTER);
if (defaultLocaleProviderAdapter == type) {
defaultLocaleProviderAdapter = Type.FALLBACK;
}
}
} else if (cached != NONEXISTENT_ADAPTER) {
adapter = cached;
}
return adapter;
default:
throw new InternalError("unknown locale data adapter type");
}
}
public static LocaleProviderAdapter forJRE() {
return jreLocaleProviderAdapter;
return forType(Type.JRE);
}
public static LocaleProviderAdapter getResourceBundleBased() {
@ -227,6 +209,7 @@ public abstract class LocaleProviderAdapter {
// Shouldn't happen.
throw new InternalError();
}
/**
* Returns the preference order of LocaleProviderAdapter.Type
*/
@ -281,18 +264,20 @@ public abstract class LocaleProviderAdapter {
}
// returns the adapter for FALLBACK as the last resort
adapterMap.putIfAbsent(locale, fallbackLocaleProviderAdapter);
return fallbackLocaleProviderAdapter;
adapterMap.putIfAbsent(locale, forType(Type.FALLBACK));
return forType(Type.FALLBACK);
}
private static LocaleProviderAdapter findAdapter(Class<? extends LocaleServiceProvider> providerClass,
Locale locale) {
for (Type type : getAdapterPreference()) {
LocaleProviderAdapter adapter = forType(type);
LocaleServiceProvider provider = adapter.getLocaleServiceProvider(providerClass);
if (provider != null) {
if (provider.isSupportedLocale(locale)) {
return adapter;
if (adapter != null) {
LocaleServiceProvider provider = adapter.getLocaleServiceProvider(providerClass);
if (provider != null) {
if (provider.isSupportedLocale(locale)) {
return adapter;
}
}
}
}
@ -442,4 +427,14 @@ public abstract class LocaleProviderAdapter {
public abstract LocaleResources getLocaleResources(Locale locale);
public abstract Locale[] getAvailableLocales();
private static final LocaleProviderAdapter NONEXISTENT_ADAPTER = new NonExistentAdapter();
private static final class NonExistentAdapter extends FallbackLocaleProviderAdapter {
@Override
public LocaleProviderAdapter.Type getAdapterType() {
return null;
}
private NonExistentAdapter() {};
}
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 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
@ -71,8 +71,8 @@ public class LocaleResources {
private final LocaleProviderAdapter.Type type;
// Resource cache
private ConcurrentMap<String, ResourceReference> cache = new ConcurrentHashMap<>();
private ReferenceQueue<Object> referenceQueue = new ReferenceQueue<>();
private final ConcurrentMap<String, ResourceReference> cache = new ConcurrentHashMap<>();
private final ReferenceQueue<Object> referenceQueue = new ReferenceQueue<>();
// cache key prefixes
private static final String BREAK_ITERATOR_INFO = "BII.";

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005, 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
@ -53,20 +53,13 @@ public final class LocaleServiceProviderPool {
* A Map that holds singleton instances of this class. Each instance holds a
* set of provider implementations of a particular locale sensitive service.
*/
private static ConcurrentMap<Class<? extends LocaleServiceProvider>, LocaleServiceProviderPool> poolOfPools =
new ConcurrentHashMap<>();
/**
* A Map containing locale service providers that implement the
* specified provider SPI, keyed by a LocaleProviderAdapter.Type
*/
private ConcurrentMap<LocaleProviderAdapter.Type, LocaleServiceProvider> providers =
private static final ConcurrentMap<Class<? extends LocaleServiceProvider>, LocaleServiceProviderPool> poolOfPools =
new ConcurrentHashMap<>();
/**
* A Map that retains Locale->provider mapping
*/
private ConcurrentMap<Locale, List<LocaleProviderAdapter.Type>> providersCache =
private final ConcurrentMap<Locale, List<LocaleServiceProvider>> providersCache =
new ConcurrentHashMap<>();
/**
@ -78,7 +71,7 @@ public final class LocaleServiceProviderPool {
/**
* Provider class
*/
private Class<? extends LocaleServiceProvider> providerClass;
private final Class<? extends LocaleServiceProvider> providerClass;
/**
* Array of all Locale Sensitive SPI classes.
@ -126,16 +119,6 @@ public final class LocaleServiceProviderPool {
*/
private LocaleServiceProviderPool (final Class<? extends LocaleServiceProvider> c) {
providerClass = c;
for (LocaleProviderAdapter.Type type : LocaleProviderAdapter.getAdapterPreference()) {
LocaleProviderAdapter lda = LocaleProviderAdapter.forType(type);
if (lda != null) {
LocaleServiceProvider provider = lda.getLocaleServiceProvider(c);
if (provider != null) {
providers.putIfAbsent(type, provider);
}
}
}
}
static void config(Class<? extends Object> caller, String message) {
@ -208,10 +191,16 @@ public final class LocaleServiceProviderPool {
private synchronized Set<Locale> getAvailableLocaleSet() {
if (availableLocales == null) {
availableLocales = new HashSet<>();
for (LocaleServiceProvider lsp : providers.values()) {
Locale[] locales = lsp.getAvailableLocales();
for (Locale locale: locales) {
availableLocales.add(getLookupLocale(locale));
for (LocaleProviderAdapter.Type type : LocaleProviderAdapter.getAdapterPreference()) {
LocaleProviderAdapter lda = LocaleProviderAdapter.forType(type);
if (lda != null) {
LocaleServiceProvider lsp = lda.getLocaleServiceProvider(providerClass);
if (lsp != null) {
Locale[] locales = lsp.getAvailableLocales();
for (Locale locale: locales) {
availableLocales.add(getLookupLocale(locale));
}
}
}
}
}
@ -219,18 +208,6 @@ public final class LocaleServiceProviderPool {
return availableLocales;
}
/**
* Returns whether any provider for this locale sensitive
* service is available or not, excluding JRE's one.
*
* @return true if any provider (other than JRE) is available
*/
boolean hasProviders() {
return providers.size() != 1 ||
(providers.get(LocaleProviderAdapter.Type.JRE) == null &&
providers.get(LocaleProviderAdapter.Type.FALLBACK) == null);
}
/**
* Returns the provider's localized object for the specified
* locale.
@ -265,6 +242,26 @@ public final class LocaleServiceProviderPool {
return getLocalizedObjectImpl(getter, locale, false, key, params);
}
/**
* Returns the provider's localized name for the specified
* locale.
*
* @param getter an object on which getObject() method
* is called to obtain the provider's instance.
* @param locale the given locale that is used as the starting one
* @param isObjectProvider flag designating object provder or not
* @param key the key string for name providers
* @param params provider specific parameters
* @return provider's instance, or null.
*/
public <P extends LocaleServiceProvider, S> S getLocalizedObject(LocalizedObjectGetter<P, S> getter,
Locale locale,
Boolean isObjectProvider,
String key,
Object... params) {
return getLocalizedObjectImpl(getter, locale, isObjectProvider, key, params);
}
@SuppressWarnings("unchecked")
private <P extends LocaleServiceProvider, S> S getLocalizedObjectImpl(LocalizedObjectGetter<P, S> getter,
Locale locale,
@ -275,30 +272,19 @@ public final class LocaleServiceProviderPool {
throw new NullPointerException();
}
// Check whether JRE is the sole locale data provider or not,
// and directly call it if it is.
if (!hasProviders()) {
return getter.getObject((P)providers.get(LocaleProviderAdapter.defaultLocaleProviderAdapter),
locale, key, params);
}
List<Locale> lookupLocales = getLookupLocales(locale);
Set<Locale> available = getAvailableLocaleSet();
for (Locale current : lookupLocales) {
if (available.contains(current)) {
S providersObj;
S providersObj;
for (LocaleProviderAdapter.Type type: findProviders(current)) {
LocaleServiceProvider lsp = providers.get(type);
providersObj = getter.getObject((P)lsp, locale, key, params);
if (providersObj != null) {
return providersObj;
} else if (isObjectProvider) {
config(LocaleServiceProviderPool.class,
"A locale sensitive service provider returned null for a localized objects, which should not happen. provider: "
+ lsp + " locale: " + locale);
}
for (LocaleServiceProvider lsp: findProviders(current, isObjectProvider)) {
providersObj = getter.getObject((P)lsp, locale, key, params);
if (providersObj != null) {
return providersObj;
} else if (isObjectProvider) {
config(LocaleServiceProviderPool.class,
"A locale sensitive service provider returned null for a localized objects, which should not happen. provider: "
+ lsp + " locale: " + locale);
}
}
}
@ -314,31 +300,36 @@ public final class LocaleServiceProviderPool {
* @param locale the given locale
* @return the list of locale data adapter types
*/
private List<LocaleProviderAdapter.Type> findProviders(Locale locale) {
List<LocaleProviderAdapter.Type> providersList = providersCache.get(locale);
private List<LocaleServiceProvider> findProviders(Locale locale, boolean isObjectProvider) {
List<LocaleServiceProvider> providersList = providersCache.get(locale);
if (providersList == null) {
for (LocaleProviderAdapter.Type type : LocaleProviderAdapter.getAdapterPreference()) {
LocaleServiceProvider lsp = providers.get(type);
if (lsp != null) {
if (lsp.isSupportedLocale(locale)) {
if (providersList == null) {
providersList = new ArrayList<>(2);
LocaleProviderAdapter lda = LocaleProviderAdapter.forType(type);
if (lda != null) {
LocaleServiceProvider lsp = lda.getLocaleServiceProvider(providerClass);
if (lsp != null) {
if (lsp.isSupportedLocale(locale)) {
if (providersList == null) {
providersList = new ArrayList<>(2);
}
providersList.add(lsp);
if (isObjectProvider) {
break;
}
}
providersList.add(type);
}
}
}
if (providersList == null) {
providersList = NULL_LIST;
}
List<LocaleProviderAdapter.Type> val = providersCache.putIfAbsent(locale, providersList);
List<LocaleServiceProvider> val = providersCache.putIfAbsent(locale, providersList);
if (val != null) {
providersList = val;
}
}
return providersList;
}
return providersList;
}
/**
* Returns a list of candidate locales for service look up.
@ -393,7 +384,7 @@ public final class LocaleServiceProviderPool {
* A dummy locale service provider list that indicates there is no
* provider available
*/
private static List<LocaleProviderAdapter.Type> NULL_LIST =
private static final List<LocaleServiceProvider> NULL_LIST =
Collections.emptyList();
/**

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 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
@ -133,7 +133,7 @@ public class SPILocaleProviderAdapter extends AuxLocaleProviderAdapter {
*/
static class BreakIteratorProviderDelegate extends BreakIteratorProvider
implements Delegate<BreakIteratorProvider> {
private ConcurrentMap<Locale, BreakIteratorProvider> map = new ConcurrentHashMap<>();
private final ConcurrentMap<Locale, BreakIteratorProvider> map = new ConcurrentHashMap<>();
@Override
public void addImpl(BreakIteratorProvider impl) {
@ -188,7 +188,7 @@ public class SPILocaleProviderAdapter extends AuxLocaleProviderAdapter {
}
static class CollatorProviderDelegate extends CollatorProvider implements Delegate<CollatorProvider> {
private ConcurrentMap<Locale, CollatorProvider> map = new ConcurrentHashMap<>();
private final ConcurrentMap<Locale, CollatorProvider> map = new ConcurrentHashMap<>();
@Override
public void addImpl(CollatorProvider impl) {
@ -222,7 +222,7 @@ public class SPILocaleProviderAdapter extends AuxLocaleProviderAdapter {
static class DateFormatProviderDelegate extends DateFormatProvider
implements Delegate<DateFormatProvider> {
private ConcurrentMap<Locale, DateFormatProvider> map = new ConcurrentHashMap<>();
private final ConcurrentMap<Locale, DateFormatProvider> map = new ConcurrentHashMap<>();
@Override
public void addImpl(DateFormatProvider impl) {
@ -270,7 +270,7 @@ public class SPILocaleProviderAdapter extends AuxLocaleProviderAdapter {
static class DateFormatSymbolsProviderDelegate extends DateFormatSymbolsProvider
implements Delegate<DateFormatSymbolsProvider> {
private ConcurrentMap<Locale, DateFormatSymbolsProvider> map = new ConcurrentHashMap<>();
private final ConcurrentMap<Locale, DateFormatSymbolsProvider> map = new ConcurrentHashMap<>();
@Override
public void addImpl(DateFormatSymbolsProvider impl) {
@ -304,7 +304,7 @@ public class SPILocaleProviderAdapter extends AuxLocaleProviderAdapter {
static class DecimalFormatSymbolsProviderDelegate extends DecimalFormatSymbolsProvider
implements Delegate<DecimalFormatSymbolsProvider> {
private ConcurrentMap<Locale, DecimalFormatSymbolsProvider> map = new ConcurrentHashMap<>();
private final ConcurrentMap<Locale, DecimalFormatSymbolsProvider> map = new ConcurrentHashMap<>();
@Override
public void addImpl(DecimalFormatSymbolsProvider impl) {
@ -338,7 +338,7 @@ public class SPILocaleProviderAdapter extends AuxLocaleProviderAdapter {
static class NumberFormatProviderDelegate extends NumberFormatProvider
implements Delegate<NumberFormatProvider> {
private ConcurrentMap<Locale, NumberFormatProvider> map = new ConcurrentHashMap<>();
private final ConcurrentMap<Locale, NumberFormatProvider> map = new ConcurrentHashMap<>();
@Override
public void addImpl(NumberFormatProvider impl) {
@ -393,7 +393,7 @@ public class SPILocaleProviderAdapter extends AuxLocaleProviderAdapter {
static class CalendarDataProviderDelegate extends CalendarDataProvider
implements Delegate<CalendarDataProvider> {
private ConcurrentMap<Locale, CalendarDataProvider> map = new ConcurrentHashMap<>();
private final ConcurrentMap<Locale, CalendarDataProvider> map = new ConcurrentHashMap<>();
@Override
public void addImpl(CalendarDataProvider impl) {
@ -434,7 +434,7 @@ public class SPILocaleProviderAdapter extends AuxLocaleProviderAdapter {
static class CalendarNameProviderDelegate extends CalendarNameProvider
implements Delegate<CalendarNameProvider> {
private ConcurrentMap<Locale, CalendarNameProvider> map = new ConcurrentHashMap<>();
private final ConcurrentMap<Locale, CalendarNameProvider> map = new ConcurrentHashMap<>();
@Override
public void addImpl(CalendarNameProvider impl) {
@ -479,7 +479,7 @@ public class SPILocaleProviderAdapter extends AuxLocaleProviderAdapter {
static class CurrencyNameProviderDelegate extends CurrencyNameProvider
implements Delegate<CurrencyNameProvider> {
private ConcurrentMap<Locale, CurrencyNameProvider> map = new ConcurrentHashMap<>();
private final ConcurrentMap<Locale, CurrencyNameProvider> map = new ConcurrentHashMap<>();
@Override
public void addImpl(CurrencyNameProvider impl) {
@ -520,7 +520,7 @@ public class SPILocaleProviderAdapter extends AuxLocaleProviderAdapter {
static class LocaleNameProviderDelegate extends LocaleNameProvider
implements Delegate<LocaleNameProvider> {
private ConcurrentMap<Locale, LocaleNameProvider> map = new ConcurrentHashMap<>();
private final ConcurrentMap<Locale, LocaleNameProvider> map = new ConcurrentHashMap<>();
@Override
public void addImpl(LocaleNameProvider impl) {
@ -575,7 +575,7 @@ public class SPILocaleProviderAdapter extends AuxLocaleProviderAdapter {
static class TimeZoneNameProviderDelegate extends TimeZoneNameProvider
implements Delegate<TimeZoneNameProvider> {
private ConcurrentMap<Locale, TimeZoneNameProvider> map = new ConcurrentHashMap<>();
private final ConcurrentMap<Locale, TimeZoneNameProvider> map = new ConcurrentHashMap<>();
@Override
public void addImpl(TimeZoneNameProvider impl) {

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2005, 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
@ -47,7 +47,7 @@ public final class TimeZoneNameUtility {
/**
* cache to hold time zone localized strings. Keyed by Locale
*/
private static ConcurrentHashMap<Locale, SoftReference<String[][]>> cachedZoneData =
private static final ConcurrentHashMap<Locale, SoftReference<String[][]>> cachedZoneData =
new ConcurrentHashMap<>();
/**

View File

@ -90,6 +90,31 @@ security.provider.tbd=apple.security.AppleProvider
security.provider.tbd=sun.security.pkcs11.SunPKCS11
#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.
@ -234,6 +259,7 @@ package.access=sun.,\
com.sun.org.apache.xalan.internal.xsltc.util.,\
com.sun.org.apache.xml.internal.res.,\
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.utils.,\
com.sun.org.glassfish.,\
@ -289,6 +315,7 @@ package.definition=sun.,\
com.sun.org.apache.xalan.internal.xsltc.util.,\
com.sun.org.apache.xml.internal.res.,\
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.utils.,\
com.sun.org.glassfish.,\
@ -607,3 +634,60 @@ jdk.tls.legacyAlgorithms= \
DH_RSA_EXPORT, RSA_EXPORT, \
DH_anon, ECDH_anon, \
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_familyID;
jfieldID iac_hostNameID;
jfieldID iac_origHostNameID;
jfieldID ia_preferIPv6AddressID;
static int ia_initialized = 0;
@ -69,6 +70,8 @@ Java_java_net_InetAddress_init(JNIEnv *env, jclass cls) {
CHECK_NULL(iac_familyID);
iac_hostNameID = (*env)->GetFieldID(env, iac_class, "hostName", "Ljava/lang/String;");
CHECK_NULL(iac_hostNameID);
iac_origHostNameID = (*env)->GetFieldID(env, iac_class, "originalHostName", "Ljava/lang/String;");
CHECK_NULL(iac_origHostNameID);
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) {
jobject holder = (*env)->GetObjectField(env, iaObj, ia_holderID);
(*env)->SetObjectField(env, holder, iac_hostNameID, host);
(*env)->SetObjectField(env, holder, iac_origHostNameID, host);
}
int getInetAddress_addr(JNIEnv *env, jobject iaObj) {

View File

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

View File

@ -30,12 +30,9 @@
#ifdef __solaris__
#include <sys/systeminfo.h>
#include <strings.h>
#endif
#if defined(__linux__) || defined(_ALLBSD_SOURCE)
#include <string.h>
#endif
#include "jni.h"

View File

@ -1,5 +1,5 @@
/*
* Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012, 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
@ -40,7 +40,6 @@ import java.util.Collections;
import java.util.Currency;
import java.util.HashSet;
import java.util.Locale;
import java.util.Map;
import java.util.ResourceBundle.Control;
import java.util.Set;
import java.util.TimeZone;
@ -100,10 +99,10 @@ public class HostLocaleProviderAdapterImpl {
};
// Caches
private static ConcurrentMap<Locale, SoftReference<AtomicReferenceArray<String>>> dateFormatCache = new ConcurrentHashMap<>();
private static ConcurrentMap<Locale, SoftReference<DateFormatSymbols>> dateFormatSymbolsCache = new ConcurrentHashMap<>();
private static ConcurrentMap<Locale, SoftReference<AtomicReferenceArray<String>>> numberFormatCache = new ConcurrentHashMap<>();
private static ConcurrentMap<Locale, SoftReference<DecimalFormatSymbols>> decimalFormatSymbolsCache = new ConcurrentHashMap<>();
private static final ConcurrentMap<Locale, SoftReference<AtomicReferenceArray<String>>> dateFormatCache = new ConcurrentHashMap<>();
private static final ConcurrentMap<Locale, SoftReference<DateFormatSymbols>> dateFormatSymbolsCache = new ConcurrentHashMap<>();
private static final ConcurrentMap<Locale, SoftReference<AtomicReferenceArray<String>>> numberFormatCache = new ConcurrentHashMap<>();
private static final ConcurrentMap<Locale, SoftReference<DecimalFormatSymbols>> decimalFormatSymbolsCache = new ConcurrentHashMap<>();
private static final Set<Locale> supportedLocaleSet;
private static final String nativeDisplayLanguage;

View File

@ -74,3 +74,4 @@ RICH_TEXT=text/rtf
HTML=text/html;charset=utf-8;eoln="\r\n";terminators=1
URL=application/x-java-url;class=java.net.URL,\
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",
"URL",
"PNG",
"JFIF"
"JFIF",
"XPICT"
};
static {
@ -78,6 +79,7 @@ public class CDataTransferer extends DataTransferer {
public static final int CF_URL = 7;
public static final int CF_PNG = 8;
public static final int CF_JPEG = 9;
public static final int CF_XPICT = 10;
private CDataTransferer() {}

View File

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

View File

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

View File

@ -23,6 +23,7 @@ BMPImageReader4=No ImageIO-style reader is found for
BMPImageReader5=Input has not been set.
BMPImageReader6=Unable to read the image header.
BMPImageReader7=Invalid bitmap offset.
BMPImageReader8=Invalid bits per pixel in image header.
BMPImageWriter0=Output is not an ImageOutputStream.
BMPImageWriter1=The image region to be encoded is empty.
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;
}
static boolean isOnWindows7() {
return OSInfo.getOSType() == OSInfo.OSType.WINDOWS
&& OSInfo.getWindowsVersion().compareTo(OSInfo.WINDOWS_7) >= 0;
}
private void initVistaComponentDefaults(UIDefaults table) {
if (! isOnVista()) {
return;
@ -1638,28 +1643,30 @@ public class WindowsLookAndFeel extends BasicLookAndFeel
}
table.putDefaults(menuDefaults);
/* no margins */
InsetsUIResource insets = new InsetsUIResource(0, 0, 0, 0);
for (int i = 0, j = 0; i < menuClasses.length; i++) {
String key = menuClasses[i] + ".margin";
Object oldValue = table.get(key);
menuDefaults[j++] = key;
menuDefaults[j++] = new XPValue(insets, oldValue);
}
table.putDefaults(menuDefaults);
/*For Windows7 margin and checkIconOffset should be greater than 0 */
if (!isOnWindows7()) {
/* no margins */
InsetsUIResource insets = new InsetsUIResource(0, 0, 0, 0);
for (int i = 0, j = 0; i < menuClasses.length; i++) {
String key = menuClasses[i] + ".margin";
Object oldValue = table.get(key);
menuDefaults[j++] = key;
menuDefaults[j++] = new XPValue(insets, oldValue);
}
table.putDefaults(menuDefaults);
/* set checkIcon offset */
Integer checkIconOffsetInteger =
Integer.valueOf(0);
for (int i = 0, j = 0; i < menuClasses.length; i++) {
String key = menuClasses[i] + ".checkIconOffset";
Object oldValue = table.get(key);
menuDefaults[j++] = key;
menuDefaults[j++] =
new XPValue(checkIconOffsetInteger, oldValue);
/* set checkIcon offset */
Integer checkIconOffsetInteger =
Integer.valueOf(0);
for (int i = 0, j = 0; i < menuClasses.length; i++) {
String key = menuClasses[i] + ".checkIconOffset";
Object oldValue = table.get(key);
menuDefaults[j++] = key;
menuDefaults[j++] =
new XPValue(checkIconOffsetInteger, oldValue);
}
table.putDefaults(menuDefaults);
}
table.putDefaults(menuDefaults);
/* set width of the gap after check icon */
Integer afterCheckIconGap = WindowsPopupMenuUI.getSpanBeforeGutter()
+ WindowsPopupMenuUI.getGutterWidth()

View File

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

View File

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

View File

@ -3131,8 +3131,6 @@ public class Container extends Component {
* or if any keystroke already maps to another focus traversal
* operation for this Container
* @since 1.4
* @beaninfo
* bound: true
*/
public void setFocusTraversalKeys(int id,
Set<? extends AWTKeyStroke> keystrokes)
@ -3347,8 +3345,6 @@ public class Container extends Component {
* @see #setFocusCycleRoot
* @see #isFocusCycleRoot
* @since 1.4
* @beaninfo
* bound: true
*/
public void setFocusTraversalPolicy(FocusTraversalPolicy policy) {
FocusTraversalPolicy oldPolicy;
@ -3427,8 +3423,6 @@ public class Container extends Component {
* @see ContainerOrderFocusTraversalPolicy
* @see #setFocusTraversalPolicyProvider
* @since 1.4
* @beaninfo
* bound: true
*/
public void setFocusCycleRoot(boolean focusCycleRoot) {
boolean oldFocusCycleRoot;
@ -3472,8 +3466,6 @@ public class Container extends Component {
* @see #getFocusTraversalPolicy
* @see #isFocusTraversalPolicyProvider
* @since 1.5
* @beaninfo
* bound: true
*/
public final void setFocusTraversalPolicyProvider(boolean provider) {
boolean oldProvider;
@ -3499,8 +3491,6 @@ public class Container extends Component {
* @return <code>true</code> if this container provides focus traversal
* policy, <code>false</code> otherwise
* @since 1.5
* @beaninfo
* bound: true
*/
public final boolean isFocusTraversalPolicyProvider() {
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
* file dialog is initially empty. This is a convenience method for
* <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
* @since 1.1
@ -187,6 +193,12 @@ public class FileDialog extends Dialog {
* a file. The files shown are those in the current directory.
* This is a convenience method for
* <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 title the title of the dialog
@ -204,6 +216,12 @@ public class FileDialog extends Dialog {
* in the current directory. If the value of
* <code>mode</code> is <code>SAVE</code>, the file dialog is finding
* 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 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
* file dialog is initially empty. This is a convenience method for
* <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
* @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.
* This is a convenience method for
* <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 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
* <code>mode</code> is <code>SAVE</code>, the file dialog is finding
* 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 title the title of the dialog; a <code>null</code> value
@ -300,6 +336,22 @@ public class FileDialog extends Dialog {
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>
* 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
* and if the calling thread does not have "replaceKeyboardFocusManager"
* permission
* @beaninfo
* bound: true
*/
protected void setGlobalFocusOwner(Component focusOwner)
throws SecurityException
@ -744,8 +742,6 @@ public abstract class KeyboardFocusManager
* current KeyboardFocusManager for the calling thread's context
* and if the calling thread does not have "replaceKeyboardFocusManager"
* permission
* @beaninfo
* bound: true
*/
protected void setGlobalPermanentFocusOwner(Component permanentFocusOwner)
throws SecurityException
@ -847,8 +843,6 @@ public abstract class KeyboardFocusManager
* current KeyboardFocusManager for the calling thread's context
* and if the calling thread does not have "replaceKeyboardFocusManager"
* permission
* @beaninfo
* bound: true
*/
protected void setGlobalFocusedWindow(Window focusedWindow)
throws SecurityException
@ -952,8 +946,6 @@ public abstract class KeyboardFocusManager
* current KeyboardFocusManager for the calling thread's context
* and if the calling thread does not have "replaceKeyboardFocusManager"
* permission
* @beaninfo
* bound: true
*/
protected void setGlobalActiveWindow(Window activeWindow)
throws SecurityException
@ -1008,8 +1000,6 @@ public abstract class KeyboardFocusManager
* @see Container#setFocusTraversalPolicy
* @see Container#getFocusTraversalPolicy
* @throws IllegalArgumentException if defaultPolicy is null
* @beaninfo
* bound: true
*/
public void setDefaultFocusTraversalPolicy(FocusTraversalPolicy
defaultPolicy) {
@ -1113,8 +1103,6 @@ public abstract class KeyboardFocusManager
* represents a {@code KEY_TYPED} event,
* or if any keystroke already maps
* to another default focus traversal operation
* @beaninfo
* bound: true
*/
public void
setDefaultFocusTraversalKeys(int id,
@ -1272,8 +1260,6 @@ public abstract class KeyboardFocusManager
* @see #getGlobalCurrentFocusCycleRoot
* @throws SecurityException if the calling thread does not have
* "replaceKeyboardFocusManager" permission
* @beaninfo
* bound: true
*/
public void setGlobalCurrentFocusCycleRoot(Container newFocusCycleRoot)
throws SecurityException

View File

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

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