From dc87a2211ced6540d0f744bb81b714b54ec0d045 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Tue, 30 Jul 2013 12:30:21 -0400 Subject: [PATCH] Make HTTP scheme parsing case-insensitive Issue: SPR-10779 --- .../springframework/web/util/UriComponentsBuilder.java | 5 +++-- .../web/util/UriComponentsBuilderTests.java | 8 ++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) 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 eadf6839c39..2e3a47e791e 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 @@ -60,7 +60,7 @@ public class UriComponentsBuilder { private static final String SCHEME_PATTERN = "([^:/?#]+):"; - private static final String HTTP_PATTERN = "(http|https):"; + private static final String HTTP_PATTERN = "(?i)(http|https):"; private static final String USERINFO_PATTERN = "([^@/]*)"; @@ -223,7 +223,8 @@ public class UriComponentsBuilder { if (m.matches()) { UriComponentsBuilder builder = new UriComponentsBuilder(); - builder.scheme(m.group(1)); + String scheme = m.group(1); + builder.scheme((scheme != null) ? scheme.toLowerCase() : scheme); builder.userInfo(m.group(4)); builder.host(m.group(5)); String port = m.group(7); 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 fd60e2dcd9d..beb276fc3c6 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 @@ -161,6 +161,14 @@ public class UriComponentsBuilderTests { assertEquals("1USD=?EUR", result.getQueryParams().getFirst("q")); } + // SPR-10779 + + @Test + public void fromHttpUrlStringCaseInsesitiveScheme() { + assertEquals("http", UriComponentsBuilder.fromHttpUrl("HTTP://www.google.com").build().getScheme()); + assertEquals("https", UriComponentsBuilder.fromHttpUrl("HTTPS://www.google.com").build().getScheme()); + } + @Test public void path() throws URISyntaxException { UriComponentsBuilder builder = UriComponentsBuilder.fromPath("/foo/bar");