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: [email protected]
For additional commands, e-mail: [email protected]