Minor refactoring

Closes gh-33697
This commit is contained in:
rstoyanchev 2024-10-23 11:25:20 +01:00
parent 73e5aa38ec
commit 2b113e3fd0
1 changed files with 36 additions and 30 deletions

View File

@ -553,14 +553,16 @@ final class DefaultRestClient implements RestClient {
URI uri = null;
try {
uri = initUri();
HttpHeaders headers = initHeaders();
MultiValueMap<String, String> cookies = initCookies();
if (!CollectionUtils.isEmpty(cookies)) {
headers.set(HttpHeaders.COOKIE, serializeCookies(cookies));
String serializedCookies = serializeCookies();
if (serializedCookies != null) {
getHeaders().set(HttpHeaders.COOKIE, serializedCookies);
}
HttpHeaders headers = initHeaders();
ClientHttpRequest clientRequest = createRequest(uri);
clientRequest.getHeaders().addAll(headers);
if (headers != null) {
clientRequest.getHeaders().addAll(headers);
}
Map<String, Object> attributes = getAttributes();
clientRequest.getAttributes().putAll(attributes);
ClientRequestObservationContext observationContext = new ClientRequestObservationContext(clientRequest);
@ -617,42 +619,28 @@ final class DefaultRestClient implements RestClient {
return (this.uri != null ? this.uri : DefaultRestClient.this.uriBuilderFactory.expand(""));
}
private HttpHeaders initHeaders() {
HttpHeaders defaultHeaders = DefaultRestClient.this.defaultHeaders;
if (CollectionUtils.isEmpty(this.headers)) {
return (defaultHeaders != null ? defaultHeaders : new HttpHeaders());
}
else if (CollectionUtils.isEmpty(defaultHeaders)) {
return this.headers;
}
else {
HttpHeaders result = new HttpHeaders();
result.putAll(defaultHeaders);
result.putAll(this.headers);
return result;
}
}
private MultiValueMap<String, String> initCookies() {
@Nullable
private String serializeCookies() {
MultiValueMap<String, String> map;
MultiValueMap<String, String> defaultCookies = DefaultRestClient.this.defaultCookies;
if (CollectionUtils.isEmpty(this.cookies)) {
return (defaultCookies != null ? defaultCookies : new LinkedMultiValueMap<>());
map = defaultCookies;
}
else if (CollectionUtils.isEmpty(defaultCookies)) {
return this.cookies;
map = this.cookies;
}
else {
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.putAll(DefaultRestClient.this.defaultCookies);
map = new LinkedMultiValueMap<>(defaultCookies.size() + this.cookies.size());
map.putAll(defaultCookies);
map.putAll(this.cookies);
return map;
}
return (!CollectionUtils.isEmpty(map) ? serializeCookies(map) : null);
}
private String serializeCookies(MultiValueMap<String, String> cookies) {
private static String serializeCookies(MultiValueMap<String, String> map) {
boolean first = true;
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, List<String>> entry : cookies.entrySet()) {
for (Map.Entry<String, List<String>> entry : map.entrySet()) {
for (String value : entry.getValue()) {
if (!first) {
sb.append("; ");
@ -666,12 +654,30 @@ final class DefaultRestClient implements RestClient {
return sb.toString();
}
@Nullable
private HttpHeaders initHeaders() {
HttpHeaders defaultHeaders = DefaultRestClient.this.defaultHeaders;
if (CollectionUtils.isEmpty(this.headers)) {
return defaultHeaders;
}
else if (CollectionUtils.isEmpty(defaultHeaders)) {
return this.headers;
}
else {
HttpHeaders result = new HttpHeaders();
result.putAll(defaultHeaders);
result.putAll(this.headers);
return result;
}
}
private ClientHttpRequest createRequest(URI uri) throws IOException {
ClientHttpRequestFactory factory;
if (DefaultRestClient.this.interceptors != null) {
factory = DefaultRestClient.this.interceptingRequestFactory;
if (factory == null) {
factory = new InterceptingClientHttpRequestFactory(DefaultRestClient.this.clientRequestFactory, DefaultRestClient.this.interceptors);
factory = new InterceptingClientHttpRequestFactory(
DefaultRestClient.this.clientRequestFactory, DefaultRestClient.this.interceptors);
DefaultRestClient.this.interceptingRequestFactory = factory;
}
}