santiagopg    2002/10/21 08:42:17

  Modified:    java/src/org/apache/xalan/xsltc/compiler Output.java
               java/src/org/apache/xalan/xsltc/runtime/output
                        StreamOutput.java
  Log:
  Moved EBCDIC support from Output to StreamOutput to ensure correct
  serialization of XML header.
  
  Revision  Changes    Path
  1.19      +4 -34     
xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Output.java
  
  Index: Output.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Output.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- Output.java       18 Oct 2002 22:47:19 -0000      1.18
  +++ Output.java       21 Oct 2002 15:42:17 -0000      1.19
  @@ -65,7 +65,6 @@
   package org.apache.xalan.xsltc.compiler;
   
   import java.util.Vector;
  -import java.util.Hashtable;
   import java.util.Properties;
   import java.util.Enumeration;
   import java.util.StringTokenizer;
  @@ -76,6 +75,7 @@
   import org.apache.bcel.classfile.JavaClass;
   
   import org.apache.xalan.xsltc.compiler.util.*;
  +import org.apache.xalan.xsltc.runtime.output.StreamOutput;
   
   final class Output extends TopLevelElement {
   
  @@ -103,30 +103,6 @@
       private final static String XML_VERSION = "1.0";
       private final static String HTML_VERSION = "4.0";
   
  -    // Canonical 
  -    private static Hashtable _canonicalEncodings;
  -    static {
  -     _canonicalEncodings = new Hashtable();
  -     _canonicalEncodings.put("ebcdic-cp-us", "Cp037");
  -     _canonicalEncodings.put("ebcdic-cp-ca", "Cp037"); 
  -     _canonicalEncodings.put("ebcdic-cp-nl", "Cp037");
  -     _canonicalEncodings.put("ebcdic-cp-dk", "Cp277"); 
  -     _canonicalEncodings.put("ebcdic-cp-no", "Cp277"); 
  -     _canonicalEncodings.put("ebcdic-cp-fi", "Cp278"); 
  -     _canonicalEncodings.put("ebcdic-cp-se", "Cp278"); 
  -     _canonicalEncodings.put("ebcdic-cp-it", "Cp280"); 
  -     _canonicalEncodings.put("ebcdic-cp-es", "Cp284"); 
  -     _canonicalEncodings.put("ebcdic-cp-gb", "Cp285"); 
  -     _canonicalEncodings.put("ebcdic-cp-fr", "Cp297"); 
  -     _canonicalEncodings.put("ebcdic-cp-ar1", "Cp420"); 
  -     _canonicalEncodings.put("ebcdic-cp-he", "Cp424"); 
  -     _canonicalEncodings.put("ebcdic-cp-ch", "Cp500"); 
  -     _canonicalEncodings.put("ebcdic-cp-roece", "Cp870");
  -     _canonicalEncodings.put("ebcdic-cp-yu", "Cp870"); 
  -     _canonicalEncodings.put("ebcdic-cp-is", "Cp871"); 
  -     _canonicalEncodings.put("ebcdic-cp-ar2", "Cp918");   
  -    }
  -
       /**
        * Displays the contents of this element (for debugging)
        */
  @@ -196,16 +172,10 @@
        }
        else {
            try {
  -             // Find encoding synonym (if any)
  -             String canonical = (String) _canonicalEncodings.get(
  -                 _encoding.toLowerCase());
  -             if (canonical != null) {
  -                 _encoding = canonical;
  -             }
  -
                // Create a write to verify encoding support
                OutputStreamWriter writer =
  -                 new OutputStreamWriter(System.out, _encoding);
  +                 new OutputStreamWriter(System.out, 
  +                    StreamOutput.getCanonicalEncoding(_encoding));
            }
            catch (java.io.UnsupportedEncodingException e) {
                ErrorMsg msg = new ErrorMsg(ErrorMsg.UNSUPPORTED_ENCODING,
  
  
  
  1.21      +36 -3     
xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output/StreamOutput.java
  
  Index: StreamOutput.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output/StreamOutput.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- StreamOutput.java 10 Sep 2002 15:25:05 -0000      1.20
  +++ StreamOutput.java 21 Oct 2002 15:42:17 -0000      1.21
  @@ -71,10 +71,11 @@
   import java.io.UnsupportedEncodingException;
   
   import java.util.Vector;
  +import java.util.Hashtable;
   
   import org.apache.xalan.xsltc.TransletException;
   
  -abstract class StreamOutput extends OutputBase {
  +abstract public class StreamOutput extends OutputBase {
   
       protected static final String AMP      = "&";
       protected static final String LT       = "<";
  @@ -133,6 +134,36 @@
        }
       }
   
  +    // Canonical encodings
  +    private static Hashtable _canonicalEncodings;
  +    static {
  +     _canonicalEncodings = new Hashtable();
  +     _canonicalEncodings.put("ebcdic-cp-us", "Cp037");
  +     _canonicalEncodings.put("ebcdic-cp-ca", "Cp037"); 
  +     _canonicalEncodings.put("ebcdic-cp-nl", "Cp037");
  +     _canonicalEncodings.put("ebcdic-cp-dk", "Cp277"); 
  +     _canonicalEncodings.put("ebcdic-cp-no", "Cp277"); 
  +     _canonicalEncodings.put("ebcdic-cp-fi", "Cp278"); 
  +     _canonicalEncodings.put("ebcdic-cp-se", "Cp278"); 
  +     _canonicalEncodings.put("ebcdic-cp-it", "Cp280"); 
  +     _canonicalEncodings.put("ebcdic-cp-es", "Cp284"); 
  +     _canonicalEncodings.put("ebcdic-cp-gb", "Cp285"); 
  +     _canonicalEncodings.put("ebcdic-cp-fr", "Cp297"); 
  +     _canonicalEncodings.put("ebcdic-cp-ar1", "Cp420"); 
  +     _canonicalEncodings.put("ebcdic-cp-he", "Cp424"); 
  +     _canonicalEncodings.put("ebcdic-cp-ch", "Cp500"); 
  +     _canonicalEncodings.put("ebcdic-cp-roece", "Cp870");
  +     _canonicalEncodings.put("ebcdic-cp-yu", "Cp870"); 
  +     _canonicalEncodings.put("ebcdic-cp-is", "Cp871"); 
  +     _canonicalEncodings.put("ebcdic-cp-ar2", "Cp918");   
  +    }
  +
  +    public static String getCanonicalEncoding(String encoding) {
  +     String canonical = 
  +         (String)_canonicalEncodings.get(encoding.toLowerCase());
  +     return (canonical != null) ? canonical : encoding;
  +    }
  +
       protected StreamOutput(StreamOutput output) {
        _writer = output._writer;
        _encoding = output._encoding;
  @@ -151,7 +182,9 @@
        throws IOException
       {
        try {
  -         _writer = new OutputStreamWriter(out, _encoding = encoding);
  +         _writer = new OutputStreamWriter(out, 
  +                                          getCanonicalEncoding(encoding));
  +         _encoding = encoding;
            _is8859Encoded = encoding.equalsIgnoreCase("iso-8859-1");
        }
        catch (UnsupportedEncodingException e) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to