This is an automated email from the ASF dual-hosted git repository.

jungm pushed a commit to branch issue/TOMEE-4584
in repository https://gitbox.apache.org/repos/asf/tomee.git


The following commit(s) were added to refs/heads/issue/TOMEE-4584 by this push:
     new 27b63a3610 safe fallbacks when deserializing old SavedRequest
27b63a3610 is described below

commit 27b63a36108be6d77fc8e85518f89b431bc26b04
Author: Markus Jung <[email protected]>
AuthorDate: Fri Mar 6 07:33:28 2026 +0100

    safe fallbacks when deserializing old SavedRequest
---
 .../apache/tomee/security/http/SavedRequest.java   |  8 ++++----
 .../tomee/security/http/SavedRequestTest.java      | 23 ++++++++++++++++++++++
 2 files changed, 27 insertions(+), 4 deletions(-)

diff --git 
a/tomee/tomee-security/src/main/java/org/apache/tomee/security/http/SavedRequest.java
 
b/tomee/tomee-security/src/main/java/org/apache/tomee/security/http/SavedRequest.java
index f6451e4349..9e6c95df00 100644
--- 
a/tomee/tomee-security/src/main/java/org/apache/tomee/security/http/SavedRequest.java
+++ 
b/tomee/tomee-security/src/main/java/org/apache/tomee/security/http/SavedRequest.java
@@ -133,23 +133,23 @@ public class SavedRequest implements Serializable {
 
             @Override
             public Enumeration<String> getParameterNames() {
-                return Collections.enumeration(parameterMap.keySet());
+                return Collections.enumeration(getParameterMap().keySet());
             }
 
             @Override
             public String[] getParameterValues(String name) {
-                return parameterMap.get(name);
+                return getParameterMap().get(name);
             }
 
             @Override
             public String getParameter(String name) {
-                String[] values = parameterMap.get(name);
+                String[] values = getParameterValues(name);
                 return values == null || values.length == 0 ? null : values[0];
             }
 
             @Override
             public Map<String, String[]> getParameterMap() {
-                return parameterMap;
+                return parameterMap != null ? parameterMap : 
Collections.emptyMap();
             }
         };
     }
diff --git 
a/tomee/tomee-security/src/test/java/org/apache/tomee/security/http/SavedRequestTest.java
 
b/tomee/tomee-security/src/test/java/org/apache/tomee/security/http/SavedRequestTest.java
index 4873536330..44e256a0bb 100644
--- 
a/tomee/tomee-security/src/test/java/org/apache/tomee/security/http/SavedRequestTest.java
+++ 
b/tomee/tomee-security/src/test/java/org/apache/tomee/security/http/SavedRequestTest.java
@@ -79,6 +79,29 @@ public class SavedRequestTest {
         assertEquals("bar", request.getParameterMap().get("foo")[0]);
     }
 
+    @Test
+    public void deserializationWithoutParameterMap() throws Exception {
+        // JSON produced by older versions that did not include the 
parameterMap field
+        String json = 
"{\"cookies\":[{\"name\":\"first\",\"value\":\"val1\",\"attributes\":{}},{\"name\":\"second\",\"value\":\"val2\",\"attributes\":{}}],\"headers\":{\"header1\":[\"h1val1\",\"h1val2\"],\"header2\":[\"h2val1\"]},\"method\":\"PATCH\",\"queryString\":\"foo=bar\",\"url\":\"http://example.com/foo\"}";;
+        SavedRequest request = SavedRequest.fromJson(json);
+
+        assertNotNull(request);
+        assertEquals(2, request.getCookies().length);
+        assertEquals("first", request.getCookies()[0].getName());
+        assertEquals("val1", request.getCookies()[0].getValue());
+        assertEquals("second", request.getCookies()[1].getName());
+        assertEquals("val2", request.getCookies()[1].getValue());
+        assertEquals(2, request.getHeaders().size());
+        assertEquals(List.of("h1val1", "h1val2"), 
request.getHeaders().get("header1"));
+        assertEquals(List.of("h2val1"), request.getHeaders().get("header2"));
+        assertEquals("PATCH", request.getMethod());
+        assertEquals("foo=bar", request.getQueryString());
+        assertEquals("http://example.com/foo";, request.getUrl());
+        // parameterMap should be initialized to a safe default (e.g., empty 
map) rather than null
+        assertNotNull(request.getParameterMap());
+        assertTrue(request.getParameterMap().isEmpty());
+    }
+
     @Test
     public void cookieSerialization() throws Exception {
         JsonbConfig config = new JsonbConfig()

Reply via email to