General contract for encoding is that caller must call things in following sequence:
bufferNeedsFlush is called once; and
if indicated by return value of true, caller must flush
its buffer so it is completely empty (buffer also must have
size of at at least MIN_CHARS_WITHOUT_FLUSH)
encodeMore methods is to be called
isCompleted should be called
to determine if encoding was complete: if it was, there is
nothing more to do.
encodeMore followed
by a call to isCompleted and flushing, as long
as necessary to complete encoding.
Main restrictions for use are that value serializations must produce only 7-bit ascii characters, and that the value can be produced incrementally using limited size buffers. This is true for all current value types of the Typed Access API.
Finally, details of how encoders are created and/or reused is outside scope of this public interface. Stax2 reference implementation handles this using an encoder factory that knows construction details.
| Modifier and Type | Field and Description |
|---|---|
| protected static final int | MIN_CHARS_WITHOUT_FLUSH
Constant used to determine when caller should flush buffer before calling encode methods. |
| Access | Constructor and Description |
|---|---|
| protected |
| Modifier and Type | Method and Description |
|---|---|
| public final boolean | Returns: True if encoder still has data to output and specified amount of free space is insufficient for encoding any more dataAmount of free space (in characters) in
the output buffer freeChars)Method called by writer to check if it should flush its output buffer (which has specified amount of free space) before encoder can encode more data. |
| public abstract int | Returns: Value of pointer after all remaining data (which may be "none") that can be encoded (as constrained by buffer length) has been encoded. Has to exceed 'ptr' value sent in; will be equal to it if nothing was encoded (which should only occur when everything has been encoded, as long asbufferNeedsFlush
is appropriately called once before calling this
method)
|
| public abstract int | Returns: Value of pointer after all remaining data (which may be "none") that can be encoded (as constrained by buffer length) has been encoded. Has to exceed 'ptr' value sent in; will be equal to it if nothing was encoded (which should only occur when everything has been encoded, as long asbufferNeedsFlush
is appropriately called once before calling this
method)
|
| public abstract boolean | isCompleted()
Method that can alternatively be called to determine whether encoder has encoded all data it has. |
| MIN_CHARS_WITHOUT_FLUSH | back to summary |
|---|---|
| protected static final int MIN_CHARS_WITHOUT_FLUSH Constant used to determine when caller should flush buffer before calling encode methods. Strict minimum would be something like 22 (for floating point numbers), but let's pad it a bit. | |
| AsciiValueEncoder | back to summary |
|---|---|
| protected AsciiValueEncoder() | |
| bufferNeedsFlush | back to summary |
|---|---|
| public final boolean bufferNeedsFlush(int freeChars) Method called by writer to check if it should flush its output buffer (which has specified amount of free space) before encoder can encode more data. Flushing is only needed if (a) encoder has more data to output, and (b) free space is not enough to contain smallest segment of encoded value (individual array element or encoded primitive value).
| |
| encodeMore | back to summary |
|---|---|
public abstract int encodeMore(char[] buffer, int ptr, int end)
| |
| encodeMore | back to summary |
|---|---|
public abstract int encodeMore(byte[] buffer, int ptr, int end)
| |
| isCompleted | back to summary |
|---|---|
| public abstract boolean isCompleted() Method that can alternatively be called to determine whether encoder
has encoded all data it has. Generally called right after
a call to | |