Class JacksonAdapter

java.lang.Object
com.azure.core.util.serializer.JacksonAdapter
All Implemented Interfaces:
SerializerAdapter

public class JacksonAdapter extends Object implements SerializerAdapter
Implementation of SerializerAdapter for Jackson.
  • Constructor Details

    • JacksonAdapter

      public JacksonAdapter()
      Creates a new JacksonAdapter instance with default mapper settings.
    • JacksonAdapter

      public JacksonAdapter(BiConsumer<com.fasterxml.jackson.databind.ObjectMapper,com.fasterxml.jackson.databind.ObjectMapper> configureSerialization)
      Creates a new JacksonAdapter instance with Azure Core mapper settings and applies additional configuration through configureSerialization callback. configureSerialization callback provides outer and inner instances of ObjectMapper. Both of them are pre-configured for Azure serialization needs, but only outer mapper capable of flattening and populating additionalProperties. Outer mapper is used by JacksonAdapter for all serialization needs. Register modules on the outer instance to add custom (de)serializers similar to new JacksonAdapter((outer, inner) -> outer.registerModule(new MyModule())) Use inner mapper for chaining serialization logic in your (de)serializers.
      Parameters:
      configureSerialization - Applies additional configuration to outer mapper using inner mapper for module chaining.
  • Method Details

    • simpleMapper

      @Deprecated protected com.fasterxml.jackson.databind.ObjectMapper simpleMapper()
      Deprecated.
      deprecated, use JacksonAdapter(BiConsumer<ObjectMapper, ObjectMapper>) constructor to configure modules.
      Gets a static instance of ObjectMapper that doesn't handle flattening.
      Returns:
      an instance of ObjectMapper.
    • createDefaultSerializerAdapter

      public static SerializerAdapter createDefaultSerializerAdapter()
      maintain singleton instance of the default serializer adapter.
      Returns:
      the default serializer
    • serializer

      @Deprecated public com.fasterxml.jackson.databind.ObjectMapper serializer()
      Deprecated.
      deprecated to avoid direct ObjectMapper usage in favor of using more resilient and debuggable JacksonAdapter APIs.
      Returns:
      the original serializer type.
    • serialize

      public String serialize(Object object, SerializerEncoding encoding) throws IOException
      Description copied from interface: SerializerAdapter
      Serializes an object into a string.
      Specified by:
      serialize in interface SerializerAdapter
      Parameters:
      object - The object to serialize.
      encoding - The serialization encoding.
      Returns:
      The object serialized as a string using the specified encoding. If the object is null, null is returned.
      Throws:
      IOException - If an IO exception was thrown during serialization.
    • serializeToBytes

      public byte[] serializeToBytes(Object object, SerializerEncoding encoding) throws IOException
      Description copied from interface: SerializerAdapter
      Serializes an object into a byte array.
      Specified by:
      serializeToBytes in interface SerializerAdapter
      Parameters:
      object - The object to serialize.
      encoding - The serialization encoding.
      Returns:
      The object serialized as a byte array.
      Throws:
      IOException - If an IO exception was thrown during serialization.
    • serialize

      public void serialize(Object object, SerializerEncoding encoding, OutputStream outputStream) throws IOException
      Description copied from interface: SerializerAdapter
      Serializes an object and writes its output into an OutputStream.
      Specified by:
      serialize in interface SerializerAdapter
      Parameters:
      object - The object to serialize.
      encoding - The serialization encoding.
      outputStream - The OutputStream where the serialized object will be written.
      Throws:
      IOException - If an IO exception was thrown during serialization.
    • serializeRaw

      public String serializeRaw(Object object)
      Description copied from interface: SerializerAdapter
      Serializes an object into a raw string, leading and trailing quotes will be trimmed.
      Specified by:
      serializeRaw in interface SerializerAdapter
      Parameters:
      object - The object to serialize.
      Returns:
      The object serialized as a string. If the object is null, null is returned.
    • serializeList

      public String serializeList(List<?> list, CollectionFormat format)
      Description copied from interface: SerializerAdapter
      Serializes a list into a string with the delimiter specified with the Swagger collection format joining each individual serialized items in the list.
      Specified by:
      serializeList in interface SerializerAdapter
      Parameters:
      list - The list to serialize.
      format - The collection joining format.
      Returns:
      The list serialized as a joined string.
    • deserialize

      public <T> T deserialize(String value, Type type, SerializerEncoding encoding) throws IOException
      Description copied from interface: SerializerAdapter
      Deserializes a string into an object.
      Specified by:
      deserialize in interface SerializerAdapter
      Type Parameters:
      T - The type of the deserialized object.
      Parameters:
      value - The string to deserialize.
      type - The type of the deserialized object.
      encoding - The deserialization encoding.
      Returns:
      The string deserialized into an object.
      Throws:
      IOException - If an IO exception was thrown during deserialization.
    • deserialize

      public <T> T deserialize(byte[] bytes, Type type, SerializerEncoding encoding) throws IOException
      Description copied from interface: SerializerAdapter
      Deserializes a byte array into an object.
      Specified by:
      deserialize in interface SerializerAdapter
      Type Parameters:
      T - The type of the deserialized object.
      Parameters:
      bytes - The byte array to deserialize.
      type - The type of the deserialized object.
      encoding - The deserialization encoding.
      Returns:
      The string deserialized into an object.
      Throws:
      IOException - If an IO exception was thrown during serialization.
    • deserialize

      public <T> T deserialize(InputStream inputStream, Type type, SerializerEncoding encoding) throws IOException
      Description copied from interface: SerializerAdapter
      Deserializes a stream into an object.
      Specified by:
      deserialize in interface SerializerAdapter
      Type Parameters:
      T - The type of the deserialized object.
      Parameters:
      inputStream - The InputStream to deserialize.
      type - The type of the deserialized object.
      encoding - The deserialization encoding.
      Returns:
      The stream deserialized into an object.
      Throws:
      IOException - If an IO exception was thrown during serialization.
    • deserialize

      public <T> T deserialize(HttpHeaders headers, Type deserializedHeadersType) throws IOException
      Description copied from interface: SerializerAdapter
      Deserialize the provided headers returned from a REST API to an entity instance declared as the model to hold 'Matching' headers.

      'Matching' headers are the REST API returned headers those with:

      1. header names same as name of a properties in the entity.
      2. header names start with value of HeaderCollection annotation applied to the properties in the entity.
      When needed, the 'header entity' types must be declared as first generic argument of ResponseBase returned by java proxy method corresponding to the REST API. e.g. Mono<RestResponseBase<FooMetadataHeaders, Void>> getMetadata(args); class FooMetadataHeaders { String name; {@literal @}HeaderCollection("header-collection-prefix-") Map<String,String> headerCollection; } in the case of above example, this method produces an instance of FooMetadataHeaders from provided headers.
      Specified by:
      deserialize in interface SerializerAdapter
      Type Parameters:
      T - the type of the deserialized object
      Parameters:
      headers - the REST API returned headers
      deserializedHeadersType - the type to deserialize
      Returns:
      instance of header entity type created based on provided headers, if header entity model does not exist then return null
      Throws:
      IOException - If an I/O error occurs
    • deserializeHeader

      public <T> T deserializeHeader(Header header, Type type) throws IOException
      Description copied from interface: SerializerAdapter
      Deserializes the provided header returned from a REST API to en entity instance declared as the model of the header.
      Specified by:
      deserializeHeader in interface SerializerAdapter
      Type Parameters:
      T - The type of the deserialized header.
      Parameters:
      header - The header.
      type - The type that represents the deserialized header.
      Returns:
      A new instance of the type that represents the deserialized header.
      Throws:
      IOException - If an I/O error occurs.