Package org.springframework.http.converter

# Class AbstractKotlinSerializationHttpMessageConverter<T extends kotlinx.serialization.SerialFormat>

java.lang.Object
org.springframework.http.converter.AbstractHttpMessageConverter<T>
org.springframework.http.converter.AbstractSmartHttpMessageConverter<Object>
org.springframework.http.converter.AbstractKotlinSerializationHttpMessageConverter<T>

Type Parameters:
  `T` - the type of `SerialFormat`

All Implemented Interfaces:
  `HttpMessageConverter<Object>`, `SmartHttpMessageConverter<Object>`

Direct Known Subclasses:
  `KotlinSerializationBinaryHttpMessageConverter`, `KotlinSerializationStringHttpMessageConverter`

public abstract class AbstractKotlinSerializationHttpMessageConverter<T extends kotlinx.serialization.SerialFormat> extends AbstractSmartHttpMessageConverter<Object>
Abstract base class for `HttpMessageConverter` implementations that use Kotlin serialization.

Since:
  6.0
Author:
  Andreas Ahlenstorf, Sebastien Deleuze, Juergen Hoeller, Iain Henderson, Arjen Poutsma

## Field Summary

### Fields inherited from class org.springframework.http.converter.AbstractHttpMessageConverter

`logger`

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`AbstractKotlinSerializationHttpMessageConverter(T format, MediaType... supportedMediaTypes)`
Construct an `AbstractKotlinSerializationHttpMessageConverter` with multiple supported media type and format.

## Method Summary

Modifier and Type
Method
Description
`boolean`
`canRead(org.springframework.core.ResolvableType type, MediaType mediaType)`
Indicates whether the given type can be read by this converter.
`boolean`
`canWrite(org.springframework.core.ResolvableType type, Class<?> clazz, MediaType mediaType)`
Indicates whether the given class can be written by this converter.
`List<MediaType>`
`getSupportedMediaTypes(Class<?> clazz)`
Return the list of media types supported by this converter for the given class.
`final Object`
`read(org.springframework.core.ResolvableType type, HttpInputMessage inputMessage, Map<String,Object> hints)`
Read an object of the given type from the given input message, and returns it.
`protected abstract Object`
`readInternal(kotlinx.serialization.KSerializer<Object> serializer, T format, HttpInputMessage inputMessage)`
Reads the given input message with the given serializer and format.
`protected boolean`
`supports(Class<?> clazz)`
Indicates whether the given class is supported by this converter.
`protected boolean`
`supportsRepeatableWrites(Object object)`
Indicates whether this message converter can write the given object multiple times.
`protected abstract void`
`writeInternal(Object object, kotlinx.serialization.KSerializer<Object> serializer, T format, HttpOutputMessage outputMessage)`
Write the given object to the output message with the given serializer and format.
`protected final void`
`writeInternal(Object object, org.springframework.core.ResolvableType type, HttpOutputMessage outputMessage, Map<String,Object> hints)`
Abstract template method that writes the actual body.

### Methods inherited from class org.springframework.http.converter.AbstractSmartHttpMessageConverter

`readInternal, write, writeInternal`

### Methods inherited from class org.springframework.http.converter.AbstractHttpMessageConverter

`addDefaultHeaders, canRead, canRead, canWrite, canWrite, getContentLength, getDefaultCharset, getDefaultContentType, getSupportedMediaTypes, read, setDefaultCharset, setSupportedMediaTypes, write`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.springframework.http.converter.HttpMessageConverter

`getSupportedMediaTypes`

### Methods inherited from interface org.springframework.http.converter.SmartHttpMessageConverter

`canRead, canWrite, read, write`

## Constructor Details

### AbstractKotlinSerializationHttpMessageConverter

protected AbstractKotlinSerializationHttpMessageConverter(T format, MediaType... supportedMediaTypes)
Construct an `AbstractKotlinSerializationHttpMessageConverter` with multiple supported media type and format.

Parameters:
  `format` - the format
  `supportedMediaTypes` - the supported media types

## Method Details

### getSupportedMediaTypes

public List<MediaType> getSupportedMediaTypes(Class<?> clazz)
Description copied from interface: `HttpMessageConverter`
Return the list of media types supported by this converter for the given class. The list may differ from `HttpMessageConverter.getSupportedMediaTypes()` if the converter does not support the given Class or if it supports it only for a subset of media types.

Parameters:
  `clazz` - the type of class to check
Returns:
  the list of media types supported for the given class

### supports

protected boolean supports(Class<?> clazz)
Description copied from class: `AbstractHttpMessageConverter`
Indicates whether the given class is supported by this converter.

Overrides:
  `supports` in class `AbstractSmartHttpMessageConverter<Object>`
Parameters:
  `clazz` - the class to test for support
Returns:
  `true` if supported; `false` otherwise

### canRead

public boolean canRead(org.springframework.core.ResolvableType type, @Nullable MediaType mediaType)
Description copied from interface: `SmartHttpMessageConverter`
Indicates whether the given type can be read by this converter. This method should perform the same checks as `HttpMessageConverter.canRead(Class, MediaType)` with additional ones related to the generic type.

Specified by:
  `canRead` in interface `SmartHttpMessageConverter<T extends kotlinx.serialization.SerialFormat>`
Overrides:
  `canRead` in class `AbstractSmartHttpMessageConverter<Object>`
Parameters:
  `type` - the (potentially generic) type to test for readability. The type source may be used for retrieving additional information (the related method signature for example) when relevant.
  `mediaType` - the media type to read, can be `null` if not specified. Typically, the value of a `Content-Type` header.
Returns:
  `true` if readable; `false` otherwise

### canWrite

public boolean canWrite(org.springframework.core.ResolvableType type, Class<?> clazz, @Nullable MediaType mediaType)
Description copied from interface: `SmartHttpMessageConverter`
Indicates whether the given class can be written by this converter.

This method should perform the same checks as `HttpMessageConverter.canWrite(Class, MediaType)` with additional ones related to the generic type.

Specified by:
  `canWrite` in interface `SmartHttpMessageConverter<T extends kotlinx.serialization.SerialFormat>`
Overrides:
  `canWrite` in class `AbstractSmartHttpMessageConverter<Object>`
Parameters:
  `type` - the (potentially generic) target type to test for writability (can be `ResolvableType.NONE` if not specified). The type source may be used for retrieving additional information (the related method signature for example) when relevant.
  `clazz` - the source object class to test for writability
  `mediaType` - the media type to write (can be `null` if not specified); typically the value of an `Accept` header.
Returns:
  `true` if writable; `false` otherwise

### read

public final Object read(org.springframework.core.ResolvableType type, HttpInputMessage inputMessage, @Nullable Map<String,Object> hints) throws IOException, HttpMessageNotReadableException
Description copied from interface: `SmartHttpMessageConverter`
Read an object of the given type from the given input message, and returns it.

Parameters:
  `type` - the (potentially generic) type of object to return. This type must have previously been passed to the `canRead` method of this interface, which must have returned `true`. The type source may be used for retrieving additional information (the related method signature for example) when relevant.
  `inputMessage` - the HTTP input message to read from
  `hints` - additional information about how to encode
Returns:
  the converted object
Throws:
  `IOException` - in case of I/O errors
  `HttpMessageNotReadableException` - in case of conversion errors

### readInternal

protected abstract Object readInternal(kotlinx.serialization.KSerializer<Object> serializer, T format, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException
Reads the given input message with the given serializer and format.

Throws:
  `IOException`
  `HttpMessageNotReadableException`

### writeInternal

protected final void writeInternal(Object object, org.springframework.core.ResolvableType type, HttpOutputMessage outputMessage, @Nullable Map<String,Object> hints) throws IOException, HttpMessageNotWritableException
Description copied from class: `AbstractSmartHttpMessageConverter`
Abstract template method that writes the actual body. Invoked from `AbstractSmartHttpMessageConverter.write(Object, ResolvableType, MediaType, HttpOutputMessage, Map)`.

Specified by:
  `writeInternal` in class `AbstractSmartHttpMessageConverter<Object>`
Parameters:
  `object` - the object to write to the output message
  `type` - the type of object to write
  `outputMessage` - the HTTP output message to write to
  `hints` - additional information about how to encode
Throws:
  `IOException` - in case of I/O errors
  `HttpMessageNotWritableException` - in case of conversion errors

### writeInternal

protected abstract void writeInternal(Object object, kotlinx.serialization.KSerializer<Object> serializer, T format, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException
Write the given object to the output message with the given serializer and format.

Throws:
  `IOException`
  `HttpMessageNotWritableException`

### supportsRepeatableWrites

protected boolean supportsRepeatableWrites(Object object)
Description copied from class: `AbstractHttpMessageConverter`
Indicates whether this message converter can write the given object multiple times.

The default implementation returns `false`.

Overrides:
  `supportsRepeatableWrites` in class `AbstractHttpMessageConverter<Object>`
Parameters:
  `object` - the object t
Returns:
  `true` if `t` can be written repeatedly; `false` otherwise