Polish
This commit is contained in:
@@ -328,8 +328,8 @@ public class DefaultUriBuilderFactory implements UriBuilderFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DefaultUriBuilder queryParams(String name, @Nullable Collection<?> values) {
|
public DefaultUriBuilder queryParam(String name, @Nullable Collection<?> values) {
|
||||||
this.uriComponentsBuilder.queryParams(name, values);
|
this.uriComponentsBuilder.queryParam(name, values);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -340,8 +340,8 @@ public class DefaultUriBuilderFactory implements UriBuilderFactory {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DefaultUriBuilder replaceQueryParams(String name, @Nullable Collection<?> values) {
|
public DefaultUriBuilder replaceQueryParam(String name, @Nullable Collection<?> values) {
|
||||||
this.uriComponentsBuilder.replaceQueryParams(name, values);
|
this.uriComponentsBuilder.replaceQueryParam(name, values);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ public interface UriBuilder {
|
|||||||
* only (i.e. {@code ?foo} instead of {@code ?foo=bar}.
|
* only (i.e. {@code ?foo} instead of {@code ?foo=bar}.
|
||||||
* @param name the query parameter name
|
* @param name the query parameter name
|
||||||
* @param values the query parameter values
|
* @param values the query parameter values
|
||||||
* @see #queryParams(String, Collection)
|
* @see #queryParam(String, Collection)
|
||||||
*/
|
*/
|
||||||
UriBuilder queryParam(String name, Object... values);
|
UriBuilder queryParam(String name, Object... values);
|
||||||
|
|
||||||
@@ -139,7 +139,7 @@ public interface UriBuilder {
|
|||||||
* @since 5.2.0
|
* @since 5.2.0
|
||||||
* @see #queryParam(String, Object...)
|
* @see #queryParam(String, Object...)
|
||||||
*/
|
*/
|
||||||
UriBuilder queryParams(String name, @Nullable Collection<?> values);
|
UriBuilder queryParam(String name, @Nullable Collection<?> values);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add the given query parameters.
|
* Add the given query parameters.
|
||||||
@@ -152,7 +152,7 @@ public interface UriBuilder {
|
|||||||
* the same parameter. If no values are given, the query parameter is removed.
|
* the same parameter. If no values are given, the query parameter is removed.
|
||||||
* @param name the query parameter name
|
* @param name the query parameter name
|
||||||
* @param values the query parameter values
|
* @param values the query parameter values
|
||||||
* @see #replaceQueryParams(String, Collection)
|
* @see #replaceQueryParam(String, Collection)
|
||||||
*/
|
*/
|
||||||
UriBuilder replaceQueryParam(String name, Object... values);
|
UriBuilder replaceQueryParam(String name, Object... values);
|
||||||
|
|
||||||
@@ -164,7 +164,7 @@ public interface UriBuilder {
|
|||||||
* @since 5.2.0
|
* @since 5.2.0
|
||||||
* @see #replaceQueryParam(String, Object...)
|
* @see #replaceQueryParam(String, Object...)
|
||||||
*/
|
*/
|
||||||
UriBuilder replaceQueryParams(String name, @Nullable Collection<?> values);
|
UriBuilder replaceQueryParam(String name, @Nullable Collection<?> values);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the query parameter values overriding all existing query values.
|
* Set the query parameter values overriding all existing query values.
|
||||||
|
|||||||
@@ -20,9 +20,7 @@ import java.net.URI;
|
|||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -34,7 +32,6 @@ import org.springframework.http.HttpHeaders;
|
|||||||
import org.springframework.http.HttpRequest;
|
import org.springframework.http.HttpRequest;
|
||||||
import org.springframework.lang.Nullable;
|
import org.springframework.lang.Nullable;
|
||||||
import org.springframework.util.Assert;
|
import org.springframework.util.Assert;
|
||||||
import org.springframework.util.CollectionUtils;
|
|
||||||
import org.springframework.util.LinkedMultiValueMap;
|
import org.springframework.util.LinkedMultiValueMap;
|
||||||
import org.springframework.util.MultiValueMap;
|
import org.springframework.util.MultiValueMap;
|
||||||
import org.springframework.util.ObjectUtils;
|
import org.springframework.util.ObjectUtils;
|
||||||
@@ -104,6 +101,8 @@ public class UriComponentsBuilder implements UriBuilder, Cloneable {
|
|||||||
|
|
||||||
private static final Pattern FORWARDED_PROTO_PATTERN = Pattern.compile("proto=\"?([^;,\"]+)\"?");
|
private static final Pattern FORWARDED_PROTO_PATTERN = Pattern.compile("proto=\"?([^;,\"]+)\"?");
|
||||||
|
|
||||||
|
private static final Object[] EMPTY_VALUES = new Object[0];
|
||||||
|
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private String scheme;
|
private String scheme;
|
||||||
@@ -700,11 +699,22 @@ public class UriComponentsBuilder implements UriBuilder, Cloneable {
|
|||||||
* @param name the query parameter name
|
* @param name the query parameter name
|
||||||
* @param values the query parameter values
|
* @param values the query parameter values
|
||||||
* @return this UriComponentsBuilder
|
* @return this UriComponentsBuilder
|
||||||
* @see #queryParams(String, Collection)
|
* @see #queryParam(String, Collection)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public UriComponentsBuilder queryParam(String name, Object... values) {
|
public UriComponentsBuilder queryParam(String name, Object... values) {
|
||||||
return queryParams(name, (!ObjectUtils.isEmpty(values) ? Arrays.asList(values) : Collections.emptyList()));
|
Assert.notNull(name, "Name must not be null");
|
||||||
|
if (!ObjectUtils.isEmpty(values)) {
|
||||||
|
for (Object value : values) {
|
||||||
|
String valueAsString = (value != null ? value.toString() : null);
|
||||||
|
this.queryParams.add(name, valueAsString);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.queryParams.add(name, null);
|
||||||
|
}
|
||||||
|
resetSchemeSpecificPart();
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -719,19 +729,8 @@ public class UriComponentsBuilder implements UriBuilder, Cloneable {
|
|||||||
* @see #queryParam(String, Object...)
|
* @see #queryParam(String, Object...)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public UriComponentsBuilder queryParams(String name, @Nullable Collection<?> values) {
|
public UriComponentsBuilder queryParam(String name, @Nullable Collection<?> values) {
|
||||||
Assert.notNull(name, "Name must not be null");
|
return queryParam(name, values != null ? values.toArray() : EMPTY_VALUES);
|
||||||
if (!CollectionUtils.isEmpty(values)) {
|
|
||||||
for (Object value : values) {
|
|
||||||
String valueAsString = (value != null ? value.toString() : null);
|
|
||||||
this.queryParams.add(name, valueAsString);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
this.queryParams.add(name, null);
|
|
||||||
}
|
|
||||||
resetSchemeSpecificPart();
|
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -754,11 +753,17 @@ public class UriComponentsBuilder implements UriBuilder, Cloneable {
|
|||||||
* @param name the query parameter name
|
* @param name the query parameter name
|
||||||
* @param values the query parameter values
|
* @param values the query parameter values
|
||||||
* @return this UriComponentsBuilder
|
* @return this UriComponentsBuilder
|
||||||
* @see #replaceQueryParams(String, Collection)
|
* @see #replaceQueryParam(String, Collection)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public UriComponentsBuilder replaceQueryParam(String name, Object... values) {
|
public UriComponentsBuilder replaceQueryParam(String name, Object... values) {
|
||||||
return replaceQueryParams(name, (!ObjectUtils.isEmpty(values) ? Arrays.asList(values) : Collections.emptyList()));
|
Assert.notNull(name, "Name must not be null");
|
||||||
|
this.queryParams.remove(name);
|
||||||
|
if (!ObjectUtils.isEmpty(values)) {
|
||||||
|
queryParam(name, values);
|
||||||
|
}
|
||||||
|
resetSchemeSpecificPart();
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -771,14 +776,8 @@ public class UriComponentsBuilder implements UriBuilder, Cloneable {
|
|||||||
* @since 5.2.0
|
* @since 5.2.0
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public UriComponentsBuilder replaceQueryParams(String name, @Nullable Collection<?> values) {
|
public UriComponentsBuilder replaceQueryParam(String name, @Nullable Collection<?> values) {
|
||||||
Assert.notNull(name, "Name must not be null");
|
return replaceQueryParam(name, values != null ? values.toArray() : EMPTY_VALUES);
|
||||||
this.queryParams.remove(name);
|
|
||||||
if (!CollectionUtils.isEmpty(values)) {
|
|
||||||
queryParams(name, values);
|
|
||||||
}
|
|
||||||
resetSchemeSpecificPart();
|
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ package org.springframework.web.util;
|
|||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -644,8 +645,7 @@ public class UriComponentsBuilderTests {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void queryParam() {
|
public void queryParam() {
|
||||||
UriComponentsBuilder builder = UriComponentsBuilder.newInstance();
|
UriComponents result = UriComponentsBuilder.newInstance().queryParam("baz", "qux", 42).build();
|
||||||
UriComponents result = builder.queryParam("baz", "qux", 42).build();
|
|
||||||
|
|
||||||
assertThat(result.getQuery()).isEqualTo("baz=qux&baz=42");
|
assertThat(result.getQuery()).isEqualTo("baz=qux&baz=42");
|
||||||
MultiValueMap<String, String> expectedQueryParams = new LinkedMultiValueMap<>(2);
|
MultiValueMap<String, String> expectedQueryParams = new LinkedMultiValueMap<>(2);
|
||||||
@@ -655,9 +655,9 @@ public class UriComponentsBuilderTests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void queryParams() {
|
public void queryParamWithList() {
|
||||||
UriComponentsBuilder builder = UriComponentsBuilder.newInstance();
|
UriComponentsBuilder builder = UriComponentsBuilder.newInstance();
|
||||||
UriComponents result = builder.queryParams("baz", Arrays.asList("qux", 42)).build();
|
UriComponents result = builder.queryParam("baz", Arrays.asList("qux", 42)).build();
|
||||||
|
|
||||||
assertThat(result.getQuery()).isEqualTo("baz=qux&baz=42");
|
assertThat(result.getQuery()).isEqualTo("baz=qux&baz=42");
|
||||||
MultiValueMap<String, String> expectedQueryParams = new LinkedMultiValueMap<>(2);
|
MultiValueMap<String, String> expectedQueryParams = new LinkedMultiValueMap<>(2);
|
||||||
@@ -679,8 +679,10 @@ public class UriComponentsBuilderTests {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void emptyQueryParams() {
|
public void emptyQueryParams() {
|
||||||
UriComponentsBuilder builder = UriComponentsBuilder.newInstance();
|
UriComponents result = UriComponentsBuilder.newInstance()
|
||||||
UriComponents result = builder.queryParams("baz", Collections.emptyList()).queryParams("foo", null).build();
|
.queryParam("baz", Collections.emptyList())
|
||||||
|
.queryParam("foo", (Collection<?>) null)
|
||||||
|
.build();
|
||||||
|
|
||||||
assertThat(result.getQuery()).isEqualTo("baz&foo");
|
assertThat(result.getQuery()).isEqualTo("baz&foo");
|
||||||
MultiValueMap<String, String> expectedQueryParams = new LinkedMultiValueMap<>(2);
|
MultiValueMap<String, String> expectedQueryParams = new LinkedMultiValueMap<>(2);
|
||||||
@@ -706,14 +708,14 @@ public class UriComponentsBuilderTests {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void replaceQueryParams() {
|
public void replaceQueryParams() {
|
||||||
UriComponentsBuilder builder = UriComponentsBuilder.newInstance().queryParams("baz", Arrays.asList("qux", 42));
|
UriComponentsBuilder builder = UriComponentsBuilder.newInstance().queryParam("baz", Arrays.asList("qux", 42));
|
||||||
builder.replaceQueryParams("baz", Arrays.asList("xuq", 24));
|
builder.replaceQueryParam("baz", Arrays.asList("xuq", 24));
|
||||||
UriComponents result = builder.build();
|
UriComponents result = builder.build();
|
||||||
|
|
||||||
assertThat(result.getQuery()).isEqualTo("baz=xuq&baz=24");
|
assertThat(result.getQuery()).isEqualTo("baz=xuq&baz=24");
|
||||||
|
|
||||||
builder = UriComponentsBuilder.newInstance().queryParams("baz", Arrays.asList("qux", 42));
|
builder = UriComponentsBuilder.newInstance().queryParam("baz", Arrays.asList("qux", 42));
|
||||||
builder.replaceQueryParams("baz", Collections.emptyList());
|
builder.replaceQueryParam("baz", Collections.emptyList());
|
||||||
result = builder.build();
|
result = builder.build();
|
||||||
|
|
||||||
assertThat(result.getQuery()).as("Query param should have been deleted").isNull();
|
assertThat(result.getQuery()).as("Query param should have been deleted").isNull();
|
||||||
|
|||||||
Reference in New Issue
Block a user