From 58e9266e99c2931b97849feb28a1419636fe6457 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Mon, 2 Sep 2019 13:30:29 +0100 Subject: [PATCH] Add Consumer methods to RSocketRequester Closes gh-23513 --- .../rsocket/DefaultRSocketRequester.java | 7 +++++++ .../rsocket/DefaultRSocketRequesterBuilder.java | 6 ++++++ .../messaging/rsocket/RSocketRequester.java | 17 +++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/DefaultRSocketRequester.java b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/DefaultRSocketRequester.java index d708289755..15e7c5e653 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/DefaultRSocketRequester.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/DefaultRSocketRequester.java @@ -18,6 +18,7 @@ package org.springframework.messaging.rsocket; import java.util.Collections; import java.util.Map; +import java.util.function.Consumer; import io.rsocket.Payload; import io.rsocket.RSocket; @@ -133,6 +134,12 @@ final class DefaultRSocketRequester implements RSocketRequester { return this; } + @Override + public RequestSpec metadata(Consumer configurer) { + configurer.accept(this); + return this; + } + @Override public ResponseSpec data(Object data) { Assert.notNull(data, "'data' must not be null"); diff --git a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/DefaultRSocketRequesterBuilder.java b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/DefaultRSocketRequesterBuilder.java index 4cc8b83afc..7d634b9f82 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/DefaultRSocketRequesterBuilder.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/DefaultRSocketRequesterBuilder.java @@ -135,6 +135,12 @@ final class DefaultRSocketRequesterBuilder implements RSocketRequester.Builder { return this; } + @Override + public RSocketRequester.Builder apply(Consumer configurer) { + configurer.accept(this); + return this; + } + @Override public Mono connectTcp(String host, int port) { return connect(TcpClientTransport.create(host, port)); diff --git a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/RSocketRequester.java b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/RSocketRequester.java index c1235aac36..5dc770ead9 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/rsocket/RSocketRequester.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/rsocket/RSocketRequester.java @@ -197,6 +197,14 @@ public interface RSocketRequester { */ RSocketRequester.Builder rsocketFactory(ClientRSocketFactoryConfigurer configurer); + /** + * Configure this builder through a {@code Consumer}. This enables + * libraries such as Spring Security to provide shortcuts for applying + * a set of related customizations. + * @param configurer the configurer to apply + */ + RSocketRequester.Builder apply(Consumer configurer); + /** * Connect to the server over TCP. * @param host the server host @@ -240,6 +248,15 @@ public interface RSocketRequester { */ RequestSpec metadata(Object metadata, MimeType mimeType); + /** + * Append additional metadata entries through a {@code Consumer}. + * This enables libraries such as Spring Security to provide shortcuts + * for applying a set of customizations. + * @param configurer the configurer to apply + * @throws IllegalArgumentException if not using composite metadata. + */ + RequestSpec metadata(Consumer configurer); + /** * Provide payload data for the request. This can be one of: *