From 3eef39e6abd6ec0c133c55240f0b9bb74a2f278c Mon Sep 17 00:00:00 2001 From: Sam Brannen <104798+sbrannen@users.noreply.github.com> Date: Sat, 11 Oct 2025 13:18:18 +0200 Subject: [PATCH] Polish contribution See gh-35603 --- .../filter/AbstractRequestLoggingFilter.java | 18 ++++++++---------- .../web/filter/RequestLoggingFilterTests.java | 6 +++--- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/web/filter/AbstractRequestLoggingFilter.java b/spring-web/src/main/java/org/springframework/web/filter/AbstractRequestLoggingFilter.java index 4d4552edcd6..417d2d1078d 100644 --- a/spring-web/src/main/java/org/springframework/web/filter/AbstractRequestLoggingFilter.java +++ b/spring-web/src/main/java/org/springframework/web/filter/AbstractRequestLoggingFilter.java @@ -188,14 +188,13 @@ public abstract class AbstractRequestLoggingFilter extends OncePerRequestFilter } /** - * Configure a predicate for selecting which query params should be logged if - * {@link #setIncludeQueryString(boolean)} is set to {@code true}. - *
By default this is not set in which case all query params are logged - * - *
If there are multiple values for the same query param, - * the predicate will be applied once per query param name. - * As a result, the use of this predicate may result in a different query string - * than the one returned by {@link HttpServletRequest#getQueryString()}. + * Configure a predicate for selecting which query parameters should be logged + * if {@link #setIncludeQueryString(boolean)} is set to {@code true}. + *
By default this is not set, in which case all query parameters are logged. + *
The predicate will be applied once per query parameter name. Thus, if + * there are multiple values for the same query parameter name, the logged query + * string will contain fewer {@code name=value} mappings than the one returned by + * {@link HttpServletRequest#getQueryString()}. * @param queryParamPredicate the predicate to use * @since 7.0 */ @@ -214,7 +213,7 @@ public abstract class AbstractRequestLoggingFilter extends OncePerRequestFilter /** * Configure a predicate for selecting which headers should be logged if * {@link #setIncludeHeaders(boolean)} is set to {@code true}. - *
By default this is not set in which case all headers are logged. + *
By default this is not set, in which case all headers are logged. * @param headerPredicate the predicate to use * @since 5.2 */ @@ -364,7 +363,6 @@ public abstract class AbstractRequestLoggingFilter extends OncePerRequestFilter for (String name : queryParams.keySet()) { if (!getQueryParamPredicate().test(name)) { updatedQueryParams.set(name, "masked"); - break; } } diff --git a/spring-web/src/test/java/org/springframework/web/filter/RequestLoggingFilterTests.java b/spring-web/src/test/java/org/springframework/web/filter/RequestLoggingFilterTests.java index 0fdf256a05f..34983476049 100644 --- a/spring-web/src/test/java/org/springframework/web/filter/RequestLoggingFilterTests.java +++ b/spring-web/src/test/java/org/springframework/web/filter/RequestLoggingFilterTests.java @@ -108,14 +108,14 @@ class RequestLoggingFilterTests { @Test void queryStringIncluded() throws Exception { - request.setQueryString("booking=42&code=73&category=hotel&code=37&category=resort"); + request.setQueryString("booking=42&code=73&category=hotel&code=37&category=resort&ignore=enigma&code=99"); filter.setIncludeQueryString(true); filter.setQueryParamPredicate(name -> !name.equals("code") && !name.equals("ignore")); applyFilter(); - assertThat(filter.beforeRequestMessage).contains("/hotels?booking=42&code=masked&category=hotel&category=resort"); - assertThat(filter.afterRequestMessage).contains("/hotels?booking=42&code=masked&category=hotel&category=resort"); + assertThat(filter.beforeRequestMessage).contains("/hotels?booking=42&code=masked&category=hotel&category=resort&ignore=masked"); + assertThat(filter.afterRequestMessage).contains("/hotels?booking=42&code=masked&category=hotel&category=resort&ignore=masked"); } @Test