Skip to content

Commit 5e7be50

Browse files
committed
Restore trace request param behaviour with error controller
This commits restores the behaviour of Spring Boot 1.x with regards to the "trace" request param used to add the stacktrace to the model. This was inadvertently changed so that the stacktrace would be added if the parameter wasn't set. Closes gh-14171
1 parent 9938d1f commit 5e7be50

File tree

2 files changed

+23
-4
lines changed

2 files changed

+23
-4
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/servlet/error/AbstractErrorController.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,9 @@ protected Map<String, Object> getErrorAttributes(HttpServletRequest request,
7676

7777
protected boolean getTraceParameter(HttpServletRequest request) {
7878
String parameter = request.getParameter("trace");
79+
if (parameter == null) {
80+
return false;
81+
}
7982
return !"false".equalsIgnoreCase(parameter);
8083
}
8184

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/servlet/error/BasicErrorControllerIntegrationTests.java

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import java.util.Arrays;
2727
import java.util.List;
2828
import java.util.Map;
29+
import java.util.function.Supplier;
2930

3031
import javax.servlet.http.HttpServletRequest;
3132
import javax.servlet.http.HttpServletResponse;
@@ -94,15 +95,30 @@ public void testErrorForMachineClient() {
9495
}
9596

9697
@Test
98+
public void testErrorForMachineClientTraceParamTrue() {
99+
errorForMachineClientOnTraceParam(() -> createUrl("?trace=true"), true);
100+
}
101+
102+
@Test
103+
public void testErrorForMachineClientTraceParamFalse() {
104+
errorForMachineClientOnTraceParam(() -> createUrl("?trace=false"), false);
105+
}
106+
107+
@Test
108+
public void testErrorForMachineClientTraceParamAbsent() {
109+
errorForMachineClientOnTraceParam(() -> createUrl(""), false);
110+
}
111+
97112
@SuppressWarnings("rawtypes")
98-
public void testErrorForMachineClientTraceParamStacktrace() {
113+
private void errorForMachineClientOnTraceParam(Supplier<String> url,
114+
boolean expectedTrace) {
99115
load("--server.error.include-exception=true",
100116
"--server.error.include-stacktrace=on-trace-param");
101-
ResponseEntity<Map> entity = new TestRestTemplate()
102-
.getForEntity(createUrl("?trace=true"), Map.class);
117+
ResponseEntity<Map> entity = new TestRestTemplate().getForEntity(url.get(),
118+
Map.class);
103119
assertErrorAttributes(entity.getBody(), "500", "Internal Server Error",
104120
IllegalStateException.class, "Expected!", "/");
105-
assertThat(entity.getBody().containsKey("trace")).isTrue();
121+
assertThat(entity.getBody().containsKey("trace")).isEqualTo(expectedTrace);
106122
}
107123

108124
@Test

0 commit comments

Comments
 (0)