diff --git a/spring-test/src/main/java/org/springframework/mock/web/reactive/function/server/MockServerRequest.java b/spring-test/src/main/java/org/springframework/mock/web/reactive/function/server/MockServerRequest.java index 2e250724cc..ddcb5157f9 100644 --- a/spring-test/src/main/java/org/springframework/mock/web/reactive/function/server/MockServerRequest.java +++ b/spring-test/src/main/java/org/springframework/mock/web/reactive/function/server/MockServerRequest.java @@ -44,6 +44,7 @@ import org.springframework.http.server.reactive.RequestPath; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.lang.Nullable; import org.springframework.util.Assert; +import org.springframework.util.CollectionUtils; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.reactive.function.BodyExtractor; @@ -168,8 +169,8 @@ public class MockServerRequest implements ServerRequest { } @Override - public List queryParams(String name) { - return Collections.unmodifiableList(this.queryParams.get(name)); + public MultiValueMap queryParams() { + return CollectionUtils.unmodifiableMultiValueMap(this.queryParams); } @Override diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultServerRequest.java b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultServerRequest.java index e42c7a28f2..a6713dd4de 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultServerRequest.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultServerRequest.java @@ -156,9 +156,8 @@ class DefaultServerRequest implements ServerRequest { } @Override - public List queryParams(String name) { - List queryParams = request().getQueryParams().get(name); - return queryParams != null ? queryParams : Collections.emptyList(); + public MultiValueMap queryParams() { + return request().getQueryParams(); } @Override diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RequestPredicates.java b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RequestPredicates.java index e0abca1346..f16bc32a8c 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RequestPredicates.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RequestPredicates.java @@ -535,8 +535,8 @@ public abstract class RequestPredicates { } @Override - public List queryParams(String name) { - return this.request.queryParams(name); + public MultiValueMap queryParams() { + return this.request.queryParams(); } @Override diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/ServerRequest.java b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/ServerRequest.java index 16b9fc031a..383485c288 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/ServerRequest.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/ServerRequest.java @@ -146,7 +146,7 @@ public interface ServerRequest { * @return the parameter value */ default Optional queryParam(String name) { - List queryParams = this.queryParams(name); + List queryParams = queryParams().get(name); if (queryParams.isEmpty()) { return Optional.empty(); } @@ -160,12 +160,9 @@ public interface ServerRequest { } /** - * Return all query parameter with the given name. - *

Returns an empty list if no values could be found. - * @param name the parameter name - * @return the parameter values + * Return all query parameters for this request. */ - List queryParams(String name); + MultiValueMap queryParams(); /** * Return the path variable with the given name, if present. @@ -184,13 +181,12 @@ public interface ServerRequest { } /** - * Return all path variables for the current request. - * @return a {@code Map} from path variable name to associated value + * Return all path variables for this request. */ Map pathVariables(); /** - * Return the web session for the current request. Always guaranteed to + * Return the web session for this request. Always guaranteed to * return an instance either matching to the session id requested by the * client, or with a new session id either because the client did not * specify one or because the underlying session had expired. Use of this diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/support/ServerRequestWrapper.java b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/support/ServerRequestWrapper.java index 170f1edd5e..ba7bacdcd6 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/support/ServerRequestWrapper.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/function/server/support/ServerRequestWrapper.java @@ -139,8 +139,8 @@ public class ServerRequestWrapper implements ServerRequest { } @Override - public List queryParams(String name) { - return this.delegate.queryParams(name); + public MultiValueMap queryParams() { + return this.delegate.queryParams(); } @Override diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/MockServerRequest.java b/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/MockServerRequest.java index f317abc7df..fa3a67383c 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/MockServerRequest.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/MockServerRequest.java @@ -44,6 +44,7 @@ import org.springframework.http.server.reactive.RequestPath; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.lang.Nullable; import org.springframework.util.Assert; +import org.springframework.util.CollectionUtils; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.reactive.function.BodyExtractor; @@ -167,8 +168,8 @@ public class MockServerRequest implements ServerRequest { } @Override - public List queryParams(String name) { - return Collections.unmodifiableList(this.queryParams.get(name)); + public MultiValueMap queryParams() { + return CollectionUtils.unmodifiableMultiValueMap(this.queryParams); } @Override diff --git a/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/support/ServerRequestWrapperTests.java b/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/support/ServerRequestWrapperTests.java index 7042ca8f51..7fbe271416 100644 --- a/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/support/ServerRequestWrapperTests.java +++ b/spring-webflux/src/test/java/org/springframework/web/reactive/function/server/support/ServerRequestWrapperTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2017 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. @@ -18,7 +18,6 @@ package org.springframework.web.reactive.function.server.support; import java.net.URI; import java.util.Collections; -import java.util.List; import java.util.Map; import java.util.Optional; @@ -26,12 +25,12 @@ import org.junit.Before; import org.junit.Test; import org.springframework.http.HttpMethod; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; import org.springframework.web.reactive.function.server.ServerRequest; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertSame; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; +import static org.junit.Assert.*; +import static org.mockito.Mockito.*; /** * @author Arjen Poutsma @@ -105,11 +104,11 @@ public class ServerRequestWrapperTests { @Test public void queryParams() throws Exception { - String name = "foo"; - List value = Collections.singletonList("bar"); - when(mockRequest.queryParams(name)).thenReturn(value); + MultiValueMap value = new LinkedMultiValueMap<>(); + value.add("foo", "bar"); + when(mockRequest.queryParams()).thenReturn(value); - assertSame(value, wrapper.queryParams(name)); + assertSame(value, wrapper.queryParams()); } @Test