Add CBOR support to AllEncompassingFormHttpMessageConverter

Closes gh-32428
This commit is contained in:
Sébastien Deleuze 2024-03-28 14:59:22 +01:00
parent cf87441a26
commit db1010f9c9
1 changed files with 10 additions and 1 deletions

View File

@ -18,6 +18,7 @@ package org.springframework.http.converter.support;
import org.springframework.http.converter.FormHttpMessageConverter;
import org.springframework.http.converter.cbor.KotlinSerializationCborHttpMessageConverter;
import org.springframework.http.converter.cbor.MappingJackson2CborHttpMessageConverter;
import org.springframework.http.converter.json.GsonHttpMessageConverter;
import org.springframework.http.converter.json.JsonbHttpMessageConverter;
import org.springframework.http.converter.json.KotlinSerializationJsonHttpMessageConverter;
@ -31,7 +32,8 @@ import org.springframework.util.ClassUtils;
/**
* Extension of {@link org.springframework.http.converter.FormHttpMessageConverter},
* adding support for XML and JSON-based parts.
* adding support for XML, JSON, Smile, CBOR, Protobuf and Yaml based parts when
* related libraries are present in the classpath.
*
* @author Rossen Stoyanchev
* @author Juergen Hoeller
@ -48,6 +50,8 @@ public class AllEncompassingFormHttpMessageConverter extends FormHttpMessageConv
private static final boolean jackson2SmilePresent;
private static final boolean jackson2CborPresent;
private static final boolean jackson2YamlPresent;
private static final boolean gsonPresent;
@ -67,6 +71,7 @@ public class AllEncompassingFormHttpMessageConverter extends FormHttpMessageConv
ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", classLoader);
jackson2XmlPresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.xml.XmlMapper", classLoader);
jackson2SmilePresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.smile.SmileFactory", classLoader);
jackson2CborPresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.cbor.CBORFactory", classLoader);
jackson2YamlPresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.yaml.YAMLFactory", classLoader);
gsonPresent = ClassUtils.isPresent("com.google.gson.Gson", classLoader);
jsonbPresent = ClassUtils.isPresent("jakarta.json.bind.Jsonb", classLoader);
@ -103,6 +108,10 @@ public class AllEncompassingFormHttpMessageConverter extends FormHttpMessageConv
addPartConverter(new MappingJackson2SmileHttpMessageConverter());
}
if (jackson2CborPresent) {
addPartConverter(new MappingJackson2CborHttpMessageConverter());
}
if (jackson2YamlPresent) {
addPartConverter(new MappingJackson2YamlHttpMessageConverter());
}