2525import feign .querymap .FieldQueryMapEncoder ;
2626import feign .vertx .VertxDelegatingContract ;
2727import 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 ;
3231import java .lang .reflect .InvocationHandler ;
3332import java .lang .reflect .Method ;
3433import java .lang .reflect .Proxy ;
@@ -92,7 +91,7 @@ public <T> T newInstance(final Target<T> target) {
9291
9392 /** VertxFeign builder. */
9493 public static final class Builder extends Feign .Builder {
95- private Vertx vertx ;
94+ private WebClient webClient ;
9695 private final List <RequestInterceptor > requestInterceptors = new ArrayList <>();
9796 private Logger .Level logLevel = Logger .Level .NONE ;
9897 private Contract contract = new VertxDelegatingContract (new Contract .Default ());
@@ -103,10 +102,9 @@ public static final class Builder extends Feign.Builder {
103102 private QueryMapEncoder queryMapEncoder = new FieldQueryMapEncoder ();
104103 private List <Capability > capabilities = new ArrayList <>();
105104 private ErrorDecoder errorDecoder = new ErrorDecoder .Default ();
106- private HttpClientOptions options = new HttpClientOptions ();
107105 private long timeout = -1 ;
108106 private boolean decode404 ;
109- private UnaryOperator <HttpClientRequest > requestPreProcessor = UnaryOperator .identity ();
107+ private UnaryOperator <HttpRequest < Buffer > > requestPreProcessor = UnaryOperator .identity ();
110108
111109 /** Unsupported operation. */
112110 @ Override
@@ -122,13 +120,13 @@ public Builder invocationHandlerFactory(
122120 }
123121
124122 /**
125- * Sets a vertx instance to use to make the client .
123+ * Sets a vertx WebClient .
126124 *
127- * @param vertx vertx instance
125+ * @param webClient vertx WebClient
128126 * @return this builder
129127 */
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" );
132130 return this ;
133131 }
134132
@@ -263,34 +261,6 @@ public Builder errorDecoder(final ErrorDecoder errorDecoder) {
263261 return this ;
264262 }
265263
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-
294264 /**
295265 * Configures the amount of time in milliseconds after which if the request does not return any
296266 * data within the timeout period an {@link java.util.concurrent.TimeoutException} fails the
@@ -307,22 +277,22 @@ public Builder timeout(long timeout) {
307277 }
308278
309279 /**
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.
312282 *
313283 * <p>Example:
314284 *
315285 * <pre>
316286 * var client = VertxFeign
317287 * .builder()
318288 * .vertx(vertx)
319- * .requestPreProcessor(req -> req.putHeader("version", "v1" ));
289+ * .requestPreProcessor(req -> req.ssl(true ));
320290 * </pre>
321291 *
322292 * @param requestPreProcessor operation to execute on each request
323293 * @return updated request
324294 */
325- public Builder requestPreProcessor (UnaryOperator <HttpClientRequest > requestPreProcessor ) {
295+ public Builder requestPreProcessor (UnaryOperator <HttpRequest < Buffer > > requestPreProcessor ) {
326296 this .requestPreProcessor =
327297 checkNotNull (requestPreProcessor , "Argument requestPreProcessor must be not null" );
328298 return this ;
@@ -389,19 +359,24 @@ public <T> T target(final Target<T> target) {
389359 return build ().newInstance (target );
390360 }
391361
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+
392368 @ Override
393369 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" );
395372
396- final VertxHttpClient client =
397- new VertxHttpClient (vertx , options , timeout , requestPreProcessor );
373+ final VertxHttpClient client = new VertxHttpClient (webClient , timeout , requestPreProcessor );
398374 final VertxMethodHandler .Factory methodHandlerFactory =
399375 new VertxMethodHandler .Factory (
400376 client , retryer , requestInterceptors , logger , logLevel , decode404 );
401377 final ParseHandlersByName handlersByName =
402378 new ParseHandlersByName (
403379 contract ,
404- options ,
405380 encoder ,
406381 decoder ,
407382 queryMapEncoder ,
@@ -417,7 +392,6 @@ public VertxFeign internalBuild() {
417392
418393 private static final class ParseHandlersByName {
419394 private final Contract contract ;
420- private final HttpClientOptions options ;
421395 private final Encoder encoder ;
422396 private final Decoder decoder ;
423397 private final QueryMapEncoder queryMapEncoder ;
@@ -427,15 +401,13 @@ private static final class ParseHandlersByName {
427401
428402 private ParseHandlersByName (
429403 final Contract contract ,
430- final HttpClientOptions options ,
431404 final Encoder encoder ,
432405 final Decoder decoder ,
433406 final QueryMapEncoder queryMapEncoder ,
434407 final List <Capability > capabilities ,
435408 final ErrorDecoder errorDecoder ,
436409 final VertxMethodHandler .Factory factory ) {
437410 this .contract = contract ;
438- this .options = options ;
439411 this .factory = factory ;
440412 this .encoder = encoder ;
441413 this .decoder = decoder ;
0 commit comments