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