Inject UriComponentsBuilder relative to webapp root
Issue: SPR-16813
This commit is contained in:
parent
4da43de7e1
commit
7f954ebc32
|
@ -16,6 +16,7 @@
|
|||
|
||||
package org.springframework.web.reactive.result.method.annotation;
|
||||
|
||||
import java.net.URI;
|
||||
import java.time.ZoneId;
|
||||
import java.util.Locale;
|
||||
import java.util.TimeZone;
|
||||
|
@ -109,7 +110,8 @@ public class ServerWebExchangeArgumentResolver extends HandlerMethodArgumentReso
|
|||
return timeZone != null ? timeZone.toZoneId() : ZoneId.systemDefault();
|
||||
}
|
||||
else if (UriBuilder.class == paramType || UriComponentsBuilder.class == paramType) {
|
||||
return UriComponentsBuilder.fromUri(exchange.getRequest().getURI());
|
||||
URI uri = exchange.getRequest().getURI();
|
||||
return UriComponentsBuilder.fromUri(uri).replacePath(null).replaceQuery(null);
|
||||
}
|
||||
else {
|
||||
// should never happen...
|
||||
|
|
|
@ -20,6 +20,7 @@ import java.time.ZoneId;
|
|||
import java.util.Locale;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
|
@ -52,7 +53,8 @@ public class ServerWebExchangeArgumentResolverTests {
|
|||
private final ServerWebExchangeArgumentResolver resolver =
|
||||
new ServerWebExchangeArgumentResolver(ReactiveAdapterRegistry.getSharedInstance());
|
||||
|
||||
private final MockServerWebExchange exchange = MockServerWebExchange.from(MockServerHttpRequest.get("/path"));
|
||||
private final MockServerWebExchange exchange = MockServerWebExchange.from(
|
||||
MockServerHttpRequest.get("http://example.org:9999/path?q=foo"));
|
||||
|
||||
private ResolvableMethod testMethod = ResolvableMethod.on(getClass()).named("handle").build();
|
||||
|
||||
|
@ -104,7 +106,7 @@ public class ServerWebExchangeArgumentResolverTests {
|
|||
|
||||
assertNotNull(value);
|
||||
assertEquals(UriComponentsBuilder.class, value.getClass());
|
||||
assertEquals("/path/next", ((UriComponentsBuilder) value).path("/next").build().toUriString());
|
||||
assertEquals("http://example.org:9999/next", ((UriComponentsBuilder) value).path("/next").toUriString());
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue