Minor refactoring in AbstractNamedValueArgumentResolver

Expose MethodParameter information in abstract protected method that
adds the HTTP request value.

See gh-29420
This commit is contained in:
rstoyanchev
2022-11-02 12:33:58 +00:00
parent 723e09c164
commit 4b647a1801
8 changed files with 57 additions and 21 deletions

View File

@@ -22,8 +22,11 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.util.MultiValueMap;
import org.springframework.web.util.UriComponentsBuilder;
import static java.nio.charset.StandardCharsets.UTF_8;
@@ -106,4 +109,21 @@ public class HttpRequestValuesTests {
.isEqualTo("/path?param1=1st%20value&param2=2nd%20value%20A&param2=2nd%20value%20B");
}
@Test
void requestPart() {
HttpHeaders entityHeaders = new HttpHeaders();
entityHeaders.add("foo", "bar");
HttpEntity<String> entity = new HttpEntity<>("body", entityHeaders);
HttpRequestValues requestValues = HttpRequestValues.builder()
.addRequestPart("form field", "form value")
.addRequestPart("entity", entity)
.build();
MultiValueMap<String, HttpEntity<?>> map = (MultiValueMap<String, HttpEntity<?>>) requestValues.getBodyValue();
assertThat(map).hasSize(2);
assertThat(map.getFirst("form field").getBody()).isEqualTo("form value");
assertThat(map.getFirst("entity")).isEqualTo(entity);
}
}

View File

@@ -240,7 +240,7 @@ class NamedValueArgumentResolverTests {
}
@Override
protected void addRequestValue(String name, Object value, HttpRequestValues.Builder requestValues) {
protected void addRequestValue(String name, Object value, MethodParameter parameter, HttpRequestValues.Builder requestValues) {
this.testValues.add(name, (String) value);
}
}