Class ByteArrayBuilder

java.lang.Object
java.io.OutputStream
org.codehaus.jackson.util.ByteArrayBuilder
All Implemented Interfaces:
Closeable, Flushable, AutoCloseable

public final class ByteArrayBuilder extends OutputStream
Helper class that is similar to ByteArrayOutputStream in 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 on OutputStream. In short, a very much specialized builder object.

Since version 1.5, also implements OutputStream to allow efficient aggregation of output content as a byte array, similar to how ByteArrayOutputStream works, but somewhat more efficiently for many use cases.

  • Constructor Details

    • ByteArrayBuilder

      public ByteArrayBuilder()
    • ByteArrayBuilder

      public ByteArrayBuilder(BufferRecycler br)
    • ByteArrayBuilder

      public ByteArrayBuilder(int firstBlockSize)
    • ByteArrayBuilder

      public ByteArrayBuilder(BufferRecycler br, int firstBlockSize)
  • Method Details

    • 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:
      write in class OutputStream
    • write

      public void write(byte[] b, int off, int len)
      Overrides:
      write in class OutputStream
    • write

      public void write(int b)
      Specified by:
      write in class OutputStream
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Overrides:
      close in class OutputStream
    • flush

      public void flush()
      Specified by:
      flush in interface Flushable
      Overrides:
      flush in class OutputStream