Skip to content

Commit 313cc36

Browse files
jansupolsenivam
authored andcommitted
Fix normalizing URIs with percent encoded symbols
Signed-off-by: jansupol <jan.supol@oracle.com>
1 parent 4f2b834 commit 313cc36

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

core-common/src/main/java/org/glassfish/jersey/uri/UriTemplate.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ public static URI normalize(final URI uri) {
367367

368368
final StringBuilder pathBuilder = new StringBuilder();
369369
for (final String segment : resolvedSegments) {
370-
pathBuilder.append('/').append(segment);
370+
pathBuilder.append('/').append(UriComponent.encode(segment, UriComponent.Type.PATH));
371371
}
372372

373373
String resultString = createURIWithStringValues(uri.getScheme(),

tests/e2e-core-common/src/test/java/org/glassfish/jersey/tests/e2e/common/uri/internal/JerseyUriBuilderTest.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import javax.ws.rs.GET;
3131
import javax.ws.rs.Path;
3232
import javax.ws.rs.PathParam;
33+
import javax.ws.rs.core.Link;
3334
import javax.ws.rs.core.MultivaluedMap;
3435
import javax.ws.rs.core.PathSegment;
3536
import javax.ws.rs.core.UriBuilder;
@@ -1659,12 +1660,19 @@ public void testQueryParamStyleMultiPairs() {
16591660
}
16601661

16611662
@Test
1662-
void testFragment2569() throws URISyntaxException {
1663+
void testFragment5269() throws URISyntaxException {
16631664
final URI uri = new URI("http://www.example.org/foo.xml#xpointer(//Rube)").normalize();
16641665
Assertions.assertEquals(uri, UriBuilder.fromUri(uri).build()); // prints "http://www.example.org/foo.xml#xpointer(//Rube)"
16651666
Assertions.assertEquals(uri, UriBuilder.fromUri(uri).fragment("xpointer(//{type})").build("Rube"));
16661667
}
16671668

1669+
@Test
1670+
public void test5416() {
1671+
URI uri = UriBuilder.fromUri("http://host.com/path%20path/.test.jpg").build();
1672+
Link link = Link.fromUri(uri).build();
1673+
Assertions.assertEquals(uri, link.getUri());
1674+
}
1675+
16681676
private void checkQueryFormat(String fromUri, JerseyQueryParamStyle queryParamStyle, String expected) {
16691677
final URI uri = ((JerseyUriBuilder) UriBuilder.fromUri(fromUri))
16701678
.setQueryParamStyle(queryParamStyle)

0 commit comments

Comments
 (0)