Expose request id at the ServerHttpRequest level

Hiding it (at AbstractServerHttpRequest) complicates matters since
requests are often mutated and decorated, plus it's also possible to
implement the interface directly (we've one, albeit corner case).

Issue: SPR-16966
This commit is contained in:
Rossen Stoyanchev
2018-07-06 14:29:19 -04:00
parent 5dc49b16ea
commit bc3cf0eeb8
8 changed files with 50 additions and 46 deletions

View File

@@ -178,7 +178,7 @@ class DefaultServerRequestBuilder implements ServerRequest.Builder {
@Override
public ServerRequest build() {
ServerHttpRequest serverHttpRequest = new BuiltServerHttpRequest(
ServerHttpRequest serverHttpRequest = new BuiltServerHttpRequest(this.exchange.getRequest().getId(),
this.methodName, this.uri, this.headers, this.cookies, this.body);
ServerWebExchange exchange = new DelegatingServerWebExchange(
serverHttpRequest, this.exchange, this.messageReaders);
@@ -190,6 +190,8 @@ class DefaultServerRequestBuilder implements ServerRequest.Builder {
private static final Pattern QUERY_PATTERN = Pattern.compile("([^&=]+)(=?)([^&]+)?");
private final String id;
private final String method;
private final URI uri;
@@ -204,9 +206,10 @@ class DefaultServerRequestBuilder implements ServerRequest.Builder {
private final Flux<DataBuffer> body;
public BuiltServerHttpRequest(String method, URI uri, HttpHeaders headers,
public BuiltServerHttpRequest(String id, String method, URI uri, HttpHeaders headers,
MultiValueMap<String, HttpCookie> cookies, Flux<DataBuffer> body) {
this.id = id;
this.method = method;
this.uri = uri;
this.path = RequestPath.parse(uri, null);
@@ -241,6 +244,11 @@ class DefaultServerRequestBuilder implements ServerRequest.Builder {
return queryParams;
}
@Override
public String getId() {
return this.id;
}
@Override
public String getMethodValue() {
return this.method;