Class AbstractKotlinSerializationHttpMessageConverter<T extends kotlinx.serialization.SerialFormat>
java.lang.Object
org.springframework.http.converter.AbstractHttpMessageConverter<Object>
org.springframework.http.converter.AbstractSmartHttpMessageConverter<Object>
org.springframework.http.converter.AbstractKotlinSerializationHttpMessageConverter<T>
- Type Parameters:
T- the type ofSerialFormat
- 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.
As of Spring Framework 7.0, open polymorphism is supported.
- Since:
- 6.0
- Author:
- Andreas Ahlenstorf, Sebastien Deleuze, Juergen Hoeller, Iain Henderson, Arjen Poutsma
-
Field Summary
Fields inherited from class AbstractHttpMessageConverter
logger -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedAbstractKotlinSerializationHttpMessageConverter(T format, MediaType... supportedMediaTypes) Construct anAbstractKotlinSerializationHttpMessageConverterwith multiple supported media type and format. -
Method Summary
Modifier and TypeMethodDescriptionbooleancanRead(ResolvableType type, @Nullable MediaType mediaType) Indicates whether the given type can be read by this converter.booleancanWrite(ResolvableType type, Class<?> clazz, @Nullable MediaType mediaType) Indicates whether the given class can be written by this converter.getSupportedMediaTypes(Class<?> clazz) Return the list of media types supported by this converter for the given class.final Objectread(ResolvableType type, HttpInputMessage inputMessage, @Nullable Map<String, Object> hints) Read an object of the given type from the given input message, and returns it.protected abstract ObjectreadInternal(kotlinx.serialization.KSerializer<Object> serializer, T format, HttpInputMessage inputMessage) Reads the given input message with the given serializer and format.protected booleanIndicates whether the given class is supported by this converter.protected booleansupportsRepeatableWrites(Object object) Indicates whether this message converter can write the given object multiple times.protected abstract voidwriteInternal(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 voidwriteInternal(Object object, ResolvableType type, HttpOutputMessage outputMessage, @Nullable Map<String, Object> hints) Abstract template method that writes the actual body.Methods inherited from class AbstractSmartHttpMessageConverter
readInternal, write, writeInternalMethods inherited from class AbstractHttpMessageConverter
addDefaultHeaders, canRead, canRead, canWrite, canWrite, getContentLength, getDefaultCharset, getDefaultContentType, getSupportedMediaTypes, read, setDefaultCharset, setSupportedMediaTypes, writeMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface HttpMessageConverter
getSupportedMediaTypesMethods inherited from interface SmartHttpMessageConverter
canRead, canWrite, read, write
-
Constructor Details
-
AbstractKotlinSerializationHttpMessageConverter
-
-
Method Details
-
getSupportedMediaTypes
Description copied from interface:HttpMessageConverterReturn the list of media types supported by this converter for the given class. The list may differ fromHttpMessageConverter.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
Description copied from class:AbstractHttpMessageConverterIndicates whether the given class is supported by this converter.- Overrides:
supportsin classAbstractSmartHttpMessageConverter<Object>- Parameters:
clazz- the class to test for support- Returns:
trueif supported;falseotherwise
-
canRead
Description copied from interface:SmartHttpMessageConverterIndicates whether the given type can be read by this converter. This method should perform the same checks asHttpMessageConverter.canRead(Class, MediaType)with additional ones related to the generic type.- Specified by:
canReadin interfaceSmartHttpMessageConverter<T extends kotlinx.serialization.SerialFormat>- Overrides:
canReadin classAbstractSmartHttpMessageConverter<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 benullif not specified. Typically, the value of aContent-Typeheader.- Returns:
trueif readable;falseotherwise
-
canWrite
Description copied from interface:SmartHttpMessageConverterIndicates 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:
canWritein interfaceSmartHttpMessageConverter<T extends kotlinx.serialization.SerialFormat>- Overrides:
canWritein classAbstractSmartHttpMessageConverter<Object>- Parameters:
type- the (potentially generic) target type to test for writability (can beResolvableType.NONEif 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 writabilitymediaType- the media type to write (can benullif not specified); typically the value of anAcceptheader.- Returns:
trueif writable;falseotherwise
-
read
public final Object read(ResolvableType type, HttpInputMessage inputMessage, @Nullable Map<String, Object> hints) throws IOException, HttpMessageNotReadableExceptionDescription copied from interface:SmartHttpMessageConverterRead 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 thecanReadmethod of this interface, which must have returnedtrue. 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 fromhints- additional information about how to encode- Returns:
- the converted object
- Throws:
IOException- in case of I/O errorsHttpMessageNotReadableException- 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. -
writeInternal
protected final void writeInternal(Object object, ResolvableType type, HttpOutputMessage outputMessage, @Nullable Map<String, Object> hints) throws IOException, HttpMessageNotWritableExceptionDescription copied from class:AbstractSmartHttpMessageConverterAbstract template method that writes the actual body. Invoked fromAbstractSmartHttpMessageConverter.write(Object, ResolvableType, MediaType, HttpOutputMessage, Map).- Specified by:
writeInternalin classAbstractSmartHttpMessageConverter<Object>- Parameters:
object- the object to write to the output messagetype- the type of object to writeoutputMessage- the HTTP output message to write tohints- additional information about how to encode- Throws:
IOException- in case of I/O errorsHttpMessageNotWritableException- 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. -
supportsRepeatableWrites
Description copied from class:AbstractHttpMessageConverterIndicates whether this message converter can write the given object multiple times.The default implementation returns
false.- Overrides:
supportsRepeatableWritesin classAbstractHttpMessageConverter<Object>- Parameters:
object- the object t- Returns:
trueiftcan be written repeatedly;falseotherwise
-