Copy cookies to ServerResponse builders
See gh-22351
This commit is contained in:
@@ -126,8 +126,8 @@ final class DefaultEntityResponseBuilder<T> implements EntityResponse.Builder<T>
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EntityResponse.Builder<T> headers(HttpHeaders headers) {
|
public EntityResponse.Builder<T> headers(Consumer<HttpHeaders> headersConsumer) {
|
||||||
this.headers.putAll(headers);
|
headersConsumer.accept(this.headers);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -138,8 +138,8 @@ final class DefaultRenderingResponseBuilder implements RenderingResponse.Builder
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RenderingResponse.Builder headers(HttpHeaders headers) {
|
public RenderingResponse.Builder headers(Consumer<HttpHeaders> headersConsumer) {
|
||||||
this.headers.putAll(headers);
|
headersConsumer.accept(this.headers);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -189,24 +189,27 @@ class DefaultServerResponseBuilder implements ServerResponse.BodyBuilder {
|
|||||||
@Override
|
@Override
|
||||||
public ServerResponse body(Object body) {
|
public ServerResponse body(Object body) {
|
||||||
return DefaultEntityResponseBuilder.fromObject(body)
|
return DefaultEntityResponseBuilder.fromObject(body)
|
||||||
.headers(this.headers)
|
|
||||||
.status(this.statusCode)
|
.status(this.statusCode)
|
||||||
|
.headers(headers -> headers.putAll(this.headers))
|
||||||
|
.cookies(cookies -> cookies.addAll(this.cookies))
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> ServerResponse body(T body, ParameterizedTypeReference<T> bodyType) {
|
public <T> ServerResponse body(T body, ParameterizedTypeReference<T> bodyType) {
|
||||||
return DefaultEntityResponseBuilder.fromObject(body, bodyType)
|
return DefaultEntityResponseBuilder.fromObject(body, bodyType)
|
||||||
.headers(this.headers)
|
|
||||||
.status(this.statusCode)
|
.status(this.statusCode)
|
||||||
|
.headers(headers -> headers.putAll(this.headers))
|
||||||
|
.cookies(cookies -> cookies.addAll(this.cookies))
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ServerResponse render(String name, Object... modelAttributes) {
|
public ServerResponse render(String name, Object... modelAttributes) {
|
||||||
return new DefaultRenderingResponseBuilder(name)
|
return new DefaultRenderingResponseBuilder(name)
|
||||||
.headers(this.headers)
|
|
||||||
.status(this.statusCode)
|
.status(this.statusCode)
|
||||||
|
.headers(headers -> headers.putAll(this.headers))
|
||||||
|
.cookies(cookies -> cookies.addAll(this.cookies))
|
||||||
.modelAttributes(modelAttributes)
|
.modelAttributes(modelAttributes)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
@@ -214,8 +217,9 @@ class DefaultServerResponseBuilder implements ServerResponse.BodyBuilder {
|
|||||||
@Override
|
@Override
|
||||||
public ServerResponse render(String name, Map<String, ?> model) {
|
public ServerResponse render(String name, Map<String, ?> model) {
|
||||||
return new DefaultRenderingResponseBuilder(name)
|
return new DefaultRenderingResponseBuilder(name)
|
||||||
.headers(this.headers)
|
|
||||||
.status(this.statusCode)
|
.status(this.statusCode)
|
||||||
|
.headers(headers -> headers.putAll(this.headers))
|
||||||
|
.cookies(cookies -> cookies.addAll(this.cookies))
|
||||||
.modelAttributes(model)
|
.modelAttributes(model)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,12 +86,15 @@ public interface EntityResponse<T> extends ServerResponse {
|
|||||||
Builder<T> header(String headerName, String... headerValues);
|
Builder<T> header(String headerName, String... headerValues);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copy the given headers into the entity's headers map.
|
* Manipulate this response's headers with the given consumer. The
|
||||||
* @param headers the existing HttpHeaders to copy from
|
* headers provided to the consumer are "live", so that the consumer can be used to
|
||||||
|
* {@linkplain HttpHeaders#set(String, String) overwrite} existing header values,
|
||||||
|
* {@linkplain HttpHeaders#remove(Object) remove} values, or use any of the other
|
||||||
|
* {@link HttpHeaders} methods.
|
||||||
|
* @param headersConsumer a function that consumes the {@code HttpHeaders}
|
||||||
* @return this builder
|
* @return this builder
|
||||||
* @see HttpHeaders#add(String, String)
|
|
||||||
*/
|
*/
|
||||||
Builder<T> headers(HttpHeaders headers);
|
Builder<T> headers(Consumer<HttpHeaders> headersConsumer);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the HTTP status.
|
* Set the HTTP status.
|
||||||
|
|||||||
@@ -119,12 +119,15 @@ public interface RenderingResponse extends ServerResponse {
|
|||||||
Builder header(String headerName, String... headerValues);
|
Builder header(String headerName, String... headerValues);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copy the given headers into the entity's headers map.
|
* Manipulate this response's headers with the given consumer. The
|
||||||
* @param headers the existing HttpHeaders to copy from
|
* headers provided to the consumer are "live", so that the consumer can be used to
|
||||||
|
* {@linkplain HttpHeaders#set(String, String) overwrite} existing header values,
|
||||||
|
* {@linkplain HttpHeaders#remove(Object) remove} values, or use any of the other
|
||||||
|
* {@link HttpHeaders} methods.
|
||||||
|
* @param headersConsumer a function that consumes the {@code HttpHeaders}
|
||||||
* @return this builder
|
* @return this builder
|
||||||
* @see HttpHeaders#add(String, String)
|
|
||||||
*/
|
*/
|
||||||
Builder headers(HttpHeaders headers);
|
Builder headers(Consumer<HttpHeaders> headersConsumer);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the HTTP status.
|
* Set the HTTP status.
|
||||||
|
|||||||
@@ -154,7 +154,9 @@ public class DefaultEntityResponseBuilderTests {
|
|||||||
String body = "foo";
|
String body = "foo";
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
headers.set("foo", "bar");
|
headers.set("foo", "bar");
|
||||||
EntityResponse<String> result = EntityResponse.fromObject(body).headers(headers).build();
|
EntityResponse<String> result = EntityResponse.fromObject(body)
|
||||||
|
.headers(h -> h.addAll(headers))
|
||||||
|
.build();
|
||||||
assertEquals(headers, result.headers());
|
assertEquals(headers, result.headers());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -78,7 +78,9 @@ public class DefaultRenderingResponseTests {
|
|||||||
public void headers() throws Exception {
|
public void headers() throws Exception {
|
||||||
HttpHeaders headers = new HttpHeaders();
|
HttpHeaders headers = new HttpHeaders();
|
||||||
headers.set("foo", "bar");
|
headers.set("foo", "bar");
|
||||||
RenderingResponse result = RenderingResponse.create("foo").headers(headers).build();
|
RenderingResponse result = RenderingResponse.create("foo")
|
||||||
|
.headers(h -> h.addAll(headers))
|
||||||
|
.build();
|
||||||
|
|
||||||
MockHttpServletRequest request = new MockHttpServletRequest();
|
MockHttpServletRequest request = new MockHttpServletRequest();
|
||||||
MockHttpServletResponse response = new MockHttpServletResponse();
|
MockHttpServletResponse response = new MockHttpServletResponse();
|
||||||
|
|||||||
Reference in New Issue
Block a user