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]

Reply via email to