spring-framework icon indicating copy to clipboard operation
spring-framework copied to clipboard

handling of path segments with leading spaces in HierarchicalUriComponents

Open diamondT opened this issue 1 year ago • 0 comments

hi,

was wondering, is there a reason that path segments are trimmed in HierarchicalUriComponents.FullPathComponent?

https://github.com/spring-projects/spring-framework/blob/aaf33100d9fdfa11917f76048a71ca21f3eace3b/spring-web/src/main/java/org/springframework/web/util/HierarchicalUriComponents.java#L900

for example the following test will fail

	@Test
	void pathWithLeadingSpace() {
		String theUrl = "https://path.com/seg1/seg2/ seg-with-leading-space/file.png";
		UriComponents uriComponents = UriComponentsBuilder.fromUriString(theUrl).build();
		assertThat(uriComponents.getPathSegments()).hasSameElementsAs(
				List.of("seg1", "seg2", " seg-with-leading-space", "file.png")
		);
	}

mind you, .toUri() still returns the correct thing (https://path.com/seg1/seg2/%20seg-with-leading-space/file.png), it's just that it seems weird to store the "wrong" path components.

looks like a simple change for the above line like

String[] segments = StringUtils.tokenizeToStringArray(getPath(), PATH_DELIMITER_STRING, false, true);

should do the trick.

insights?

thanks,

diamondT avatar Apr 25 '24 07:04 diamondT