Browse Source

Polish

pull/23247/head
Rossen Stoyanchev 7 years ago
parent
commit
fbb72eff2e
  1. 8
      spring-web/src/main/java/org/springframework/web/util/DefaultUriBuilderFactory.java
  2. 8
      spring-web/src/main/java/org/springframework/web/util/UriBuilder.java
  3. 55
      spring-web/src/main/java/org/springframework/web/util/UriComponentsBuilder.java
  4. 22
      spring-web/src/test/java/org/springframework/web/util/UriComponentsBuilderTests.java

8
spring-web/src/main/java/org/springframework/web/util/DefaultUriBuilderFactory.java

@ -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;
} }

8
spring-web/src/main/java/org/springframework/web/util/UriBuilder.java

@ -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.

55
spring-web/src/main/java/org/springframework/web/util/UriComponentsBuilder.java

@ -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;
} }
/** /**

22
spring-web/src/test/java/org/springframework/web/util/UriComponentsBuilderTests.java

@ -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();

Loading…
Cancel
Save