Class DefaultJacksonJavaTypeMapper

java.lang.Object
org.springframework.kafka.support.mapping.DefaultJacksonJavaTypeMapper
All Implemented Interfaces:
org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanClassLoaderAware, ClassMapper, JacksonJavaTypeMapper

public class DefaultJacksonJavaTypeMapper extends Object implements JacksonJavaTypeMapper, org.springframework.beans.factory.BeanClassLoaderAware
Jackson 3 type mapper.
Since:
4.0
  • Field Details

    • DEFAULT_CLASSID_FIELD_NAME

      public static final String DEFAULT_CLASSID_FIELD_NAME
      Default header name for type information.
      See Also:
    • DEFAULT_CONTENT_CLASSID_FIELD_NAME

      public static final String DEFAULT_CONTENT_CLASSID_FIELD_NAME
      Default header name for container object contents type information.
      See Also:
    • DEFAULT_KEY_CLASSID_FIELD_NAME

      public static final String DEFAULT_KEY_CLASSID_FIELD_NAME
      Default header name for map key type information.
      See Also:
    • KEY_DEFAULT_CLASSID_FIELD_NAME

      public static final String KEY_DEFAULT_CLASSID_FIELD_NAME
      Default header name for key type information.
      See Also:
    • KEY_DEFAULT_CONTENT_CLASSID_FIELD_NAME

      public static final String KEY_DEFAULT_CONTENT_CLASSID_FIELD_NAME
      Default header name for key container object contents type information.
      See Also:
    • KEY_DEFAULT_KEY_CLASSID_FIELD_NAME

      public static final String KEY_DEFAULT_KEY_CLASSID_FIELD_NAME
      Default header name for key map key type information.
      See Also:
  • Constructor Details

    • DefaultJacksonJavaTypeMapper

      public DefaultJacksonJavaTypeMapper()
  • Method Details

    • getClassIdFieldName

      public String getClassIdFieldName()
    • setClassIdFieldName

      public void setClassIdFieldName(String classIdFieldName)
      Configure header name for type information.
      Parameters:
      classIdFieldName - the header name.
    • getContentClassIdFieldName

      public String getContentClassIdFieldName()
    • setContentClassIdFieldName

      public void setContentClassIdFieldName(String contentClassIdFieldName)
      Configure header name for container object contents type information.
      Parameters:
      contentClassIdFieldName - the header name.
    • getKeyClassIdFieldName

      public String getKeyClassIdFieldName()
    • setKeyClassIdFieldName

      public void setKeyClassIdFieldName(String keyClassIdFieldName)
      Configure header name for map key type information.
      Parameters:
      keyClassIdFieldName - the header name.
    • setIdClassMapping

      public void setIdClassMapping(Map<String,Class<?>> idClassMapping)
    • setBeanClassLoader

      public void setBeanClassLoader(ClassLoader classLoader)
      Specified by:
      setBeanClassLoader in interface org.springframework.beans.factory.BeanClassLoaderAware
    • getClassLoader

      protected @Nullable ClassLoader getClassLoader()
    • addHeader

      protected void addHeader(org.apache.kafka.common.header.Headers headers, String headerName, Class<?> clazz)
    • retrieveHeader

      protected String retrieveHeader(org.apache.kafka.common.header.Headers headers, String headerName)
    • retrieveHeaderAsString

      protected @Nullable String retrieveHeaderAsString(org.apache.kafka.common.header.Headers headers, String headerName)
    • getIdClassMapping

      public Map<String,Class<?>> getIdClassMapping()
    • setUseForKey

      public void setUseForKey(boolean isKey)
      Configure the TypeMapper to use default key type class.
      Parameters:
      isKey - Use key type headers if true
    • getTypePrecedence

      public JacksonJavaTypeMapper.TypePrecedence getTypePrecedence()
      Return the precedence.
      Specified by:
      getTypePrecedence in interface JacksonJavaTypeMapper
      Returns:
      the precedence.
    • setTypePrecedence

      public void setTypePrecedence(JacksonJavaTypeMapper.TypePrecedence typePrecedence)
      Description copied from interface: JacksonJavaTypeMapper
      Set the precedence for evaluating type information in message properties. When using @KafkaListener at the method level, the framework attempts to determine the target type for payload conversion from the method signature. If so, this type is provided by the MessagingMessageListenerAdapter.

      By default, if the type is concrete (not abstract, not an interface), this will be used ahead of type information provided in the __TypeId__ and associated headers provided by the sender.

      If you wish to force the use of the __TypeId__ and associated headers (such as when the actual type is a subclass of the method argument type), set the precedence to JacksonJavaTypeMapper.TypePrecedence.TYPE_ID.

      Specified by:
      setTypePrecedence in interface JacksonJavaTypeMapper
      Parameters:
      typePrecedence - the precedence.
    • addTrustedPackages

      public void addTrustedPackages(String... packagesToTrust)
      Specify a set of packages to trust during deserialization. The asterisk (*) means trust all.
      Specified by:
      addTrustedPackages in interface JacksonJavaTypeMapper
      Parameters:
      packagesToTrust - the trusted Java packages for deserialization
    • toJavaType

      public @Nullable tools.jackson.databind.JavaType toJavaType(org.apache.kafka.common.header.Headers headers)
      Specified by:
      toJavaType in interface JacksonJavaTypeMapper
    • fromJavaType

      public void fromJavaType(tools.jackson.databind.JavaType javaType, org.apache.kafka.common.header.Headers headers)
      Specified by:
      fromJavaType in interface JacksonJavaTypeMapper
    • fromClass

      public void fromClass(Class<?> clazz, org.apache.kafka.common.header.Headers headers)
      Specified by:
      fromClass in interface ClassMapper
    • toClass

      public @Nullable Class<?> toClass(org.apache.kafka.common.header.Headers headers)
      Specified by:
      toClass in interface ClassMapper
    • removeHeaders

      public void removeHeaders(org.apache.kafka.common.header.Headers headers)
      Description copied from interface: JacksonJavaTypeMapper
      Remove the type information headers.
      Specified by:
      removeHeaders in interface JacksonJavaTypeMapper
      Parameters:
      headers - the headers.