Merge branch '6.0.x'

This commit is contained in:
rstoyanchev
2023-05-30 17:18:01 +01:00
8 changed files with 91 additions and 37 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2022 the original author or authors.
* Copyright 2002-2023 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.
@@ -389,31 +389,30 @@ public final class HttpRequestValues {
Map<String, String> uriVars = (this.uriVars != null ? new HashMap<>(this.uriVars) : Collections.emptyMap());
Object bodyValue = this.bodyValue;
if (this.multipartBuilder != null) {
Assert.isTrue(bodyValue == null && this.body == null, "Expected body or request parts, not both");
bodyValue = this.multipartBuilder.build();
}
if (!CollectionUtils.isEmpty(this.requestParams)) {
boolean isFormData = (this.headers != null &&
MediaType.APPLICATION_FORM_URLENCODED.equals(this.headers.getContentType()));
if (isFormData) {
Assert.isTrue(bodyValue == null && this.body == null, "Expected body or request params, not both");
if (hasContentType(MediaType.APPLICATION_FORM_URLENCODED)) {
Assert.isTrue(this.multipartBuilder == null, "Cannot add parts to form data request");
Assert.isTrue(bodyValue == null && this.body == null, "Cannot set body of form data request");
bodyValue = new LinkedMultiValueMap<>(this.requestParams);
}
else if (uri != null) {
// insert into prepared URI
uri = UriComponentsBuilder.fromUri(uri)
.queryParams(UriUtils.encodeQueryParams(this.requestParams))
.build(true)
.toUri();
}
else {
// append to URI template
uriVars = (uriVars.isEmpty() ? new HashMap<>() : uriVars);
uriTemplate = appendQueryParams(uriTemplate, uriVars, this.requestParams);
}
}
else if (this.multipartBuilder != null) {
Assert.isTrue(bodyValue == null && this.body == null, "Expected body or request parts, not both");
bodyValue = this.multipartBuilder.build();
}
HttpHeaders headers = HttpHeaders.EMPTY;
if (this.headers != null) {
@@ -432,6 +431,10 @@ public final class HttpRequestValues {
bodyValue, this.body, this.bodyElementType);
}
private boolean hasContentType(MediaType mediaType) {
return (this.headers != null && mediaType.equals(this.headers.getContentType()));
}
private String appendQueryParams(
String uriTemplate, Map<String, String> uriVars, MultiValueMap<String, String> requestParams) {