This commit is contained in:
Rossen Stoyanchev
2019-08-21 11:20:37 +03:00
parent ca3a0b19d6
commit aa220a9a02

View File

@@ -43,18 +43,18 @@ import org.springframework.web.util.UriBuilderFactory;
* @since 5.0
*/
final class DefaultWebClientBuilder implements WebClient.Builder {
private static final boolean jettyHttpClientPresent;
private static final boolean reactorNettyHttpClientPresent;
private static final boolean reactorClientPresent;
private static final boolean jettyClientPresent;
static {
ClassLoader classLoader = DefaultWebClientBuilder.class.getClassLoader();
jettyHttpClientPresent = ClassUtils.isPresent(
"org.eclipse.jetty.client.HttpClient", classLoader);
reactorNettyHttpClientPresent = ClassUtils.isPresent(
"reactor.netty.http.client.HttpClient", classLoader);
ClassLoader loader = DefaultWebClientBuilder.class.getClassLoader();
reactorClientPresent = ClassUtils.isPresent("reactor.netty.http.client.HttpClient", loader);
jettyClientPresent = ClassUtils.isPresent("org.eclipse.jetty.client.HttpClient", loader);
}
@Nullable
private String baseUrl;
@@ -228,7 +228,9 @@ final class DefaultWebClientBuilder implements WebClient.Builder {
@Override
public WebClient build() {
ExchangeFunction exchange = initExchangeFunction();
ExchangeFunction exchange = (this.exchangeFunction == null ?
ExchangeFunctions.create(getOrInitConnector(), this.exchangeStrategies) :
this.exchangeFunction);
ExchangeFunction filteredExchange = (this.filters != null ? this.filters.stream()
.reduce(ExchangeFilterFunction::andThen)
.map(filter -> filter.apply(exchange))
@@ -239,23 +241,14 @@ final class DefaultWebClientBuilder implements WebClient.Builder {
this.defaultRequest, new DefaultWebClientBuilder(this));
}
private ExchangeFunction initExchangeFunction() {
if (this.exchangeFunction != null) {
return this.exchangeFunction;
private ClientHttpConnector getOrInitConnector() {
if (this.connector != null) {
return this.connector;
}
else if (this.connector != null) {
return ExchangeFunctions.create(this.connector, this.exchangeStrategies);
}
else {
return ExchangeFunctions.create(createDefaultClientHttpConnector(), this.exchangeStrategies);
}
}
private ClientHttpConnector createDefaultClientHttpConnector() {
if (reactorNettyHttpClientPresent) {
else if (reactorClientPresent) {
return new ReactorClientHttpConnector();
}
else if (jettyHttpClientPresent) {
else if (jettyClientPresent) {
return new JettyClientHttpConnector();
}
throw new IllegalStateException("No suitable default ClientHttpConnector found");