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