Interface FragmentTranscoder

All Known Implementing Classes:
AbstractByteArrayFragmentTranscoder, AbstractFragmentTranscoder, JacksonFragmentTranscoder

@Committed
@Public
public interface FragmentTranscoder
An interface for transcoding sub-document fragments (as read and written by the subdocument API, eg. in MutateInBuilder or LookupInBuilder). This is used internally by the bucket to encode fragments (for mutations) or decode fragments returned by the server in order to instantiate a DocumentFragment.
Since:
2.2
Author:
Simon Baslé
  • Method Summary

    Modifier and Type Method Description
    <T> T decode​(com.couchbase.client.deps.io.netty.buffer.ByteBuf encoded, Class<? extends T> clazz)
    Decode content in a ByteBuf **without releasing it**.
    <T> T decodeWithMessage​(com.couchbase.client.deps.io.netty.buffer.ByteBuf encoded, Class<? extends T> clazz, String transcodingErrorMessage)
    Decode content in a ByteBuf **without releasing it**.
    <T> com.couchbase.client.deps.io.netty.buffer.ByteBuf encode​(T value)
    Encode a value to a ByteBuf suitable for use in the sub-document protocol.
    <T> com.couchbase.client.deps.io.netty.buffer.ByteBuf encodeWithMessage​(T value, String transcodingErrorMessage)
    Encode a value to a ByteBuf suitable for use in the sub-document protocol.
  • Method Details

    • decode

      <T> T decode​(com.couchbase.client.deps.io.netty.buffer.ByteBuf encoded, Class<? extends T> clazz) throws TranscodingException
      Decode content in a ByteBuf **without releasing it**. Suitable for populating a DocumentFragment's content.
      Type Parameters:
      T - the type of the decoded fragment.
      Parameters:
      encoded - the encoded fragment value (will not be released).
      clazz - the target class for decoded value. Using Object.class implies a generic decode, where dictionaries are represented by JsonObject and arrays by JsonArray.
      Returns:
      a decoded fragment.
      Throws:
      TranscodingException - if the decoding couldn't happen.
    • decodeWithMessage

      <T> T decodeWithMessage​(com.couchbase.client.deps.io.netty.buffer.ByteBuf encoded, Class<? extends T> clazz, String transcodingErrorMessage) throws TranscodingException
      Decode content in a ByteBuf **without releasing it**. Suitable for populating a DocumentFragment's content.
      Type Parameters:
      T - the type of the decoded fragment.
      Parameters:
      encoded - the encoded fragment value (will not be released).
      clazz - the target class for decoded value. Using Object.class implies a generic decode, where dictionaries are represented by JsonObject and arrays by JsonArray.
      transcodingErrorMessage - the error message to be used in the thrown TranscodingException if the decoding couldn't happen.
      Returns:
      a decoded fragment.
      Throws:
      TranscodingException - if the decoding couldn't happen.
    • encode

      <T> com.couchbase.client.deps.io.netty.buffer.ByteBuf encode​(T value) throws TranscodingException
      Encode a value to a ByteBuf suitable for use in the sub-document protocol.
      Type Parameters:
      T - the type of the fragment being encoded.
      Parameters:
      value - the value to encode.
      Returns:
      a ByteBuf representation of the fragment value.
      Throws:
      TranscodingException - if the encoding couldn't happen.
    • encodeWithMessage

      <T> com.couchbase.client.deps.io.netty.buffer.ByteBuf encodeWithMessage​(T value, String transcodingErrorMessage) throws TranscodingException
      Encode a value to a ByteBuf suitable for use in the sub-document protocol.
      Type Parameters:
      T - the type of the fragment being encoded.
      Parameters:
      value - the value to encode.
      transcodingErrorMessage - the error message to be used in the thrown TranscodingException if the encoding couldn't happen.
      Returns:
      a ByteBuf representation of the fragment value.
      Throws:
      TranscodingException - if the encoding couldn't happen.