Class StreamWriterBase

All Implemented Interfaces:
IExtensibleWriter, IXMLWriter
Direct Known Subclasses:
ISO88591StreamWriter, UTF8StreamWriter

public abstract class StreamWriterBase extends XMLWriterBase
Base handler for marshalling text document to an output stream. This needs to be subclassed with implementation methods specific to the encoding used.
Author:
Dennis M. Sosnoski
  • Field Details

    • m_quotEntityBytes

      protected final byte[] m_quotEntityBytes
    • m_ampEntityBytes

      protected final byte[] m_ampEntityBytes
    • m_gtEntityBytes

      protected final byte[] m_gtEntityBytes
    • m_ltEntityBytes

      protected final byte[] m_ltEntityBytes
    • m_cdataStartBytes

      protected final byte[] m_cdataStartBytes
    • m_cdataEndBytes

      protected final byte[] m_cdataEndBytes
    • m_byteBuffer

      private IOutByteBuffer m_byteBuffer
      Output buffer.
    • m_encodingName

      private final String m_encodingName
      Name of encoding used for stream.
    • m_baseWriter

      private final StreamWriterBase m_baseWriter
      Original writer (only used when created using copy constructor, null otherwise).
    • m_buffer

      protected byte[] m_buffer
      Cached reference to byte array used by buffer.
    • m_fillOffset

      protected int m_fillOffset
      Current fill offset in buffer byte array.
    • m_prefixBytes

      protected byte[][] m_prefixBytes
      Byte sequences for prefixes of namespaces in scope.
    • m_extensionBytes

      protected byte[][][] m_extensionBytes
      Byte sequences for prefixes of extension namespaces in scope.
    • m_indent

      private boolean m_indent
      Indent tags for pretty-printed text.
    • m_indentBase

      private int m_indentBase
      Base number of characters in indent sequence (end of line only).
    • m_indentPerLevel

      private int m_indentPerLevel
      Number of extra characters in indent sequence per level of nesting.
    • m_indentSequence

      private byte[] m_indentSequence
      Raw text for indentation sequences.
  • Constructor Details

    • StreamWriterBase

      protected StreamWriterBase(String enc, String[] uris)
      Constructor with supplied buffer.
      Parameters:
      enc - character encoding used for output to streams (upper case)
      uris - ordered array of URIs for namespaces used in document (must be constant; the value in position 0 must always be the empty string "", and the value in position 1 must always be the XML namespace "http://www.w3.org/XML/1998/namespace")
    • StreamWriterBase

      public StreamWriterBase(StreamWriterBase base, String[] uris)
      Copy constructor. This takes the stream and encoding information from a supplied instance, while setting a new array of namespace URIs. It's intended for use when invoking one binding from within another binding.
      Parameters:
      base - instance to be used as base for writer
      uris - ordered array of URIs for namespaces used in document (see StreamWriterBase(String, String[]))
  • Method Details

    • setBuffer

      public void setBuffer(IOutByteBuffer buff)
      Set the byte buffer.
      Parameters:
      buff -
    • getEncodingName

      public String getEncodingName()
      Get the name of the character encoding used by this writer.
      Returns:
      encoding
    • setNamespaceUris

      public void setNamespaceUris(String[] uris) throws IOException
      Set namespace URIs. This forces a reset of the writer, clearing any buffered output. It is intended to be used only for reconfiguring an existing writer for reuse.
      Parameters:
      uris - ordered array of URIs for namespaces used in document
      Throws:
      IOException
    • setIndentSpaces

      public void setIndentSpaces(int count, String newline, char indent)
      Set nesting indentation. This is advisory only, and implementations of this interface are free to ignore it. The intent is to indicate that the generated output should use indenting to illustrate element nesting.
      Parameters:
      count - number of character to indent per level, or disable indentation if negative (zero means new line only)
      newline - sequence of characters used for a line ending (null means use the single character '\n')
      indent - whitespace character used for indentation
    • makeSpace

      protected void makeSpace(int length) throws IOException
      Make at least the requested number of bytes available in the output buffer. If necessary, the output buffer will be replaced by a larger buffer.
      Parameters:
      length - number of bytes space to be made available
      Throws:
      IOException - if error writing to document
    • undefineNamespace

      protected void undefineNamespace(int index)
      Report that namespace has been undefined.
      Specified by:
      undefineNamespace in class XMLWriterNamespaceBase
      Parameters:
      index - post-translation namespace URI index number
    • writePrefix

      protected void writePrefix(int index) throws IOException
      Write namespace prefix to output. This internal method is used to throw an exception when an undeclared prefix is used.
      Specified by:
      writePrefix in class XMLWriterBase
      Parameters:
      index - namespace URI index number
      Throws:
      IOException - if error writing to document
    • writeEntity

      protected int writeEntity(byte[] bytes, int offset)
      Write entity bytes to output.
      Parameters:
      bytes - actual bytes to be written
      offset - starting offset in buffer
      Returns:
      offset for next data byte in buffer
    • pushExtensionNamespaces

      public void pushExtensionNamespaces(String[] uris)
      Append extension namespace URIs to those in mapping.
      Specified by:
      pushExtensionNamespaces in interface IXMLWriter
      Overrides:
      pushExtensionNamespaces in class XMLWriterNamespaceBase
      Parameters:
      uris - namespace URIs to extend those in mapping
    • popExtensionNamespaces

      public void popExtensionNamespaces()
      Remove extension namespace URIs. This removes the last set of extension namespaces pushed using pushExtensionNamespaces(java.lang.String[]).
      Specified by:
      popExtensionNamespaces in interface IXMLWriter
      Overrides:
      popExtensionNamespaces in class XMLWriterNamespaceBase
    • indent

      public void indent(int bias) throws IOException
      Request output indent. Output the line end sequence followed by the appropriate number of indent characters.
      Specified by:
      indent in class XMLWriterBase
      Parameters:
      bias - indent depth difference (positive or negative) from current element nesting depth
      Throws:
      IOException - on error writing to document
    • indent

      public void indent() throws IOException
      Request output indent. Output the line end sequence followed by the appropriate number of indent characters for the current nesting level.
      Throws:
      IOException - on error writing to document
    • flush

      public void flush() throws IOException
      Flush document output. Forces out all output generated to this point.
      Specified by:
      flush in interface IXMLWriter
      Specified by:
      flush in class XMLWriterBase
      Throws:
      IOException - on error writing to document
    • close

      public void close() throws IOException
      Close document output. Completes writing of document output, including closing the output medium.
      Specified by:
      close in interface IXMLWriter
      Specified by:
      close in class XMLWriterBase
      Throws:
      IOException - on error writing to document