Interface PayloadConverter

All Known Implementing Classes:
ByteArrayPayloadConverter, GsonJsonPayloadConverter, Jackson3JsonPayloadConverter, JacksonJsonPayloadConverter, NullPayloadConverter, ProtobufJsonPayloadConverter, ProtobufPayloadConverter

public interface PayloadConverter
Used by the framework to serialize/deserialize method parameters that need to be sent over the wire.

PayloadConverter is expected to pass the RawValue payload through without conversion. Though it should still apply the PayloadCodec to the RawValue payloads.

  • Method Summary

    Modifier and Type
    Method
    Description
    <T> T
    fromData(io.temporal.api.common.v1.Payload content, Class<T> valueType, Type valueGenericType)
    Implements conversion of a single value.
    Each PayloadConverter has an Encoding Type that it handles.
    Optional<io.temporal.api.common.v1.Payload>
    toData(Object value)
    Implements conversion of a list of values.
    A correct implementation of this interface should have a fully functional "contextless" implementation.
  • Method Details

    • getEncodingType

      String getEncodingType()
      Each PayloadConverter has an Encoding Type that it handles. Each PayloadConverter should add the information about its Encoding Type into the Payload it produces inside toData(Object) by associating it with the EncodingKeys.METADATA_ENCODING_KEY key attached to the Payload's Metadata using Payload.Builder.putMetadata(String, ByteString).
      Returns:
      encoding type that this converter handles.
    • toData

      Optional<io.temporal.api.common.v1.Payload> toData(Object value) throws DataConverterException
      Implements conversion of a list of values.
      Parameters:
      value - Java value to convert.
      Returns:
      converted value
      Throws:
      DataConverterException - if conversion of the value passed as parameter failed for any reason.
      See Also:
    • fromData

      <T> T fromData(io.temporal.api.common.v1.Payload content, Class<T> valueType, Type valueGenericType) throws DataConverterException
      Implements conversion of a single value.
      Parameters:
      content - Serialized value to convert to a Java object.
      valueType - type of the value stored in the content
      valueGenericType - generic type of the value stored in the content
      Returns:
      converted Java object
      Throws:
      DataConverterException - if conversion of the data passed as parameter failed for any reason.
    • withContext

      @Experimental @Nonnull default PayloadConverter withContext(@Nonnull SerializationContext context)
      A correct implementation of this interface should have a fully functional "contextless" implementation. Temporal SDK will call this method when a knowledge of the context exists, but DataConverter can be used directly by user code and sometimes SDK itself without any context.

      Note: this method is expected to be cheap and fast. Temporal SDK doesn't always cache the instances and may be calling this method very often. Users are responsible to make sure that this method doesn't recreate expensive objects like Jackson's ObjectMapper on every call.

      Parameters:
      context - provides information to the data converter about the abstraction the data belongs to
      Returns:
      an instance of DataConverter that may use the provided context for serialization
      See Also: