Add new constructor to JettyClientHttpConnector

This commit adds a new constructor to `JettyClientHttpConnector` and
deprecates another one. Jetty is not creating `HttpClient` instances
using a builder API, but rather setting immutable configuration at
constructor time and using setters for the rest.

This commit addresses that by deprecating the constructor variant
accepting a `Consumer` and just delegating to Spring's implementation
for setting the client resources as needed.

Closes gh-22977
This commit is contained in:
Brian Clozel 2019-05-28 16:57:11 +02:00
parent 7ef8cc9faf
commit 1cfedb20b8
1 changed files with 21 additions and 8 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright 2002-2018 the original author or authors.
* Copyright 2002-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -57,25 +57,38 @@ public class JettyClientHttpConnector implements ClientHttpConnector {
* Constructor with an {@link JettyResourceFactory} that will manage shared resources.
* @param resourceFactory the {@link JettyResourceFactory} to use
* @param customizer the lambda used to customize the {@link HttpClient}
* @deprecated in favor of {@link JettyClientHttpConnector#JettyClientHttpConnector(HttpClient, JettyResourceFactory)}
*/
@Deprecated
public JettyClientHttpConnector(
JettyResourceFactory resourceFactory, @Nullable Consumer<HttpClient> customizer) {
HttpClient httpClient = new HttpClient();
httpClient.setExecutor(resourceFactory.getExecutor());
httpClient.setByteBufferPool(resourceFactory.getByteBufferPool());
httpClient.setScheduler(resourceFactory.getScheduler());
this(new HttpClient(), resourceFactory);
if (customizer != null) {
customizer.accept(httpClient);
customizer.accept(this.httpClient);
}
this.httpClient = httpClient;
}
/**
* Constructor with an initialized {@link HttpClient}.
*/
public JettyClientHttpConnector(HttpClient httpClient) {
this(httpClient, null);
}
/**
* Constructor with an initialized {@link HttpClient} and configures it
* with the given {@link JettyResourceFactory}.
* @param httpClient the {@link HttpClient} to use
* @param resourceFactory the {@link JettyResourceFactory} to use
*/
public JettyClientHttpConnector(HttpClient httpClient,
@Nullable JettyResourceFactory resourceFactory) {
Assert.notNull(httpClient, "HttpClient is required");
if (resourceFactory != null) {
httpClient.setExecutor(resourceFactory.getExecutor());
httpClient.setByteBufferPool(resourceFactory.getByteBufferPool());
httpClient.setScheduler(resourceFactory.getScheduler());
}
this.httpClient = httpClient;
}