Commit 9b8decf9 authored by Andy Wilkinson's avatar Andy Wilkinson

Merge pull request #17998 from dreis2211

* gh-17998:
  Improve handling of non-standard status codes in WebMvcTags

Closes gh-17998
parents f46a03d5 a2a672de
...@@ -175,22 +175,21 @@ public final class WebMvcTags { ...@@ -175,22 +175,21 @@ public final class WebMvcTags {
*/ */
public static Tag outcome(HttpServletResponse response) { public static Tag outcome(HttpServletResponse response) {
if (response != null) { if (response != null) {
HttpStatus status = extractStatus(response); HttpStatus.Series series = HttpStatus.Series.resolve(response.getStatus());
if (status != null) { if (series != null) {
if (status.is1xxInformational()) { switch (series) {
case INFORMATIONAL:
return OUTCOME_INFORMATIONAL; return OUTCOME_INFORMATIONAL;
} case SUCCESSFUL:
if (status.is2xxSuccessful()) {
return OUTCOME_SUCCESS; return OUTCOME_SUCCESS;
} case REDIRECTION:
if (status.is3xxRedirection()) {
return OUTCOME_REDIRECTION; return OUTCOME_REDIRECTION;
} case CLIENT_ERROR:
if (status.is4xxClientError()) {
return OUTCOME_CLIENT_ERROR; return OUTCOME_CLIENT_ERROR;
case SERVER_ERROR:
return OUTCOME_SERVER_ERROR;
} }
} }
return OUTCOME_SERVER_ERROR;
} }
return OUTCOME_UNKNOWN; return OUTCOME_UNKNOWN;
} }
......
...@@ -136,6 +136,13 @@ class WebMvcTagsTests { ...@@ -136,6 +136,13 @@ class WebMvcTagsTests {
assertThat(tag.getValue()).isEqualTo("CLIENT_ERROR"); assertThat(tag.getValue()).isEqualTo("CLIENT_ERROR");
} }
@Test
void outcomeTagIsClientErrorWhenResponseIsNonStandardInClientSeries() {
this.response.setStatus(490);
Tag tag = WebMvcTags.outcome(this.response);
assertThat(tag.getValue()).isEqualTo("CLIENT_ERROR");
}
@Test @Test
void outcomeTagIsServerErrorWhenResponseIs5xx() { void outcomeTagIsServerErrorWhenResponseIs5xx() {
this.response.setStatus(500); this.response.setStatus(500);
...@@ -143,4 +150,11 @@ class WebMvcTagsTests { ...@@ -143,4 +150,11 @@ class WebMvcTagsTests {
assertThat(tag.getValue()).isEqualTo("SERVER_ERROR"); assertThat(tag.getValue()).isEqualTo("SERVER_ERROR");
} }
@Test
void outcomeTagIsUnknownWhenResponseStatusIsInUnknownSeries() {
this.response.setStatus(701);
Tag tag = WebMvcTags.outcome(this.response);
assertThat(tag.getValue()).isEqualTo("UNKNOWN");
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment