File tree Expand file tree Collapse file tree 2 files changed +28
-1
lines changed
spring-boot-project/spring-boot-autoconfigure/src
main/java/org/springframework/boot/autoconfigure/http
test/java/org/springframework/boot/autoconfigure/http Expand file tree Collapse file tree 2 files changed +28
-1
lines changed Original file line number Diff line number Diff line change 2626import java .util .Map ;
2727
2828import org .springframework .http .converter .HttpMessageConverter ;
29+ import org .springframework .http .converter .StringHttpMessageConverter ;
2930import org .springframework .http .converter .support .AllEncompassingFormHttpMessageConverter ;
3031import org .springframework .http .converter .xml .AbstractXmlHttpMessageConverter ;
3132import org .springframework .http .converter .xml .MappingJackson2XmlHttpMessageConverter ;
@@ -121,14 +122,24 @@ private List<HttpMessageConverter<?>> getCombinedConverters(Collection<HttpMessa
121122 List <HttpMessageConverter <?>> processing = new ArrayList <>(converters );
122123 for (HttpMessageConverter <?> defaultConverter : defaultConverters ) {
123124 Iterator <HttpMessageConverter <?>> iterator = processing .iterator ();
125+ boolean skipDefault = false ;
124126 while (iterator .hasNext ()) {
125127 HttpMessageConverter <?> candidate = iterator .next ();
126128 if (isReplacement (defaultConverter , candidate )) {
127129 combined .add (candidate );
128130 iterator .remove ();
131+
132+ if (defaultConverter instanceof StringHttpMessageConverter
133+ && defaultConverter .getSupportedMediaTypes ().equals (candidate .getSupportedMediaTypes ())) {
134+ skipDefault = true ;
135+ }
129136 }
130137 }
131- combined .add (defaultConverter );
138+
139+ if (!skipDefault ) {
140+ combined .add (defaultConverter );
141+ }
142+
132143 if (defaultConverter instanceof AllEncompassingFormHttpMessageConverter allEncompassingConverter ) {
133144 configurePartConverters (allEncompassingConverter , converters );
134145 }
Original file line number Diff line number Diff line change 1616
1717package org .springframework .boot .autoconfigure .http ;
1818
19+ import java .nio .charset .StandardCharsets ;
1920import java .util .ArrayList ;
2021import java .util .Collection ;
2122import java .util .List ;
@@ -163,4 +164,19 @@ private AllEncompassingFormHttpMessageConverter findFormConverter(Collection<Htt
163164 return null ;
164165 }
165166
167+ @ Test
168+ void replaceDefaultStringHttpConverter () {
169+ StringHttpMessageConverter converter = new StringHttpMessageConverter (StandardCharsets .UTF_8 );
170+ HttpMessageConverters converters = new HttpMessageConverters (converter );
171+ assertThat (converters .getConverters ()).contains (converter );
172+ List <StringHttpMessageConverter > httpConverters = new ArrayList <>();
173+ for (HttpMessageConverter <?> candidate : converters ) {
174+ if (candidate instanceof StringHttpMessageConverter ) {
175+ httpConverters .add ((StringHttpMessageConverter ) candidate );
176+ }
177+ }
178+
179+ assertThat (httpConverters ).hasSize (1 );
180+ assertThat (httpConverters .get (0 )).isEqualTo (converter );
181+ }
166182}
You can’t perform that action at this time.
0 commit comments