Add rawStatusCode() to ServerResponse in both WebFlux and Servlet

Closes gh-22872
This commit is contained in:
Arjen Poutsma 2019-07-19 15:53:15 +02:00
parent 56c2987273
commit 7b73418418
9 changed files with 47 additions and 2 deletions

View File

@ -349,6 +349,11 @@ class DefaultServerResponseBuilder implements ServerResponse.BodyBuilder {
return HttpStatus.valueOf(this.statusCode);
}
@Override
public int rawStatusCode() {
return this.statusCode;
}
@Override
public final HttpHeaders headers() {
return this.headers;

View File

@ -60,9 +60,21 @@ public interface ServerResponse {
/**
* Return the status code of this response.
* @return the status as an HttpStatus enum value
* @throws IllegalArgumentException in case of an unknown HTTP status code
* @see HttpStatus#valueOf(int)
*/
HttpStatus statusCode();
/**
* Return the (potentially non-standard) status code of this response.
* @return the status as an integer
* @since 5.2
* @see #statusCode()
* @see HttpStatus#resolve(int)
*/
int rawStatusCode();
/**
* Return the headers of this response.
*/

View File

@ -90,7 +90,8 @@ public class DefaultEntityResponseBuilderTests {
String body = "foo";
Mono<EntityResponse<String>> result = EntityResponse.fromObject(body).status(HttpStatus.CREATED).build();
StepVerifier.create(result)
.expectNextMatches(response -> HttpStatus.CREATED.equals(response.statusCode()))
.expectNextMatches(response -> HttpStatus.CREATED.equals(response.statusCode()) &&
response.rawStatusCode() == 201)
.expectComplete()
.verify();
}

View File

@ -86,7 +86,8 @@ public class DefaultServerResponseBuilderTests {
public void status() {
Mono<ServerResponse> result = ServerResponse.status(HttpStatus.CREATED).build();
StepVerifier.create(result)
.expectNextMatches(response -> HttpStatus.CREATED.equals(response.statusCode()))
.expectNextMatches(response -> HttpStatus.CREATED.equals(response.statusCode()) &&
response.rawStatusCode() == 201)
.expectComplete()
.verify();
}

View File

@ -195,6 +195,10 @@ public class RouterFunctionsTests {
return HttpStatus.OK;
}
@Override
public int rawStatusCode() {
return 200;
}
@Override
public HttpHeaders headers() {
return new HttpHeaders();
}
@ -229,6 +233,10 @@ public class RouterFunctionsTests {
return HttpStatus.OK;
}
@Override
public int rawStatusCode() {
return 200;
}
@Override
public HttpHeaders headers() {
return new HttpHeaders();
}

View File

@ -264,6 +264,11 @@ class DefaultServerResponseBuilder implements ServerResponse.BodyBuilder {
return HttpStatus.valueOf(this.statusCode);
}
@Override
public int rawStatusCode() {
return this.statusCode;
}
@Override
public final HttpHeaders headers() {
return this.headers;

View File

@ -57,9 +57,20 @@ public interface ServerResponse {
/**
* Return the status code of this response.
* @return the status as an HttpStatus enum value
* @throws IllegalArgumentException in case of an unknown HTTP status code
* @see HttpStatus#valueOf(int)
*/
HttpStatus statusCode();
/**
* Return the (potentially non-standard) status code of this response.
* @return the status as an integer
* @see #statusCode()
* @see HttpStatus#valueOf(int)
*/
int rawStatusCode();
/**
* Return the headers of this response.
*/

View File

@ -81,6 +81,7 @@ public class DefaultEntityResponseBuilderTests {
EntityResponse.fromObject(body).status(HttpStatus.CREATED).build();
assertThat(result.statusCode()).isEqualTo(HttpStatus.CREATED);
assertThat(result.rawStatusCode()).isEqualTo(201);
}
@Test

View File

@ -67,6 +67,7 @@ public class DefaultServerResponseBuilderTests {
public void status() {
ServerResponse response = ServerResponse.status(HttpStatus.CREATED).build();
assertThat(response.statusCode()).isEqualTo(HttpStatus.CREATED);
assertThat(response.rawStatusCode()).isEqualTo(201);
}
@Test