Add rawStatusCode() to ServerResponse in both WebFlux and Servlet

Closes gh-22872
master
Arjen Poutsma 5 years ago
parent 56c2987273
commit 7b73418418
  1. 5
      spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultServerResponseBuilder.java
  2. 12
      spring-webflux/src/main/java/org/springframework/web/reactive/function/server/ServerResponse.java
  3. 3
      spring-webflux/src/test/java/org/springframework/web/reactive/function/server/DefaultEntityResponseBuilderTests.java
  4. 3
      spring-webflux/src/test/java/org/springframework/web/reactive/function/server/DefaultServerResponseBuilderTests.java
  5. 8
      spring-webflux/src/test/java/org/springframework/web/reactive/function/server/RouterFunctionsTests.java
  6. 5
      spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultServerResponseBuilder.java
  7. 11
      spring-webmvc/src/main/java/org/springframework/web/servlet/function/ServerResponse.java
  8. 1
      spring-webmvc/src/test/java/org/springframework/web/servlet/function/DefaultEntityResponseBuilderTests.java
  9. 1
      spring-webmvc/src/test/java/org/springframework/web/servlet/function/DefaultServerResponseBuilderTests.java

@ -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;

@ -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.
*/

@ -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();
}

@ -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();
}

@ -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();
}

@ -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;

@ -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.
*/

@ -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

@ -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

Loading…
Cancel
Save