You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by mr...@apache.org on 2012/07/20 06:21:47 UTC

svn commit: r1363648 - /xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/XMLEntityManager.java

Author: mrglavas
Date: Fri Jul 20 04:21:47 2012
New Revision: 1363648

URL: http://svn.apache.org/viewvc?rev=1363648&view=rev
Log:
Fixing JIRA Issue #1574: http://issues.apache.org/jira/browse/XERCESJ-1574. Restoring behaviour from previous releases where UTF-16BE and UTF-16LE were returned as auto-detected encodings.

Modified:
    xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/XMLEntityManager.java

Modified: xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/XMLEntityManager.java
URL: http://svn.apache.org/viewvc/xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/XMLEntityManager.java?rev=1363648&r1=1363647&r2=1363648&view=diff
==============================================================================
--- xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/XMLEntityManager.java (original)
+++ xerces/java/branches/xml-schema-1.1-dev/src/org/apache/xerces/impl/XMLEntityManager.java Fri Jul 20 04:21:47 2012
@@ -1018,26 +1018,27 @@ public class XMLEntityManager
                     b4[count] = (byte)rewindableStream.readAndBuffer();
                 }
                 if (count == 4) {
-                    EncodingInfo info = getEncodingInfo(b4, count);
-                    encoding = info.encoding;
+                    final EncodingInfo info = getEncodingInfo(b4, count);
+                    encoding = info.autoDetectedEncoding;
+                    final String readerEncoding = info.readerEncoding;
                     isBigEndian = info.isBigEndian;
                     stream.reset();
                     if (info.hasBOM) {
                         // Special case UTF-8 files with BOM created by Microsoft
                         // tools. It's more efficient to consume the BOM than make
                         // the reader perform extra checks. -Ac
-                        if (encoding == "UTF-8") {
+                        if (readerEncoding == "UTF-8") {
                             // UTF-8 BOM: 0xEF 0xBB 0xBF
                             stream.skip(3);
                         }
                         // It's also more efficient to consume the UTF-16 BOM.
-                        else if (encoding == "UTF-16") {
+                        else if (readerEncoding == "UTF-16") {
                             // UTF-16 BE BOM: 0xFE 0xFF 
                             // UTF-16 LE BOM: 0xFF 0xFE
                             stream.skip(2);
                         }
                     }
-                    reader = createReader(stream, encoding, isBigEndian);
+                    reader = createReader(stream, readerEncoding, isBigEndian);
                 }
                 else {
                     reader = createReader(stream, encoding, isBigEndian);
@@ -2872,16 +2873,16 @@ public class XMLEntityManager
         public static final EncodingInfo UTF_8_WITH_BOM = new EncodingInfo("UTF-8", null, true);
         
         /** UTF-16, big-endian **/
-        public static final EncodingInfo UTF_16_BIG_ENDIAN = new EncodingInfo("UTF-16", Boolean.TRUE, false);
+        public static final EncodingInfo UTF_16_BIG_ENDIAN = new EncodingInfo("UTF-16BE", "UTF-16", Boolean.TRUE, false);
         
         /** UTF-16, big-endian with BOM **/
-        public static final EncodingInfo UTF_16_BIG_ENDIAN_WITH_BOM = new EncodingInfo("UTF-16", Boolean.TRUE, true);
+        public static final EncodingInfo UTF_16_BIG_ENDIAN_WITH_BOM = new EncodingInfo("UTF-16BE", "UTF-16", Boolean.TRUE, true);
         
         /** UTF-16, little-endian **/
-        public static final EncodingInfo UTF_16_LITTLE_ENDIAN = new EncodingInfo("UTF-16", Boolean.FALSE, false);
+        public static final EncodingInfo UTF_16_LITTLE_ENDIAN = new EncodingInfo("UTF-16LE", "UTF-16", Boolean.FALSE, false);
         
         /** UTF-16, little-endian with BOM **/
-        public static final EncodingInfo UTF_16_LITTLE_ENDIAN_WITH_BOM = new EncodingInfo("UTF-16", Boolean.FALSE, true);
+        public static final EncodingInfo UTF_16_LITTLE_ENDIAN_WITH_BOM = new EncodingInfo("UTF-16LE", "UTF-16", Boolean.FALSE, true);
         
         /** UCS-4, big-endian **/
         public static final EncodingInfo UCS_4_BIG_ENDIAN = new EncodingInfo("ISO-10646-UCS-4", Boolean.TRUE, false);
@@ -2895,15 +2896,21 @@ public class XMLEntityManager
         /** EBCDIC **/
         public static final EncodingInfo EBCDIC = new EncodingInfo("CP037", null, false);
         
-        public final String encoding;
+        public final String autoDetectedEncoding;
+        public final String readerEncoding;
         public final Boolean isBigEndian;
         public final boolean hasBOM;
         
-        private EncodingInfo(String encoding, Boolean isBigEndian, boolean hasBOM) {
-            this.encoding = encoding;
+        private EncodingInfo(String autoDetectedEncoding, Boolean isBigEndian, boolean hasBOM) {
+            this(autoDetectedEncoding, autoDetectedEncoding, isBigEndian, hasBOM);
+        } // <init>(String,Boolean,boolean)
+        
+        private EncodingInfo(String autoDetectedEncoding, String readerEncoding, Boolean isBigEndian, boolean hasBOM) {
+            this.autoDetectedEncoding = autoDetectedEncoding;
+            this.readerEncoding = readerEncoding;
             this.isBigEndian = isBigEndian;
             this.hasBOM = hasBOM;
-        } // <init>(String,Boolean,boolean)
+        } // <init>(String,String,Boolean,boolean)
         
     } // class EncodingInfo
     



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@xerces.apache.org
For additional commands, e-mail: commits-help@xerces.apache.org