From 81c156eefbd574bc5f646606b16548e431e3ffdf Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Tue, 6 Feb 2024 17:57:27 +0100 Subject: [PATCH] Replace public hasRestTemplateDefaults() method with hasBaseUri() See gh-32180 --- .../web/client/DefaultRestClientBuilder.java | 15 +++++++++++- .../web/util/DefaultUriBuilderFactory.java | 23 ++++++++----------- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/web/client/DefaultRestClientBuilder.java b/spring-web/src/main/java/org/springframework/web/client/DefaultRestClientBuilder.java index 3575ebb21c3..82e2a9f219e 100644 --- a/spring-web/src/main/java/org/springframework/web/client/DefaultRestClientBuilder.java +++ b/spring-web/src/main/java/org/springframework/web/client/DefaultRestClientBuilder.java @@ -195,7 +195,7 @@ final class DefaultRestClientBuilder implements RestClient.Builder { UriTemplateHandler uriTemplateHandler = restTemplate.getUriTemplateHandler(); if (uriTemplateHandler instanceof DefaultUriBuilderFactory builderFactory) { // only reuse the DefaultUriBuilderFactory if it has been customized - if (builderFactory.hasRestTemplateDefaults()) { + if (hasRestTemplateDefaults(builderFactory)) { return null; } else { @@ -210,6 +210,19 @@ final class DefaultRestClientBuilder implements RestClient.Builder { } } + + /** + * Indicate whether this {@code DefaultUriBuilderFactory} uses the default + * {@link org.springframework.web.client.RestTemplate RestTemplate} settings. + */ + private static boolean hasRestTemplateDefaults(DefaultUriBuilderFactory factory) { + // see RestTemplate::initUriTemplateHandler + return (!factory.hasBaseUri() && + factory.getEncodingMode() == DefaultUriBuilderFactory.EncodingMode.URI_COMPONENT && + CollectionUtils.isEmpty(factory.getDefaultUriVariables()) && + factory.shouldParsePath()); + } + private static ClientHttpRequestFactory getRequestFactory(RestTemplate restTemplate) { ClientHttpRequestFactory requestFactory = restTemplate.getRequestFactory(); if (requestFactory instanceof InterceptingClientHttpRequestFactory interceptingClientHttpRequestFactory) { diff --git a/spring-web/src/main/java/org/springframework/web/util/DefaultUriBuilderFactory.java b/spring-web/src/main/java/org/springframework/web/util/DefaultUriBuilderFactory.java index 3fd7898b9a1..c90c49470e4 100644 --- a/spring-web/src/main/java/org/springframework/web/util/DefaultUriBuilderFactory.java +++ b/spring-web/src/main/java/org/springframework/web/util/DefaultUriBuilderFactory.java @@ -83,6 +83,15 @@ public class DefaultUriBuilderFactory implements UriBuilderFactory { } + /** + * Determine whether this factory has been configured with a base URI. + * @since 6.1.4 + * @see #DefaultUriBuilderFactory() + */ + public final boolean hasBaseUri() { + return (this.baseUri != null); + } + /** * Set the {@link EncodingMode encoding mode} to use. *

By default this is set to {@link EncodingMode#TEMPLATE_AND_VALUES @@ -157,20 +166,6 @@ public class DefaultUriBuilderFactory implements UriBuilderFactory { return this.parsePath; } - /** - * Indicates whether this {@code DefaultUriBuilderFactory} uses the default - * {@link org.springframework.web.client.RestTemplate RestTemplate} - * settings. - * @since 6.1.4 - */ - public boolean hasRestTemplateDefaults() { - // see RestTemplate::initUriTemplateHandler - return this.baseUri == null && - this.encodingMode == EncodingMode.URI_COMPONENT && - CollectionUtils.isEmpty(this.defaultUriVariables) && - this.parsePath; - } - // UriTemplateHandler