@@ -49,8 +49,10 @@ final class DefaultRSocketGraphQlClientBuilder
4949
5050 private final RSocketRequester .Builder requesterBuilder ;
5151
52+ @ Nullable
5253 private Publisher <List <LoadbalanceTarget >> targetPublisher ;
5354
55+ @ Nullable
5456 private LoadbalanceStrategy loadbalanceStrategy ;
5557
5658 @ Nullable
@@ -95,8 +97,17 @@ public DefaultRSocketGraphQlClientBuilder webSocket(URI uri) {
9597 }
9698
9799 @ Override
98- public DefaultRSocketGraphQlClientBuilder clientTransport (ClientTransport clientTransport ) {
99- this .clientTransport = clientTransport ;
100+ public DefaultRSocketGraphQlClientBuilder clientTransport (ClientTransport transport ) {
101+ this .clientTransport = transport ;
102+ return this ;
103+ }
104+
105+ @ Override
106+ public DefaultRSocketGraphQlClientBuilder clientTransports (
107+ Publisher <List <LoadbalanceTarget >> publisher , LoadbalanceStrategy strategy ) {
108+
109+ this .targetPublisher = publisher ;
110+ this .loadbalanceStrategy = strategy ;
100111 return this ;
101112 }
102113
@@ -114,15 +125,8 @@ public DefaultRSocketGraphQlClientBuilder route(String route) {
114125 }
115126
116127 @ Override
117- public DefaultRSocketGraphQlClientBuilder rsocketRequester (Consumer <RSocketRequester .Builder > requesterConsumer ) {
118- requesterConsumer .accept (this .requesterBuilder );
119- return this ;
120- }
121-
122- @ Override
123- public DefaultRSocketGraphQlClientBuilder transports (Publisher <List <LoadbalanceTarget >> targetPublisher , LoadbalanceStrategy loadbalanceStrategy ) {
124- this .targetPublisher = targetPublisher ;
125- this .loadbalanceStrategy = loadbalanceStrategy ;
128+ public DefaultRSocketGraphQlClientBuilder rsocketRequester (Consumer <RSocketRequester .Builder > consumer ) {
129+ consumer .accept (this .requesterBuilder );
126130 return this ;
127131 }
128132
@@ -137,13 +141,18 @@ public RSocketGraphQlClient build() {
137141
138142 RSocketRequester requester ;
139143
140- if (this .targetPublisher != null && this .loadbalanceStrategy != null ) {
141- requester = this .requesterBuilder .transports (this .targetPublisher , this .loadbalanceStrategy );
142- } else {
143- Assert .state (this .clientTransport != null , "Neither WebSocket nor TCP networking configured" );
144+ if (this .clientTransport != null ) {
144145 requester = this .requesterBuilder .transport (this .clientTransport );
145146 }
146- RSocketGraphQlTransport graphQlTransport = new RSocketGraphQlTransport (this .route , requester , getJsonDecoder ());
147+ else if (this .targetPublisher != null && this .loadbalanceStrategy != null ) {
148+ requester = this .requesterBuilder .transports (this .targetPublisher , this .loadbalanceStrategy );
149+ }
150+ else {
151+ throw new IllegalStateException ("Neither ClientTransport, nor Loadbalance targets and strategy" );
152+ }
153+
154+ RSocketGraphQlTransport graphQlTransport =
155+ new RSocketGraphQlTransport (this .route , requester , getJsonDecoder ());
147156
148157 return new DefaultRSocketGraphQlClient (
149158 super .buildGraphQlClient (graphQlTransport ), requester ,
@@ -161,19 +170,24 @@ private static class DefaultRSocketGraphQlClient extends AbstractDelegatingGraph
161170
162171 private final RSocketRequester .Builder requesterBuilder ;
163172
173+ @ Nullable
164174 private final ClientTransport clientTransport ;
165175
176+ @ Nullable
166177 private final Publisher <List <LoadbalanceTarget >> targetPublisher ;
167178
179+ @ Nullable
168180 private final LoadbalanceStrategy loadbalanceStrategy ;
169181
170182 private final String route ;
171183
172184 private final Consumer <AbstractGraphQlClientBuilder <?>> builderInitializer ;
173185
174186 DefaultRSocketGraphQlClient (
175- GraphQlClient graphQlClient , RSocketRequester requester , RSocketRequester .Builder requesterBuilder ,
176- ClientTransport clientTransport , Publisher <List <LoadbalanceTarget >> targetPublisher , LoadbalanceStrategy loadbalanceStrategy ,
187+ GraphQlClient graphQlClient ,
188+ RSocketRequester requester , RSocketRequester .Builder requesterBuilder ,
189+ @ Nullable ClientTransport clientTransport ,
190+ @ Nullable Publisher <List <LoadbalanceTarget >> targetPublisher , @ Nullable LoadbalanceStrategy strategy ,
177191 String route , Consumer <AbstractGraphQlClientBuilder <?>> builderInitializer ) {
178192
179193 super (graphQlClient );
@@ -182,7 +196,7 @@ private static class DefaultRSocketGraphQlClient extends AbstractDelegatingGraph
182196 this .requesterBuilder = requesterBuilder ;
183197 this .clientTransport = clientTransport ;
184198 this .targetPublisher = targetPublisher ;
185- this .loadbalanceStrategy = loadbalanceStrategy ;
199+ this .loadbalanceStrategy = strategy ;
186200 this .route = route ;
187201 this .builderInitializer = builderInitializer ;
188202 }
@@ -202,8 +216,12 @@ public Mono<Void> stop() {
202216 @ Override
203217 public RSocketGraphQlClient .Builder <?> mutate () {
204218 DefaultRSocketGraphQlClientBuilder builder = new DefaultRSocketGraphQlClientBuilder (this .requesterBuilder );
205- builder .clientTransport (this .clientTransport );
206- builder .transports (this .targetPublisher , this .loadbalanceStrategy );
219+ if (this .clientTransport != null ) {
220+ builder .clientTransport (this .clientTransport );
221+ }
222+ if (this .targetPublisher != null && this .loadbalanceStrategy != null ) {
223+ builder .clientTransports (this .targetPublisher , this .loadbalanceStrategy );
224+ }
207225 builder .route (this .route );
208226 this .builderInitializer .accept (builder );
209227 return builder ;
0 commit comments