Author: markt
Date: Tue Mar 19 13:30:33 2013
New Revision: 1458271

URL: http://svn.apache.org/r1458271
Log:
Fix failing unit tests.
Add missing call to mark the Handshake request as finished.

Modified:
    tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHandshakeRequest.java
    tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServlet.java

Modified: 
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHandshakeRequest.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHandshakeRequest.java?rev=1458271&r1=1458270&r2=1458271&view=diff
==============================================================================
--- 
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHandshakeRequest.java 
(original)
+++ 
tomcat/trunk/java/org/apache/tomcat/websocket/server/WsHandshakeRequest.java 
Tue Mar 19 13:30:33 2013
@@ -35,37 +35,37 @@ import javax.websocket.server.HandshakeR
  */
 public class WsHandshakeRequest implements HandshakeRequest {
 
+    private final URI requestUri;
+    private final Map<String,List<String>> parameterMap;
+    private final String queryString;
+    private final Principal userPrincipal;
+    private final Map<String,List<String>> headers;
+    private final Object httpSession;
+
     private volatile HttpServletRequest request;
 
+
     public WsHandshakeRequest(HttpServletRequest request) {
+
         this.request = request;
-    }
 
-    @Override
-    public URI getRequestURI() {
-        validate();
-        // Calculate every time as only likely to be zero or one calls
-        String queryString = request.getQueryString();
+        queryString = request.getQueryString();
+        userPrincipal = request.getUserPrincipal();
+        httpSession = request.getSession(false);
 
+        // URI
         StringBuffer sb = request.getRequestURL();
         if (queryString != null) {
             sb.append("?");
             sb.append(queryString);
         }
-        URI requestURI;
         try {
-            requestURI = new URI(sb.toString());
+            requestUri = new URI(sb.toString());
         } catch (URISyntaxException e) {
             throw new IllegalArgumentException(e);
         }
 
-        return requestURI;
-    }
-
-    @Override
-    public Map<String,List<String>> getParameterMap() {
-        validate();
-
+        // ParameterMap
         Map<String,String[]> originalParameters = request.getParameterMap();
         Map<String,List<String>> newParameters =
                 new HashMap<>(originalParameters.size());
@@ -74,49 +74,59 @@ public class WsHandshakeRequest implemen
                     Collections.unmodifiableList(
                             Arrays.asList(entry.getValue())));
         }
+        parameterMap = Collections.unmodifiableMap(newParameters);
+
+        // Headers
+        Map<String,List<String>> newHeaders = new HashMap<>();
 
-        return Collections.unmodifiableMap(newParameters);
+        Enumeration<String> headerNames = request.getHeaderNames();
+        while (headerNames.hasMoreElements()) {
+            String headerName = headerNames.nextElement();
+
+            newHeaders.put(headerName, Collections.unmodifiableList(
+                    Collections.list(request.getHeaders(headerName))));
+        }
+
+        headers = Collections.unmodifiableMap(newHeaders);
+    }
+
+    @Override
+    public URI getRequestURI() {
+        return requestUri;
+    }
+
+    @Override
+    public Map<String,List<String>> getParameterMap() {
+        return parameterMap;
     }
 
     @Override
     public String getQueryString() {
-        validate();
-        return request.getQueryString();
+        return queryString;
     }
 
     @Override
     public Principal getUserPrincipal() {
-        validate();
-        return request.getUserPrincipal();
+        return userPrincipal;
     }
 
     @Override
     public Map<String,List<String>> getHeaders() {
-        validate();
-
-        Map<String,List<String>> newHeaders = new HashMap<>();
-
-        Enumeration<String> headerNames = request.getHeaderNames();
-        while (headerNames.hasMoreElements()) {
-            String headerName = headerNames.nextElement();
-
-            newHeaders.put(headerName, Collections.unmodifiableList(
-                    Collections.list(request.getHeaders(headerName))));
-        }
-
-        return Collections.unmodifiableMap(newHeaders);
+        return headers;
     }
 
     @Override
     public boolean isUserInRole(String role) {
-        validate();
+        if (request == null) {
+            throw new IllegalStateException();
+        }
+
         return request.isUserInRole(role);
     }
 
     @Override
     public Object getHttpSession() {
-        validate();
-        return request.getSession(false);
+        return httpSession;
     }
 
     /**
@@ -130,10 +140,4 @@ public class WsHandshakeRequest implemen
     void finished() {
         request = null;
     }
-
-    private void validate() {
-        if (request == null) {
-            throw new IllegalStateException();
-        }
-    }
 }

Modified: tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServlet.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServlet.java?rev=1458271&r1=1458270&r2=1458271&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServlet.java 
(original)
+++ tomcat/trunk/java/org/apache/tomcat/websocket/server/WsServlet.java Tue Mar 
19 13:30:33 2013
@@ -145,6 +145,7 @@ public class WsServlet extends HttpServl
         WsHandshakeRequest wsRequest = new WsHandshakeRequest(req);
         WsHandshakeResponse wsResponse = new WsHandshakeResponse();
         sec.getConfigurator().modifyHandshake(sec, wsRequest, wsResponse);
+        wsRequest.finished();
 
         // Add any additional headers
         for (Entry<String,List<String>> entry :



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to