Package org.codehaus.jackson.util
Class ByteArrayBuilder
- java.lang.Object
-
- java.io.OutputStream
-
- org.codehaus.jackson.util.ByteArrayBuilder
-
- All Implemented Interfaces:
java.io.Closeable,java.io.Flushable,java.lang.AutoCloseable
public final class ByteArrayBuilder extends java.io.OutputStreamHelper class that is similar toByteArrayOutputStreamin usage, but more geared to Jackson use cases internally. Specific changes include segment storage (no need to have linear backing buffer, can avoid reallocs, copying), as well API not based onOutputStream. In short, a very much specialized builder object.Since version 1.5, also implements
OutputStreamto allow efficient aggregation of output content as a byte array, similar to howByteArrayOutputStreamworks, but somewhat more efficiently for many use cases.
-
-
Constructor Summary
Constructors Constructor Description ByteArrayBuilder()ByteArrayBuilder(int firstBlockSize)ByteArrayBuilder(BufferRecycler br)ByteArrayBuilder(BufferRecycler br, int firstBlockSize)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidappend(int i)voidappendThreeBytes(int b24)voidappendTwoBytes(int b16)voidclose()byte[]completeAndCoalesce(int lastBlockLength)Method that will complete "manual" output process, coalesce content (if necessary) and return results as a contiguous buffer.byte[]finishCurrentSegment()Method called when the current segment buffer is full; will append to current contents, allocate a new segment buffer and return itvoidflush()byte[]getCurrentSegment()intgetCurrentSegmentLength()voidrelease()Clean up method to call to release all buffers this object may be using.voidreset()byte[]resetAndGetFirstSegment()Method called when starting "manual" output: will clear out current state and return the first segment buffer to fillvoidsetCurrentSegmentLength(int len)byte[]toByteArray()Method called when results are finalized and we can get the full aggregated result buffer to return to the callervoidwrite(byte[] b)voidwrite(byte[] b, int off, int len)voidwrite(int b)
-
-
-
Constructor Detail
-
ByteArrayBuilder
public ByteArrayBuilder()
-
ByteArrayBuilder
public ByteArrayBuilder(BufferRecycler br)
-
ByteArrayBuilder
public ByteArrayBuilder(int firstBlockSize)
-
ByteArrayBuilder
public ByteArrayBuilder(BufferRecycler br, int firstBlockSize)
-
-
Method Detail
-
reset
public void reset()
-
release
public void release()
Clean up method to call to release all buffers this object may be using. After calling the method, no other accessors can be used (and attempt to do so may result in an exception)
-
append
public void append(int i)
-
appendTwoBytes
public void appendTwoBytes(int b16)
-
appendThreeBytes
public void appendThreeBytes(int b24)
-
toByteArray
public byte[] toByteArray()
Method called when results are finalized and we can get the full aggregated result buffer to return to the caller
-
resetAndGetFirstSegment
public byte[] resetAndGetFirstSegment()
Method called when starting "manual" output: will clear out current state and return the first segment buffer to fill- Since:
- 1.6
-
finishCurrentSegment
public byte[] finishCurrentSegment()
Method called when the current segment buffer is full; will append to current contents, allocate a new segment buffer and return it- Since:
- 1.6
-
completeAndCoalesce
public byte[] completeAndCoalesce(int lastBlockLength)
Method that will complete "manual" output process, coalesce content (if necessary) and return results as a contiguous buffer.- Parameters:
lastBlockLength- Amount of content in the current segment buffer.- Returns:
- Coalesced contents
-
getCurrentSegment
public byte[] getCurrentSegment()
-
setCurrentSegmentLength
public void setCurrentSegmentLength(int len)
-
getCurrentSegmentLength
public int getCurrentSegmentLength()
-
write
public void write(byte[] b)
- Overrides:
writein classjava.io.OutputStream
-
write
public void write(byte[] b, int off, int len)- Overrides:
writein classjava.io.OutputStream
-
write
public void write(int b)
- Specified by:
writein classjava.io.OutputStream
-
close
public void close()
- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Overrides:
closein classjava.io.OutputStream
-
flush
public void flush()
- Specified by:
flushin interfacejava.io.Flushable- Overrides:
flushin classjava.io.OutputStream
-
-