8073893: Enable charsets build system to configure euc_tw into java.base module/sun.nio.cs
To enable charsets build system to configure euc_tw into java.base module/sun.nio.cs Reviewed-by: alanb, mchung
This commit is contained in:
parent
c90f8b8839
commit
ece4e20848
jdk
make
data/charsetmapping
gensrc
src/classes/build/tools/charsetmapping
src
java.desktop/unix/classes/sun/awt/motif
jdk.charsets/share/classes/sun/nio/cs/ext
test/sun/nio/cs
@ -503,7 +503,7 @@ charset x-windows-874 MS874
|
||||
|
||||
charset x-EUC-TW EUC_TW
|
||||
package sun.nio.cs.ext
|
||||
type source
|
||||
type template
|
||||
alias euc_tw # JDK historical
|
||||
alias euctw
|
||||
alias cns11643
|
||||
@ -1816,3 +1816,17 @@ charset x-JIS0212_MS5022X JIS_X_0212_MS5022X
|
||||
ascii false
|
||||
minmax 0x21 0x7e 0x21 0x7e
|
||||
internal true # "internal implementation
|
||||
|
||||
########################################################
|
||||
#
|
||||
# platform specific charsets, to be registered into spi
|
||||
##
|
||||
########################################################
|
||||
|
||||
charset x-COMPOUND_TEXT COMPOUND_TEXT
|
||||
package sun.nio.cs.ext
|
||||
type source
|
||||
os unix
|
||||
alias COMPOUND_TEXT # JDK historical
|
||||
alias x11-compound_text
|
||||
alias x-compound-text
|
||||
|
@ -9,6 +9,7 @@ EUC_KR
|
||||
EUC_JP
|
||||
EUC_JP_LINUX
|
||||
EUC_JP_Open
|
||||
EUC_TW
|
||||
GBK
|
||||
ISO_8859_11
|
||||
ISO_8859_3
|
||||
|
@ -50,7 +50,9 @@ $(CHARSET_DONE_CS)-extcs: $(CHARSET_DATA_DIR)/charsets \
|
||||
$(TOOL_CHARSETMAPPING) $(CHARSET_DATA_DIR) $(CHARSET_GENSRC_JAVA_DIR_CS) \
|
||||
extcs charsets $(CHARSET_STANDARD_OS) \
|
||||
$(CHARSET_EXTENDED_JAVA_TEMPLATES) \
|
||||
$(CHARSET_EXTENDED_JAVA_DIR) $(LOG_INFO)
|
||||
$(CHARSET_EXTENDED_JAVA_DIR) \
|
||||
$(CHARSET_COPYRIGHT_HEADER) \
|
||||
$(LOG_INFO)
|
||||
$(TOUCH) '$@'
|
||||
|
||||
$(CHARSET_DONE_CS)-hkscs: $(CHARSET_COPYRIGHT_HEADER)/HKSCS.java \
|
||||
|
@ -32,6 +32,7 @@ CHARSET_DATA_DIR := $(JDK_TOPDIR)/make/data/charsetmapping
|
||||
CHARSET_EXTSRC_DIR := $(JDK_TOPDIR)/src/jdk.charsets/share/classes/sun/nio/cs/ext
|
||||
CHARSET_GENSRC_JAVA_DIR_BASE := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/cs
|
||||
CHARSET_DONE_BASE := $(CHARSET_GENSRC_JAVA_DIR_BASE)/_the.charsetmapping
|
||||
CHARSET_COPYRIGHT_HEADER := $(JDK_TOPDIR)/make/src/classes/build/tools/charsetmapping
|
||||
CHARSET_TEMPLATES := \
|
||||
$(CHARSET_DATA_DIR)/SingleByte-X.java.template \
|
||||
$(CHARSET_DATA_DIR)/DoubleByte-X.java.template
|
||||
@ -46,7 +47,9 @@ $(CHARSET_DONE_BASE)-stdcs: $(CHARSET_DATA_DIR)/charsets \
|
||||
$(MKDIR) -p $(@D)
|
||||
$(TOOL_CHARSETMAPPING) $(CHARSET_DATA_DIR) $(CHARSET_GENSRC_JAVA_DIR_BASE) \
|
||||
stdcs charsets $(CHARSET_STANDARD_OS) \
|
||||
$(CHARSET_STANDARD_JAVA_TEMPLATES) $(CHARSET_EXTSRC_DIR) $(LOG_INFO)
|
||||
$(CHARSET_STANDARD_JAVA_TEMPLATES) $(CHARSET_EXTSRC_DIR) \
|
||||
$(CHARSET_COPYRIGHT_HEADER) \
|
||||
$(LOG_INFO)
|
||||
$(TOUCH) '$@'
|
||||
|
||||
GENSRC_JAVA_BASE += $(CHARSET_DONE_BASE)-stdcs
|
||||
|
@ -31,6 +31,7 @@ class Charset {
|
||||
String csName;
|
||||
String hisName;
|
||||
String type;
|
||||
String os;
|
||||
boolean isASCII;
|
||||
int b1Min;
|
||||
int b1Max;
|
||||
|
@ -80,12 +80,12 @@ public class EUC_TW {
|
||||
|
||||
private static Pattern euctw = Pattern.compile("(?:8ea)?(\\p{XDigit}++)\\s++(\\p{XDigit}++)?\\s*+.*");
|
||||
|
||||
static void genClass(String args[]) throws Exception
|
||||
static void genClass(String pkg, String args[]) throws Exception
|
||||
{
|
||||
InputStream is = new FileInputStream(new File(args[0], "euc_tw.map"));
|
||||
PrintStream ps = new PrintStream(new File(args[1], "EUC_TWMapping.java"),
|
||||
"ISO-8859-1");
|
||||
String copyright = getCopyright(new File(args[3]));
|
||||
String copyright = getCopyright(new File(args[7], "EUC_TW.java"));
|
||||
|
||||
|
||||
// ranges of byte1 and byte2, something should come from a "config" file
|
||||
@ -128,7 +128,7 @@ public class EUC_TW {
|
||||
|
||||
out.format(copyright);
|
||||
out.format("%n// -- This file was mechanically generated: Do not edit! -- //%n");
|
||||
out.format("package sun.nio.cs.ext;%n%n");
|
||||
out.format("package %s;%n%n", pkg);
|
||||
out.format("class EUC_TWMapping {%n%n");
|
||||
|
||||
// boundaries
|
||||
|
@ -42,7 +42,7 @@ public class HKSCS {
|
||||
private static Pattern hkscs =
|
||||
Pattern.compile("(?:0x)?+(\\p{XDigit}++)\\s++(?:0x|U\\+)?+(\\p{XDigit}++)?\\s*+(?:0x|U\\+)?(\\p{XDigit}++)?\\s*+.*");
|
||||
|
||||
static void genClass2008(String srcDir, String dstDir, String pkgName)
|
||||
static void genClass2008(String srcDir, String dstDir, String pkgName, File copyright)
|
||||
throws Exception
|
||||
{
|
||||
// hkscs2008
|
||||
@ -53,10 +53,11 @@ public class HKSCS {
|
||||
pkgName,
|
||||
"HKSCSMapping",
|
||||
true,
|
||||
"");
|
||||
getCopyright(copyright));
|
||||
|
||||
}
|
||||
|
||||
static void genClassXP(String srcDir, String dstDir, String pkgName)
|
||||
static void genClassXP(String srcDir, String dstDir, String pkgName, File copyright)
|
||||
throws Exception
|
||||
{
|
||||
genClass0(new FileInputStream(new File(srcDir, "HKSCS_XP.map")),
|
||||
@ -66,7 +67,7 @@ public class HKSCS {
|
||||
pkgName,
|
||||
"HKSCS_XPMapping",
|
||||
false,
|
||||
"");
|
||||
getCopyright(copyright));
|
||||
}
|
||||
|
||||
static void genClass2001(String args[]) throws Exception {
|
||||
|
@ -41,6 +41,7 @@ public class Main {
|
||||
int OS = 4;
|
||||
int TEMPLATE = 5;
|
||||
int EXT_SRC = 6;
|
||||
int COPYRIGHT_SRC = 7;
|
||||
|
||||
if (args.length < 3 ) {
|
||||
System.out.println("Usage: java -jar charsetmapping.jar src dst spiType charsets os [template]");
|
||||
@ -54,6 +55,7 @@ public class Main {
|
||||
String[] osStdcs = getOSStdCSList(new File(args[SRC_DIR], args[OS]));
|
||||
boolean hasBig5_HKSCS = false;
|
||||
boolean hasMS950_HKSCS_XP = false;
|
||||
boolean hasEUC_TW = false;
|
||||
for (String name : osStdcs) {
|
||||
Charset cs = charsets.get(name);
|
||||
if (cs != null) {
|
||||
@ -63,6 +65,8 @@ public class Main {
|
||||
hasBig5_HKSCS = true;
|
||||
} else if (name.equals("MS950_HKSCS_XP")) {
|
||||
hasMS950_HKSCS_XP = true;
|
||||
} else if (name.equals("EUC_TW")) {
|
||||
hasEUC_TW = true;
|
||||
}
|
||||
}
|
||||
for (Charset cs : charsets.values()) {
|
||||
@ -89,19 +93,28 @@ public class Main {
|
||||
}
|
||||
}
|
||||
// provider StandardCharsets.java / ExtendedCharsets.java
|
||||
SPI.genClass(args[TYPE], charsets, args[SRC_DIR], args[DST_DIR], args[TEMPLATE]);
|
||||
SPI.genClass(args[TYPE], charsets,
|
||||
args[SRC_DIR], args[DST_DIR],
|
||||
args[TEMPLATE],
|
||||
args[OS].endsWith("windows") ? "windows" : "unix");
|
||||
|
||||
// HKSCSMapping2008/XP.java goes together with Big5/MS950XP_HKSCS
|
||||
if (isStandard && hasBig5_HKSCS || isExtended && !hasBig5_HKSCS) {
|
||||
HKSCS.genClass2008(args[SRC_DIR], args[DST_DIR],
|
||||
isStandard ? "sun.nio.cs" : "sun.nio.cs.ext");
|
||||
isStandard ? "sun.nio.cs" : "sun.nio.cs.ext",
|
||||
new File(args[COPYRIGHT_SRC], "HKSCS.java"));
|
||||
}
|
||||
if (isStandard && hasMS950_HKSCS_XP || isExtended && !hasMS950_HKSCS_XP) {
|
||||
HKSCS.genClassXP(args[SRC_DIR], args[DST_DIR],
|
||||
isStandard ? "sun.nio.cs" : "sun.nio.cs.ext");
|
||||
isStandard ? "sun.nio.cs" : "sun.nio.cs.ext",
|
||||
new File(args[COPYRIGHT_SRC], "HKSCS.java"));
|
||||
}
|
||||
if (isStandard && hasEUC_TW) {
|
||||
EUC_TW.genClass("sun.nio.cs", args);
|
||||
}
|
||||
if (!isStandard && !hasEUC_TW) {
|
||||
EUC_TW.genClass("sun.nio.cs.ext", args);
|
||||
}
|
||||
} else if ("euctw".equals(args[TYPE])) {
|
||||
EUC_TW.genClass(args);
|
||||
} else if ("sjis0213".equals(args[TYPE])) {
|
||||
JIS0213.genClass(args);
|
||||
} else if ("hkscs".equals(args[TYPE])) {
|
||||
@ -157,6 +170,9 @@ public class Main {
|
||||
case "type":
|
||||
cs.type = tokens[2];
|
||||
break;
|
||||
case "os":
|
||||
cs.os = tokens[2];
|
||||
break;
|
||||
case "hisname":
|
||||
cs.hisName = tokens[2];
|
||||
break;
|
||||
|
@ -33,8 +33,10 @@ import java.util.Scanner;
|
||||
|
||||
public class SPI {
|
||||
|
||||
public static void genClass(String type, LinkedHashMap<String, Charset> charsets,
|
||||
String srcDir, String dstDir, String template)
|
||||
public static void genClass(String type,
|
||||
LinkedHashMap<String, Charset> charsets,
|
||||
String srcDir, String dstDir, String template,
|
||||
String os)
|
||||
throws Exception
|
||||
{
|
||||
try (Scanner s = new Scanner(new File(template));
|
||||
@ -50,7 +52,8 @@ public class SPI {
|
||||
charsets.values()
|
||||
.stream()
|
||||
.filter(cs -> cs.pkgName.equals("sun.nio.cs.ext") &&
|
||||
!cs.isInternal)
|
||||
!cs.isInternal &&
|
||||
(cs.os == null || cs.os.equals(os)))
|
||||
.forEach( cs -> {
|
||||
out.printf(" charset(\"%s\", \"%s\",%n", cs.csName, cs.clzName);
|
||||
out.printf(" new String[] {%n");
|
||||
|
@ -28,7 +28,8 @@ package sun.awt.motif;
|
||||
import java.nio.CharBuffer;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.charset.*;
|
||||
import sun.nio.cs.ext.EUC_TW;
|
||||
import sun.nio.cs.*;
|
||||
import sun.nio.cs.ext.*;
|
||||
|
||||
public abstract class X11CNS11643 extends Charset {
|
||||
private final int plane;
|
||||
|
@ -23,7 +23,7 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package sun.nio.cs.ext;
|
||||
package $PACKAGE$;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.CharBuffer;
|
||||
@ -79,7 +79,7 @@ public class EUC_TW extends Charset implements HistoricallyNamedCharset
|
||||
*/
|
||||
|
||||
public EUC_TW() {
|
||||
super("x-EUC-TW", ExtendedCharsets.aliasesFor("x-EUC-TW"));
|
||||
super("x-EUC-TW", $ALIASES$);
|
||||
}
|
||||
|
||||
public String historicalName() {
|
@ -222,16 +222,6 @@ public class ExtendedCharsets extends AbstractCharsetProvider {
|
||||
|
||||
}
|
||||
}
|
||||
String osName = getProperty("os.name");
|
||||
if ("SunOS".equals(osName) || "Linux".equals(osName) || "AIX".equals(osName)
|
||||
|| osName.contains("OS X")) {
|
||||
charset("x-COMPOUND_TEXT", "COMPOUND_TEXT",
|
||||
new String[] {
|
||||
"COMPOUND_TEXT", // JDK historical
|
||||
"x11-compound_text",
|
||||
"x-compound-text"
|
||||
});
|
||||
}
|
||||
initialized = true;
|
||||
}
|
||||
|
||||
|
@ -35,6 +35,7 @@ import java.nio.charset.CharsetDecoder;
|
||||
import java.nio.charset.CharsetEncoder;
|
||||
import java.nio.charset.CoderResult;
|
||||
import sun.nio.cs.HistoricallyNamedCharset;
|
||||
import sun.nio.cs.*;
|
||||
|
||||
public class ISO2022_CN_CNS extends ISO2022 implements HistoricallyNamedCharset
|
||||
{
|
||||
|
@ -24,7 +24,8 @@
|
||||
import java.nio.CharBuffer;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.charset.*;
|
||||
import sun.nio.cs.ext.EUC_TW;
|
||||
import sun.nio.cs.*;
|
||||
import sun.nio.cs.ext.*;
|
||||
|
||||
public abstract class X11CNS11643 extends Charset {
|
||||
private final int plane;
|
||||
|
Loading…
x
Reference in New Issue
Block a user