Lenient port handling in HierarchicalUriComponents#toUriString
Closes gh-32003
This commit is contained in:
parent
2b4ffe0391
commit
50fad9ed05
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2023 the original author or authors.
|
||||
* Copyright 2002-2024 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -485,7 +485,7 @@ final class HierarchicalUriComponents extends UriComponents {
|
|||
if (this.host != null) {
|
||||
uriBuilder.append(this.host);
|
||||
}
|
||||
if (getPort() != -1) {
|
||||
if (StringUtils.hasText(this.port) && !this.port.equals("-1")) {
|
||||
uriBuilder.append(':').append(this.port);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -101,6 +101,12 @@ class UriComponentsTests {
|
|||
URI.create("http://[1abc:2abc:3abc::5ABC:6abc]:8080/hotel%20list/Z%C3%BCrich"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void toUriStringWithPortVariable() {
|
||||
String url = "http://localhost:{port}/first";
|
||||
assertThat(UriComponentsBuilder.fromUriString(url).build().toUriString()).isEqualTo(url);
|
||||
}
|
||||
|
||||
@Test
|
||||
void expand() {
|
||||
UriComponents uri = UriComponentsBuilder.fromUriString("https://example.com").path("/{foo} {bar}").build();
|
||||
|
@ -166,12 +172,6 @@ class UriComponentsTests {
|
|||
assertThatIllegalStateException()
|
||||
.isThrownBy(uriComponents::toUri)
|
||||
.withMessage("The port must be an integer: XXX");
|
||||
assertThatIllegalStateException()
|
||||
.isThrownBy(uriComponents::toUriString)
|
||||
.withMessage("The port must be an integer: XXX");
|
||||
assertThatIllegalStateException()
|
||||
.isThrownBy(uriComponents::toString)
|
||||
.withMessage("The port must be an integer: XXX");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Reference in New Issue