Permalink
Browse files

UriComponentsBuilder parse of empty fragments

Check for an empty fragment in UriComponentsBuilder.fromUriString(...)
to prevent the invocation of fragment(...).

Previously, UriComponentsBuilder.fromUriString(...) threw an exception
in the case of an empty fragment being provided (e.g. /example#).

Issue: SPR-10363
  • Loading branch information...
1 parent 8e4e0f3 commit 3eb361066067438efbcf0758e78f229e2655a599 @olivergierke olivergierke committed with philwebb Mar 8, 2013
@@ -48,6 +48,7 @@
* @author Arjen Poutsma
* @author Rossen Stoyanchev
* @author Phillip Webb
+ * @author Oliver Gierke
* @since 3.1
* @see #newInstance()
* @see #fromPath(String)
@@ -204,7 +205,10 @@ public static UriComponentsBuilder fromUriString(String uri) {
builder.path(path);
builder.query(query);
}
- builder.fragment(fragment);
+
+ if (StringUtils.hasText(fragment)) {
+ builder.fragment(fragment);
+ }
return builder;
}
@@ -23,16 +23,16 @@
import java.util.Map;
import org.junit.Test;
-
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
-import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
/**
* @author Arjen Poutsma
* @author Phillip Webb
+ * @author Oliver Gierke
*/
public class UriComponentsBuilderTests {
@@ -354,4 +354,11 @@ public void emptySegments() throws Exception {
assertThat(UriComponentsBuilder.fromUriString("http://example.com/abc/").path("/x/").path("/y/z").build().toString(), equalTo("http://example.com/abc/x/y/z"));
assertThat(UriComponentsBuilder.fromUriString("http://example.com/abc/").pathSegment("x").path("y").build().toString(), equalTo("http://example.com/abc/x/y"));
}
+
+ @Test
+ public void parsesEmptyFragment() {
+ UriComponents components = UriComponentsBuilder.fromUriString("/example#").build();
+ assertThat(components.getFragment(), is(nullValue()));
+ assertThat(components.toString(), equalTo("/example"));
+ }
}

0 comments on commit 3eb3610

Please sign in to comment.