Accept repeated status params so the gateway cannot corrupt the filter

FixDocsService
Ya
7 Agosti 2026, 02:32 UTC
Mwandishi
Kamo
Ahadi ya
144dcbb

Opening **************** answered "Unknown status: **************** for every member. The member grid sent the bucket as one CSV value. A comma in a query value has to travel as %2C, and APIService — the shared gateway every /api/docs/** call crosses — concatenates the already-encoded URI and query into a plain String and hands that String to RestTemplate.exchange. RestTemplate treats a String URL as a URI TEMPLATE and percent-encodes it a second time, so %2C became %252C; Tomcat here decoded once and parseStatuses split on a comma that was no longer there, failing valueOf on the whole run-together token. The gateway is NOT changed. It carries /api/docs/**, /api/security/** and every other service, and switching it to URI.create/build(true) would change encoding semantics for every caller on the platform at once — some of which survive only because of that re-encode. That is its own deliberate change with its own review. So the reserved character comes off the wire instead: status now REPEATS, **************** Status names are [A-Z_] only, so the second encode is a no-op on them. - parseStatuses gains a List<String> overload that unions the EXISTING per-element rule. The enum parsing is not duplicated; there is still exactly one place a status name becomes a constant, so repeated params, a single CSV value, and Spring's own String->List comma split all land on the same set. - A CSV keeps working, so the HR grid's status=EXECUTED and any bookmarked member URL are untouched on the wire. - Applied to the HR mappings too (listAssignments, listMemberAssignments), not only the member one, so no legal endpoint can be filtered through a comma. - An unknown token is still a 400 that names it. Silently dropping it would page a filter the UI insists is applied — the worst outcome on a compliance grid. LegalMemberStatusBindingTest pins it at the real binding boundary via MockMvc: repeated params and a CSV resolve to the identical set, the HR single value is unchanged, an unknown token 400s, and the old double-encoded shape is rejected loudly rather than silently matching nothing. 401 tests, 0 failures.

Mabadiliko yote

Je, unaona nini kuhusu usafiri?

Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.

Kuwa Huru MileleMtazamo wa bei