Browse Source

Normalize 2+ '/' in path in UriComponentsBuilder

Issue: SPR-12398
pull/686/merge
Rossen Stoyanchev 11 years ago
parent
commit
d8941ca098
  1. 9
      spring-web/src/main/java/org/springframework/web/util/UriComponentsBuilder.java
  2. 8
      spring-web/src/test/java/org/springframework/web/util/UriComponentsBuilderTests.java

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

@ -720,7 +720,14 @@ public class UriComponentsBuilder { @@ -720,7 +720,14 @@ public class UriComponentsBuilder {
if (this.path.length() == 0) {
return null;
}
String path = this.path.toString().replace("//", "/");
String path = this.path.toString();
while (true) {
int index = path.indexOf("//");
if (index == -1) {
break;
}
path = path.substring(0, index) + path.substring(index + 1);
}
return new HierarchicalUriComponents.FullPathComponent(path);
}

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

@ -291,6 +291,14 @@ public class UriComponentsBuilderTests { @@ -291,6 +291,14 @@ public class UriComponentsBuilderTests {
assertEquals(Arrays.asList("foo", "bar"), result.getPathSegments());
}
// SPR-12398
@Test
public void pathWithDuplicateSlashes() throws URISyntaxException {
UriComponents uriComponents = UriComponentsBuilder.fromPath("/foo/////////bar").build();
assertEquals("/foo/bar", uriComponents.getPath());
}
@Test
public void replacePath() {
UriComponentsBuilder builder = UriComponentsBuilder.fromUriString("http://www.ietf.org/rfc/rfc2396.txt");

Loading…
Cancel
Save