Skip to content

Commit 9830eb2

Browse files
committed
Allow to configure string codecs media type behavior
Fixes gh-150
1 parent bc662da commit 9830eb2

File tree

5 files changed

+35
-15
lines changed

5 files changed

+35
-15
lines changed

autoconfigure-adapter/src/main/java/org/springframework/boot/autoconfigure/web/reactive/StringCodecInitializer.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,16 @@
2727
*/
2828
public class StringCodecInitializer extends AbstractCodecInitializer {
2929

30-
public StringCodecInitializer(boolean isClientCodec) {
30+
private final boolean textPlainOnly;
31+
32+
public StringCodecInitializer(boolean isClientCodec, boolean textPlainOnly) {
3133
super(isClientCodec);
34+
this.textPlainOnly = textPlainOnly;
3235
}
3336

3437
@Override
3538
protected void register(GenericApplicationContext context, CodecConfigurer configurer) {
36-
configurer.customCodecs().encoder(CharSequenceEncoder.textPlainOnly());
37-
configurer.customCodecs().decoder(StringDecoder.textPlainOnly());
39+
configurer.customCodecs().encoder(textPlainOnly ? CharSequenceEncoder.textPlainOnly() : CharSequenceEncoder.allMimeTypes());
40+
configurer.customCodecs().decoder(textPlainOnly ? StringDecoder.textPlainOnly() : StringDecoder.allMimeTypes());
3841
}
3942
}

jafu/src/main/java/org/springframework/fu/jafu/web/WebFluxClientDsl.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public void initialize(GenericApplicationContext context) {
7979
super.initialize(context);
8080
this.dsl.accept(this);
8181
if (!this.codecsConfigured) {
82-
new StringCodecInitializer(true).initialize(context);
82+
new StringCodecInitializer(true, false).initialize(context);
8383
new ResourceCodecInitializer(true).initialize(context);
8484
}
8585
new ReactiveWebClientBuilderInitializer(baseUrl).initialize(context);
@@ -108,10 +108,19 @@ public void initialize(GenericApplicationContext context) {
108108
}
109109

110110
/**
111-
* Enable {@link org.springframework.core.codec.CharSequenceEncoder} and {@link org.springframework.core.codec.StringDecoder}
111+
* Enable {@link org.springframework.core.codec.CharSequenceEncoder} and {@link org.springframework.core.codec.StringDecoder} for all media types
112+
* @see #string(boolean)
112113
*/
113114
public WebFluxClientCodecDsl string() {
114-
new StringCodecInitializer(true).initialize(context);
115+
new StringCodecInitializer(true, false).initialize(context);
116+
return this;
117+
}
118+
119+
/**
120+
* Enable {@link org.springframework.core.codec.CharSequenceEncoder} and {@link org.springframework.core.codec.StringDecoder}
121+
*/
122+
public WebFluxClientCodecDsl string(boolean textPlainOnly) {
123+
new StringCodecInitializer(true, textPlainOnly).initialize(context);
115124
return this;
116125
}
117126

jafu/src/main/java/org/springframework/fu/jafu/web/WebFluxServerDsl.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ public void initialize(GenericApplicationContext context) {
154154
engine.setPort(port);
155155

156156
if (!codecsConfigured) {
157-
new StringCodecInitializer(false).initialize(context);
157+
new StringCodecInitializer(false, false).initialize(context);
158158
new ResourceCodecInitializer(false).initialize(context);
159159
}
160160
if (context.containsBeanDefinition("webHandler")) {
@@ -187,10 +187,18 @@ public void initialize(GenericApplicationContext context) {
187187
}
188188

189189
/**
190-
* Enable {@link org.springframework.core.codec.CharSequenceEncoder} and {@link org.springframework.core.codec.StringDecoder}
190+
* Enable {@link org.springframework.core.codec.CharSequenceEncoder} and {@link org.springframework.core.codec.StringDecoder} for all media types
191191
*/
192192
public WebFluxServerCodecDsl string() {
193-
new StringCodecInitializer(false).initialize(context);
193+
new StringCodecInitializer(false, false).initialize(context);
194+
return this;
195+
}
196+
197+
/**
198+
* Enable {@link org.springframework.core.codec.CharSequenceEncoder} and {@link org.springframework.core.codec.StringDecoder}
199+
*/
200+
public WebFluxServerCodecDsl string(boolean textPlainOnly) {
201+
new StringCodecInitializer(false, textPlainOnly).initialize(context);
194202
return this;
195203
}
196204

kofu/src/main/kotlin/org/springframework/fu/kofu/web/WebFluxClientDsl.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class WebFluxClientDsl(private val init: WebFluxClientDsl.() -> Unit) : Abstract
3535
super.initialize(context)
3636
init()
3737
if (!codecsConfigured) {
38-
StringCodecInitializer(true).initialize(context)
38+
StringCodecInitializer(true, false).initialize(context)
3939
ResourceCodecInitializer(true).initialize(context)
4040
}
4141
ReactiveWebClientBuilderInitializer(baseUrl).initialize(context)
@@ -59,8 +59,8 @@ class WebFluxClientDsl(private val init: WebFluxClientDsl.() -> Unit) : Abstract
5959
/**
6060
* Enable [org.springframework.core.codec.CharSequenceEncoder] and [org.springframework.core.codec.StringDecoder]
6161
*/
62-
fun string() {
63-
StringCodecInitializer(true).initialize(context)
62+
fun string(textPlainOnly: Boolean = false) {
63+
StringCodecInitializer(true, textPlainOnly).initialize(context)
6464
}
6565

6666
/**

kofu/src/main/kotlin/org/springframework/fu/kofu/web/WebFluxServerDsl.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ open class WebFluxServerDsl(private val init: WebFluxServerDsl.() -> Unit): Abst
7373
}
7474
engine!!.setPort(port)
7575
if (!codecsConfigured) {
76-
StringCodecInitializer(false).initialize(context)
76+
StringCodecInitializer(false, false).initialize(context)
7777
ResourceCodecInitializer(false).initialize(context)
7878
}
7979
if (context.containsBeanDefinition("webHandler")) {
@@ -218,8 +218,8 @@ open class WebFluxServerDsl(private val init: WebFluxServerDsl.() -> Unit): Abst
218218
/**
219219
* Enable [org.springframework.core.codec.CharSequenceEncoder] and [org.springframework.core.codec.StringDecoder]
220220
*/
221-
fun string() {
222-
StringCodecInitializer(false).initialize(context)
221+
fun string(textPlainOnly: Boolean = false) {
222+
StringCodecInitializer(false, textPlainOnly).initialize(context)
223223
}
224224

225225
/**

0 commit comments

Comments
 (0)