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
This commit is contained in:
parent
8e4e0f3531
commit
3eb3610660
|
|
@ -48,6 +48,7 @@ import org.springframework.web.util.HierarchicalUriComponents.PathComponent;
|
|||
* @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 class UriComponentsBuilder {
|
|||
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.HashMap;
|
|||
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 class UriComponentsBuilderTests {
|
|||
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"));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue