From f1594312cd2c2814489db7528ea2345567e9937f Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Tue, 30 May 2023 16:38:23 +0100 Subject: [PATCH] Polishing in HttpRequestValues and tests See gh-30520 --- .../web/service/invoker/HttpRequestValues.java | 4 +++- .../invoker/HttpRequestValuesTests.java | 18 ++++++++++-------- .../RequestPartArgumentResolverTests.java | 2 +- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/web/service/invoker/HttpRequestValues.java b/spring-web/src/main/java/org/springframework/web/service/invoker/HttpRequestValues.java index 090ec54859f..8316ee0c6de 100644 --- a/spring-web/src/main/java/org/springframework/web/service/invoker/HttpRequestValues.java +++ b/spring-web/src/main/java/org/springframework/web/service/invoker/HttpRequestValues.java @@ -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. @@ -400,12 +400,14 @@ public final class HttpRequestValues { 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); } diff --git a/spring-web/src/test/java/org/springframework/web/service/invoker/HttpRequestValuesTests.java b/spring-web/src/test/java/org/springframework/web/service/invoker/HttpRequestValuesTests.java index 46c7c32080f..4fa0325647d 100644 --- a/spring-web/src/test/java/org/springframework/web/service/invoker/HttpRequestValuesTests.java +++ b/spring-web/src/test/java/org/springframework/web/service/invoker/HttpRequestValuesTests.java @@ -50,7 +50,7 @@ class HttpRequestValuesTests { @ParameterizedTest @ValueSource(strings = {"POST", "PUT", "PATCH"}) @SuppressWarnings("unchecked") - void requestParamAsFormData(String httpMethod) { + void formData(String httpMethod) { HttpRequestValues requestValues = HttpRequestValues.builder().setHttpMethod(HttpMethod.valueOf(httpMethod)) .setContentType(MediaType.APPLICATION_FORM_URLENCODED) @@ -65,7 +65,7 @@ class HttpRequestValuesTests { } @Test - void requestParamAsQueryParamsInUriTemplate() { + void queryParamsWithUriTemplate() { HttpRequestValues requestValues = HttpRequestValues.builder().setHttpMethod(HttpMethod.POST) .setUriTemplate("/path") @@ -99,23 +99,25 @@ class HttpRequestValuesTests { } @Test - void requestParamAsQueryParamsInUri() { + void queryParamsWithPreparedUri() { + + URI uri = URI.create("/my%20path"); HttpRequestValues requestValues = HttpRequestValues.builder().setHttpMethod(HttpMethod.POST) - .setUri(URI.create("/path")) + .setUri(uri) .addRequestParameter("param1", "1st value") .addRequestParameter("param2", "2nd value A", "2nd value B") .build(); assertThat(requestValues.getUri().toString()) - .isEqualTo("/path?param1=1st%20value¶m2=2nd%20value%20A¶m2=2nd%20value%20B"); + .isEqualTo("/my%20path?param1=1st%20value¶m2=2nd%20value%20A¶m2=2nd%20value%20B"); } @Test void requestPart() { - HttpHeaders entityHeaders = new HttpHeaders(); - entityHeaders.add("foo", "bar"); - HttpEntity entity = new HttpEntity<>("body", entityHeaders); + HttpHeaders headers = new HttpHeaders(); + headers.add("foo", "bar"); + HttpEntity entity = new HttpEntity<>("body", headers); HttpRequestValues requestValues = HttpRequestValues.builder() .addRequestPart("form field", "form value") diff --git a/spring-web/src/test/java/org/springframework/web/service/invoker/RequestPartArgumentResolverTests.java b/spring-web/src/test/java/org/springframework/web/service/invoker/RequestPartArgumentResolverTests.java index d9fb705de58..a963cee8d73 100644 --- a/spring-web/src/test/java/org/springframework/web/service/invoker/RequestPartArgumentResolverTests.java +++ b/spring-web/src/test/java/org/springframework/web/service/invoker/RequestPartArgumentResolverTests.java @@ -65,9 +65,9 @@ class RequestPartArgumentResolverTests { Object body = this.client.getRequestValues().getBodyValue(); assertThat(body).isInstanceOf(MultiValueMap.class); + @SuppressWarnings("unchecked") MultiValueMap> map = (MultiValueMap>) body; - assertThat(map.getFirst("part1").getBody()).isEqualTo("part 1"); assertThat(map.getFirst("part2")).isEqualTo(part2); assertThat(((Mono) map.getFirst("part3").getBody()).block()).isEqualTo("part 3");