public final class TextBuffer extends Object
StringBuilder
, with
following differences:
Over time more and more cruft has accumulated here, mostly to support efficient access to collected text. Since access is easiest to do efficiently using callbacks, this class now needs to known interfaces of SAX classes and validators.
Notes about usage: for debugging purposes, it's suggested to use
toString()
method, as opposed to
contentsAsArray()
or contentsAsString()
. Internally
resulting code paths may or may not be different, WRT caching.
Modifier and Type | Field and Description |
---|---|
static int |
MAX_INDENT_SPACES |
static int |
MAX_INDENT_TABS |
Modifier and Type | Method and Description |
---|---|
void |
append(char c) |
void |
append(char[] c,
int start,
int len) |
void |
append(String str) |
char[] |
contentsAsArray() |
String |
contentsAsString() |
StringBuilder |
contentsAsStringBuilder(int extraSpace)
Similar to
contentsAsString() , but constructs a StringBuilder
for further appends. |
int |
contentsToArray(int srcStart,
char[] dst,
int dstStart,
int len) |
void |
contentsToStringBuilder(StringBuilder sb) |
static TextBuffer |
createRecyclableBuffer(ReaderConfig cfg) |
static TextBuffer |
createTemporaryBuffer() |
void |
decode(org.codehaus.stax2.typed.TypedValueDecoder tvd)
Generic pass-through method which call given decoder
with accumulated data
|
int |
decodeElements(org.codehaus.stax2.typed.TypedArrayDecoder tad,
InputProblemReporter rep)
Pass-through decode method called to find find the next token,
decode it, and repeat the process as long as there are more
tokens and the array decoder accepts more entries.
|
boolean |
endsWith(String str)
Method that can be used to check if the contents of the buffer end
in specified String.
|
void |
ensureNotShared()
Method called to make sure that buffer is not using shared input
buffer; if it is, it will copy such contents to private buffer.
|
boolean |
equalsString(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 |
fireDtdCommentEvent(DTDEventListener l) |
void |
fireSaxCharacterEvents(ContentHandler h) |
void |
fireSaxCommentEvent(LexicalHandler h) |
void |
fireSaxSpaceEvents(ContentHandler h) |
char[] |
getCurrentSegment() |
int |
getCurrentSegmentSize() |
char[] |
getTextBuffer() |
int |
getTextStart() |
void |
initBinaryChunks(org.codehaus.stax2.typed.Base64Variant v,
org.codehaus.stax2.ri.typed.CharArrayBase64Decoder dec,
boolean firstChunk)
Method that needs to be called to configure given base64 decoder
with textual contents collected by this buffer.
|
boolean |
isAllWhitespace() |
int |
rawContentsTo(Writer w)
Method that will stream contents of this buffer into specified
Writer.
|
Reader |
rawContentsViaReader() |
void |
recycle(boolean force)
Method called to indicate that the underlying buffers should now
be recycled if they haven't yet been recycled.
|
void |
resetInitialized()
Method called to make sure there is a non-shared segment to use, without
appending any content yet.
|
void |
resetWithCopy(char[] buf,
int start,
int len) |
void |
resetWithEmpty()
Method called to clear out any content text buffer may have, and
initializes buffer to use non-shared data.
|
void |
resetWithEmptyString()
Similar to
resetWithEmpty() , but actively marks current
text content to be empty string (whereas former method leaves
content as undefined). |
void |
resetWithIndentation(int indCharCount,
char indChar) |
void |
resetWithShared(char[] buf,
int start,
int len)
Method called to initialize the buffer with a shared copy of data;
this means that buffer will just have pointers to actual data.
|
void |
setCurrentLength(int len) |
int |
size() |
String |
toString()
Note: calling this method may not be as efficient as calling
contentsAsString() , since it's not guaranteed that resulting
String is cached. |
void |
unshare(int needExtra)
Method called if/when we need to append content when we have been
initialized to use shared buffer.
|
void |
validateText(org.codehaus.stax2.validation.XMLValidator vld,
boolean lastSegment) |
public static final int MAX_INDENT_SPACES
public static final int MAX_INDENT_TABS
public static TextBuffer createRecyclableBuffer(ReaderConfig cfg)
public static TextBuffer createTemporaryBuffer()
public void recycle(boolean force)
public void resetWithEmpty()
public void resetWithEmptyString()
resetWithEmpty()
, but actively marks current
text content to be empty string (whereas former method leaves
content as undefined).public void resetWithShared(char[] buf, int start, int len)
public void resetWithCopy(char[] buf, int start, int len)
public void resetInitialized()
public void resetWithIndentation(int indCharCount, char indChar)
public int size()
public int getTextStart()
public char[] getTextBuffer()
public void decode(org.codehaus.stax2.typed.TypedValueDecoder tvd) throws IllegalArgumentException
IllegalArgumentException
public int decodeElements(org.codehaus.stax2.typed.TypedArrayDecoder tad, InputProblemReporter rep) throws org.codehaus.stax2.typed.TypedXMLStreamException
org.codehaus.stax2.typed.TypedXMLStreamException
public void initBinaryChunks(org.codehaus.stax2.typed.Base64Variant v, org.codehaus.stax2.ri.typed.CharArrayBase64Decoder dec, boolean firstChunk)
dec
- Decoder that will need datafirstChunk
- Whether this is the first segment fed or not;
if it is, state needs to be fullt reset; if not, only partially.public String contentsAsString()
public StringBuilder contentsAsStringBuilder(int extraSpace)
contentsAsString()
, but constructs a StringBuilder
for further appends.extraSpace
- Number of extra characters to preserve in StringBuilder
beyond space immediately needed to hold the contentspublic void contentsToStringBuilder(StringBuilder sb)
public char[] contentsAsArray()
public int contentsToArray(int srcStart, char[] dst, int dstStart, int len)
public int rawContentsTo(Writer w) throws IOException
IOException
public Reader rawContentsViaReader() throws IOException
IOException
public boolean isAllWhitespace()
public boolean endsWith(String str)
public boolean equalsString(String str)
public void fireSaxCharacterEvents(ContentHandler h) throws SAXException
SAXException
public void fireSaxSpaceEvents(ContentHandler h) throws SAXException
SAXException
public void fireSaxCommentEvent(LexicalHandler h) throws SAXException
SAXException
public void fireDtdCommentEvent(DTDEventListener l)
public void validateText(org.codehaus.stax2.validation.XMLValidator vld, boolean lastSegment) throws XMLStreamException
XMLStreamException
public void ensureNotShared()
public void append(char c)
public void append(char[] c, int start, int len)
public void append(String str)
public char[] getCurrentSegment()
public int getCurrentSegmentSize()
public void setCurrentLength(int len)
public char[] finishCurrentSegment()
public String toString()
contentsAsString()
, since it's not guaranteed that resulting
String is cached.public void unshare(int needExtra)
Copyright © 2018 FasterXML. All rights reserved.