From 8a14cc27252bd072d3a19487fe46da8c61a8c65e Mon Sep 17 00:00:00 2001 From: eitan613 Date: Mon, 17 Aug 2020 23:32:14 +0300 Subject: [PATCH] fix for issue #25323 To prevent confusion about the build() method --- .../web/util/UriComponentsBuilder.java | 2 +- .../web/util/UriComponentsBuilderTests.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) 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..eb1fc65a9248 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 @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();