Add register methods to CodecConfigurer.CustomCodecs
The new register methods replace the now deprecated
encoder, decoder, reader, and writer methods, and also offer a choice
to opt into default properties such maxInMemorySize, if configured.
Backport of 11e321b8e7
See gh-24201
This commit is contained in:
@@ -121,11 +121,11 @@ public class CodecConfigurerTests {
|
||||
when(customReader1.canRead(ResolvableType.forClass(Object.class), null)).thenReturn(false);
|
||||
when(customReader2.canRead(ResolvableType.forClass(Object.class), null)).thenReturn(true);
|
||||
|
||||
this.configurer.customCodecs().decoder(customDecoder1);
|
||||
this.configurer.customCodecs().decoder(customDecoder2);
|
||||
this.configurer.customCodecs().register(customDecoder1);
|
||||
this.configurer.customCodecs().register(customDecoder2);
|
||||
|
||||
this.configurer.customCodecs().reader(customReader1);
|
||||
this.configurer.customCodecs().reader(customReader2);
|
||||
this.configurer.customCodecs().register(customReader1);
|
||||
this.configurer.customCodecs().register(customReader2);
|
||||
|
||||
List<HttpMessageReader<?>> readers = this.configurer.getReaders();
|
||||
|
||||
@@ -161,11 +161,11 @@ public class CodecConfigurerTests {
|
||||
when(customWriter1.canWrite(ResolvableType.forClass(Object.class), null)).thenReturn(false);
|
||||
when(customWriter2.canWrite(ResolvableType.forClass(Object.class), null)).thenReturn(true);
|
||||
|
||||
this.configurer.customCodecs().encoder(customEncoder1);
|
||||
this.configurer.customCodecs().encoder(customEncoder2);
|
||||
this.configurer.customCodecs().register(customEncoder1);
|
||||
this.configurer.customCodecs().register(customEncoder2);
|
||||
|
||||
this.configurer.customCodecs().writer(customWriter1);
|
||||
this.configurer.customCodecs().writer(customWriter2);
|
||||
this.configurer.customCodecs().register(customWriter1);
|
||||
this.configurer.customCodecs().register(customWriter2);
|
||||
|
||||
List<HttpMessageWriter<?>> writers = this.configurer.getWriters();
|
||||
|
||||
@@ -200,11 +200,11 @@ public class CodecConfigurerTests {
|
||||
when(customReader1.canRead(ResolvableType.forClass(Object.class), null)).thenReturn(false);
|
||||
when(customReader2.canRead(ResolvableType.forClass(Object.class), null)).thenReturn(true);
|
||||
|
||||
this.configurer.customCodecs().decoder(customDecoder1);
|
||||
this.configurer.customCodecs().decoder(customDecoder2);
|
||||
this.configurer.customCodecs().register(customDecoder1);
|
||||
this.configurer.customCodecs().register(customDecoder2);
|
||||
|
||||
this.configurer.customCodecs().reader(customReader1);
|
||||
this.configurer.customCodecs().reader(customReader2);
|
||||
this.configurer.customCodecs().register(customReader1);
|
||||
this.configurer.customCodecs().register(customReader2);
|
||||
|
||||
this.configurer.registerDefaults(false);
|
||||
|
||||
@@ -231,11 +231,11 @@ public class CodecConfigurerTests {
|
||||
when(customWriter1.canWrite(ResolvableType.forClass(Object.class), null)).thenReturn(false);
|
||||
when(customWriter2.canWrite(ResolvableType.forClass(Object.class), null)).thenReturn(true);
|
||||
|
||||
this.configurer.customCodecs().encoder(customEncoder1);
|
||||
this.configurer.customCodecs().encoder(customEncoder2);
|
||||
this.configurer.customCodecs().register(customEncoder1);
|
||||
this.configurer.customCodecs().register(customEncoder2);
|
||||
|
||||
this.configurer.customCodecs().writer(customWriter1);
|
||||
this.configurer.customCodecs().writer(customWriter2);
|
||||
this.configurer.customCodecs().register(customWriter1);
|
||||
this.configurer.customCodecs().register(customWriter2);
|
||||
|
||||
this.configurer.registerDefaults(false);
|
||||
|
||||
@@ -277,10 +277,10 @@ public class CodecConfigurerTests {
|
||||
this.configurer.registerDefaults(false);
|
||||
CodecConfigurer clone = this.configurer.clone();
|
||||
|
||||
clone.customCodecs().encoder(new Jackson2JsonEncoder());
|
||||
clone.customCodecs().decoder(new Jackson2JsonDecoder());
|
||||
clone.customCodecs().reader(new ServerSentEventHttpMessageReader());
|
||||
clone.customCodecs().writer(new ServerSentEventHttpMessageWriter());
|
||||
clone.customCodecs().register(new Jackson2JsonEncoder());
|
||||
clone.customCodecs().register(new Jackson2JsonDecoder());
|
||||
clone.customCodecs().register(new ServerSentEventHttpMessageReader());
|
||||
clone.customCodecs().register(new ServerSentEventHttpMessageWriter());
|
||||
|
||||
assertEquals(0, this.configurer.getReaders().size());
|
||||
assertEquals(0, this.configurer.getWriters().size());
|
||||
@@ -337,6 +337,7 @@ public class CodecConfigurerTests {
|
||||
assertFalse(encoders.containsAll(Arrays.asList(jacksonEncoder, jaxb2Encoder, protoEncoder)));
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Test
|
||||
public void withDefaultCodecConfig() {
|
||||
AtomicBoolean callbackCalled = new AtomicBoolean(false);
|
||||
|
||||
@@ -40,6 +40,7 @@ import org.springframework.core.codec.ResourceDecoder;
|
||||
import org.springframework.core.codec.StringDecoder;
|
||||
import org.springframework.core.io.buffer.DefaultDataBufferFactory;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.codec.CodecConfigurer;
|
||||
import org.springframework.http.codec.DecoderHttpMessageReader;
|
||||
import org.springframework.http.codec.EncoderHttpMessageWriter;
|
||||
import org.springframework.http.codec.FormHttpMessageReader;
|
||||
@@ -61,6 +62,7 @@ import org.springframework.http.codec.xml.Jaxb2XmlEncoder;
|
||||
import org.springframework.util.MimeTypeUtils;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNotSame;
|
||||
import static org.junit.Assert.assertSame;
|
||||
@@ -132,6 +134,7 @@ public class ServerCodecConfigurerTests {
|
||||
public void maxInMemorySize() {
|
||||
int size = 99;
|
||||
this.configurer.defaultCodecs().maxInMemorySize(size);
|
||||
|
||||
List<HttpMessageReader<?>> readers = this.configurer.getReaders();
|
||||
assertEquals(13, readers.size());
|
||||
assertEquals(size, ((ByteArrayDecoder) getNextDecoder(readers)).getMaxInMemorySize());
|
||||
@@ -153,6 +156,28 @@ public class ServerCodecConfigurerTests {
|
||||
assertEquals(size, ((StringDecoder) getNextDecoder(readers)).getMaxInMemorySize());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void maxInMemorySizeWithCustomCodecs() {
|
||||
|
||||
int size = 99;
|
||||
this.configurer.defaultCodecs().maxInMemorySize(size);
|
||||
this.configurer.registerDefaults(false);
|
||||
|
||||
CodecConfigurer.CustomCodecs customCodecs = this.configurer.customCodecs();
|
||||
customCodecs.register(new ByteArrayDecoder());
|
||||
customCodecs.registerWithDefaultConfig(new ByteArrayDecoder());
|
||||
customCodecs.register(new Jackson2JsonDecoder());
|
||||
customCodecs.registerWithDefaultConfig(new Jackson2JsonDecoder());
|
||||
|
||||
this.configurer.defaultCodecs().enableLoggingRequestDetails(true);
|
||||
|
||||
List<HttpMessageReader<?>> readers = this.configurer.getReaders();
|
||||
assertEquals(-1, ((ByteArrayDecoder) getNextDecoder(readers)).getMaxInMemorySize());
|
||||
assertEquals(size, ((ByteArrayDecoder) getNextDecoder(readers)).getMaxInMemorySize());
|
||||
assertEquals(-1, ((Jackson2JsonDecoder) getNextDecoder(readers)).getMaxInMemorySize());
|
||||
assertEquals(size, ((Jackson2JsonDecoder) getNextDecoder(readers)).getMaxInMemorySize());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void enableRequestLoggingDetails() {
|
||||
this.configurer.defaultCodecs().enableLoggingRequestDetails(true);
|
||||
@@ -167,6 +192,21 @@ public class ServerCodecConfigurerTests {
|
||||
assertTrue(reader.isEnableLoggingRequestDetails());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void enableRequestLoggingDetailsWithCustomCodecs() {
|
||||
|
||||
this.configurer.registerDefaults(false);
|
||||
this.configurer.defaultCodecs().enableLoggingRequestDetails(true);
|
||||
|
||||
CodecConfigurer.CustomCodecs customCodecs = this.configurer.customCodecs();
|
||||
customCodecs.register(new FormHttpMessageReader());
|
||||
customCodecs.registerWithDefaultConfig(new FormHttpMessageReader());
|
||||
|
||||
List<HttpMessageReader<?>> readers = this.configurer.getReaders();
|
||||
assertFalse(((FormHttpMessageReader) readers.get(0)).isEnableLoggingRequestDetails());
|
||||
assertTrue(((FormHttpMessageReader) readers.get(1)).isEnableLoggingRequestDetails());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void cloneConfigurer() {
|
||||
ServerCodecConfigurer clone = this.configurer.clone();
|
||||
|
||||
Reference in New Issue
Block a user