diff --git a/spring-web/src/main/java/org/springframework/web/util/UriComponentsBuilder.java b/spring-web/src/main/java/org/springframework/web/util/UriComponentsBuilder.java index 6ed5f2258461..7c61cb0a6350 100644 --- a/spring-web/src/main/java/org/springframework/web/util/UriComponentsBuilder.java +++ b/spring-web/src/main/java/org/springframework/web/util/UriComponentsBuilder.java @@ -440,7 +440,7 @@ public UriComponents build() { /** * Build a {@code UriComponents} instance from the various components * contained in this builder. - * @param encoded whether all the components set in this builder are + * @param encoded asserts whether all the components set in this builder are already * encoded ({@code true}) or not ({@code false}) * @return the URI components */ diff --git a/spring-web/src/test/java/org/springframework/web/util/UriComponentsBuilderTests.java b/spring-web/src/test/java/org/springframework/web/util/UriComponentsBuilderTests.java index 22f9696cd151..41de2d1efc22 100644 --- a/spring-web/src/test/java/org/springframework/web/util/UriComponentsBuilderTests.java +++ b/spring-web/src/test/java/org/springframework/web/util/UriComponentsBuilderTests.java @@ -49,6 +49,18 @@ */ class UriComponentsBuilderTests { + @Test + public void fromUriStringQueryParamContainingBracket() throws URISyntaxException { + URI uri = new URI("http://example.com/some/path?query=[fromto]"); + URI finalUri = uri; + assertThatIllegalArgumentException().isThrownBy(() -> UriComponentsBuilder.fromUri(finalUri).build(true)); + //ok, then encode it + uri = UriComponentsBuilder.fromUri(uri).build(false).encode().toUri(); + //confirm encoded + URI checkUri = UriComponentsBuilder.fromUri(uri).build(true).toUri(); + assertThat(uri.toString()).isEqualTo(checkUri.toString()); + } + @Test void plain() throws URISyntaxException { UriComponentsBuilder builder = UriComponentsBuilder.newInstance();