From 71881f5e476491cfb392dd6326776c30d4a39c2e Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Wed, 9 Mar 2022 08:46:45 +0000 Subject: [PATCH] Expose convenience String url methods See gh-317 --- .../test/tester/DefaultWebSocketGraphQlTester.java | 8 ++++++++ .../test/tester/WebSocketGraphQlTester.java | 9 +++++++++ .../client/DefaultWebSocketGraphQlClient.java | 14 ++++++++++++-- .../graphql/client/WebSocketGraphQlClient.java | 9 +++++++++ 4 files changed, 38 insertions(+), 2 deletions(-) diff --git a/spring-graphql-test/src/main/java/org/springframework/graphql/test/tester/DefaultWebSocketGraphQlTester.java b/spring-graphql-test/src/main/java/org/springframework/graphql/test/tester/DefaultWebSocketGraphQlTester.java index d5dbd08d..a388897d 100644 --- a/spring-graphql-test/src/main/java/org/springframework/graphql/test/tester/DefaultWebSocketGraphQlTester.java +++ b/spring-graphql-test/src/main/java/org/springframework/graphql/test/tester/DefaultWebSocketGraphQlTester.java @@ -83,6 +83,14 @@ final class DefaultWebSocketGraphQlTester extends AbstractDelegatingGraphQlTeste private final WebSocketGraphQlClient.Builder graphQlClientBuilder; + /** + * Constructor to start via {@link WebSocketGraphQlTester#builder(String, WebSocketClient)}. + */ + Builder(String url, WebSocketClient webSocketClient) { + Assert.notNull(webSocketClient, "WebSocketClient is required"); + this.graphQlClientBuilder = WebSocketGraphQlClient.builder(url, webSocketClient); + } + /** * Constructor to start via {@link WebSocketGraphQlTester#builder(URI, WebSocketClient)}. */ diff --git a/spring-graphql-test/src/main/java/org/springframework/graphql/test/tester/WebSocketGraphQlTester.java b/spring-graphql-test/src/main/java/org/springframework/graphql/test/tester/WebSocketGraphQlTester.java index e4e8a1b3..3671b55a 100644 --- a/spring-graphql-test/src/main/java/org/springframework/graphql/test/tester/WebSocketGraphQlTester.java +++ b/spring-graphql-test/src/main/java/org/springframework/graphql/test/tester/WebSocketGraphQlTester.java @@ -56,6 +56,15 @@ public interface WebSocketGraphQlTester extends WebGraphQlTester { return builder(url, webSocketClient).build(); } + /** + * Return a builder for a {@link WebSocketGraphQlClient}. + * @param url the GraphQL endpoint URL + * @param webSocketClient the underlying transport client to use + */ + static WebSocketGraphQlTester.Builder builder(String url, WebSocketClient webSocketClient) { + return new DefaultWebSocketGraphQlTester.Builder(url, webSocketClient); + } + /** * Return a builder for a {@link WebSocketGraphQlClient}. * @param url the GraphQL endpoint URL diff --git a/spring-graphql/src/main/java/org/springframework/graphql/client/DefaultWebSocketGraphQlClient.java b/spring-graphql/src/main/java/org/springframework/graphql/client/DefaultWebSocketGraphQlClient.java index 9bc1c44a..41dcf115 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/client/DefaultWebSocketGraphQlClient.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/client/DefaultWebSocketGraphQlClient.java @@ -89,6 +89,13 @@ final class DefaultWebSocketGraphQlClient extends AbstractDelegatingGraphQlClien private final CodecConfigurer codecConfigurer; + /** + * Constructor to start via {@link WebSocketGraphQlClient#builder(String, WebSocketClient)}. + */ + Builder(String url, WebSocketClient client) { + this(toURI(url), client); + } + /** * Constructor to start via {@link WebSocketGraphQlClient#builder(URI, WebSocketClient)}. */ @@ -111,8 +118,7 @@ final class DefaultWebSocketGraphQlClient extends AbstractDelegatingGraphQlClien @Override public Builder url(String url) { - url(new DefaultUriBuilderFactory().uriString(url).build()); - return this; + return url(toURI(url)); } @Override @@ -121,6 +127,10 @@ final class DefaultWebSocketGraphQlClient extends AbstractDelegatingGraphQlClien return this; } + private static URI toURI(String url) { + return new DefaultUriBuilderFactory().uriString(url).build(); + } + @Override public Builder header(String name, String... values) { this.headers.put(name, Arrays.asList(values)); diff --git a/spring-graphql/src/main/java/org/springframework/graphql/client/WebSocketGraphQlClient.java b/spring-graphql/src/main/java/org/springframework/graphql/client/WebSocketGraphQlClient.java index c229aae3..109014af 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/client/WebSocketGraphQlClient.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/client/WebSocketGraphQlClient.java @@ -64,6 +64,15 @@ public interface WebSocketGraphQlClient extends WebGraphQlClient { return builder(url, webSocketClient).build(); } + /** + * Return a builder for a {@link WebSocketGraphQlClient}. + * @param url the GraphQL endpoint URL + * @param webSocketClient the underlying transport client to use + */ + static Builder builder(String url, WebSocketClient webSocketClient) { + return new DefaultWebSocketGraphQlClient.Builder(url, webSocketClient); + } + /** * Return a builder for a {@link WebSocketGraphQlClient}. * @param url the GraphQL endpoint URL