grchiu 2002/12/20 08:24:48
Modified: java/src/org/apache/xalan/serialize Tag: xslt20
Encodings.java Encodings.properties
Log:
Bringing xslt20 branch up to date with patches for 13754, 14753, and
performance improvement to Encodings.java.
Revision Changes Path
No revision
No revision
1.11.2.1.2.1 +45 -25
xml-xalan/java/src/org/apache/xalan/serialize/Encodings.java
Index: Encodings.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/serialize/Encodings.java,v
retrieving revision 1.11.2.1
retrieving revision 1.11.2.1.2.1
diff -u -r1.11.2.1 -r1.11.2.1.2.1
--- Encodings.java 14 Aug 2002 19:21:27 -0000 1.11.2.1
+++ Encodings.java 20 Dec 2002 16:24:47 -0000 1.11.2.1.2.1
@@ -65,7 +65,9 @@
import java.net.URL;
import java.util.Enumeration;
+import java.util.Hashtable;
import java.util.Properties;
+import java.util.StringTokenizer;
/**
* Provides information about encodings. Depends on the Java runtime
@@ -197,13 +199,14 @@
*/
public static int getLastPrintable(String encoding)
{
- for (int i = 0; i < _encodings.length; ++i)
- {
- if (_encodings[i].name.equalsIgnoreCase(encoding)
- || _encodings[i].javaName.equalsIgnoreCase(encoding))
- return _encodings[i].lastPrintable;
- }
+ EncodingInfo ei;
+ String normalizedEncoding = encoding.toUpperCase();
+ ei = (EncodingInfo)_encodingTableKeyJava.get(normalizedEncoding);
+ if (ei == null)
+ ei = (EncodingInfo)_encodingTableKeyMime.get(normalizedEncoding);
+ if (ei != null)
+ return ei.lastPrintable;
return m_defaultLastPrintable;
}
@@ -296,15 +299,9 @@
*/
public static String convertJava2MimeEncoding(String encoding)
{
-
- for (int i = 0; i < _encodings.length; ++i)
- {
- if (_encodings[i].javaName.equalsIgnoreCase(encoding))
- {
- return _encodings[i].name;
- }
- }
-
+ EncodingInfo enc =
(EncodingInfo)_encodingTableKeyJava.get(encoding.toUpperCase());
+ if (null != enc)
+ return enc.name;
return encoding;
}
@@ -405,32 +402,55 @@
private static EncodingInfo[] loadEncodingInfoFromProps(Properties props)
{
int totalEntries = props.size();
- EncodingInfo[] ret = new EncodingInfo[totalEntries];
+ int totalMimeNames = 0;
Enumeration keys = props.keys();
for (int i = 0; i < totalEntries; ++i)
{
- String mimeName = (String) keys.nextElement();
- String val = props.getProperty(mimeName);
+ String javaName = (String) keys.nextElement();
+ String val = props.getProperty(javaName);
+ totalMimeNames++;
+ int pos = val.indexOf(' ');
+ for (int j = 0; j < pos; ++j)
+ if (val.charAt(j) == ',')
+ totalMimeNames++;
+ }
+ EncodingInfo[] ret = new EncodingInfo[totalMimeNames];
+ int j = 0;
+ keys = props.keys();
+ for (int i = 0; i < totalEntries; ++i)
+ {
+ String javaName = (String) keys.nextElement();
+ String val = props.getProperty(javaName);
int pos = val.indexOf(' ');
- String javaName;
+ String mimeName;
int lastPrintable;
if (pos < 0)
{
// Maybe report/log this problem?
// "Last printable character not defined for encoding " +
// mimeName + " (" + val + ")" ...
- javaName = val;
+ mimeName = val;
lastPrintable = 0x00FF;
}
else
- {
- javaName = val.substring(0, pos);
+ {
lastPrintable = Integer.decode(val.substring(pos).trim()).intValue();
- }
- ret[i] = new EncodingInfo(mimeName, javaName, lastPrintable);
+ StringTokenizer st = new StringTokenizer(val.substring(0, pos),",");
+ for (boolean first = true; st.hasMoreTokens(); first = false)
+ {
+ mimeName = st.nextToken();
+ ret [j] = new EncodingInfo (mimeName, javaName, lastPrintable);
+ _encodingTableKeyMime.put(mimeName.toUpperCase(), ret[j]);
+ if (first)
+ _encodingTableKeyJava.put(javaName.toUpperCase(), ret[j]);
+ j++;
+ }
+ }
}
return ret;
}
+ private static final Hashtable _encodingTableKeyJava = new Hashtable();
+ private static final Hashtable _encodingTableKeyMime = new Hashtable();
private static final EncodingInfo[] _encodings = loadEncodingInfo();
}
1.1.4.1 +81 -89
xml-xalan/java/src/org/apache/xalan/serialize/Encodings.properties
Index: Encodings.properties
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/serialize/Encodings.properties,v
retrieving revision 1.1
retrieving revision 1.1.4.1
diff -u -r1.1 -r1.1.4.1
--- Encodings.properties 9 May 2002 22:16:42 -0000 1.1
+++ Encodings.properties 20 Dec 2002 16:24:48 -0000 1.1.4.1
@@ -1,89 +1,81 @@
-# <PREFERRED name MIME>, <JAVA name encoding>
-# Peter Smolik
-WINDOWS-1250 Cp1250 0x00FF
-# Patch attributed to [EMAIL PROTECTED] (H�vard Wigtil)
-WINDOWS-1251 Cp1251 0x00FF
-WINDOWS-1252 Cp1252 0x00FF
-US-ASCII ISO8859_1 0x007F
-ISO-8859-1 ISO8859_1 0x00FF
-# Patch attributed to [EMAIL PROTECTED] (H�vard Wigtil)
-ISO-8859-1 ISO8859-1 0x00FF
-ISO-8859-2 ISO8859_2 0x00FF
-# I'm going to apply "ISO8859-X" variant to all these, to be safe.
-ISO-8859-2 ISO8859-2 0x00FF
-ISO-8859-3 ISO8859_3 0x00FF
-ISO-8859-3 ISO8859-3 0x00FF
-ISO-8859-4 ISO8859_4 0x00FF
-ISO-8859-4 ISO8859-4 0x00FF
-ISO-8859-5 ISO8859_5 0x00FF
-ISO-8859-5 ISO8859-5 0x00FF
-ISO-8859-6 ISO8859_6 0x00FF
-ISO-8859-6 ISO8859-6 0x00FF
-ISO-8859-7 ISO8859_7 0x00FF
-ISO-8859-7 ISO8859-7 0x00FF
-ISO-8859-8 ISO8859_8 0x00FF
-ISO-8859-8 ISO8859-8 0x00FF
-ISO-8859-9 ISO8859_9 0x00FF
-ISO-8859-9 ISO8859-9 0x00FF
-# # ?
-US-ASCII 8859_1 0x00FF
-ISO-8859-1 8859_1 0x00FF
-ISO-8859-2 8859_2 0x00FF
-ISO-8859-3 8859_3 0x00FF
-ISO-8859-4 8859_4 0x00FF
-ISO-8859-5 8859_5 0x00FF
-ISO-8859-6 8859_6 0x00FF
-ISO-8859-7 8859_7 0x00FF
-ISO-8859-8 8859_8 0x00FF
-ISO-8859-9 8859_9 0x00FF
-ISO-8859-1 8859-1 0x00FF
-ISO-8859-2 8859-2 0x00FF
-ISO-8859-3 8859-3 0x00FF
-ISO-8859-4 8859-4 0x00FF
-ISO-8859-5 8859-5 0x00FF
-ISO-8859-6 8859-6 0x00FF
-ISO-8859-7 8859-7 0x00FF
-ISO-8859-8 8859-8 0x00FF
-ISO-8859-9 8859-9 0x00FF
-ISO-2022-JP JIS 0xFFFF
-ISO-2022-KR ISO2022KR 0xFFFF
-SHIFT_JIS SJIS 0xFFFF
-EUC-JP EUC_JP 0xFFFF
-EUC-KR EUC_KR 0xFFFF
-EUC-CN EUC_CN 0xFFFF
-EUC-TW EUC_TW 0xFFFF
-GB2312 EUC_CN 0xFFFF
-EUC-JP EUC-JP 0xFFFF
-EUC-KR EUC-KR 0xFFFF
-EUC-CN EUC-CN 0xFFFF
-EUC-TW EUC-TW 0xFFFF
-GB2312 EUC-CN 0xFFFF
-GB2312 GB2312 0xFFFF
-BIG5 Big5 0xFFFF
-EUC-JP EUCJIS 0xFFFF
-EUC-KR KSC5601 0xFFFF
-KOI8-R KOI8_R 0xFFFF
-EBCDIC-CP-US Cp037 0x00FF
-EBCDIC-CP-CA Cp037 0x00FF
-EBCDIC-CP-NL Cp037 0x00FF
-EBCDIC-CP-DK Cp277 0x00FF
-EBCDIC-CP-NO Cp277 0x00FF
-EBCDIC-CP-FI Cp278 0x00FF
-EBCDIC-CP-SE Cp278 0x00FF
-EBCDIC-CP-IT Cp280 0x00FF
-EBCDIC-CP-ES Cp284 0x00FF
-EBCDIC-CP-GB Cp285 0x00FF
-EBCDIC-CP-FR Cp297 0x00FF
-EBCDIC-CP-AR1 Cp420 0x00FF
-EBCDIC-CP-HE Cp424 0x00FF
-EBCDIC-CP-CH Cp500 0x00FF
-EBCDIC-CP-ROECE Cp870 0x00FF
-EBCDIC-CP-YU Cp870 0x00FF
-EBCDIC-CP-IS Cp871 0x00FF
-EBCDIC-CP-AR2 Cp918 0x00FF
-MacRoman MacTEC 0x00FF
-ASCII ASCII 0x007F
-ISO-Latin-1 ASCII 0x00FF
-UNICODE Unicode 0xFFFF
-UTF-8 UTF8 0xFFFF
-UTF-16 Unicode 0xFFFF
\ No newline at end of file
+# <JAVA name encoding>, <PREFERRED name MIME>
+# Peter Smolik
+Cp1250 WINDOWS-1250 0x00FF
+# Patch attributed to [EMAIL PROTECTED] (H�vard Wigtil)
+Cp1251 WINDOWS-1251 0x00FF
+Cp1252 WINDOWS-1252 0x00FF
+ISO8859_1 US-ASCII,ISO-8859-1 0x007F
+# Patch attributed to [EMAIL PROTECTED] (H�vard Wigtil)
+ISO8859-1 ISO-8859-1 0x00FF
+ISO8859_2 ISO-8859-2 0x00FF
+# I'm going to apply "ISO8859-X" variant to all these, to be safe.
+ISO8859-2 ISO-8859-2 0x00FF
+ISO8859_3 ISO-8859-3 0x00FF
+ISO8859-3 ISO-8859-3 0x00FF
+ISO8859_4 ISO-8859-4 0x00FF
+ISO8859-4 ISO-8859-4 0x00FF
+ISO8859_5 ISO-8859-5 0x00FF
+ISO8859-5 ISO-8859-5 0x00FF
+ISO8859_6 ISO-8859-6 0x00FF
+ISO8859-6 ISO-8859-6 0x00FF
+ISO8859_7 ISO-8859-7 0x00FF
+ISO8859-7 ISO-8859-7 0x00FF
+ISO8859_8 ISO-8859-8 0x00FF
+ISO8859-8 ISO-8859-8 0x00FF
+ISO8859_9 ISO-8859-9 0x00FF
+ISO8859-9 ISO-8859-9 0x00FF
+# # ?
+8859_1 US-ASCII,ISO-8859-1 0x00FF
+8859_2 ISO-8859-2 0x00FF
+8859_3 ISO-8859-3 0x00FF
+8859_4 ISO-8859-4 0x00FF
+8859_5 ISO-8859-5 0x00FF
+8859_6 ISO-8859-6 0x00FF
+8859_7 ISO-8859-7 0x00FF
+8859_8 ISO-8859-8 0x00FF
+8859_9 ISO-8859-9 0x00FF
+8859-1 ISO-8859-1 0x00FF
+8859-2 ISO-8859-2 0x00FF
+8859-3 ISO-8859-3 0x00FF
+8859-4 ISO-8859-4 0x00FF
+8859-5 ISO-8859-5 0x00FF
+8859-6 ISO-8859-6 0x00FF
+8859-7 ISO-8859-7 0x00FF
+8859-8 ISO-8859-8 0x00FF
+8859-9 ISO-8859-9 0x00FF
+JIS ISO-2022-JP 0xFFFF
+ISO2022KR ISO-2022-KR 0xFFFF
+SJIS SHIFT_JIS 0xFFFF
+EUC_JP EUC-JP 0xFFFF
+EUC_KR EUC-KR 0xFFFF
+EUC_CN EUC-CN 0xFFFF
+EUC_TW EUC-TW 0xFFFF
+EUC_CN GB2312 0xFFFF
+EUC-JP EUC-JP 0xFFFF
+EUC-KR EUC-KR 0xFFFF
+EUC-CN EUC-CN 0xFFFF
+EUC-TW EUC-TW 0xFFFF
+EUC-CN GB2312 0xFFFF
+GB2312 GB2312 0xFFFF
+Big5 BIG5 0xFFFF
+EUCJIS EUC-JP 0xFFFF
+KSC5601 EUC-KR 0xFFFF
+KOI8_R KOI8-R 0xFFFF
+Cp037 EBCDIC-CP-US,EBCDIC-CP-CA,EBCDIC-CP-NL 0x00FF
+Cp277 EBCDIC-CP-DK,EBCDIC-CP-NO 0x00FF
+Cp278 EBCDIC-CP-FI,EBCDIC-CP-SE 0x00FF
+Cp280 EBCDIC-CP-IT 0x00FF
+Cp284 EBCDIC-CP-ES 0x00FF
+Cp285 EBCDIC-CP-GB 0x00FF
+Cp297 EBCDIC-CP-FR 0x00FF
+Cp420 EBCDIC-CP-AR1 0x00FF
+Cp424 EBCDIC-CP-HE 0x00FF
+Cp500 EBCDIC-CP-CH 0x00FF
+Cp870 EBCDIC-CP-ROECE,EBCDIC-CP-YU 0x00FF
+Cp871 EBCDIC-CP-IS 0x00FF
+Cp918 EBCDIC-CP-AR2 0x00FF
+Cp1047 IBM1047,IBM-1047 0x00FF
+MacTEC MacRoman 0x00FF
+ASCII ASCII,ISO-Latin-1 0x007F
+Unicode UNICODE,UTF-16 0xFFFF
+UTF8 UTF-8 0xFFFF
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]