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

reiern70 pushed a commit to branch reiern70/WICKET-7162
in repository https://gitbox.apache.org/repos/asf/wicket.git

commit 86b36f1e84a47213ff66366357d4035b1c7e5075
Author: reiern70 <[email protected]>
AuthorDate: Mon Aug 11 12:36:05 2025 -0500

    [WICKET-7162] avoid a NPE when a JavaxUpgradeHttpRequest is created in a 
situation when there is no session (e.g. some stateless page).
---
 .../protocol/ws/javax/JavaxUpgradeHttpRequest.java  | 21 +++++++++++++++++----
 .../ws/javax/WicketServerEndpointConfig.java        |  6 ++++--
 2 files changed, 21 insertions(+), 6 deletions(-)

diff --git 
a/wicket-native-websocket/wicket-native-websocket-javax/src/main/java/org/apache/wicket/protocol/ws/javax/JavaxUpgradeHttpRequest.java
 
b/wicket-native-websocket/wicket-native-websocket-javax/src/main/java/org/apache/wicket/protocol/ws/javax/JavaxUpgradeHttpRequest.java
index 04bb59d14c..2215c00817 100644
--- 
a/wicket-native-websocket/wicket-native-websocket-javax/src/main/java/org/apache/wicket/protocol/ws/javax/JavaxUpgradeHttpRequest.java
+++ 
b/wicket-native-websocket/wicket-native-websocket-javax/src/main/java/org/apache/wicket/protocol/ws/javax/JavaxUpgradeHttpRequest.java
@@ -49,6 +49,8 @@ import jakarta.websocket.EndpointConfig;
 import jakarta.websocket.Session;
 
 import org.apache.wicket.util.string.StringValue;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * An artificial HttpServletRequest with data collected from the
@@ -56,6 +58,10 @@ import org.apache.wicket.util.string.StringValue;
  */
 public class JavaxUpgradeHttpRequest implements HttpServletRequest
 {
+       public static final String SESSION = "session";
+       public static final String HEADERS = "headers";
+       private static final Logger log = 
LoggerFactory.getLogger(JavaxUpgradeHttpRequest.class);
+
        private final HttpSession httpSession;
        private final String queryString;
        private final Principal userPrincipal;
@@ -75,14 +81,21 @@ public class JavaxUpgradeHttpRequest implements 
HttpServletRequest
                        userProperties = endpointConfig.getUserProperties();
                }
 
-               this.httpSession = (HttpSession) userProperties.get("session");
-               this.headers = (Map<String, List<String>>) 
userProperties.get("headers");
+               this.httpSession = (HttpSession) userProperties.get(SESSION);
+               this.headers = (Map<String, List<String>>) 
userProperties.get(HEADERS);
                this.queryString = session.getQueryString();
                this.userPrincipal = session.getUserPrincipal();
                Object requestURI = session.getRequestURI();
                this.requestUri = requestURI != null ? requestURI.toString() : 
"";
-               this.contextPath = 
httpSession.getServletContext().getContextPath();
-
+               if (httpSession == null)
+               {
+                       this.contextPath = "/";
+                       log.debug("No HTTP session is present. Web sockets are 
used in a stateless page");
+               }
+               else
+               {
+                       this.contextPath = 
httpSession.getServletContext().getContextPath();
+               }
                this.parametersMap = new HashMap<>();
 
                Map<String, List<String>> parameters = 
session.getRequestParameterMap();
diff --git 
a/wicket-native-websocket/wicket-native-websocket-javax/src/main/java/org/apache/wicket/protocol/ws/javax/WicketServerEndpointConfig.java
 
b/wicket-native-websocket/wicket-native-websocket-javax/src/main/java/org/apache/wicket/protocol/ws/javax/WicketServerEndpointConfig.java
index 632e9e427d..f3d40645a9 100644
--- 
a/wicket-native-websocket/wicket-native-websocket-javax/src/main/java/org/apache/wicket/protocol/ws/javax/WicketServerEndpointConfig.java
+++ 
b/wicket-native-websocket/wicket-native-websocket-javax/src/main/java/org/apache/wicket/protocol/ws/javax/WicketServerEndpointConfig.java
@@ -131,14 +131,16 @@ public class WicketServerEndpointConfig implements 
ServerEndpointConfig
                        LOG.trace("httpSession: {}", httpSession);
                        if (httpSession != null)
                        {
-                               userProperties.put("session", httpSession);
+                               
userProperties.put(JavaxUpgradeHttpRequest.SESSION, httpSession);
+                       } else {
+                               sec.getPath();
                        }
 
                        Map<String, List<String>> headers = 
request.getHeaders();
                        LOG.trace("headers: {}", headers);
                        if (headers != null)
                        {
-                               userProperties.put("headers", headers);
+                               
userProperties.put(JavaxUpgradeHttpRequest.HEADERS, headers);
                        }
 
 

Reply via email to