You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ni...@apache.org on 2010/10/04 07:39:54 UTC
svn commit: r1004121 -
/commons/proper/io/trunk/src/java/org/apache/commons/io/input/XmlStreamReader.java
Author: niallp
Date: Mon Oct 4 05:39:53 2010
New Revision: 1004121
URL: http://svn.apache.org/viewvc?rev=1004121&view=rev
Log:
IO-162 Slight refactoring to simplify
Modified:
commons/proper/io/trunk/src/java/org/apache/commons/io/input/XmlStreamReader.java
Modified: commons/proper/io/trunk/src/java/org/apache/commons/io/input/XmlStreamReader.java
URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/java/org/apache/commons/io/input/XmlStreamReader.java?rev=1004121&r1=1004120&r2=1004121&view=diff
==============================================================================
--- commons/proper/io/trunk/src/java/org/apache/commons/io/input/XmlStreamReader.java (original)
+++ commons/proper/io/trunk/src/java/org/apache/commons/io/input/XmlStreamReader.java Mon Oct 4 05:39:53 2010
@@ -78,10 +78,17 @@ public class XmlStreamReader extends Rea
private static final String EBCDIC = "CP1047";
- private static final ByteOrderMark XML_UTF_8 = new ByteOrderMark(UTF_8, 0x3C, 0x3F, 0x78, 0x6D);
- private static final ByteOrderMark XML_UTF_16BE = new ByteOrderMark(UTF_16BE, 0x00, 0x3C, 0x00, 0x3F);
- private static final ByteOrderMark XML_UTF_16LE = new ByteOrderMark(UTF_16LE, 0x3C, 0x00, 0x3F, 0x00);
- private static final ByteOrderMark XML_EBCDIC = new ByteOrderMark(EBCDIC, 0x4C, 0x6F, 0xA7, 0x94);
+ private static final ByteOrderMark[] BOMS = new ByteOrderMark[] {
+ ByteOrderMark.UTF_8,
+ ByteOrderMark.UTF_16BE,
+ ByteOrderMark.UTF_16LE
+ };
+ private static final ByteOrderMark[] XML_GUESS_BYTES = new ByteOrderMark[] {
+ new ByteOrderMark(UTF_8, 0x3C, 0x3F, 0x78, 0x6D),
+ new ByteOrderMark(UTF_16BE, 0x00, 0x3C, 0x00, 0x3F),
+ new ByteOrderMark(UTF_16LE, 0x3C, 0x00, 0x3F, 0x00),
+ new ByteOrderMark(EBCDIC, 0x4C, 0x6F, 0xA7, 0x94)
+ };
private static String staticDefaultEncoding = null;
@@ -391,7 +398,8 @@ public class XmlStreamReader extends Rea
if (encoding == null) {
encoding = (defaultEncoding == null) ? UTF_8 : defaultEncoding;
}
- prepareReader(is, encoding);
+ this.encoding = encoding;
+ this.reader = new InputStreamReader(is, encoding);
}
}
@@ -437,13 +445,13 @@ public class XmlStreamReader extends Rea
*/
private void doRawStream(InputStream is, boolean lenient)
throws IOException {
- BOMInputStream bom = createBomStream(new BufferedInputStream(is, BUFFER_SIZE));
- BOMInputStream pis = createXmlStream(bom);
+ BOMInputStream bom = new BOMInputStream(new BufferedInputStream(is, BUFFER_SIZE), false, BOMS);
+ BOMInputStream pis = new BOMInputStream(bom, true, XML_GUESS_BYTES);
String bomEnc = (bom.hasBOM() ? bom.getBOM().getCharsetName() : null);
String xmlGuessEnc = (pis.hasBOM() ? pis.getBOM().getCharsetName() : null);
String xmlEnc = getXmlProlog(pis, xmlGuessEnc);
- String encoding = calculateRawEncoding(bomEnc, xmlGuessEnc, xmlEnc, pis);
- prepareReader(pis, encoding);
+ this.encoding = calculateRawEncoding(bomEnc, xmlGuessEnc, xmlEnc, pis);
+ this.reader = new InputStreamReader(is, encoding);
}
/**
@@ -457,54 +465,16 @@ public class XmlStreamReader extends Rea
*/
private void doHttpStream(InputStream is, String httpContentType,
boolean lenient) throws IOException {
- BOMInputStream bom = createBomStream(new BufferedInputStream(is, BUFFER_SIZE));
- BOMInputStream pis = createXmlStream(bom);
+ BOMInputStream bom = new BOMInputStream(new BufferedInputStream(is, BUFFER_SIZE), false, BOMS);
+ BOMInputStream pis = new BOMInputStream(bom, true, XML_GUESS_BYTES);
String cTMime = getContentTypeMime(httpContentType);
String cTEnc = getContentTypeEncoding(httpContentType);
String bomEnc = (bom.hasBOM() ? bom.getBOM().getCharsetName() : null);
String xmlGuessEnc = (pis.hasBOM() ? pis.getBOM().getCharsetName() : null);
String xmlEnc = getXmlProlog(pis, xmlGuessEnc);
- String encoding = calculateHttpEncoding(cTMime, cTEnc, bomEnc,
+ this.encoding = calculateHttpEncoding(cTMime, cTEnc, bomEnc,
xmlGuessEnc, xmlEnc, pis, lenient);
- prepareReader(pis, encoding);
- }
-
- /**
- * Create a stream to detect UTF-8, UTF-16BE and UTF-16LE BOMs and consume them.
- *
- * @param delegate The delegate input stream
- * @return BOM detection stream
- */
- private BOMInputStream createBomStream(InputStream delegate) {
- BOMInputStream bis =
- new BOMInputStream(delegate, false, ByteOrderMark.UTF_8, ByteOrderMark.UTF_16BE, ByteOrderMark.UTF_16LE);
- return bis;
- }
-
- /**
- * Create a stream to Guess UTF-8, UTF-16BE, UTF-16LE and EBCDIC encodings
- * in XML streams.
- *
- * @param delegate The delegate input stream
- * @return XML encoding detection stream
- */
- private BOMInputStream createXmlStream(InputStream delegate) {
- BOMInputStream bis =
- new BOMInputStream(delegate, true, XML_UTF_8, XML_UTF_16BE, XML_UTF_16LE, XML_EBCDIC);
- return bis;
- }
-
- /**
- * Prepare the underlying reader.
- *
- * @param is InputStream to create the reader from.
- * @param encoding The encoding
- * @throws IOException thrown if there is a problem creating the reader.
- */
- private void prepareReader(InputStream is, String encoding)
- throws IOException {
- reader = new InputStreamReader(is, encoding);
- this.encoding = encoding;
+ this.reader = new InputStreamReader(is, encoding);
}
/**