@@ -49,8 +49,10 @@ final class DefaultRSocketGraphQlClientBuilder
49
49
50
50
private final RSocketRequester .Builder requesterBuilder ;
51
51
52
+ @ Nullable
52
53
private Publisher <List <LoadbalanceTarget >> targetPublisher ;
53
54
55
+ @ Nullable
54
56
private LoadbalanceStrategy loadbalanceStrategy ;
55
57
56
58
@ Nullable
@@ -95,8 +97,17 @@ public DefaultRSocketGraphQlClientBuilder webSocket(URI uri) {
95
97
}
96
98
97
99
@ 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 ;
100
111
return this ;
101
112
}
102
113
@@ -114,15 +125,8 @@ public DefaultRSocketGraphQlClientBuilder route(String route) {
114
125
}
115
126
116
127
@ 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 );
126
130
return this ;
127
131
}
128
132
@@ -137,13 +141,18 @@ public RSocketGraphQlClient build() {
137
141
138
142
RSocketRequester requester ;
139
143
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 ) {
144
145
requester = this .requesterBuilder .transport (this .clientTransport );
145
146
}
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 ());
147
156
148
157
return new DefaultRSocketGraphQlClient (
149
158
super .buildGraphQlClient (graphQlTransport ), requester ,
@@ -161,19 +170,24 @@ private static class DefaultRSocketGraphQlClient extends AbstractDelegatingGraph
161
170
162
171
private final RSocketRequester .Builder requesterBuilder ;
163
172
173
+ @ Nullable
164
174
private final ClientTransport clientTransport ;
165
175
176
+ @ Nullable
166
177
private final Publisher <List <LoadbalanceTarget >> targetPublisher ;
167
178
179
+ @ Nullable
168
180
private final LoadbalanceStrategy loadbalanceStrategy ;
169
181
170
182
private final String route ;
171
183
172
184
private final Consumer <AbstractGraphQlClientBuilder <?>> builderInitializer ;
173
185
174
186
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 ,
177
191
String route , Consumer <AbstractGraphQlClientBuilder <?>> builderInitializer ) {
178
192
179
193
super (graphQlClient );
@@ -182,7 +196,7 @@ private static class DefaultRSocketGraphQlClient extends AbstractDelegatingGraph
182
196
this .requesterBuilder = requesterBuilder ;
183
197
this .clientTransport = clientTransport ;
184
198
this .targetPublisher = targetPublisher ;
185
- this .loadbalanceStrategy = loadbalanceStrategy ;
199
+ this .loadbalanceStrategy = strategy ;
186
200
this .route = route ;
187
201
this .builderInitializer = builderInitializer ;
188
202
}
@@ -202,8 +216,12 @@ public Mono<Void> stop() {
202
216
@ Override
203
217
public RSocketGraphQlClient .Builder <?> mutate () {
204
218
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
+ }
207
225
builder .route (this .route );
208
226
this .builderInitializer .accept (builder );
209
227
return builder ;
0 commit comments