Class SerializerBody

java.lang.Object
org.apache.juneau.rest.client.SerializerBody
All Implemented Interfaces:
HttpBody

public final class SerializerBody extends Object implements HttpBody
A repeatable HttpBody that serializes a POJO straight to the transport output stream.

The next-generation analog of the classic SerializedEntity: rather than pre-serializing the POJO to an in-memory String/byte[] and wrapping that, writeTo(OutputStream) runs the supplied Serializer directly against the wire output stream, so large payloads stream out without full in-memory materialization.

The body is repeatable: each writeTo(OutputStream) re-serializes the value, so it can be safely resent (e.g. for a future auto-retry). getContentLength() returns -1 (the transport uses chunked transfer encoding).

See Also:
Since:
9.2.1
  • Method Details

    • of

      public static SerializerBody of(Serializer serializer, Object value)
      Creates a SerializerBody using the serializer's own media type.
      Parameters:
      serializer - The serializer that writes the POJO. Must not be null.
      value - The POJO to serialize. May be null.
      Returns:
      A new instance. Never null.
    • of

      public static SerializerBody of(Serializer serializer, Object value, String contentType)
      Creates a SerializerBody with an explicit content type.
      Parameters:
      serializer - The serializer that writes the POJO. Must not be null.
      value - The POJO to serialize. May be null.
      contentType - The MIME content type. May be null.
      Returns:
      A new instance. Never null.
    • getContentType

      Description copied from interface: HttpBody
      Returns the MIME content type of this body, e.g. "application/json; charset=UTF-8".
      Specified by:
      getContentType in interface HttpBody
      Returns:
      The content type, or null if unknown.
    • getContentLength

      public long getContentLength()
      Description copied from interface: HttpBody
      Returns the content length in bytes, or -1 if unknown.

      Implementations that buffer content may return the exact length; streaming implementations should return -1 to cause the transport to use chunked transfer encoding.

      Specified by:
      getContentLength in interface HttpBody
      Returns:
      The content length, or -1 if unknown.
    • writeTo

      public void writeTo(OutputStream out) throws IOException
      Description copied from interface: HttpBody
      Writes the body content to the given output stream.

      Implementations must not close out.

      Specified by:
      writeTo in interface HttpBody
      Parameters:
      out - The stream to write to. Never null.
      Throws:
      IOException - If an I/O error occurs.
    • isRepeatable

      public boolean isRepeatable()
      Description copied from interface: HttpBody
      Returns true if this body can be written more than once.

      Streaming bodies backed by a one-shot InputStream should return false. Buffered bodies (byte arrays, strings, files) should return true.

      Specified by:
      isRepeatable in interface HttpBody
      Returns:
      true if repeatable.