Skip to content

Commit c76370d

Browse files
committed
Polish
1 parent dc0c730 commit c76370d

File tree

11 files changed

+192
-166
lines changed

11 files changed

+192
-166
lines changed

spring-messaging/src/main/java/org/springframework/messaging/rsocket/DefaultMetadataExtractor.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,11 @@
3838
import org.springframework.util.MimeType;
3939

4040
/**
41-
* Default {@link MetadataExtractor} implementation that relies on {@link Decoder}s
42-
* to deserialize the content of metadata entries.
43-
*
41+
* Default {@link MetadataExtractor} implementation that relies on
42+
* {@link Decoder}s to deserialize the content of metadata entries.
4443
* <p>By default only {@code "message/x.rsocket.routing.v0""} is extracted and
45-
* saved under {@link MetadataExtractor#ROUTE_KEY}. Use the
46-
* {@code metadataToExtract} methods to specify other metadata mime types of
47-
* interest to extract.
44+
* saved under {@link MetadataExtractor#ROUTE_KEY}. Use {@code metadataToExtract}
45+
* methods to specify other metadata mime types of interest to extract.
4846
*
4947
* @author Rossen Stoyanchev
5048
* @since 5.2

spring-messaging/src/main/java/org/springframework/messaging/rsocket/DefaultRSocketRequester.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,13 @@
4949
import org.springframework.util.ObjectUtils;
5050

5151
/**
52-
* Default, package-private {@link RSocketRequester} implementation.
52+
* Default implementation of {@link RSocketRequester}.
5353
*
5454
* @author Rossen Stoyanchev
5555
* @since 5.2
5656
*/
5757
final class DefaultRSocketRequester implements RSocketRequester {
5858

59-
static final MimeType COMPOSITE_METADATA = new MimeType("message", "x.rsocket.composite-metadata.v0");
60-
61-
static final MimeType ROUTING = new MimeType("message", "x.rsocket.routing.v0");
62-
63-
6459
/** For route variable replacement. */
6560
private static final Pattern VARS_PATTERN = Pattern.compile("\\{([^/]+?)\\}");
6661

@@ -114,7 +109,7 @@ public MimeType metadataMimeType() {
114109
public RequestSpec route(String route, Object... vars) {
115110
Assert.notNull(route, "'route' is required");
116111
route = expand(route, vars);
117-
return new DefaultRequestSpec(route, metadataMimeType().equals(COMPOSITE_METADATA) ? ROUTING : null);
112+
return new DefaultRequestSpec(route, isCompositeMetadata() ? MetadataExtractor.ROUTING : null);
118113
}
119114

120115
private static String expand(String route, Object... vars) {
@@ -134,6 +129,10 @@ private static String expand(String route, Object... vars) {
134129
return sb.toString();
135130
}
136131

132+
private boolean isCompositeMetadata() {
133+
return metadataMimeType().equals(MetadataExtractor.COMPOSITE_METADATA);
134+
}
135+
137136
@Override
138137
public RequestSpec metadata(Object metadata, @Nullable MimeType mimeType) {
139138
return new DefaultRequestSpec(metadata, mimeType);
@@ -154,16 +153,12 @@ private class DefaultRequestSpec implements RequestSpec {
154153
private final Map<Object, MimeType> metadata = new LinkedHashMap<>(4);
155154

156155

157-
public DefaultRequestSpec(Object metadata, @Nullable MimeType mimeType) {
156+
DefaultRequestSpec(Object metadata, @Nullable MimeType mimeType) {
158157
mimeType = (mimeType == null && !isCompositeMetadata() ? metadataMimeType() : mimeType);
159158
Assert.notNull(mimeType, "MimeType is required for composite metadata");
160159
metadata(metadata, mimeType);
161160
}
162161

163-
private boolean isCompositeMetadata() {
164-
return metadataMimeType().equals(COMPOSITE_METADATA);
165-
}
166-
167162
@Override
168163
public RequestSpec metadata(Object metadata, MimeType mimeType) {
169164
Assert.notNull(metadata, "Metadata content is required");
@@ -184,22 +179,27 @@ public ResponseSpec data(Object data) {
184179
public ResponseSpec data(Object producer, Class<?> elementClass) {
185180
Assert.notNull(producer, "'producer' must not be null");
186181
Assert.notNull(elementClass, "'elementClass' must not be null");
187-
ReactiveAdapter adapter = strategies.reactiveAdapterRegistry().getAdapter(producer.getClass());
182+
ReactiveAdapter adapter = getAdapter(producer.getClass());
188183
Assert.notNull(adapter, "'producer' type is unknown to ReactiveAdapterRegistry");
189184
return toResponseSpec(adapter.toPublisher(producer), ResolvableType.forClass(elementClass));
190185
}
191186

187+
@Nullable
188+
private ReactiveAdapter getAdapter(Class<?> aClass) {
189+
return strategies.reactiveAdapterRegistry().getAdapter(aClass);
190+
}
191+
192192
@Override
193193
public ResponseSpec data(Object producer, ParameterizedTypeReference<?> elementTypeRef) {
194194
Assert.notNull(producer, "'producer' must not be null");
195195
Assert.notNull(elementTypeRef, "'elementTypeRef' must not be null");
196-
ReactiveAdapter adapter = strategies.reactiveAdapterRegistry().getAdapter(producer.getClass());
196+
ReactiveAdapter adapter = getAdapter(producer.getClass());
197197
Assert.notNull(adapter, "'producer' type is unknown to ReactiveAdapterRegistry");
198198
return toResponseSpec(adapter.toPublisher(producer), ResolvableType.forType(elementTypeRef));
199199
}
200200

201201
private ResponseSpec toResponseSpec(Object input, ResolvableType elementType) {
202-
ReactiveAdapter adapter = strategies.reactiveAdapterRegistry().getAdapter(input.getClass());
202+
ReactiveAdapter adapter = getAdapter(input.getClass());
203203
Publisher<?> publisher;
204204
if (input instanceof Publisher) {
205205
publisher = (Publisher<?>) input;

spring-messaging/src/main/java/org/springframework/messaging/rsocket/DefaultRSocketRequesterBuilder.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ final class DefaultRSocketRequesterBuilder implements RSocketRequester.Builder {
4848
@Nullable
4949
private MimeType dataMimeType;
5050

51-
private MimeType metadataMimeType = DefaultRSocketRequester.COMPOSITE_METADATA;
51+
private MimeType metadataMimeType = MetadataExtractor.COMPOSITE_METADATA;
5252

5353
@Nullable
5454
private RSocketStrategies strategies;
@@ -109,18 +109,18 @@ private Mono<RSocketRequester> doConnect(ClientTransport transport) {
109109
Assert.isTrue(!rsocketStrategies.encoders().isEmpty(), "No encoders");
110110
Assert.isTrue(!rsocketStrategies.decoders().isEmpty(), "No decoders");
111111

112-
RSocketFactory.ClientRSocketFactory rsocketFactory = RSocketFactory.connect();
113-
MimeType dataMimeType = getDataMimeType(rsocketStrategies);
114-
rsocketFactory.dataMimeType(dataMimeType.toString());
115-
rsocketFactory.metadataMimeType(this.metadataMimeType.toString());
112+
RSocketFactory.ClientRSocketFactory factory = RSocketFactory.connect();
113+
this.rsocketConfigurers.forEach(configurer -> configurer.configure(factory));
116114

117115
if (rsocketStrategies.dataBufferFactory() instanceof NettyDataBufferFactory) {
118-
rsocketFactory.frameDecoder(PayloadDecoder.ZERO_COPY);
116+
factory.frameDecoder(PayloadDecoder.ZERO_COPY);
119117
}
120118

121-
this.rsocketConfigurers.forEach(configurer -> configurer.configure(rsocketFactory));
119+
MimeType dataMimeType = getDataMimeType(rsocketStrategies);
120+
factory.dataMimeType(dataMimeType.toString());
121+
factory.metadataMimeType(this.metadataMimeType.toString());
122122

123-
return rsocketFactory.transport(transport)
123+
return factory.transport(transport)
124124
.start()
125125
.map(rsocket -> new DefaultRSocketRequester(
126126
rsocket, dataMimeType, this.metadataMimeType, rsocketStrategies));

spring-messaging/src/main/java/org/springframework/messaging/rsocket/DefaultRSocketStrategies.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
import org.springframework.util.SimpleRouteMatcher;
4444

4545
/**
46-
* Default, package-private {@link RSocketStrategies} implementation.
46+
* Default implementation of {@link RSocketStrategies}.
4747
*
4848
* @author Rossen Stoyanchev
4949
* @since 5.2
@@ -108,7 +108,7 @@ public ReactiveAdapterRegistry reactiveAdapterRegistry() {
108108

109109

110110
/**
111-
* Default RSocketStrategies.Builder implementation.
111+
* Default implementation of {@link RSocketStrategies.Builder}.
112112
*/
113113
static class DefaultRSocketStrategiesBuilder implements RSocketStrategies.Builder {
114114

spring-messaging/src/main/java/org/springframework/messaging/rsocket/MetadataExtractor.java

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@
2222
import org.springframework.util.MimeType;
2323

2424
/**
25-
* Strategy to extract a map of values from the metadata of a {@link Payload}.
26-
* This includes decoding metadata entries based on their mime type and
27-
* assigning a name to the decoded value. The resulting name-value pairs can
28-
* be added to the headers of a
25+
* Strategy to extract a map of value(s) from {@link Payload} metadata, which
26+
* could be composite metadata with multiple entries. Each metadata entry
27+
* is decoded based on its {@code MimeType} and a name is assigned to the decoded
28+
* value. The resulting name-value pairs can be added to the headers of a
2929
* {@link org.springframework.messaging.Message Message}.
3030
*
3131
* @author Rossen Stoyanchev
@@ -39,26 +39,22 @@ public interface MetadataExtractor {
3939
String ROUTE_KEY = "route";
4040

4141
/**
42-
* Constant for mime type {@code message/x.rsocket.composite-metadata.v0}.
42+
* Constant MimeType {@code "message/x.rsocket.composite-metadata.v0"}.
4343
*/
4444
MimeType COMPOSITE_METADATA = new MimeType("message", "x.rsocket.composite-metadata.v0");
4545

4646
/**
47-
* Constant for mime type {@code message/x.rsocket.routing.v0}.
47+
* Constant for MimeType {@code "message/x.rsocket.routing.v0"}.
4848
*/
4949
MimeType ROUTING = new MimeType("message", "x.rsocket.routing.v0");
5050

5151

5252
/**
5353
* Extract a map of values from the given {@link Payload} metadata.
54-
* <p>Metadata may be composite and consist of multiple entries
55-
* Implementations are free to extract any number of name-value pairs per
56-
* metadata entry. The Payload "route" should be saved under the
57-
* {@link #ROUTE_KEY}.
54+
* The Payload "route", if present, should be saved under {@link #ROUTE_KEY}.
5855
* @param payload the payload whose metadata should be read
59-
* @param metadataMimeType the mime type of the metadata; this is what was
60-
* specified by the client at the start of the RSocket connection.
61-
* @return a map of 0 or more decoded metadata values with assigned names
56+
* @param metadataMimeType the metadata MimeType for the connection.
57+
* @return name values pairs extracted from the metadata
6258
*/
6359
Map<String, Object> extract(Payload payload, MimeType metadataMimeType);
6460

0 commit comments

Comments
 (0)