Class TextBuilder


  • public final class TextBuilder
    extends java.lang.Object
    Class conceptually similar to StringBuilder, but that allows for bit more efficient building, using segmented internal buffers, and direct access to these buffers.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void append​(char c)  
      void append​(char[] c, int start, int len)  
      void append​(java.lang.String str)  
      void appendSurrogate​(int surr)  
      char[] contentsAsArray()  
      java.lang.String contentsAsString()  
      int contentsToArray​(int srcStart, char[] dst, int dstStart, int len)  
      static TextBuilder createRecyclableBuffer​(ReaderConfig cfg)  
      int decodeElements​(org.codehaus.stax2.typed.TypedArrayDecoder tad, boolean reset)
      Method called by the stream reader to decode space-separated tokens that are part of the current text event (contents of which are stored within this buffer), using given decoder.
      boolean equalsString​(java.lang.String str)
      Note: it is assumed that this method is not used often enough to be a bottleneck, or for long segments.
      char[] finishCurrentSegment()  
      void fireSaxCharacterEvents​(org.xml.sax.ContentHandler h)
      This is a specialized "accessor" method, which is basically to fire SAX characters() events in an optimal way, based on which internal buffers are being used
      void fireSaxCommentEvent​(org.xml.sax.ext.LexicalHandler h)  
      void fireSaxSpaceEvents​(org.xml.sax.ContentHandler h)  
      char[] getBufferWithoutReset()  
      int getCurrentLength()  
      char[] getTextBuffer()  
      boolean isAllWhitespace()  
      int rawContentsTo​(java.io.Writer w)
      Method that will stream contents of this buffer into specified Writer.
      void recycle​(boolean force)
      Method called to indicate that the underlying buffers should now be recycled if they haven't yet been recycled.
      void resetForBinaryDecode​(org.codehaus.stax2.typed.Base64Variant v, org.codehaus.stax2.ri.typed.CharArrayBase64Decoder dec, boolean firstChunk)
      Method called to initialize given base64 decoder with data contained in this text buffer (for the current event).
      void resetWithChar​(char c)
      Method called to initialize the buffer with just a single char
      char[] resetWithEmpty()
      Method called to clear out any content text buffer may have, and initializes and returns the first segment to add characters to.
      void resetWithIndentation​(int indCharCount, char indChar)  
      void resetWithSurrogate​(int c)  
      void setCurrentLength​(int len)  
      int size()  
      java.lang.String toString()
      Note: calling this method may not be as efficient as calling contentsAsString(), since it is guaranteed that resulting String is NOT cached (to ensure we see no stale data)
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Method Detail

      • recycle

        public void recycle​(boolean force)
        Method called to indicate that the underlying buffers should now be recycled if they haven't yet been recycled. Although caller can still use this text buffer, it is not advisable to call this method if that is likely, since next time a buffer is needed, buffers need to reallocated. Note: calling this method automatically also clears contents of the buffer.
      • resetWithEmpty

        public char[] resetWithEmpty()
        Method called to clear out any content text buffer may have, and initializes and returns the first segment to add characters to.
      • resetWithIndentation

        public void resetWithIndentation​(int indCharCount,
                                         char indChar)
      • resetWithChar

        public void resetWithChar​(char c)
        Method called to initialize the buffer with just a single char
      • resetWithSurrogate

        public void resetWithSurrogate​(int c)
      • getBufferWithoutReset

        public char[] getBufferWithoutReset()
      • size

        public int size()
        Returns:
        Number of characters currently stored by this collector
      • getTextBuffer

        public char[] getTextBuffer()
      • contentsAsString

        public java.lang.String contentsAsString()
      • contentsAsArray

        public char[] contentsAsArray()
      • contentsToArray

        public int contentsToArray​(int srcStart,
                                   char[] dst,
                                   int dstStart,
                                   int len)
      • rawContentsTo

        public int rawContentsTo​(java.io.Writer w)
                          throws java.io.IOException
        Method that will stream contents of this buffer into specified Writer.
        Throws:
        java.io.IOException
      • isAllWhitespace

        public boolean isAllWhitespace()
      • equalsString

        public boolean equalsString​(java.lang.String str)
        Note: it is assumed that this method is not used often enough to be a bottleneck, or for long segments. Based on this, it is optimized for common simple cases where there is only one single character segment to use; fallback for other cases is to create such segment.
      • fireSaxCharacterEvents

        public void fireSaxCharacterEvents​(org.xml.sax.ContentHandler h)
                                    throws org.xml.sax.SAXException
        This is a specialized "accessor" method, which is basically to fire SAX characters() events in an optimal way, based on which internal buffers are being used
        Throws:
        org.xml.sax.SAXException
      • fireSaxSpaceEvents

        public void fireSaxSpaceEvents​(org.xml.sax.ContentHandler h)
                                throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
      • fireSaxCommentEvent

        public void fireSaxCommentEvent​(org.xml.sax.ext.LexicalHandler h)
                                 throws org.xml.sax.SAXException
        Throws:
        org.xml.sax.SAXException
      • append

        public void append​(char c)
      • appendSurrogate

        public void appendSurrogate​(int surr)
      • append

        public void append​(char[] c,
                           int start,
                           int len)
      • append

        public void append​(java.lang.String str)
      • getCurrentLength

        public int getCurrentLength()
      • setCurrentLength

        public void setCurrentLength​(int len)
      • finishCurrentSegment

        public char[] finishCurrentSegment()
      • decodeElements

        public int decodeElements​(org.codehaus.stax2.typed.TypedArrayDecoder tad,
                                  boolean reset)
                           throws org.codehaus.stax2.typed.TypedXMLStreamException
        Method called by the stream reader to decode space-separated tokens that are part of the current text event (contents of which are stored within this buffer), using given decoder.
        Throws:
        org.codehaus.stax2.typed.TypedXMLStreamException
      • resetForBinaryDecode

        public void resetForBinaryDecode​(org.codehaus.stax2.typed.Base64Variant v,
                                         org.codehaus.stax2.ri.typed.CharArrayBase64Decoder dec,
                                         boolean firstChunk)
        Method called to initialize given base64 decoder with data contained in this text buffer (for the current event).
      • toString

        public java.lang.String toString()
        Note: calling this method may not be as efficient as calling contentsAsString(), since it is guaranteed that resulting String is NOT cached (to ensure we see no stale data)
        Overrides:
        toString in class java.lang.Object