Author: markt Date: Fri Nov 28 17:30:55 2014 New Revision: 1642327 URL: http://svn.apache.org/r1642327 Log: Make use of the new case-insensitive map implementation.
Modified: tomcat/trunk/java/org/apache/tomcat/websocket/Constants.java tomcat/trunk/java/org/apache/tomcat/websocket/WsHandshakeResponse.java tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java Modified: tomcat/trunk/java/org/apache/tomcat/websocket/Constants.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/Constants.java?rev=1642327&r1=1642326&r2=1642327&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/websocket/Constants.java (original) +++ tomcat/trunk/java/org/apache/tomcat/websocket/Constants.java Fri Nov 28 17:30:55 2014 @@ -19,7 +19,6 @@ package org.apache.tomcat.websocket; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Locale; import javax.websocket.Extension; @@ -57,12 +56,8 @@ public class Constants { public static final String WS_KEY_HEADER_NAME = "Sec-WebSocket-Key"; public static final String WS_PROTOCOL_HEADER_NAME = "Sec-WebSocket-Protocol"; - public static final String WS_PROTOCOL_HEADER_NAME_LOWER = - WS_PROTOCOL_HEADER_NAME.toLowerCase(Locale.ENGLISH); public static final String WS_EXTENSIONS_HEADER_NAME = "Sec-WebSocket-Extensions"; - public static final String WS_EXTENSIONS_HEADER_NAME_LOWER = - WS_EXTENSIONS_HEADER_NAME.toLowerCase(Locale.ENGLISH); public static final boolean STRICT_SPEC_COMPLIANCE = Boolean.getBoolean( Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsHandshakeResponse.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsHandshakeResponse.java?rev=1642327&r1=1642326&r2=1642327&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/websocket/WsHandshakeResponse.java (original) +++ tomcat/trunk/java/org/apache/tomcat/websocket/WsHandshakeResponse.java Fri Nov 28 17:30:55 2014 @@ -16,9 +16,10 @@ */ package org.apache.tomcat.websocket; -import java.util.HashMap; +import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import javax.websocket.HandshakeResponse; @@ -27,16 +28,22 @@ import javax.websocket.HandshakeResponse */ public class WsHandshakeResponse implements HandshakeResponse { - private final Map<String,List<String>> headers; + private final Map<String,List<String>> headers = new CaseInsensitiveKeyMap<>(); public WsHandshakeResponse() { - this(new HashMap<String,List<String>>()); } public WsHandshakeResponse(Map<String,List<String>> headers) { - this.headers = headers; + for (Entry<String,List<String>> entry : headers.entrySet()) { + if (this.headers.containsKey(entry.getKey())) { + this.headers.get(entry.getKey()).addAll(entry.getValue()); + } else { + List<String> values = new ArrayList<>(entry.getValue()); + this.headers.put(entry.getKey(), values); + } + } } Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java?rev=1642327&r1=1642326&r2=1642327&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java (original) +++ tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java Fri Nov 28 17:30:55 2014 @@ -303,9 +303,8 @@ public class WsWebSocketContainer afterResponse(handshakeResponse); // Sub-protocol - // Header names are always stored in lower case List<String> protocolHeaders = handshakeResponse.getHeaders().get( - Constants.WS_PROTOCOL_HEADER_NAME_LOWER); + Constants.WS_PROTOCOL_HEADER_NAME); if (protocolHeaders == null || protocolHeaders.size() == 0) { subProtocol = null; } else if (protocolHeaders.size() == 1) { @@ -319,7 +318,7 @@ public class WsWebSocketContainer // Should normally only be one header but handle the case of // multiple headers List<String> extHeaders = handshakeResponse.getHeaders().get( - Constants.WS_EXTENSIONS_HEADER_NAME_LOWER); + Constants.WS_EXTENSIONS_HEADER_NAME); if (extHeaders != null) { for (String extHeader : extHeaders) { Util.parseExtensionHeader(extensionsAgreed, extHeader); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org