Merge pull request #22750 from Lopfest

* pr/22750:
  Polish "Fix include exception handling in DefaultErrorAttributes"
  Fix include exception handling in DefaultErrorAttributes

Closes gh-22750
pull/23585/head
Phillip Webb 4 years ago
commit b8a8b85a58

@ -86,7 +86,7 @@ public class DefaultErrorAttributes implements ErrorAttributes {
@Override
public Map<String, Object> getErrorAttributes(ServerRequest request, ErrorAttributeOptions options) {
Map<String, Object> errorAttributes = getErrorAttributes(request, options.isIncluded(Include.STACK_TRACE));
if (this.includeException != null) {
if (Boolean.TRUE.equals(this.includeException)) {
options = options.including(Include.EXCEPTION);
}
if (!options.isIncluded(Include.EXCEPTION)) {

@ -108,7 +108,7 @@ public class DefaultErrorAttributes implements ErrorAttributes, HandlerException
@Override
public Map<String, Object> getErrorAttributes(WebRequest webRequest, ErrorAttributeOptions options) {
Map<String, Object> errorAttributes = getErrorAttributes(webRequest, options.isIncluded(Include.STACK_TRACE));
if (this.includeException != null) {
if (Boolean.TRUE.equals(this.includeException)) {
options = options.including(Include.EXCEPTION);
}
if (!options.isIncluded(Include.EXCEPTION)) {

@ -164,6 +164,19 @@ class DefaultErrorAttributesTests {
assertThat(attributes.get("message")).isEqualTo("Test");
}
@Test
@SuppressWarnings("deprecation")
void excludeExceptionWithDeprecatedConstructor() {
RuntimeException error = new RuntimeException("Test");
this.errorAttributes = new DefaultErrorAttributes(false);
MockServerHttpRequest request = MockServerHttpRequest.get("/test").build();
ServerRequest serverRequest = buildServerRequest(request, error);
Map<String, Object> attributes = this.errorAttributes.getErrorAttributes(serverRequest,
ErrorAttributeOptions.of());
assertThat(this.errorAttributes.getError(serverRequest)).isSameAs(error);
assertThat(attributes.get("exception")).isNull();
}
@Test
void processResponseStatusException() {
RuntimeException nested = new RuntimeException("Test");

@ -231,6 +231,17 @@ class DefaultErrorAttributesTests {
assertThat(attributes.get("message")).isEqualTo("Test");
}
@Test
@SuppressWarnings("deprecation")
void excludeExceptionAttributeWithDeprecatedConstructor() {
DefaultErrorAttributes errorAttributes = new DefaultErrorAttributes(false);
RuntimeException ex = new RuntimeException("Test");
this.request.setAttribute("javax.servlet.error.exception", ex);
Map<String, Object> attributes = errorAttributes.getErrorAttributes(this.webRequest,
ErrorAttributeOptions.of());
assertThat(attributes.get("exception")).isNull();
}
@Test
void withStackTraceAttribute() {
RuntimeException ex = new RuntimeException("Test");

Loading…
Cancel
Save