Class InputEntity

java.lang.Object
com.sun.xml.dtdparser.InputEntity

public class InputEntity extends Object
This is how the parser talks to its input entities, of all kinds. The entities are in a stack.

For internal entities, the character arrays are referenced here, and read from as needed (they're read-only). External entities have mutable buffers, that are read into as needed.

Note: This maps CRLF (and CR) to LF without regard for whether it's in an external (parsed) entity or not. The XML 1.0 spec is inconsistent in explaining EOL handling; this is the sensible way.

Version:
1.4 00/08/05
  • Field Details

    • start

      private int start
    • finish

      private int finish
    • buf

      private char[] buf
    • lineNumber

      private int lineNumber
    • returnedFirstHalf

      private boolean returnedFirstHalf
    • maybeInCRLF

      private boolean maybeInCRLF
    • name

      private String name
    • next

      private InputEntity next
    • input

      private InputSource input
    • reader

      private Reader reader
    • isClosed

      private boolean isClosed
    • errHandler

      private DTDEventListener errHandler
    • locale

      private Locale locale
    • rememberedText

      private StringBuffer rememberedText
    • startRemember

      private int startRemember
    • isPE

      private boolean isPE
    • BUFSIZ

      private static final int BUFSIZ
      See Also:
    • newline

      private static final char[] newline
  • Constructor Details

    • InputEntity

      private InputEntity()
  • Method Details

    • getInputEntity

      public static InputEntity getInputEntity(DTDEventListener h, Locale l)
    • isInternal

      public boolean isInternal()
    • isDocument

      public boolean isDocument()
    • isParameterEntity

      public boolean isParameterEntity()
    • getName

      public String getName()
    • init

      public void init(InputSource in, String name, InputEntity stack, boolean isPE) throws IOException, SAXException
      Throws:
      IOException
      SAXException
    • init

      public void init(char[] b, String name, InputEntity stack, boolean isPE) throws SAXException
      Throws:
      SAXException
    • checkRecursion

      private void checkRecursion(InputEntity stack) throws SAXException
      Throws:
      SAXException
    • pop

      public InputEntity pop() throws IOException
      Throws:
      IOException
    • isEOF

      public boolean isEOF() throws IOException, SAXException
      returns true iff there's no more data to consume ...
      Throws:
      IOException
      SAXException
    • getEncoding

      public String getEncoding()
      Returns the name of the encoding in use, else null; the name returned is in as standard a form as we can get.
    • getNameChar

      public char getNameChar() throws IOException, SAXException
      returns the next name char, or NUL ... faster than getc(), and the common "name or nmtoken must be next" case won't need ungetc().
      Throws:
      IOException
      SAXException
    • getc

      public char getc() throws IOException, SAXException
      gets the next Java character -- might be part of an XML text character represented by a surrogate pair, or be the end of the entity.
      Throws:
      IOException
      SAXException
    • peekc

      public boolean peekc(char c) throws IOException, SAXException
      lookahead one character
      Throws:
      IOException
      SAXException
    • ungetc

      public void ungetc()
      two character pushback is guaranteed
    • maybeWhitespace

      public boolean maybeWhitespace() throws IOException, SAXException
      optional grammatical whitespace (discarded)
      Throws:
      IOException
      SAXException
    • parsedContent

      public boolean parsedContent(DTDEventListener docHandler) throws IOException, SAXException
      normal content; whitespace in markup may be handled specially if the parser uses the content model.

      content terminates with markup delimiter characters, namely ampersand (&) and left angle bracket (<).

      the document handler's characters() method is called on all the content found

      Throws:
      IOException
      SAXException
    • unparsedContent

      public boolean unparsedContent(DTDEventListener docHandler, boolean ignorableWhitespace, String whitespaceInvalidMessage) throws IOException, SAXException
      CDATA -- character data, terminated by "]]>" and optionally including unescaped markup delimiters (ampersand and left angle bracket). This should otherwise be exactly like character data, modulo differences in error report details.

      The document handler's characters() or ignorableWhitespace() methods are invoked on all the character data found

      Parameters:
      docHandler - gets callbacks for character data
      ignorableWhitespace - if true, whitespace characters will be reported using docHandler.ignorableWhitespace(); implicitly, non-whitespace characters will cause validation errors
      whitespaceInvalidMessage - if true, ignorable whitespace causes a validity error report as well as a callback
      Throws:
      IOException
      SAXException
    • checkSurrogatePair

      private boolean checkSurrogatePair(int offset) throws SAXException
      Throws:
      SAXException
    • ignorableWhitespace

      public boolean ignorableWhitespace(DTDEventListener handler) throws IOException, SAXException
      whitespace in markup (flagged to app, discardable)

      the document handler's ignorableWhitespace() method is called on all the whitespace found

      Throws:
      IOException
      SAXException
    • peek

      public boolean peek(String next, char[] chars) throws IOException, SAXException
      returns false iff 'next' string isn't as provided, else skips that text and returns true.

      NOTE: two alternative string representations are both passed in, since one is faster.

      Throws:
      IOException
      SAXException
    • startRemembering

      public void startRemembering()
    • rememberText

      public String rememberText()
    • getTopEntity

      private InputEntity getTopEntity()
    • getPublicId

      public String getPublicId()
      Returns the public ID of this input source, if known
    • getSystemId

      public String getSystemId()
      Returns the system ID of this input source, if known
    • getLineNumber

      public int getLineNumber()
      Returns the current line number in this input source
    • getColumnNumber

      public int getColumnNumber()
      returns -1; maintaining column numbers hurts performance
    • fillbuf

      private void fillbuf() throws IOException, SAXException
      Throws:
      IOException
      SAXException
    • close

      public void close()
    • fatal

      private void fatal(String messageId, Object[] params) throws SAXException
      Throws:
      SAXException