25
25
import feign .querymap .FieldQueryMapEncoder ;
26
26
import feign .vertx .VertxDelegatingContract ;
27
27
import feign .vertx .VertxHttpClient ;
28
- import io .vertx .core .Vertx ;
29
- import io .vertx .core .http .HttpClient ;
30
- import io .vertx .core .http .HttpClientOptions ;
31
- import io .vertx .core .http .HttpClientRequest ;
28
+ import io .vertx .core .buffer .Buffer ;
29
+ import io .vertx .ext .web .client .HttpRequest ;
30
+ import io .vertx .ext .web .client .WebClient ;
32
31
import java .lang .reflect .InvocationHandler ;
33
32
import java .lang .reflect .Method ;
34
33
import java .lang .reflect .Proxy ;
@@ -92,7 +91,7 @@ public <T> T newInstance(final Target<T> target) {
92
91
93
92
/** VertxFeign builder. */
94
93
public static final class Builder extends Feign .Builder {
95
- private Vertx vertx ;
94
+ private WebClient webClient ;
96
95
private final List <RequestInterceptor > requestInterceptors = new ArrayList <>();
97
96
private Logger .Level logLevel = Logger .Level .NONE ;
98
97
private Contract contract = new VertxDelegatingContract (new Contract .Default ());
@@ -103,10 +102,9 @@ public static final class Builder extends Feign.Builder {
103
102
private QueryMapEncoder queryMapEncoder = new FieldQueryMapEncoder ();
104
103
private List <Capability > capabilities = new ArrayList <>();
105
104
private ErrorDecoder errorDecoder = new ErrorDecoder .Default ();
106
- private HttpClientOptions options = new HttpClientOptions ();
107
105
private long timeout = -1 ;
108
106
private boolean decode404 ;
109
- private UnaryOperator <HttpClientRequest > requestPreProcessor = UnaryOperator .identity ();
107
+ private UnaryOperator <HttpRequest < Buffer > > requestPreProcessor = UnaryOperator .identity ();
110
108
111
109
/** Unsupported operation. */
112
110
@ Override
@@ -122,13 +120,13 @@ public Builder invocationHandlerFactory(
122
120
}
123
121
124
122
/**
125
- * Sets a vertx instance to use to make the client .
123
+ * Sets a vertx WebClient .
126
124
*
127
- * @param vertx vertx instance
125
+ * @param webClient vertx WebClient
128
126
* @return this builder
129
127
*/
130
- public Builder vertx (final Vertx vertx ) {
131
- this .vertx = checkNotNull (vertx , "Argument vertx must be not null" );
128
+ public Builder webClient (final WebClient webClient ) {
129
+ this .webClient = checkNotNull (webClient , "Argument webClient must be not null" );
132
130
return this ;
133
131
}
134
132
@@ -263,34 +261,6 @@ public Builder errorDecoder(final ErrorDecoder errorDecoder) {
263
261
return this ;
264
262
}
265
263
266
- /**
267
- * Sets request options using Vert.x {@link HttpClientOptions}.
268
- *
269
- * @param options {@code HttpClientOptions} for full customization of the underlying Vert.x
270
- * {@link HttpClient}
271
- * @return this builder
272
- */
273
- public Builder options (final HttpClientOptions options ) {
274
- this .options = checkNotNull (options , "Argument options must be not null" );
275
- return this ;
276
- }
277
-
278
- /**
279
- * Sets request options using Feign {@link Request.Options}.
280
- *
281
- * @param options Feign {@code Request.Options} object
282
- * @return this builder
283
- */
284
- @ Override
285
- public Builder options (final Request .Options options ) {
286
- checkNotNull (options , "Argument options must be not null" );
287
- this .options =
288
- new HttpClientOptions ()
289
- .setConnectTimeout (options .connectTimeoutMillis ())
290
- .setIdleTimeout (options .readTimeoutMillis ());
291
- return this ;
292
- }
293
-
294
264
/**
295
265
* Configures the amount of time in milliseconds after which if the request does not return any
296
266
* data within the timeout period an {@link java.util.concurrent.TimeoutException} fails the
@@ -307,22 +277,22 @@ public Builder timeout(long timeout) {
307
277
}
308
278
309
279
/**
310
- * Defines operation to execute on each {@link HttpClientRequest } before it is sent. Used to
311
- * make setup on request level.
280
+ * Defines operation to execute on each {@link HttpRequest } before it sent. Used to make setup
281
+ * on request level.
312
282
*
313
283
* <p>Example:
314
284
*
315
285
* <pre>
316
286
* var client = VertxFeign
317
287
* .builder()
318
288
* .vertx(vertx)
319
- * .requestPreProcessor(req -> req.putHeader("version", "v1" ));
289
+ * .requestPreProcessor(req -> req.ssl(true ));
320
290
* </pre>
321
291
*
322
292
* @param requestPreProcessor operation to execute on each request
323
293
* @return updated request
324
294
*/
325
- public Builder requestPreProcessor (UnaryOperator <HttpClientRequest > requestPreProcessor ) {
295
+ public Builder requestPreProcessor (UnaryOperator <HttpRequest < Buffer > > requestPreProcessor ) {
326
296
this .requestPreProcessor =
327
297
checkNotNull (requestPreProcessor , "Argument requestPreProcessor must be not null" );
328
298
return this ;
@@ -389,19 +359,24 @@ public <T> T target(final Target<T> target) {
389
359
return build ().newInstance (target );
390
360
}
391
361
362
+ @ Override
363
+ public Feign .Builder options (final Request .Options options ) {
364
+ throw new UnsupportedOperationException (
365
+ "Options should be provided directly during construction of Vertx WebClient." );
366
+ }
367
+
392
368
@ Override
393
369
public VertxFeign internalBuild () {
394
- checkNotNull (this .vertx , "Vertx instance wasn't provided in VertxFeign builder" );
370
+ checkNotNull (
371
+ this .webClient , "Vertx WebClient instance wasn't provided in VertxFeign builder" );
395
372
396
- final VertxHttpClient client =
397
- new VertxHttpClient (vertx , options , timeout , requestPreProcessor );
373
+ final VertxHttpClient client = new VertxHttpClient (webClient , timeout , requestPreProcessor );
398
374
final VertxMethodHandler .Factory methodHandlerFactory =
399
375
new VertxMethodHandler .Factory (
400
376
client , retryer , requestInterceptors , logger , logLevel , decode404 );
401
377
final ParseHandlersByName handlersByName =
402
378
new ParseHandlersByName (
403
379
contract ,
404
- options ,
405
380
encoder ,
406
381
decoder ,
407
382
queryMapEncoder ,
@@ -417,7 +392,6 @@ public VertxFeign internalBuild() {
417
392
418
393
private static final class ParseHandlersByName {
419
394
private final Contract contract ;
420
- private final HttpClientOptions options ;
421
395
private final Encoder encoder ;
422
396
private final Decoder decoder ;
423
397
private final QueryMapEncoder queryMapEncoder ;
@@ -427,15 +401,13 @@ private static final class ParseHandlersByName {
427
401
428
402
private ParseHandlersByName (
429
403
final Contract contract ,
430
- final HttpClientOptions options ,
431
404
final Encoder encoder ,
432
405
final Decoder decoder ,
433
406
final QueryMapEncoder queryMapEncoder ,
434
407
final List <Capability > capabilities ,
435
408
final ErrorDecoder errorDecoder ,
436
409
final VertxMethodHandler .Factory factory ) {
437
410
this .contract = contract ;
438
- this .options = options ;
439
411
this .factory = factory ;
440
412
this .encoder = encoder ;
441
413
this .decoder = decoder ;
0 commit comments