Move URL transform methods from ServerHttpResponse to ServerWebExchange

This commit moves `encodeUrl` and `registerUrlEncoder` from
ServerHttpResponse to ServerWebExchange.

It also renames `encodeUrl` to `transformUrl` and `registerUrlEncoder`
to `addUrlTransformer` to make it clearer that these methods do not
perform actual URL encodings (i.e. they do not replaceinvalid
characters).
The `add` prefix (instead of `register`) makes it clearer that each
function is added in addition to the previous one.

Issue: SPR-15924
This commit is contained in:
Arjen Poutsma
2017-09-06 14:39:09 +02:00
parent 5d4ee09d53
commit 02a2c400c7
10 changed files with 110 additions and 74 deletions

View File

@@ -289,9 +289,9 @@ public class RedirectView extends AbstractUrlBasedView {
* @param exchange current exchange
*/
protected Mono<Void> sendRedirect(String targetUrl, ServerWebExchange exchange) {
String transformedUrl = (isRemoteHost(targetUrl) ? targetUrl : exchange.transformUrl(targetUrl));
ServerHttpResponse response = exchange.getResponse();
String encodedURL = (isRemoteHost(targetUrl) ? targetUrl : response.encodeUrl(targetUrl));
response.getHeaders().setLocation(URI.create(encodedURL));
response.getHeaders().setLocation(URI.create(transformedUrl));
response.setStatusCode(getStatusCode());
return Mono.empty();
}

View File

@@ -203,7 +203,7 @@ public class RequestContext {
*/
public String getContextUrl(String relativeUrl) {
String url = StringUtils.applyRelativePath(getContextPath() + "/", relativeUrl);
return getExchange().getResponse().encodeUrl(url);
return getExchange().transformUrl(url);
}
/**
@@ -220,7 +220,7 @@ public class RequestContext {
String url = StringUtils.applyRelativePath(getContextPath() + "/", relativeUrl);
UriTemplate template = new UriTemplate(url);
url = template.expand(params).toASCIIString();
return getExchange().getResponse().encodeUrl(url);
return getExchange().transformUrl(url);
}
/**