diff --git a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/DefaultMetadataExtractor.java b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/DefaultMetadataExtractor.java similarity index 95% rename from spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/DefaultMetadataExtractor.java rename to spring-messaging/src/main/java/org/springframework/messaging/rsocket/DefaultMetadataExtractor.java index bc008862d1..ada40d92ea 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/DefaultMetadataExtractor.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/DefaultMetadataExtractor.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.messaging.rsocket.annotation.support; +package org.springframework.messaging.rsocket; import java.util.Collections; import java.util.HashMap; @@ -31,7 +31,6 @@ import org.springframework.core.io.buffer.DataBuffer; import org.springframework.core.io.buffer.DataBufferFactory; import org.springframework.core.io.buffer.NettyDataBufferFactory; import org.springframework.lang.Nullable; -import org.springframework.messaging.rsocket.RSocketStrategies; import org.springframework.util.Assert; import org.springframework.util.MimeType; @@ -61,7 +60,7 @@ public class DefaultMetadataExtractor implements MetadataExtractor { Assert.notNull(strategies, "RSocketStrategies is required"); this.rsocketStrategies = strategies; // TODO: remove when rsocket-core API available - metadataToExtract(MessagingRSocket.ROUTING, String.class, ROUTE_KEY); + metadataToExtract(MetadataExtractor.ROUTING, String.class, ROUTE_KEY); } @@ -131,7 +130,7 @@ public class DefaultMetadataExtractor implements MetadataExtractor { @Override public Map extract(Payload payload, MimeType metadataMimeType) { Map result = new HashMap<>(); - if (metadataMimeType.equals(MessagingRSocket.COMPOSITE_METADATA)) { + if (metadataMimeType.equals(COMPOSITE_METADATA)) { for (CompositeMetadata.Entry entry : new CompositeMetadata(payload.metadata(), false)) { processEntry(entry.getContent(), entry.getMimeType(), result); } @@ -149,7 +148,7 @@ public class DefaultMetadataExtractor implements MetadataExtractor { entryProcessor.process(content, result); return; } - if (MessagingRSocket.ROUTING.toString().equals(mimeType)) { + if (MetadataExtractor.ROUTING.toString().equals(mimeType)) { // TODO: use rsocket-core API when available } } diff --git a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/MetadataExtractor.java b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/MetadataExtractor.java similarity index 83% rename from spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/MetadataExtractor.java rename to spring-messaging/src/main/java/org/springframework/messaging/rsocket/MetadataExtractor.java index ad48da526d..580b702da5 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/MetadataExtractor.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/MetadataExtractor.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.messaging.rsocket.annotation.support; +package org.springframework.messaging.rsocket; import java.util.Map; @@ -38,6 +38,16 @@ public interface MetadataExtractor { */ String ROUTE_KEY = "route"; + /** + * Constant for mime type {@code message/x.rsocket.composite-metadata.v0}. + */ + MimeType COMPOSITE_METADATA = new MimeType("message", "x.rsocket.composite-metadata.v0"); + + /** + * Constant for mime type {@code message/x.rsocket.routing.v0}. + */ + MimeType ROUTING = new MimeType("message", "x.rsocket.routing.v0"); + /** * Extract a map of values from the given {@link Payload} metadata. diff --git a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/ClientResponderFactory.java b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/ClientResponderFactory.java index ba76c2913c..14053dfbae 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/ClientResponderFactory.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/ClientResponderFactory.java @@ -22,6 +22,7 @@ import io.rsocket.RSocketFactory; import org.springframework.messaging.handler.invocation.reactive.ArgumentResolverConfigurer; import org.springframework.messaging.handler.invocation.reactive.ReturnValueHandlerConfigurer; +import org.springframework.messaging.rsocket.MetadataExtractor; import org.springframework.messaging.rsocket.RSocketStrategies; import org.springframework.util.RouteMatcher; diff --git a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/DefaultClientResponderFactory.java b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/DefaultClientResponderFactory.java index db412dfc2e..f273f883ad 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/DefaultClientResponderFactory.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/DefaultClientResponderFactory.java @@ -24,6 +24,7 @@ import io.rsocket.RSocketFactory; import org.springframework.lang.Nullable; import org.springframework.messaging.handler.invocation.reactive.ArgumentResolverConfigurer; import org.springframework.messaging.handler.invocation.reactive.ReturnValueHandlerConfigurer; +import org.springframework.messaging.rsocket.MetadataExtractor; import org.springframework.messaging.rsocket.RSocketStrategies; import org.springframework.util.Assert; import org.springframework.util.RouteMatcher; diff --git a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/MessagingRSocket.java b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/MessagingRSocket.java index 800f86298f..1f5f7bd136 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/MessagingRSocket.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/MessagingRSocket.java @@ -40,6 +40,7 @@ import org.springframework.messaging.MessageHeaders; import org.springframework.messaging.ReactiveMessageHandler; import org.springframework.messaging.handler.DestinationPatternsMessageCondition; import org.springframework.messaging.handler.invocation.reactive.HandlerMethodReturnValueHandler; +import org.springframework.messaging.rsocket.MetadataExtractor; import org.springframework.messaging.rsocket.PayloadUtils; import org.springframework.messaging.rsocket.RSocketRequester; import org.springframework.messaging.support.MessageBuilder; @@ -60,11 +61,6 @@ import org.springframework.util.RouteMatcher; */ class MessagingRSocket extends AbstractRSocket { - static final MimeType COMPOSITE_METADATA = new MimeType("message", "x.rsocket.composite-metadata.v0"); - - static final MimeType ROUTING = new MimeType("message", "x.rsocket.routing.v0"); - - private final MimeType dataMimeType; private final MimeType metadataMimeType; diff --git a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/RSocketMessageHandler.java b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/RSocketMessageHandler.java index e8d79e6402..dd9678272b 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/RSocketMessageHandler.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/annotation/support/RSocketMessageHandler.java @@ -40,6 +40,8 @@ import org.springframework.messaging.handler.DestinationPatternsMessageCondition import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.messaging.handler.annotation.reactive.MessageMappingMessageHandler; import org.springframework.messaging.handler.invocation.reactive.HandlerMethodReturnValueHandler; +import org.springframework.messaging.rsocket.DefaultMetadataExtractor; +import org.springframework.messaging.rsocket.MetadataExtractor; import org.springframework.messaging.rsocket.RSocketRequester; import org.springframework.messaging.rsocket.RSocketStrategies; import org.springframework.messaging.rsocket.annotation.ConnectMapping; @@ -74,7 +76,7 @@ public class RSocketMessageHandler extends MessageMappingMessageHandler { @Nullable private MimeType defaultDataMimeType; - private MimeType defaultMetadataMimeType = MessagingRSocket.COMPOSITE_METADATA; + private MimeType defaultMetadataMimeType = MetadataExtractor.COMPOSITE_METADATA; /** diff --git a/spring-messaging/src/test/java/org/springframework/messaging/rsocket/annotation/support/DefaultMetadataExtractorTests.java b/spring-messaging/src/test/java/org/springframework/messaging/rsocket/DefaultMetadataExtractorTests.java similarity index 90% rename from spring-messaging/src/test/java/org/springframework/messaging/rsocket/annotation/support/DefaultMetadataExtractorTests.java rename to spring-messaging/src/test/java/org/springframework/messaging/rsocket/DefaultMetadataExtractorTests.java index 44e13c69c6..8e48972134 100644 --- a/spring-messaging/src/test/java/org/springframework/messaging/rsocket/annotation/support/DefaultMetadataExtractorTests.java +++ b/spring-messaging/src/test/java/org/springframework/messaging/rsocket/DefaultMetadataExtractorTests.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.springframework.messaging.rsocket.annotation.support; +package org.springframework.messaging.rsocket; import java.time.Duration; import java.util.Map; @@ -31,16 +31,13 @@ import reactor.core.publisher.Mono; import org.springframework.core.codec.CharSequenceEncoder; import org.springframework.core.codec.StringDecoder; import org.springframework.core.io.buffer.DataBufferFactory; -import org.springframework.messaging.rsocket.LeakAwareNettyDataBufferFactory; -import org.springframework.messaging.rsocket.RSocketRequester; -import org.springframework.messaging.rsocket.RSocketStrategies; import org.springframework.util.Assert; import org.springframework.util.MimeType; import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.messaging.rsocket.annotation.support.MessagingRSocket.COMPOSITE_METADATA; -import static org.springframework.messaging.rsocket.annotation.support.MessagingRSocket.ROUTING; -import static org.springframework.messaging.rsocket.annotation.support.MetadataExtractor.ROUTE_KEY; +import static org.springframework.messaging.rsocket.MetadataExtractor.COMPOSITE_METADATA; +import static org.springframework.messaging.rsocket.MetadataExtractor.ROUTE_KEY; +import static org.springframework.messaging.rsocket.MetadataExtractor.ROUTING; import static org.springframework.util.MimeTypeUtils.TEXT_HTML; import static org.springframework.util.MimeTypeUtils.TEXT_PLAIN; import static org.springframework.util.MimeTypeUtils.TEXT_XML;