Skip to content

Commit e4c84ec

Browse files
committed
Consistent default encoding in DefaultUriBuilderFactory
Issue: SPR-17465
1 parent f5da737 commit e4c84ec

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

spring-web/src/main/java/org/springframework/web/util/DefaultUriBuilderFactory.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -228,16 +228,14 @@ public DefaultUriBuilder(String uriTemplate) {
228228
}
229229

230230
private UriComponentsBuilder initUriComponentsBuilder(String uriTemplate) {
231-
231+
UriComponentsBuilder result;
232232
if (StringUtils.isEmpty(uriTemplate)) {
233-
return baseUri != null ? baseUri.cloneBuilder() : UriComponentsBuilder.newInstance();
233+
result = baseUri != null ? baseUri.cloneBuilder() : UriComponentsBuilder.newInstance();
234234
}
235-
236-
UriComponentsBuilder result;
237-
if (baseUri != null) {
238-
UriComponentsBuilder uricBuilder = UriComponentsBuilder.fromUriString(uriTemplate);
239-
UriComponents uric = uricBuilder.build();
240-
result = uric.getHost() == null ? baseUri.cloneBuilder().uriComponents(uric) : uricBuilder;
235+
else if (baseUri != null) {
236+
UriComponentsBuilder builder = UriComponentsBuilder.fromUriString(uriTemplate);
237+
UriComponents uri = builder.build();
238+
result = uri.getHost() == null ? baseUri.cloneBuilder().uriComponents(uri) : builder;
241239
}
242240
else {
243241
result = UriComponentsBuilder.fromUriString(uriTemplate);

spring-web/src/test/java/org/springframework/web/util/DefaultUriBuilderFactoryTests.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,14 @@ public class DefaultUriBuilderFactoryTests {
3535
@Test
3636
public void defaultSettings() {
3737
DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory();
38-
URI uri = factory.uriString("/foo").pathSegment("{id}").build("a/b");
38+
URI uri = factory.uriString("/foo/{id}").build("a/b");
39+
assertEquals("/foo/a%2Fb", uri.toString());
40+
}
41+
42+
@Test // SPR-17465
43+
public void defaultSettingsWithBuilder() {
44+
DefaultUriBuilderFactory factory = new DefaultUriBuilderFactory();
45+
URI uri = factory.builder().path("/foo/{id}").build("a/b");
3946
assertEquals("/foo/a%2Fb", uri.toString());
4047
}
4148

0 commit comments

Comments
 (0)