diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateBuilder.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateBuilder.java index a103d2d13b..1dbd93752c 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateBuilder.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateBuilder.java @@ -114,7 +114,7 @@ public class RestTemplateBuilder { this.errorHandler = null; this.basicAuthentication = null; this.defaultHeaders = Collections.emptyMap(); - this.customizers = setOf(customizers); + this.customizers = copiedSetOf(customizers); this.requestCustomizers = Collections.emptySet(); } @@ -191,7 +191,7 @@ public class RestTemplateBuilder { public RestTemplateBuilder messageConverters(Collection> messageConverters) { Assert.notNull(messageConverters, "MessageConverters must not be null"); return new RestTemplateBuilder(this.requestFactoryCustomizer, this.detectRequestFactory, this.rootUri, - setOf(messageConverters), this.interceptors, this.requestFactory, this.uriTemplateHandler, + copiedSetOf(messageConverters), this.interceptors, this.requestFactory, this.uriTemplateHandler, this.errorHandler, this.basicAuthentication, this.defaultHeaders, this.customizers, this.requestCustomizers); } @@ -235,7 +235,7 @@ public class RestTemplateBuilder { */ public RestTemplateBuilder defaultMessageConverters() { return new RestTemplateBuilder(this.requestFactoryCustomizer, this.detectRequestFactory, this.rootUri, - setOf(new RestTemplate().getMessageConverters()), this.interceptors, this.requestFactory, + copiedSetOf(new RestTemplate().getMessageConverters()), this.interceptors, this.requestFactory, this.uriTemplateHandler, this.errorHandler, this.basicAuthentication, this.defaultHeaders, this.customizers, this.requestCustomizers); } @@ -266,7 +266,7 @@ public class RestTemplateBuilder { public RestTemplateBuilder interceptors(Collection interceptors) { Assert.notNull(interceptors, "interceptors must not be null"); return new RestTemplateBuilder(this.requestFactoryCustomizer, this.detectRequestFactory, this.rootUri, - this.messageConverters, setOf(interceptors), this.requestFactory, this.uriTemplateHandler, + this.messageConverters, copiedSetOf(interceptors), this.requestFactory, this.uriTemplateHandler, this.errorHandler, this.basicAuthentication, this.defaultHeaders, this.customizers, this.requestCustomizers); } @@ -477,7 +477,7 @@ public class RestTemplateBuilder { Assert.notNull(customizers, "Customizers must not be null"); return new RestTemplateBuilder(this.requestFactoryCustomizer, this.detectRequestFactory, this.rootUri, this.messageConverters, this.interceptors, this.requestFactory, this.uriTemplateHandler, - this.errorHandler, this.basicAuthentication, this.defaultHeaders, setOf(customizers), + this.errorHandler, this.basicAuthentication, this.defaultHeaders, copiedSetOf(customizers), this.requestCustomizers); } @@ -541,7 +541,7 @@ public class RestTemplateBuilder { return new RestTemplateBuilder(this.requestFactoryCustomizer, this.detectRequestFactory, this.rootUri, this.messageConverters, this.interceptors, this.requestFactory, this.uriTemplateHandler, this.errorHandler, this.basicAuthentication, this.defaultHeaders, this.customizers, - setOf(requestCustomizers)); + copiedSetOf(requestCustomizers)); } /** @@ -677,16 +677,16 @@ public class RestTemplateBuilder { } @SuppressWarnings("unchecked") - private Set setOf(T... items) { - return setOf(Arrays.asList(items)); + private Set copiedSetOf(T... items) { + return copiedSetOf(Arrays.asList(items)); } - private Set setOf(Collection collection) { + private Set copiedSetOf(Collection collection) { return Collections.unmodifiableSet(new LinkedHashSet<>(collection)); } - private static List listOf(T[] items) { - return Collections.unmodifiableList(new ArrayList<>(Arrays.asList(items))); + private static List copiedListOf(T[] items) { + return Collections.unmodifiableList(Arrays.asList(Arrays.copyOf(items, items.length))); } private static Set append(Collection collection, Collection additions) { @@ -700,7 +700,7 @@ public class RestTemplateBuilder { private static Map> append(Map> map, K key, V[] values) { Map> result = new LinkedHashMap<>((map != null) ? map : Collections.emptyMap()); if (values != null) { - result.put(key, listOf(values)); + result.put(key, copiedListOf(values)); } return Collections.unmodifiableMap(result); }