com.fasterxml.aalto.in

## Class StreamScanner

- java.lang.Object
- - com.fasterxml.aalto.in.XmlScanner
  - - com.fasterxml.aalto.in.ByteBasedScanner
    - - com.fasterxml.aalto.in.StreamScanner

- All Implemented Interfaces:
    XmlConsts, NamespaceContext, XMLStreamConstants
  Direct Known Subclasses:
    Utf8Scanner

      public abstract class StreamScanner
      extends ByteBasedScanner

  Base class for various byte stream based scanners (generally one for each type of encoding supported).

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected InputStream` | `_in` Underlying InputStream to use for reading content.
    `protected byte[]` | `_inputBuffer`

    - ### Fields inherited from class com.fasterxml.aalto.in.ByteBasedScanner

      `_charTypes, _inputEnd, _inputPtr, _quadBuffer, _symbols, _tmpChar, BYTE_a, BYTE_A, BYTE_AMP, BYTE_APOS, BYTE_C, BYTE_CR, BYTE_D, BYTE_EQ, BYTE_EXCL, BYTE_g, BYTE_GT, BYTE_HASH, BYTE_HYPHEN, BYTE_l, BYTE_LBRACKET, BYTE_LF, BYTE_LT, BYTE_m, BYTE_NULL, BYTE_o, BYTE_p, BYTE_P, BYTE_q, BYTE_QMARK, BYTE_QUOT, BYTE_RBRACKET, BYTE_s, BYTE_S, BYTE_SEMICOLON, BYTE_SLASH, BYTE_SPACE, BYTE_t, BYTE_T, BYTE_TAB, BYTE_u, BYTE_x`

    - ### Fields inherited from class com.fasterxml.aalto.in.XmlScanner

      `_attrCollector, _attrCount, _cfgCoalescing, _cfgLazyParsing, _config, _currElem, _currNsCount, _currRow, _currToken, _defaultNs, _depth, _entityPending, _isEmptyTag, _lastNsContext, _lastNsDecl, _nameBuffer, _nsBindingCache, _nsBindingCount, _nsBindings, _nsBindMisses, _pastBytesOrChars, _publicId, _rowStartOffset, _startColumn, _startRawOffset, _startRow, _systemId, _textBuilder, _tokenIncomplete, _tokenName, _xml11, CDATA_STR, INT_0, INT_9, INT_a, INT_A, INT_AMP, INT_APOS, INT_COLON, INT_CR, INT_EQ, INT_EXCL, INT_f, INT_F, INT_GT, INT_HYPHEN, INT_LBRACKET, INT_LF, INT_LT, INT_NULL, INT_QMARK, INT_QUOTE, INT_RBRACKET, INT_SLASH, INT_SPACE, INT_TAB, INT_z, MAX_UNICODE_CHAR, TOKEN_EOI`

    - ### Fields inherited from interface com.fasterxml.aalto.util.XmlConsts

      `CHAR_CR, CHAR_LF, CHAR_NULL, CHAR_SPACE, STAX_DEFAULT_OUTPUT_ENCODING, STAX_DEFAULT_OUTPUT_VERSION, XML_DECL_KW_ENCODING, XML_DECL_KW_STANDALONE, XML_DECL_KW_VERSION, XML_SA_NO, XML_SA_YES, XML_V_10, XML_V_10_STR, XML_V_11, XML_V_11_STR, XML_V_UNKNOWN`

    - ### Fields inherited from interface javax.xml.stream.XMLStreamConstants

      `ATTRIBUTE, CDATA, CHARACTERS, COMMENT, DTD, END_DOCUMENT, END_ELEMENT, ENTITY_DECLARATION, ENTITY_REFERENCE, NAMESPACE, NOTATION_DECLARATION, PROCESSING_INSTRUCTION, SPACE, START_DOCUMENT, START_ELEMENT`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `StreamScanner(ReaderConfig cfg, InputStream in, byte[] buffer, int ptr, int last)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `_closeSource()`
    `protected int` | `_nextEntity()` Helper method used to isolate things that need to be (re)set in cases where
    `protected void` | `_releaseBuffers()`
    `protected int` | `checkInTreeIndentation(int c)` Note: consequtive white space is only considered indentation, if the following token seems like a tag (start/end).
    `protected int` | `checkPrologIndentation(int c)`
    `protected int` | `handleCharEntity()`
    `protected int` | `handleEndElement()` Note that this method is currently also shareable for all Ascii-based encodings, and at least between UTF-8 and ISO-Latin1.
    `protected abstract int` | `handleEntityInText(boolean inAttr)`
    `protected abstract int` | `handleStartElement(byte b)` Parsing of start element requires parsing of the element name (and attribute names), and is thus encoding-specific.
    `protected boolean` | `loadAndRetain(int nrOfChars)`
    `protected boolean` | `loadMore()`
    `protected byte` | `loadOne()`
    `protected byte` | `loadOne(int type)`
    `protected byte` | `nextByte()`
    `protected byte` | `nextByte(int tt)`
    `int` | `nextFromProlog(boolean isProlog)`
    `int` | `nextFromTree()`
    `protected PName` | `parsePName(byte b)` This method can (for now?) be shared between all Ascii-based encodings, since it only does coarse validity checking -- real checks are done in different method.
    `protected PName` | `parsePNameLong(int q, int[] quads)`
    `protected PName` | `parsePNameMedium(int i2, int q1)`
    `protected PName` | `parsePNameSlow(byte b)`
    `protected abstract String` | `parsePublicId(byte quoteChar)`
    `protected abstract String` | `parseSystemId(byte quoteChar)`
    `protected byte` | `skipInternalWs(boolean reqd, String msg)`

    - ### Methods inherited from class com.fasterxml.aalto.in.ByteBasedScanner

      `addPName, addUtfPName, decodeCharForError, getCurrentColumnNr, getCurrentLocation, getEndingByteOffset, getEndingCharOffset, getStartingByteOffset, getStartingCharOffset, markLF, markLF, reportInvalidInitial, reportInvalidOther, setStartLocation`

    - ### Methods inherited from class com.fasterxml.aalto.in.XmlScanner

      `bindName, bindNs, checkImmutableBinding, close, decodeAttrBinaryValue, decodeAttrValue, decodeAttrValues, decodeElements, findAttrIndex, findOrCreateBinding, finishCData, finishCharacters, finishComment, finishDTD, finishPI, finishSpace, finishToken, fireSaxCharacterEvents, fireSaxCommentEvent, fireSaxEndElement, fireSaxPIEvent, fireSaxSpaceEvents, fireSaxStartElement, getAttrCollector, getAttrCount, getAttrLocalName, getAttrNsURI, getAttrPrefix, getAttrPrefixedName, getAttrQName, getAttrType, getAttrValue, getAttrValue, getConfig, getCurrentLineNr, getDepth, getDTDPublicId, getDTDSystemId, getEndLocation, getInputPublicId, getInputSystemId, getName, getNamespacePrefix, getNamespaceURI, getNamespaceURI, getNamespaceURI, getNonTransientNamespaceContext, getNsCount, getPrefix, getPrefixes, getQName, getStartLocation, getText, getText, getTextCharacters, getTextCharacters, getTextLength, handleInvalidXmlChar, hasEmptyStack, isAttrSpecified, isEmptyTag, isTextWhitespace, loadMoreGuaranteed, loadMoreGuaranteed, reportDoubleHyphenInComments, reportDuplicateNsDecl, reportEntityOverflow, reportEofInName, reportIllegalCDataEnd, reportIllegalNsDecl, reportIllegalNsDecl, reportInputProblem, reportInvalidNameChar, reportInvalidNsIndex, reportInvalidXmlChar, reportMissingPISpace, reportMultipleColonsInName, reportPrologProblem, reportPrologUnexpChar, reportTreeUnexpChar, reportUnboundPrefix, reportUnexpandedEntityInAttr, reportUnexpectedEndTag, resetForDecoding, skipCData, skipCharacters, skipCoalescedText, skipComment, skipPI, skipSpace, skipToken, throwInvalidSpace, throwNullChar, throwUnexpectedChar, verifyXmlChar`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### _in

          protected InputStream _in

      Underlying InputStream to use for reading content.

    - #### _inputBuffer

          protected byte[] _inputBuffer

  - ### Constructor Detail

    - #### StreamScanner

          public StreamScanner(ReaderConfig cfg,
                       InputStream in,
                       byte[] buffer,
                       int ptr,
                       int last)

  - ### Method Detail

    - #### _releaseBuffers

          protected void _releaseBuffers()

      Overrides:
        `_releaseBuffers` in class `ByteBasedScanner`

    - #### _closeSource

          protected void _closeSource()
                               throws IOException

      Specified by:
        `_closeSource` in class `ByteBasedScanner`
      Throws:
        `IOException`

    - #### handleEntityInText

          protected abstract int handleEntityInText(boolean inAttr)
                                             throws XMLStreamException

      Throws:
        `XMLStreamException`

    - #### parsePublicId

          protected abstract String parsePublicId(byte quoteChar)
                                           throws XMLStreamException

      Throws:
        `XMLStreamException`

    - #### parseSystemId

          protected abstract String parseSystemId(byte quoteChar)
                                           throws XMLStreamException

      Throws:
        `XMLStreamException`

    - #### nextFromProlog

          public final int nextFromProlog(boolean isProlog)
                                   throws XMLStreamException

      Specified by:
        `nextFromProlog` in class `XmlScanner`
      Throws:
        `XMLStreamException`

    - #### nextFromTree

          public final int nextFromTree()
                                 throws XMLStreamException

      Specified by:
        `nextFromTree` in class `XmlScanner`
      Throws:
        `XMLStreamException`

    - #### _nextEntity

          protected int _nextEntity()

      Helper method used to isolate things that need to be (re)set in cases where

    - #### handleCharEntity

          protected final int handleCharEntity()
                                        throws XMLStreamException

      Returns:
        Code point for the entity that expands to a valid XML content character.
      Throws:
        `XMLStreamException`

    - #### handleStartElement

          protected abstract int handleStartElement(byte b)
                                             throws XMLStreamException

      Parsing of start element requires parsing of the element name (and attribute names), and is thus encoding-specific.
      Throws:
        `XMLStreamException`

    - #### handleEndElement

          protected final int handleEndElement()
                                        throws XMLStreamException

      Note that this method is currently also shareable for all Ascii-based encodings, and at least between UTF-8 and ISO-Latin1. The reason is that since we already know exact bytes that need to be matched, there's no danger of getting invalid encodings or such. So, for now, let's leave this method here in the base class.
      Throws:
        `XMLStreamException`

    - #### parsePName

          protected final PName parsePName(byte b)
                                    throws XMLStreamException

      This method can (for now?) be shared between all Ascii-based encodings, since it only does coarse validity checking -- real checks are done in different method.

      Some notes about assumption implementation makes:

      - Well-formed xml content can not end with a name: as such, end-of-input is an error and we can throw an exception
      Throws:
        `XMLStreamException`

    - #### parsePNameMedium

          protected PName parsePNameMedium(int i2,
                               int q1)
                                    throws XMLStreamException

      Throws:
        `XMLStreamException`

    - #### parsePNameLong

          protected final PName parsePNameLong(int q,
                             int[] quads)
                                        throws XMLStreamException

      Throws:
        `XMLStreamException`

    - #### parsePNameSlow

          protected final PName parsePNameSlow(byte b)
                                        throws XMLStreamException

      Throws:
        `XMLStreamException`

    - #### skipInternalWs

          protected byte skipInternalWs(boolean reqd,
                            String msg)
                                 throws XMLStreamException

      Returns:
        First byte following skipped white space
      Throws:
        `XMLStreamException`

    - #### checkInTreeIndentation

          protected final int checkInTreeIndentation(int c)
                                              throws XMLStreamException

      Note: consequtive white space is only considered indentation, if the following token seems like a tag (start/end). This so that if a CDATA section follows, it can be coalesced in coalescing mode. Although we could check if coalescing mode is enabled, this should seldom have significant effect either way, so it removes one possible source of problems in coalescing mode.

      Returns:
        -1, if indentation was handled; offset in the output buffer, if not
      Throws:
        `XMLStreamException`

    - #### checkPrologIndentation

          protected final int checkPrologIndentation(int c)
                                              throws XMLStreamException

      Returns:
        -1, if indentation was handled; offset in the output buffer, if not
      Throws:
        `XMLStreamException`

    - #### loadMore

          protected final boolean loadMore()
                                    throws XMLStreamException

      Specified by:
        `loadMore` in class `XmlScanner`
      Throws:
        `XMLStreamException`

    - #### nextByte

          protected final byte nextByte(int tt)
                                 throws XMLStreamException

      Throws:
        `XMLStreamException`

    - #### nextByte

          protected final byte nextByte()
                                 throws XMLStreamException

      Throws:
        `XMLStreamException`

    - #### loadOne

          protected final byte loadOne()
                                throws XMLStreamException

      Throws:
        `XMLStreamException`

    - #### loadOne

          protected final byte loadOne(int type)
                                throws XMLStreamException

      Throws:
        `XMLStreamException`

    - #### loadAndRetain

          protected final boolean loadAndRetain(int nrOfChars)
                                         throws XMLStreamException

      Throws:
        `XMLStreamException`

Copyright © 2012-2015 FasterXML. All Rights Reserved.