Skip to content

Commit 45507c4

Browse files
committed
Configure String codecs in RSocket strategies
Closes gh-16924
1 parent b2e395d commit 45507c4

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/rsocket/RSocketStrategiesAutoConfiguration.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@
3333
import org.springframework.context.annotation.Configuration;
3434
import org.springframework.core.ReactiveAdapterRegistry;
3535
import org.springframework.core.annotation.Order;
36+
import org.springframework.core.codec.CharSequenceEncoder;
37+
import org.springframework.core.codec.StringDecoder;
3638
import org.springframework.core.io.buffer.NettyDataBufferFactory;
3739
import org.springframework.http.MediaType;
3840
import org.springframework.http.codec.cbor.Jackson2CborDecoder;
@@ -62,6 +64,8 @@ public RSocketStrategies rSocketStrategies(
6264
builder.reactiveAdapterStrategy(ReactiveAdapterRegistry.getSharedInstance());
6365
customizers.orderedStream()
6466
.forEach((customizer) -> customizer.customize(builder));
67+
builder.decoder(StringDecoder.textPlainOnly());
68+
builder.encoder(CharSequenceEncoder.textPlainOnly());
6569
builder.dataBufferFactory(
6670
new NettyDataBufferFactory(PooledByteBufAllocator.DEFAULT));
6771
return builder.build();

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/rsocket/RSocketStrategiesAutoConfigurationTests.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2525
import org.springframework.context.annotation.Bean;
2626
import org.springframework.context.annotation.Configuration;
27+
import org.springframework.core.codec.ByteArrayDecoder;
28+
import org.springframework.core.codec.ByteArrayEncoder;
2729
import org.springframework.core.codec.CharSequenceEncoder;
2830
import org.springframework.core.codec.StringDecoder;
2931
import org.springframework.http.codec.cbor.Jackson2CborDecoder;
@@ -51,16 +53,19 @@ public void shouldCreateDefaultBeans() {
5153
this.contextRunner.run((context) -> {
5254
assertThat(context).getBeans(RSocketStrategies.class).hasSize(1);
5355
RSocketStrategies strategies = context.getBean(RSocketStrategies.class);
54-
assertThat(strategies.decoders()).hasSize(2);
56+
assertThat(strategies.decoders()).hasSize(3);
5557
assertThat(strategies.decoders().get(0))
5658
.isInstanceOf(Jackson2CborDecoder.class);
5759
assertThat(strategies.decoders().get(1))
5860
.isInstanceOf(Jackson2JsonDecoder.class);
59-
assertThat(strategies.encoders()).hasSize(2);
61+
assertThat(strategies.decoders().get(2)).isInstanceOf(StringDecoder.class);
62+
assertThat(strategies.encoders()).hasSize(3);
6063
assertThat(strategies.encoders().get(0))
6164
.isInstanceOf(Jackson2CborEncoder.class);
6265
assertThat(strategies.encoders().get(1))
6366
.isInstanceOf(Jackson2JsonEncoder.class);
67+
assertThat(strategies.encoders().get(2))
68+
.isInstanceOf(CharSequenceEncoder.class);
6469
});
6570
}
6671

@@ -80,10 +85,10 @@ public void shouldUseStrategiesCustomizer() {
8085
assertThat(context).getBeans(RSocketStrategies.class).hasSize(1);
8186
RSocketStrategies strategies = context
8287
.getBean(RSocketStrategies.class);
83-
assertThat(strategies.decoders()).hasSize(3)
84-
.hasAtLeastOneElementOfType(StringDecoder.class);
85-
assertThat(strategies.encoders()).hasSize(3)
86-
.hasAtLeastOneElementOfType(CharSequenceEncoder.class);
88+
assertThat(strategies.decoders()).hasSize(4)
89+
.hasAtLeastOneElementOfType(ByteArrayDecoder.class);
90+
assertThat(strategies.encoders()).hasSize(4)
91+
.hasAtLeastOneElementOfType(ByteArrayEncoder.class);
8792
});
8893
}
8994

@@ -119,8 +124,8 @@ static class StrategiesCustomizer {
119124

120125
@Bean
121126
public RSocketStrategiesCustomizer myCustomizer() {
122-
return (strategies) -> strategies.encoder(CharSequenceEncoder.textPlainOnly())
123-
.decoder(StringDecoder.textPlainOnly());
127+
return (strategies) -> strategies.encoder(new ByteArrayEncoder())
128+
.decoder(new ByteArrayDecoder());
124129
}
125130

126131
}

0 commit comments

Comments
 (0)