diff --git a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/trace/WebRequestTraceFilter.java b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/trace/WebRequestTraceFilter.java index 1f4ba8104a9..f7d1ae7d1b1 100644 --- a/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/trace/WebRequestTraceFilter.java +++ b/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/trace/WebRequestTraceFilter.java @@ -138,7 +138,7 @@ public class WebRequestTraceFilter extends OncePerRequestFilter implements Order add(trace, Include.USER_PRINCIPAL, "userPrincipal", (userPrincipal == null ? null : userPrincipal.getName())); if (isIncluded(Include.PARAMETERS)) { - trace.put("parameters", request.getParameterMap()); + trace.put("parameters", getParameterMap(request)); } add(trace, Include.QUERY_STRING, "query", request.getQueryString()); add(trace, Include.AUTH_TYPE, "authType", request.getAuthType()); @@ -190,6 +190,12 @@ public class WebRequestTraceFilter extends OncePerRequestFilter implements Order return value; } + private Map getParameterMap(HttpServletRequest request) { + Map map = new LinkedHashMap(); + map.putAll(request.getParameterMap()); + return map; + } + /** * Post process request headers before they are added to the trace. * @param headers a mutable map containing the request headers to trace diff --git a/spring-boot-samples/spring-boot-sample-actuator/src/test/java/sample/actuator/SampleActuatorApplicationTests.java b/spring-boot-samples/spring-boot-sample-actuator/src/test/java/sample/actuator/SampleActuatorApplicationTests.java index a0016284349..22ba59fe5e2 100644 --- a/spring-boot-samples/spring-boot-sample-actuator/src/test/java/sample/actuator/SampleActuatorApplicationTests.java +++ b/spring-boot-samples/spring-boot-sample-actuator/src/test/java/sample/actuator/SampleActuatorApplicationTests.java @@ -187,6 +187,22 @@ public class SampleActuatorApplicationTests { assertThat(map.get("status")).isEqualTo("200"); } + @Test + public void traceWithParameterMap() throws Exception { + this.restTemplate.getForEntity("/health?param1=value1", String.class); + @SuppressWarnings("rawtypes") + ResponseEntity entity = this.restTemplate + .withBasicAuth("user", getPassword()).getForEntity("/trace", List.class); + assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.OK); + @SuppressWarnings("unchecked") + List> list = entity.getBody(); + Map trace = list.get(0); + @SuppressWarnings("unchecked") + Map map = (Map) ((Map)trace + .get("info")).get("parameters"); + assertThat(map.get("param1")).isNotNull(); + } + @Test public void testErrorPageDirectAccess() throws Exception { @SuppressWarnings("rawtypes")