This commit is contained in:
Rossen Stoyanchev
2019-07-05 09:01:13 +01:00
parent ea10ee5265
commit fbb72eff2e
4 changed files with 47 additions and 46 deletions

View File

@@ -328,8 +328,8 @@ public class DefaultUriBuilderFactory implements UriBuilderFactory {
}
@Override
public DefaultUriBuilder queryParams(String name, @Nullable Collection<?> values) {
this.uriComponentsBuilder.queryParams(name, values);
public DefaultUriBuilder queryParam(String name, @Nullable Collection<?> values) {
this.uriComponentsBuilder.queryParam(name, values);
return this;
}
@@ -340,8 +340,8 @@ public class DefaultUriBuilderFactory implements UriBuilderFactory {
}
@Override
public DefaultUriBuilder replaceQueryParams(String name, @Nullable Collection<?> values) {
this.uriComponentsBuilder.replaceQueryParams(name, values);
public DefaultUriBuilder replaceQueryParam(String name, @Nullable Collection<?> values) {
this.uriComponentsBuilder.replaceQueryParam(name, values);
return this;
}

View File

@@ -125,7 +125,7 @@ public interface UriBuilder {
* only (i.e. {@code ?foo} instead of {@code ?foo=bar}.
* @param name the query parameter name
* @param values the query parameter values
* @see #queryParams(String, Collection)
* @see #queryParam(String, Collection)
*/
UriBuilder queryParam(String name, Object... values);
@@ -139,7 +139,7 @@ public interface UriBuilder {
* @since 5.2.0
* @see #queryParam(String, Object...)
*/
UriBuilder queryParams(String name, @Nullable Collection<?> values);
UriBuilder queryParam(String name, @Nullable Collection<?> values);
/**
* 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.
* @param name the query parameter name
* @param values the query parameter values
* @see #replaceQueryParams(String, Collection)
* @see #replaceQueryParam(String, Collection)
*/
UriBuilder replaceQueryParam(String name, Object... values);
@@ -164,7 +164,7 @@ public interface UriBuilder {
* @since 5.2.0
* @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.

View File

@@ -20,9 +20,7 @@ import java.net.URI;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
@@ -34,7 +32,6 @@ import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpRequest;
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.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 Object[] EMPTY_VALUES = new Object[0];
@Nullable
private String scheme;
@@ -700,11 +699,22 @@ public class UriComponentsBuilder implements UriBuilder, Cloneable {
* @param name the query parameter name
* @param values the query parameter values
* @return this UriComponentsBuilder
* @see #queryParams(String, Collection)
* @see #queryParam(String, Collection)
*/
@Override
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...)
*/
@Override
public UriComponentsBuilder queryParams(String name, @Nullable Collection<?> values) {
Assert.notNull(name, "Name must not be null");
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;
public UriComponentsBuilder queryParam(String name, @Nullable Collection<?> values) {
return queryParam(name, values != null ? values.toArray() : EMPTY_VALUES);
}
/**
@@ -754,11 +753,17 @@ public class UriComponentsBuilder implements UriBuilder, Cloneable {
* @param name the query parameter name
* @param values the query parameter values
* @return this UriComponentsBuilder
* @see #replaceQueryParams(String, Collection)
* @see #replaceQueryParam(String, Collection)
*/
@Override
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
*/
@Override
public UriComponentsBuilder replaceQueryParams(String name, @Nullable Collection<?> values) {
Assert.notNull(name, "Name must not be null");
this.queryParams.remove(name);
if (!CollectionUtils.isEmpty(values)) {
queryParams(name, values);
}
resetSchemeSpecificPart();
return this;
public UriComponentsBuilder replaceQueryParam(String name, @Nullable Collection<?> values) {
return replaceQueryParam(name, values != null ? values.toArray() : EMPTY_VALUES);
}
/**