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

markt pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/9.0.x by this push:
     new cd4e9c7124 Code clean-up. Formatting. No functional change.
cd4e9c7124 is described below

commit cd4e9c7124684ce5284cbab2dcfce22539c07ccc
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Wed Mar 8 18:30:02 2023 +0000

    Code clean-up. Formatting. No functional change.
---
 .../apache/tomcat/websocket/server/Constants.java  |  18 +-
 .../server/DefaultServerEndpointConfigurator.java  |  17 +-
 .../tomcat/websocket/server/UpgradeUtil.java       | 130 +++++-------
 .../tomcat/websocket/server/UriTemplate.java       |  26 +--
 .../tomcat/websocket/server/WsContextListener.java |  10 +-
 .../apache/tomcat/websocket/server/WsFilter.java   |  13 +-
 .../tomcat/websocket/server/WsFrameServer.java     |  63 +++---
 .../websocket/server/WsHandshakeRequest.java       |  49 ++---
 .../websocket/server/WsHttpUpgradeHandler.java     |  58 ++----
 .../tomcat/websocket/server/WsMappingResult.java   |   7 +-
 .../server/WsPerSessionServerEndpointConfig.java   |  12 +-
 .../server/WsRemoteEndpointImplServer.java         |  33 ++-
 java/org/apache/tomcat/websocket/server/WsSci.java |  36 ++--
 .../tomcat/websocket/server/WsServerContainer.java | 226 ++++++++-------------
 .../tomcat/websocket/server/WsSessionListener.java |   2 +-
 .../tomcat/websocket/server/WsWriteTimeout.java    |  18 +-
 .../tomcat/websocket/server/package-info.java      |   4 +-
 17 files changed, 284 insertions(+), 438 deletions(-)

diff --git a/java/org/apache/tomcat/websocket/server/Constants.java 
b/java/org/apache/tomcat/websocket/server/Constants.java
index de5041a527..94b52849ca 100644
--- a/java/org/apache/tomcat/websocket/server/Constants.java
+++ b/java/org/apache/tomcat/websocket/server/Constants.java
@@ -21,24 +21,18 @@ package org.apache.tomcat.websocket.server;
  */
 public class Constants {
 
-    public static final String BINARY_BUFFER_SIZE_SERVLET_CONTEXT_INIT_PARAM =
-            "org.apache.tomcat.websocket.binaryBufferSize";
-    public static final String TEXT_BUFFER_SIZE_SERVLET_CONTEXT_INIT_PARAM =
-            "org.apache.tomcat.websocket.textBufferSize";
+    public static final String BINARY_BUFFER_SIZE_SERVLET_CONTEXT_INIT_PARAM = 
"org.apache.tomcat.websocket.binaryBufferSize";
+    public static final String TEXT_BUFFER_SIZE_SERVLET_CONTEXT_INIT_PARAM = 
"org.apache.tomcat.websocket.textBufferSize";
 
     /**
-     * Allows the deployment restriction defined in section 6.4 of the Jakarta
-     * WebSocket specification to be ignored.
+     * Allows the deployment restriction defined in section 6.4 of the Jakarta 
WebSocket specification to be ignored.
      *
-     * @deprecated  This is no longer required in Jakarta EE 10 onwards and 
will
-     *              be removed in Tomcat 10.1.
+     * @deprecated This is no longer required in Jakarta EE 10 onwards and 
will be removed in Tomcat 10.1.
      */
     @Deprecated
-    public static final String 
ENFORCE_NO_ADD_AFTER_HANDSHAKE_CONTEXT_INIT_PARAM =
-            "org.apache.tomcat.websocket.noAddAfterHandshake";
+    public static final String 
ENFORCE_NO_ADD_AFTER_HANDSHAKE_CONTEXT_INIT_PARAM = 
"org.apache.tomcat.websocket.noAddAfterHandshake";
 
-    public static final String SERVER_CONTAINER_SERVLET_CONTEXT_ATTRIBUTE =
-            "javax.websocket.server.ServerContainer";
+    public static final String SERVER_CONTAINER_SERVLET_CONTEXT_ATTRIBUTE = 
"javax.websocket.server.ServerContainer";
 
 
     private Constants() {
diff --git 
a/java/org/apache/tomcat/websocket/server/DefaultServerEndpointConfigurator.java
 
b/java/org/apache/tomcat/websocket/server/DefaultServerEndpointConfigurator.java
index 5c385ed7ad..00f492ec4a 100644
--- 
a/java/org/apache/tomcat/websocket/server/DefaultServerEndpointConfigurator.java
+++ 
b/java/org/apache/tomcat/websocket/server/DefaultServerEndpointConfigurator.java
@@ -26,13 +26,11 @@ import javax.websocket.HandshakeResponse;
 import javax.websocket.server.HandshakeRequest;
 import javax.websocket.server.ServerEndpointConfig;
 
-@aQute.bnd.annotation.spi.ServiceProvider(value=ServerEndpointConfig.Configurator.class)
-public class DefaultServerEndpointConfigurator
-        extends ServerEndpointConfig.Configurator {
+@aQute.bnd.annotation.spi.ServiceProvider(value = 
ServerEndpointConfig.Configurator.class)
+public class DefaultServerEndpointConfigurator extends 
ServerEndpointConfig.Configurator {
 
     @Override
-    public <T> T getEndpointInstance(Class<T> clazz)
-            throws InstantiationException {
+    public <T> T getEndpointInstance(Class<T> clazz) throws 
InstantiationException {
         try {
             return clazz.getConstructor().newInstance();
         } catch (InstantiationException e) {
@@ -46,8 +44,7 @@ public class DefaultServerEndpointConfigurator
 
 
     @Override
-    public String getNegotiatedSubprotocol(List<String> supported,
-            List<String> requested) {
+    public String getNegotiatedSubprotocol(List<String> supported, 
List<String> requested) {
 
         for (String request : requested) {
             if (supported.contains(request)) {
@@ -59,8 +56,7 @@ public class DefaultServerEndpointConfigurator
 
 
     @Override
-    public List<Extension> getNegotiatedExtensions(List<Extension> installed,
-            List<Extension> requested) {
+    public List<Extension> getNegotiatedExtensions(List<Extension> installed, 
List<Extension> requested) {
         Set<String> installedNames = new HashSet<>();
         for (Extension e : installed) {
             installedNames.add(e.getName());
@@ -81,8 +77,7 @@ public class DefaultServerEndpointConfigurator
     }
 
     @Override
-    public void modifyHandshake(ServerEndpointConfig sec,
-            HandshakeRequest request, HandshakeResponse response) {
+    public void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest 
request, HandshakeResponse response) {
         // NO-OP
     }
 
diff --git a/java/org/apache/tomcat/websocket/server/UpgradeUtil.java 
b/java/org/apache/tomcat/websocket/server/UpgradeUtil.java
index b7945698ce..eec6698f75 100644
--- a/java/org/apache/tomcat/websocket/server/UpgradeUtil.java
+++ b/java/org/apache/tomcat/websocket/server/UpgradeUtil.java
@@ -49,60 +49,49 @@ import org.apache.tomcat.websocket.pojo.PojoMethodMapping;
 
 public class UpgradeUtil {
 
-    private static final StringManager sm =
-            StringManager.getManager(UpgradeUtil.class.getPackage().getName());
-    private static final byte[] WS_ACCEPT =
-            "258EAFA5-E914-47DA-95CA-C5AB0DC85B11".getBytes(
-                    StandardCharsets.ISO_8859_1);
+    private static final StringManager sm = 
StringManager.getManager(UpgradeUtil.class.getPackage().getName());
+    private static final byte[] WS_ACCEPT = 
"258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
+            .getBytes(StandardCharsets.ISO_8859_1);
 
     private UpgradeUtil() {
         // Utility class. Hide default constructor.
     }
 
     /**
-     * Checks to see if this is an HTTP request that includes a valid upgrade
-     * request to web socket.
+     * Checks to see if this is an HTTP request that includes a valid upgrade 
request to web socket.
      * <p>
-     * Note: RFC 2616 does not limit HTTP upgrade to GET requests but the Java
-     *       WebSocket spec 1.0, section 8.2 implies such a limitation and RFC
-     *       6455 section 4.1 requires that a WebSocket Upgrade uses GET.
-     * @param request  The request to check if it is an HTTP upgrade request 
for
-     *                 a WebSocket connection
+     * Note: RFC 2616 does not limit HTTP upgrade to GET requests but the Java 
WebSocket spec 1.0, section 8.2 implies
+     * such a limitation and RFC 6455 section 4.1 requires that a WebSocket 
Upgrade uses GET.
+     *
+     * @param request  The request to check if it is an HTTP upgrade request 
for a WebSocket connection
      * @param response The response associated with the request
-     * @return <code>true</code> if the request includes an HTTP Upgrade 
request
-     *         for the WebSocket protocol, otherwise <code>false</code>
+     *
+     * @return <code>true</code> if the request includes an HTTP Upgrade 
request for the WebSocket protocol, otherwise
+     *             <code>false</code>
      */
-    public static boolean isWebSocketUpgradeRequest(ServletRequest request,
-            ServletResponse response) {
+    public static boolean isWebSocketUpgradeRequest(ServletRequest request, 
ServletResponse response) {
 
         return ((request instanceof HttpServletRequest) &&
-                (response instanceof HttpServletResponse) &&
-                headerContainsToken((HttpServletRequest) request,
-                        Constants.UPGRADE_HEADER_NAME,
-                        Constants.UPGRADE_HEADER_VALUE) &&
+                (response instanceof HttpServletResponse) && 
headerContainsToken((HttpServletRequest) request,
+                        Constants.UPGRADE_HEADER_NAME, 
Constants.UPGRADE_HEADER_VALUE) &&
                 "GET".equals(((HttpServletRequest) request).getMethod()));
     }
 
 
-    public static void doUpgrade(WsServerContainer sc, HttpServletRequest req,
-            HttpServletResponse resp, ServerEndpointConfig sec,
-            Map<String,String> pathParams)
-            throws ServletException, IOException {
+    public static void doUpgrade(WsServerContainer sc, HttpServletRequest req, 
HttpServletResponse resp,
+            ServerEndpointConfig sec, Map<String, String> pathParams) throws 
ServletException, IOException {
 
         // Validate the rest of the headers and reject the request if that
         // validation fails
         String key;
         String subProtocol = null;
-        if (!headerContainsToken(req, Constants.CONNECTION_HEADER_NAME,
-                Constants.CONNECTION_HEADER_VALUE)) {
+        if (!headerContainsToken(req, Constants.CONNECTION_HEADER_NAME, 
Constants.CONNECTION_HEADER_VALUE)) {
             resp.sendError(HttpServletResponse.SC_BAD_REQUEST);
             return;
         }
-        if (!headerContainsToken(req, Constants.WS_VERSION_HEADER_NAME,
-                Constants.WS_VERSION_HEADER_VALUE)) {
+        if (!headerContainsToken(req, Constants.WS_VERSION_HEADER_NAME, 
Constants.WS_VERSION_HEADER_VALUE)) {
             resp.setStatus(426);
-            resp.setHeader(Constants.WS_VERSION_HEADER_NAME,
-                    Constants.WS_VERSION_HEADER_VALUE);
+            resp.setHeader(Constants.WS_VERSION_HEADER_NAME, 
Constants.WS_VERSION_HEADER_VALUE);
             return;
         }
         key = req.getHeader(Constants.WS_KEY_HEADER_NAME);
@@ -119,10 +108,8 @@ public class UpgradeUtil {
             return;
         }
         // Sub-protocols
-        List<String> subProtocols = getTokensFromHeader(req,
-                Constants.WS_PROTOCOL_HEADER_NAME);
-        subProtocol = sec.getConfigurator().getNegotiatedSubprotocol(
-                sec.getSubprotocols(), subProtocols);
+        List<String> subProtocols = getTokensFromHeader(req, 
Constants.WS_PROTOCOL_HEADER_NAME);
+        subProtocol = 
sec.getConfigurator().getNegotiatedSubprotocol(sec.getSubprotocols(), 
subProtocols);
 
         // Extensions
         // Should normally only be one header but handle the case of multiple
@@ -143,8 +130,8 @@ public class UpgradeUtil {
             installedExtensions.addAll(sec.getExtensions());
             installedExtensions.addAll(Constants.INSTALLED_EXTENSIONS);
         }
-        List<Extension> negotiatedExtensionsPhase1 = 
sec.getConfigurator().getNegotiatedExtensions(
-                installedExtensions, extensionsRequested);
+        List<Extension> negotiatedExtensionsPhase1 = 
sec.getConfigurator().getNegotiatedExtensions(installedExtensions,
+                extensionsRequested);
 
         // Negotiation phase 2. Create the Transformations that will be applied
         // to this connection. Note than an extension may be dropped at this
@@ -186,12 +173,9 @@ public class UpgradeUtil {
         }
 
         // If we got this far, all is good. Accept the connection.
-        resp.setHeader(Constants.UPGRADE_HEADER_NAME,
-                Constants.UPGRADE_HEADER_VALUE);
-        resp.setHeader(Constants.CONNECTION_HEADER_NAME,
-                Constants.CONNECTION_HEADER_VALUE);
-        resp.setHeader(HandshakeResponse.SEC_WEBSOCKET_ACCEPT,
-                getWebSocketAccept(key));
+        resp.setHeader(Constants.UPGRADE_HEADER_NAME, 
Constants.UPGRADE_HEADER_VALUE);
+        resp.setHeader(Constants.CONNECTION_HEADER_NAME, 
Constants.CONNECTION_HEADER_VALUE);
+        resp.setHeader(HandshakeResponse.SEC_WEBSOCKET_ACCEPT, 
getWebSocketAccept(key));
         if (subProtocol != null && subProtocol.length() > 0) {
             // RFC6455 4.2.2 explicitly states "" is not valid here
             resp.setHeader(Constants.WS_PROTOCOL_HEADER_NAME, subProtocol);
@@ -201,26 +185,25 @@ public class UpgradeUtil {
         }
 
         // Add method mapping to user properties
-        if (!Endpoint.class.isAssignableFrom(sec.getEndpointClass()) &&
-                
sec.getUserProperties().get(org.apache.tomcat.websocket.pojo.Constants.POJO_METHOD_MAPPING_KEY)
 == null) {
+        if (!Endpoint.class.isAssignableFrom(sec.getEndpointClass()) && 
sec.getUserProperties()
+                
.get(org.apache.tomcat.websocket.pojo.Constants.POJO_METHOD_MAPPING_KEY) == 
null) {
             // This is a POJO endpoint and the application has called upgrade
             // directly. Need to add the method mapping.
             try {
-                PojoMethodMapping methodMapping = new 
PojoMethodMapping(sec.getEndpointClass(),
-                        sec.getDecoders(), sec.getPath(), 
sc.getInstanceManager(Thread.currentThread().getContextClassLoader()));
-                if (methodMapping.getOnClose() != null || 
methodMapping.getOnOpen() != null
-                        || methodMapping.getOnError() != null || 
methodMapping.hasMessageHandlers()) {
-                    sec.getUserProperties().put(
-                            
org.apache.tomcat.websocket.pojo.Constants.POJO_METHOD_MAPPING_KEY, 
methodMapping);
+                PojoMethodMapping methodMapping = new 
PojoMethodMapping(sec.getEndpointClass(), sec.getDecoders(),
+                        sec.getPath(), 
sc.getInstanceManager(Thread.currentThread().getContextClassLoader()));
+                if (methodMapping.getOnClose() != null || 
methodMapping.getOnOpen() != null ||
+                        methodMapping.getOnError() != null || 
methodMapping.hasMessageHandlers()) {
+                    
sec.getUserProperties().put(org.apache.tomcat.websocket.pojo.Constants.POJO_METHOD_MAPPING_KEY,
+                            methodMapping);
                 }
             } catch (DeploymentException e) {
-                throw new ServletException(
-                        sm.getString("upgradeUtil.pojoMapFail", 
sec.getEndpointClass().getName()),  e);
+                throw new 
ServletException(sm.getString("upgradeUtil.pojoMapFail", 
sec.getEndpointClass().getName()),
+                        e);
             }
         }
 
-        WsPerSessionServerEndpointConfig perSessionServerEndpointConfig =
-                new WsPerSessionServerEndpointConfig(sec);
+        WsPerSessionServerEndpointConfig perSessionServerEndpointConfig = new 
WsPerSessionServerEndpointConfig(sec);
 
         WsHandshakeRequest wsRequest = new WsHandshakeRequest(req, pathParams);
         WsHandshakeResponse wsResponse = new WsHandshakeResponse();
@@ -228,40 +211,34 @@ public class UpgradeUtil {
         wsRequest.finished();
 
         // Add any additional headers
-        for (Entry<String,List<String>> entry :
-                wsResponse.getHeaders().entrySet()) {
-            for (String headerValue: entry.getValue()) {
+        for (Entry<String, List<String>> entry : 
wsResponse.getHeaders().entrySet()) {
+            for (String headerValue : entry.getValue()) {
                 resp.addHeader(entry.getKey(), headerValue);
             }
         }
 
-        WsHttpUpgradeHandler wsHandler =
-                req.upgrade(WsHttpUpgradeHandler.class);
-        wsHandler.preInit(perSessionServerEndpointConfig, sc, wsRequest,
-                negotiatedExtensionsPhase2, subProtocol, transformation, 
pathParams,
-                req.isSecure());
+        WsHttpUpgradeHandler wsHandler = 
req.upgrade(WsHttpUpgradeHandler.class);
+        wsHandler.preInit(perSessionServerEndpointConfig, sc, wsRequest, 
negotiatedExtensionsPhase2, subProtocol,
+                transformation, pathParams, req.isSecure());
 
     }
 
 
-    private static List<Transformation> createTransformations(
-            List<Extension> negotiatedExtensions) {
+    private static List<Transformation> createTransformations(List<Extension> 
negotiatedExtensions) {
 
         TransformationFactory factory = TransformationFactory.getInstance();
 
-        LinkedHashMap<String,List<List<Extension.Parameter>>> 
extensionPreferences =
-                new LinkedHashMap<>();
+        LinkedHashMap<String, List<List<Extension.Parameter>>> 
extensionPreferences = new LinkedHashMap<>();
 
         // Result will likely be smaller than this
         List<Transformation> result = new 
ArrayList<>(negotiatedExtensions.size());
 
         for (Extension extension : negotiatedExtensions) {
             extensionPreferences.computeIfAbsent(extension.getName(), k -> new 
ArrayList<>())
-                .add(extension.getParameters());
+                    .add(extension.getParameters());
         }
 
-        for (Map.Entry<String,List<List<Extension.Parameter>>> entry :
-            extensionPreferences.entrySet()) {
+        for (Map.Entry<String, List<List<Extension.Parameter>>> entry : 
extensionPreferences.entrySet()) {
             Transformation transformation = factory.create(entry.getKey(), 
entry.getValue(), true);
             if (transformation != null) {
                 result.add(transformation);
@@ -290,11 +267,9 @@ public class UpgradeUtil {
 
 
     /*
-     * This only works for tokens. Quoted strings need more sophisticated
-     * parsing.
+     * This only works for tokens. Quoted strings need more sophisticated 
parsing.
      */
-    private static boolean headerContainsToken(HttpServletRequest req,
-            String headerName, String target) {
+    private static boolean headerContainsToken(HttpServletRequest req, String 
headerName, String target) {
         Enumeration<String> headers = req.getHeaders(headerName);
         while (headers.hasMoreElements()) {
             String header = headers.nextElement();
@@ -310,11 +285,9 @@ public class UpgradeUtil {
 
 
     /*
-     * This only works for tokens. Quoted strings need more sophisticated
-     * parsing.
+     * This only works for tokens. Quoted strings need more sophisticated 
parsing.
      */
-    private static List<String> getTokensFromHeader(HttpServletRequest req,
-            String headerName) {
+    private static List<String> getTokensFromHeader(HttpServletRequest req, 
String headerName) {
         List<String> result = new ArrayList<>();
         Enumeration<String> headers = req.getHeaders(headerName);
         while (headers.hasMoreElements()) {
@@ -329,8 +302,7 @@ public class UpgradeUtil {
 
 
     private static String getWebSocketAccept(String key) {
-        byte[] digest = ConcurrentMessageDigest.digestSHA1(
-                key.getBytes(StandardCharsets.ISO_8859_1), WS_ACCEPT);
+        byte[] digest = 
ConcurrentMessageDigest.digestSHA1(key.getBytes(StandardCharsets.ISO_8859_1), 
WS_ACCEPT);
         return Base64.encodeBase64String(digest);
     }
 }
diff --git a/java/org/apache/tomcat/websocket/server/UriTemplate.java 
b/java/org/apache/tomcat/websocket/server/UriTemplate.java
index 35a82eed10..82ff64db59 100644
--- a/java/org/apache/tomcat/websocket/server/UriTemplate.java
+++ b/java/org/apache/tomcat/websocket/server/UriTemplate.java
@@ -29,8 +29,8 @@ import javax.websocket.DeploymentException;
 import org.apache.tomcat.util.res.StringManager;
 
 /**
- * Extracts path parameters from URIs used to create web socket connections
- * using the URI template defined for the associated Endpoint.
+ * Extracts path parameters from URIs used to create web socket connections 
using the URI template defined for the
+ * associated Endpoint.
  */
 public class UriTemplate {
 
@@ -45,8 +45,7 @@ public class UriTemplate {
 
         if (path == null || path.length() == 0 || !path.startsWith("/") || 
path.contains("/../") ||
                 path.contains("/./") || path.contains("//")) {
-            throw new DeploymentException(
-                    sm.getString("uriTemplate.invalidPath", path));
+            throw new 
DeploymentException(sm.getString("uriTemplate.invalidPath", path));
         }
 
         StringBuilder normalized = new StringBuilder(path.length());
@@ -69,8 +68,7 @@ public class UriTemplate {
                 } else {
                     // As per EG discussion, all other empty segments are
                     // invalid
-                    throw new DeploymentException(sm.getString(
-                            "uriTemplate.emptySegment", path));
+                    throw new 
DeploymentException(sm.getString("uriTemplate.emptySegment", path));
                 }
             }
             normalized.append('/');
@@ -82,13 +80,11 @@ public class UriTemplate {
                 normalized.append(paramCount++);
                 normalized.append('}');
                 if (!paramNames.add(segment)) {
-                    throw new DeploymentException(sm.getString(
-                            "uriTemplate.duplicateParameter", segment));
+                    throw new 
DeploymentException(sm.getString("uriTemplate.duplicateParameter", segment));
                 }
             } else {
                 if (segment.contains("{") || segment.contains("}")) {
-                    throw new DeploymentException(sm.getString(
-                            "uriTemplate.invalidSegment", segment, path));
+                    throw new 
DeploymentException(sm.getString("uriTemplate.invalidSegment", segment, path));
                 }
                 normalized.append(segment);
             }
@@ -101,9 +97,9 @@ public class UriTemplate {
     }
 
 
-    public Map<String,String> match(UriTemplate candidate) {
+    public Map<String, String> match(UriTemplate candidate) {
 
-        Map<String,String> result = new HashMap<>();
+        Map<String, String> result = new HashMap<>();
 
         // Should not happen but for safety
         if (candidate.getSegmentCount() != getSegmentCount()) {
@@ -117,15 +113,13 @@ public class UriTemplate {
 
             if (targetSegment.getParameterIndex() == -1) {
                 // Not a parameter - values must match
-                if (!targetSegment.getValue().equals(
-                        candidateSegment.getValue())) {
+                if 
(!targetSegment.getValue().equals(candidateSegment.getValue())) {
                     // Not a match. Stop here
                     return null;
                 }
             } else {
                 // Parameter
-                result.put(targetSegment.getValue(),
-                        candidateSegment.getValue());
+                result.put(targetSegment.getValue(), 
candidateSegment.getValue());
             }
         }
 
diff --git a/java/org/apache/tomcat/websocket/server/WsContextListener.java 
b/java/org/apache/tomcat/websocket/server/WsContextListener.java
index 27ea702c49..f3d5f63323 100644
--- a/java/org/apache/tomcat/websocket/server/WsContextListener.java
+++ b/java/org/apache/tomcat/websocket/server/WsContextListener.java
@@ -21,12 +21,10 @@ import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
 
 /**
- * In normal usage, this {@link ServletContextListener} does not need to be
- * explicitly configured as the {@link WsSci} performs all the necessary
- * bootstrap and installs this listener in the {@link ServletContext}. If the
- * {@link WsSci} is disabled, this listener must be added manually to every
- * {@link ServletContext} that uses WebSocket to bootstrap the
- * {@link WsServerContainer} correctly.
+ * In normal usage, this {@link ServletContextListener} does not need to be 
explicitly configured as the {@link WsSci}
+ * performs all the necessary bootstrap and installs this listener in the 
{@link ServletContext}. If the {@link WsSci}
+ * is disabled, this listener must be added manually to every {@link 
ServletContext} that uses WebSocket to bootstrap
+ * the {@link WsServerContainer} correctly.
  */
 public class WsContextListener implements ServletContextListener {
 
diff --git a/java/org/apache/tomcat/websocket/server/WsFilter.java 
b/java/org/apache/tomcat/websocket/server/WsFilter.java
index 4a13d2a894..2e14824ddc 100644
--- a/java/org/apache/tomcat/websocket/server/WsFilter.java
+++ b/java/org/apache/tomcat/websocket/server/WsFilter.java
@@ -38,18 +38,16 @@ public class WsFilter extends GenericFilter {
 
     @Override
     public void init() throws ServletException {
-        sc = (WsServerContainer) getServletContext().getAttribute(
-                Constants.SERVER_CONTAINER_SERVLET_CONTEXT_ATTRIBUTE);
+        sc = (WsServerContainer) 
getServletContext().getAttribute(Constants.SERVER_CONTAINER_SERVLET_CONTEXT_ATTRIBUTE);
     }
 
 
     @Override
-    public void doFilter(ServletRequest request, ServletResponse response,
-            FilterChain chain) throws IOException, ServletException {
+    public void doFilter(ServletRequest request, ServletResponse response, 
FilterChain chain)
+            throws IOException, ServletException {
 
         // This filter only needs to handle WebSocket upgrade requests
-        if (!sc.areEndpointsRegistered() ||
-                !UpgradeUtil.isWebSocketUpgradeRequest(request, response)) {
+        if (!sc.areEndpointsRegistered() || 
!UpgradeUtil.isWebSocketUpgradeRequest(request, response)) {
             chain.doFilter(request, response);
             return;
         }
@@ -75,7 +73,6 @@ public class WsFilter extends GenericFilter {
             return;
         }
 
-        UpgradeUtil.doUpgrade(sc, req, resp, mappingResult.getConfig(),
-                mappingResult.getPathParams());
+        UpgradeUtil.doUpgrade(sc, req, resp, mappingResult.getConfig(), 
mappingResult.getPathParams());
     }
 }
diff --git a/java/org/apache/tomcat/websocket/server/WsFrameServer.java 
b/java/org/apache/tomcat/websocket/server/WsFrameServer.java
index c40ae31095..fd4da3d44a 100644
--- a/java/org/apache/tomcat/websocket/server/WsFrameServer.java
+++ b/java/org/apache/tomcat/websocket/server/WsFrameServer.java
@@ -54,8 +54,7 @@ public class WsFrameServer extends WsFrameBase {
     /**
      * Called when there is data in the ServletInputStream to process.
      *
-     * @throws IOException if an I/O error occurs while processing the 
available
-     *                     data
+     * @throws IOException if an I/O error occurs while processing the 
available data
      */
     private void onDataAvailable() throws IOException {
         if (log.isDebugEnabled()) {
@@ -156,24 +155,23 @@ public class WsFrameServer extends WsFrameBase {
     SocketState notifyDataAvailable() throws IOException {
         while (isOpen()) {
             switch (getReadState()) {
-            case WAITING:
-                if (!changeReadState(ReadState.WAITING, ReadState.PROCESSING)) 
{
-                    continue;
-                }
-                try {
-                    return doOnDataAvailable();
-                } catch (IOException e) {
-                    changeReadState(ReadState.CLOSING);
-                    throw e;
-                }
-            case SUSPENDING_WAIT:
-                if (!changeReadState(ReadState.SUSPENDING_WAIT, 
ReadState.SUSPENDED)) {
-                    continue;
-                }
-                return SocketState.SUSPENDED;
-            default:
-                throw new IllegalStateException(
-                        sm.getString("wsFrameServer.illegalReadState", 
getReadState()));
+                case WAITING:
+                    if (!changeReadState(ReadState.WAITING, 
ReadState.PROCESSING)) {
+                        continue;
+                    }
+                    try {
+                        return doOnDataAvailable();
+                    } catch (IOException e) {
+                        changeReadState(ReadState.CLOSING);
+                        throw e;
+                    }
+                case SUSPENDING_WAIT:
+                    if (!changeReadState(ReadState.SUSPENDING_WAIT, 
ReadState.SUSPENDED)) {
+                        continue;
+                    }
+                    return SocketState.SUSPENDED;
+                default:
+                    throw new 
IllegalStateException(sm.getString("wsFrameServer.illegalReadState", 
getReadState()));
             }
         }
 
@@ -185,19 +183,18 @@ public class WsFrameServer extends WsFrameBase {
         onDataAvailable();
         while (isOpen()) {
             switch (getReadState()) {
-            case PROCESSING:
-                if (!changeReadState(ReadState.PROCESSING, ReadState.WAITING)) 
{
-                    continue;
-                }
-                return SocketState.UPGRADED;
-            case SUSPENDING_PROCESS:
-                if (!changeReadState(ReadState.SUSPENDING_PROCESS, 
ReadState.SUSPENDED)) {
-                    continue;
-                }
-                return SocketState.SUSPENDED;
-            default:
-                throw new IllegalStateException(
-                        sm.getString("wsFrameServer.illegalReadState", 
getReadState()));
+                case PROCESSING:
+                    if (!changeReadState(ReadState.PROCESSING, 
ReadState.WAITING)) {
+                        continue;
+                    }
+                    return SocketState.UPGRADED;
+                case SUSPENDING_PROCESS:
+                    if (!changeReadState(ReadState.SUSPENDING_PROCESS, 
ReadState.SUSPENDED)) {
+                        continue;
+                    }
+                    return SocketState.SUSPENDED;
+                default:
+                    throw new 
IllegalStateException(sm.getString("wsFrameServer.illegalReadState", 
getReadState()));
             }
         }
 
diff --git a/java/org/apache/tomcat/websocket/server/WsHandshakeRequest.java 
b/java/org/apache/tomcat/websocket/server/WsHandshakeRequest.java
index 2bfc4416f4..9d8723d389 100644
--- a/java/org/apache/tomcat/websocket/server/WsHandshakeRequest.java
+++ b/java/org/apache/tomcat/websocket/server/WsHandshakeRequest.java
@@ -41,16 +41,16 @@ public class WsHandshakeRequest implements HandshakeRequest 
{
     private static final StringManager sm = 
StringManager.getManager(WsHandshakeRequest.class);
 
     private final URI requestUri;
-    private final Map<String,List<String>> parameterMap;
+    private final Map<String, List<String>> parameterMap;
     private final String queryString;
     private final Principal userPrincipal;
-    private final Map<String,List<String>> headers;
+    private final Map<String, List<String>> headers;
     private final Object httpSession;
 
     private volatile HttpServletRequest request;
 
 
-    public WsHandshakeRequest(HttpServletRequest request, Map<String,String> 
pathParams) {
+    public WsHandshakeRequest(HttpServletRequest request, Map<String, String> 
pathParams) {
 
         this.request = request;
 
@@ -60,28 +60,24 @@ public class WsHandshakeRequest implements HandshakeRequest 
{
         requestUri = buildRequestUri(request);
 
         // ParameterMap
-        Map<String,String[]> originalParameters = request.getParameterMap();
-        Map<String,List<String>> newParameters =
-                new HashMap<>(originalParameters.size());
-        for (Entry<String,String[]> entry : originalParameters.entrySet()) {
-            newParameters.put(entry.getKey(),
-                    Collections.unmodifiableList(
-                            Arrays.asList(entry.getValue())));
+        Map<String, String[]> originalParameters = request.getParameterMap();
+        Map<String, List<String>> newParameters = new 
HashMap<>(originalParameters.size());
+        for (Entry<String, String[]> entry : originalParameters.entrySet()) {
+            newParameters.put(entry.getKey(), 
Collections.unmodifiableList(Arrays.asList(entry.getValue())));
         }
-        for (Entry<String,String> entry : pathParams.entrySet()) {
+        for (Entry<String, String> entry : pathParams.entrySet()) {
             newParameters.put(entry.getKey(), 
Collections.singletonList(entry.getValue()));
         }
         parameterMap = Collections.unmodifiableMap(newParameters);
 
         // Headers
-        Map<String,List<String>> newHeaders = new CaseInsensitiveKeyMap<>();
+        Map<String, List<String>> newHeaders = new CaseInsensitiveKeyMap<>();
 
         Enumeration<String> headerNames = request.getHeaderNames();
         while (headerNames.hasMoreElements()) {
             String headerName = headerNames.nextElement();
 
-            newHeaders.put(headerName, Collections.unmodifiableList(
-                    Collections.list(request.getHeaders(headerName))));
+            newHeaders.put(headerName, 
Collections.unmodifiableList(Collections.list(request.getHeaders(headerName))));
         }
 
         headers = Collections.unmodifiableMap(newHeaders);
@@ -93,7 +89,7 @@ public class WsHandshakeRequest implements HandshakeRequest {
     }
 
     @Override
-    public Map<String,List<String>> getParameterMap() {
+    public Map<String, List<String>> getParameterMap() {
         return parameterMap;
     }
 
@@ -108,7 +104,7 @@ public class WsHandshakeRequest implements HandshakeRequest 
{
     }
 
     @Override
-    public Map<String,List<String>> getHeaders() {
+    public Map<String, List<String>> getHeaders() {
         return headers;
     }
 
@@ -127,12 +123,9 @@ public class WsHandshakeRequest implements 
HandshakeRequest {
     }
 
     /**
-     * Called when the HandshakeRequest is no longer required. Since an 
instance
-     * of this class retains a reference to the current HttpServletRequest that
-     * reference needs to be cleared as the HttpServletRequest may be reused.
-     *
-     * There is no reason for instances of this class to be accessed once the
-     * handshake has been completed.
+     * Called when the HandshakeRequest is no longer required. Since an 
instance of this class retains a reference to
+     * the current HttpServletRequest that reference needs to be cleared as 
the HttpServletRequest may be reused. There
+     * is no reason for instances of this class to be accessed once the 
handshake has been completed.
      */
     void finished() {
         request = null;
@@ -160,17 +153,14 @@ public class WsHandshakeRequest implements 
HandshakeRequest {
             uri.append(scheme);
         } else {
             // Should never happen
-            throw new IllegalArgumentException(
-                    sm.getString("wsHandshakeRequest.unknownScheme", scheme));
+            throw new 
IllegalArgumentException(sm.getString("wsHandshakeRequest.unknownScheme", 
scheme));
         }
 
         uri.append("://");
         uri.append(req.getServerName());
 
-        if ((scheme.equals("http") && (port != 80))
-            || (scheme.equals("ws") && (port != 80))
-            || (scheme.equals("wss") && (port != 443))
-            || (scheme.equals("https") && (port != 443))) {
+        if ((scheme.equals("http") && (port != 80)) || (scheme.equals("ws") && 
(port != 80)) ||
+                (scheme.equals("wss") && (port != 443)) || 
(scheme.equals("https") && (port != 443))) {
             uri.append(':');
             uri.append(port);
         }
@@ -186,8 +176,7 @@ public class WsHandshakeRequest implements HandshakeRequest 
{
             return new URI(uri.toString());
         } catch (URISyntaxException e) {
             // Should never happen
-            throw new IllegalArgumentException(
-                    sm.getString("wsHandshakeRequest.invalidUri", 
uri.toString()), e);
+            throw new 
IllegalArgumentException(sm.getString("wsHandshakeRequest.invalidUri", 
uri.toString()), e);
         }
     }
 }
diff --git a/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java 
b/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java
index 7660c48cdf..12ee14835f 100644
--- a/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java
+++ b/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java
@@ -63,7 +63,7 @@ public class WsHttpUpgradeHandler implements 
InternalHttpUpgradeHandler {
     private List<Extension> negotiatedExtensions;
     private String subProtocol;
     private Transformation transformation;
-    private Map<String,String> pathParameters;
+    private Map<String, String> pathParameters;
     private boolean secure;
     private WebConnection connection;
 
@@ -83,11 +83,9 @@ public class WsHttpUpgradeHandler implements 
InternalHttpUpgradeHandler {
     }
 
 
-    public void preInit(ServerEndpointConfig serverEndpointConfig,
-            WsServerContainer wsc, WsHandshakeRequest handshakeRequest,
-            List<Extension> negotiatedExtensionsPhase2, String subProtocol,
-            Transformation transformation, Map<String,String> pathParameters,
-            boolean secure) {
+    public void preInit(ServerEndpointConfig serverEndpointConfig, 
WsServerContainer wsc,
+            WsHandshakeRequest handshakeRequest, List<Extension> 
negotiatedExtensionsPhase2, String subProtocol,
+            Transformation transformation, Map<String, String> pathParameters, 
boolean secure) {
         this.serverEndpointConfig = serverEndpointConfig;
         this.webSocketContainer = wsc;
         this.handshakeRequest = handshakeRequest;
@@ -103,13 +101,12 @@ public class WsHttpUpgradeHandler implements 
InternalHttpUpgradeHandler {
     public void init(WebConnection connection) {
         this.connection = connection;
         if (serverEndpointConfig == null) {
-            throw new IllegalStateException(
-                    sm.getString("wsHttpUpgradeHandler.noPreInit"));
+            throw new 
IllegalStateException(sm.getString("wsHttpUpgradeHandler.noPreInit"));
         }
 
         String httpSessionId = null;
         Object session = handshakeRequest.getHttpSession();
-        if (session != null ) {
+        if (session != null) {
             httpSessionId = ((HttpSession) session).getId();
         }
 
@@ -121,16 +118,12 @@ public class WsHttpUpgradeHandler implements 
InternalHttpUpgradeHandler {
         t.setContextClassLoader(applicationClassLoader);
         try {
             wsRemoteEndpointServer = new 
WsRemoteEndpointImplServer(socketWrapper, upgradeInfo, webSocketContainer);
-            wsSession = new WsSession(wsRemoteEndpointServer,
-                    webSocketContainer, handshakeRequest.getRequestURI(),
-                    handshakeRequest.getParameterMap(),
-                    handshakeRequest.getQueryString(),
-                    handshakeRequest.getUserPrincipal(), httpSessionId,
-                    negotiatedExtensions, subProtocol, pathParameters, secure,
-                    serverEndpointConfig);
+            wsSession = new WsSession(wsRemoteEndpointServer, 
webSocketContainer, handshakeRequest.getRequestURI(),
+                    handshakeRequest.getParameterMap(), 
handshakeRequest.getQueryString(),
+                    handshakeRequest.getUserPrincipal(), httpSessionId, 
negotiatedExtensions, subProtocol,
+                    pathParameters, secure, serverEndpointConfig);
             ep = wsSession.getLocal();
-            wsFrame = new WsFrameServer(socketWrapper, upgradeInfo, wsSession, 
transformation,
-                    applicationClassLoader);
+            wsFrame = new WsFrameServer(socketWrapper, upgradeInfo, wsSession, 
transformation, applicationClassLoader);
             // WsFrame adds the necessary final transformations. Copy the
             // completed transformation chain to the remote end point.
             
wsRemoteEndpointServer.setTransformation(wsFrame.getTransformation());
@@ -160,8 +153,7 @@ public class WsHttpUpgradeHandler implements 
InternalHttpUpgradeHandler {
                     close(ws.getCloseReason());
                 } catch (IOException ioe) {
                     onError(ioe);
-                    CloseReason cr = new CloseReason(
-                            CloseCodes.CLOSED_ABNORMALLY, ioe.getMessage());
+                    CloseReason cr = new 
CloseReason(CloseCodes.CLOSED_ABNORMALLY, ioe.getMessage());
                     close(cr);
                 }
                 return SocketState.CLOSED;
@@ -175,8 +167,7 @@ public class WsHttpUpgradeHandler implements 
InternalHttpUpgradeHandler {
                     wsSession.close(cr);
                 } catch (IOException ioe) {
                     onError(ioe);
-                    cr = new CloseReason(
-                            CloseCodes.CLOSED_ABNORMALLY, ioe.getMessage());
+                    cr = new CloseReason(CloseCodes.CLOSED_ABNORMALLY, 
ioe.getMessage());
                     close(cr);
                     return SocketState.CLOSED;
                 }
@@ -241,23 +232,18 @@ public class WsHttpUpgradeHandler implements 
InternalHttpUpgradeHandler {
 
     private void close(CloseReason cr) {
         /*
-         * Any call to this method is a result of a problem reading from the
-         * client. At this point that state of the connection is unknown. First
-         * attempt to clear the handler for any in-flight message write (that
-         * probably failed). If using NIO2 is is possible that the original
-         * error occurred on a write but this method was called during a read.
-         * The in-progress write will block the sending of the close frame
-         * unless the handler is cleared (effectively signalling the write
-         * failed).
+         * Any call to this method is a result of a problem reading from the 
client. At this point that state of the
+         * connection is unknown. First attempt to clear the handler for any 
in-flight message write (that probably
+         * failed). If using NIO2 is is possible that the original error 
occurred on a write but this method was called
+         * during a read. The in-progress write will block the sending of the 
close frame unless the handler is cleared
+         * (effectively signalling the write failed).
          */
         wsRemoteEndpointServer.clearHandler(new EOFException(), true);
 
-        /* Then:
-         *  - send a close frame to the client
-         * - close the socket immediately.
-         * There is no point in waiting for a close frame from the client
-         * because there is no guarantee that we can recover from whatever
-         * messed up state the client put the connection into.
+        /*
+         * Then: - send a close frame to the client - close the socket 
immediately. There is no point in waiting for a
+         * close frame from the client because there is no guarantee that we 
can recover from whatever messed up state
+         * the client put the connection into.
          */
         wsSession.onClose(cr);
     }
diff --git a/java/org/apache/tomcat/websocket/server/WsMappingResult.java 
b/java/org/apache/tomcat/websocket/server/WsMappingResult.java
index 097386bcdb..4eba29fbbd 100644
--- a/java/org/apache/tomcat/websocket/server/WsMappingResult.java
+++ b/java/org/apache/tomcat/websocket/server/WsMappingResult.java
@@ -23,11 +23,10 @@ import javax.websocket.server.ServerEndpointConfig;
 class WsMappingResult {
 
     private final ServerEndpointConfig config;
-    private final Map<String,String> pathParams;
+    private final Map<String, String> pathParams;
 
 
-    WsMappingResult(ServerEndpointConfig config,
-            Map<String,String> pathParams) {
+    WsMappingResult(ServerEndpointConfig config, Map<String, String> 
pathParams) {
         this.config = config;
         this.pathParams = pathParams;
     }
@@ -38,7 +37,7 @@ class WsMappingResult {
     }
 
 
-    Map<String,String> getPathParams() {
+    Map<String, String> getPathParams() {
         return pathParams;
     }
 }
diff --git 
a/java/org/apache/tomcat/websocket/server/WsPerSessionServerEndpointConfig.java 
b/java/org/apache/tomcat/websocket/server/WsPerSessionServerEndpointConfig.java
index aab9e7f6ac..8edf5f8b77 100644
--- 
a/java/org/apache/tomcat/websocket/server/WsPerSessionServerEndpointConfig.java
+++ 
b/java/org/apache/tomcat/websocket/server/WsPerSessionServerEndpointConfig.java
@@ -26,16 +26,14 @@ import javax.websocket.Extension;
 import javax.websocket.server.ServerEndpointConfig;
 
 /**
- * Wraps the provided {@link ServerEndpointConfig} and provides a per session
- * view - the difference being that the map returned by {@link
- * #getUserProperties()} is unique to this instance rather than shared with the
- * wrapped {@link ServerEndpointConfig}.
+ * Wraps the provided {@link ServerEndpointConfig} and provides a per session 
view - the difference being that the map
+ * returned by {@link #getUserProperties()} is unique to this instance rather 
than shared with the wrapped
+ * {@link ServerEndpointConfig}.
  */
 class WsPerSessionServerEndpointConfig implements ServerEndpointConfig {
 
     private final ServerEndpointConfig perEndpointConfig;
-    private final Map<String,Object> perSessionUserProperties =
-            new ConcurrentHashMap<>();
+    private final Map<String, Object> perSessionUserProperties = new 
ConcurrentHashMap<>();
 
     WsPerSessionServerEndpointConfig(ServerEndpointConfig perEndpointConfig) {
         this.perEndpointConfig = perEndpointConfig;
@@ -53,7 +51,7 @@ class WsPerSessionServerEndpointConfig implements 
ServerEndpointConfig {
     }
 
     @Override
-    public Map<String,Object> getUserProperties() {
+    public Map<String, Object> getUserProperties() {
         return perSessionUserProperties;
     }
 
diff --git 
a/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java 
b/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
index 28d591f65d..c7ac843763 100644
--- a/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
+++ b/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
@@ -37,13 +37,12 @@ import org.apache.tomcat.websocket.Transformation;
 import org.apache.tomcat.websocket.WsRemoteEndpointImplBase;
 
 /**
- * This is the server side {@link javax.websocket.RemoteEndpoint} 
implementation
- * - i.e. what the server uses to send data to the client.
+ * This is the server side {@link javax.websocket.RemoteEndpoint} 
implementation - i.e. what the server uses to send
+ * data to the client.
  */
 public class WsRemoteEndpointImplServer extends WsRemoteEndpointImplBase {
 
-    private static final StringManager sm =
-            StringManager.getManager(WsRemoteEndpointImplServer.class);
+    private static final StringManager sm = 
StringManager.getManager(WsRemoteEndpointImplServer.class);
     private final Log log = 
LogFactory.getLog(WsRemoteEndpointImplServer.class); // must not be static
 
     private final SocketWrapperBase<?> socketWrapper;
@@ -69,8 +68,7 @@ public class WsRemoteEndpointImplServer extends 
WsRemoteEndpointImplBase {
 
 
     @Override
-    protected void doWrite(SendHandler handler, long 
blockingWriteTimeoutExpiry,
-            ByteBuffer... buffers) {
+    protected void doWrite(SendHandler handler, long 
blockingWriteTimeoutExpiry, ByteBuffer... buffers) {
         if (socketWrapper.hasAsyncIO()) {
             final boolean block = (blockingWriteTimeoutExpiry != -1);
             long timeout = -1;
@@ -90,9 +88,8 @@ public class WsRemoteEndpointImplServer extends 
WsRemoteEndpointImplBase {
                     wsWriteTimeout.register(this);
                 }
             }
-            socketWrapper.write(block ? BlockingMode.BLOCK : 
BlockingMode.SEMI_BLOCK, timeout,
-                    TimeUnit.MILLISECONDS, null, 
SocketWrapperBase.COMPLETE_WRITE_WITH_COMPLETION,
-                    new CompletionHandler<Long, Void>() {
+            socketWrapper.write(block ? BlockingMode.BLOCK : 
BlockingMode.SEMI_BLOCK, timeout, TimeUnit.MILLISECONDS,
+                    null, SocketWrapperBase.COMPLETE_WRITE_WITH_COMPLETION, 
new CompletionHandler<Long, Void>() {
                         @Override
                         public void completed(Long result, Void attachment) {
                             if (block) {
@@ -107,6 +104,7 @@ public class WsRemoteEndpointImplServer extends 
WsRemoteEndpointImplBase {
                                 clearHandler(null, true);
                             }
                         }
+
                         @Override
                         public void failed(Throwable exc, Void attachment) {
                             if (block) {
@@ -239,11 +237,9 @@ public class WsRemoteEndpointImplServer extends 
WsRemoteEndpointImplBase {
 
 
     /*
-     * Currently this is only called from the background thread so we could 
just
-     * call clearHandler() with useDispatch == false but the method parameter
-     * was added in case other callers started to use this method to make sure
-     * that those callers think through what the correct value of useDispatch 
is
-     * for them.
+     * Currently this is only called from the background thread so we could 
just call clearHandler() with useDispatch ==
+     * false but the method parameter was added in case other callers started 
to use this method to make sure that those
+     * callers think through what the correct value of useDispatch is for them.
      */
     protected void onTimeout(boolean useDispatch) {
         if (handler != null) {
@@ -261,12 +257,9 @@ public class WsRemoteEndpointImplServer extends 
WsRemoteEndpointImplBase {
 
 
     /**
-     * @param t             The throwable associated with any error that
-     *                      occurred
-     * @param useDispatch   Should {@link SendHandler#onResult(SendResult)} be
-     *                      called from a new thread, keeping in mind the
-     *                      requirements of
-     *                      {@link javax.websocket.RemoteEndpoint.Async}
+     * @param t           The throwable associated with any error that occurred
+     * @param useDispatch Should {@link SendHandler#onResult(SendResult)} be 
called from a new thread, keeping in mind
+     *                        the requirements of {@link 
javax.websocket.RemoteEndpoint.Async}
      */
     void clearHandler(Throwable t, boolean useDispatch) {
         // Setting the result marks this (partial) message as
diff --git a/java/org/apache/tomcat/websocket/server/WsSci.java 
b/java/org/apache/tomcat/websocket/server/WsSci.java
index 6396c60a40..ff3aa6d4d2 100644
--- a/java/org/apache/tomcat/websocket/server/WsSci.java
+++ b/java/org/apache/tomcat/websocket/server/WsSci.java
@@ -34,17 +34,14 @@ import javax.websocket.server.ServerEndpointConfig;
 import org.apache.tomcat.util.compat.JreCompat;
 
 /**
- * Registers an interest in any class that is annotated with
- * {@link ServerEndpoint} so that Endpoint can be published via the WebSocket
- * server.
+ * Registers an interest in any class that is annotated with {@link 
ServerEndpoint} so that Endpoint can be published
+ * via the WebSocket server.
  */
-@HandlesTypes({ServerEndpoint.class, ServerApplicationConfig.class,
-        Endpoint.class})
+@HandlesTypes({ ServerEndpoint.class, ServerApplicationConfig.class, 
Endpoint.class })
 public class WsSci implements ServletContainerInitializer {
 
     @Override
-    public void onStartup(Set<Class<?>> clazzes, ServletContext ctx)
-            throws ServletException {
+    public void onStartup(Set<Class<?>> clazzes, ServletContext ctx) throws 
ServletException {
 
         WsServerContainer sc = init(ctx, true);
 
@@ -64,10 +61,8 @@ public class WsSci implements ServletContainerInitializer {
             for (Class<?> clazz : clazzes) {
                 JreCompat jreCompat = JreCompat.getInstance();
                 int modifiers = clazz.getModifiers();
-                if (!Modifier.isPublic(modifiers) ||
-                        Modifier.isAbstract(modifiers) ||
-                        Modifier.isInterface(modifiers) ||
-                        !jreCompat.isExported(clazz)) {
+                if (!Modifier.isPublic(modifiers) || 
Modifier.isAbstract(modifiers) ||
+                        Modifier.isInterface(modifiers) || 
!jreCompat.isExported(clazz)) {
                     // Non-public, abstract, interface or not in an exported
                     // package (Java 9+) - skip it.
                     continue;
@@ -77,13 +72,11 @@ public class WsSci implements ServletContainerInitializer {
                     continue;
                 }
                 if (ServerApplicationConfig.class.isAssignableFrom(clazz)) {
-                    serverApplicationConfigs.add(
-                            (ServerApplicationConfig) 
clazz.getConstructor().newInstance());
+                    serverApplicationConfigs.add((ServerApplicationConfig) 
clazz.getConstructor().newInstance());
                 }
                 if (Endpoint.class.isAssignableFrom(clazz)) {
                     @SuppressWarnings("unchecked")
-                    Class<? extends Endpoint> endpoint =
-                            (Class<? extends Endpoint>) clazz;
+                    Class<? extends Endpoint> endpoint = (Class<? extends 
Endpoint>) clazz;
                     scannedEndpointClazzes.add(endpoint);
                 }
                 if (clazz.isAnnotationPresent(ServerEndpoint.class)) {
@@ -102,14 +95,11 @@ public class WsSci implements ServletContainerInitializer {
             filteredPojoEndpoints.addAll(scannedPojoEndpoints);
         } else {
             for (ServerApplicationConfig config : serverApplicationConfigs) {
-                Set<ServerEndpointConfig> configFilteredEndpoints =
-                        config.getEndpointConfigs(scannedEndpointClazzes);
+                Set<ServerEndpointConfig> configFilteredEndpoints = 
config.getEndpointConfigs(scannedEndpointClazzes);
                 if (configFilteredEndpoints != null) {
                     filteredEndpointConfigs.addAll(configFilteredEndpoints);
                 }
-                Set<Class<?>> configFilteredPojos =
-                        config.getAnnotatedEndpointClasses(
-                                scannedPojoEndpoints);
+                Set<Class<?>> configFilteredPojos = 
config.getAnnotatedEndpointClasses(scannedPojoEndpoints);
                 if (configFilteredPojos != null) {
                     filteredPojoEndpoints.addAll(configFilteredPojos);
                 }
@@ -131,13 +121,11 @@ public class WsSci implements ServletContainerInitializer 
{
     }
 
 
-    static WsServerContainer init(ServletContext servletContext,
-            boolean initBySciMechanism) {
+    static WsServerContainer init(ServletContext servletContext, boolean 
initBySciMechanism) {
 
         WsServerContainer sc = new WsServerContainer(servletContext);
 
-        servletContext.setAttribute(
-                Constants.SERVER_CONTAINER_SERVLET_CONTEXT_ATTRIBUTE, sc);
+        
servletContext.setAttribute(Constants.SERVER_CONTAINER_SERVLET_CONTEXT_ATTRIBUTE,
 sc);
 
         servletContext.addListener(new WsSessionListener(sc));
         // Can't register the ContextListener again if the ContextListener is
diff --git a/java/org/apache/tomcat/websocket/server/WsServerContainer.java 
b/java/org/apache/tomcat/websocket/server/WsServerContainer.java
index bdc2f5679c..f69fcff620 100644
--- a/java/org/apache/tomcat/websocket/server/WsServerContainer.java
+++ b/java/org/apache/tomcat/websocket/server/WsServerContainer.java
@@ -48,36 +48,29 @@ import org.apache.tomcat.websocket.WsWebSocketContainer;
 import org.apache.tomcat.websocket.pojo.PojoMethodMapping;
 
 /**
- * Provides a per class loader (i.e. per web application) instance of a
- * ServerContainer. Web application wide defaults may be configured by setting
- * the following servlet context initialisation parameters to the desired
- * values.
+ * Provides a per class loader (i.e. per web application) instance of a 
ServerContainer. Web application wide defaults
+ * may be configured by setting the following servlet context initialisation 
parameters to the desired values.
  * <ul>
  * <li>{@link Constants#BINARY_BUFFER_SIZE_SERVLET_CONTEXT_INIT_PARAM}</li>
  * <li>{@link Constants#TEXT_BUFFER_SIZE_SERVLET_CONTEXT_INIT_PARAM}</li>
  * </ul>
  */
-public class WsServerContainer extends WsWebSocketContainer
-        implements ServerContainer {
+public class WsServerContainer extends WsWebSocketContainer implements 
ServerContainer {
 
     private static final StringManager sm = 
StringManager.getManager(WsServerContainer.class);
 
-    private static final CloseReason AUTHENTICATED_HTTP_SESSION_CLOSED =
-            new CloseReason(CloseCodes.VIOLATED_POLICY,
-                    "This connection was established under an authenticated " +
-                    "HTTP session that has ended.");
+    private static final CloseReason AUTHENTICATED_HTTP_SESSION_CLOSED = new 
CloseReason(CloseCodes.VIOLATED_POLICY,
+            "This connection was established under an authenticated " + "HTTP 
session that has ended.");
 
     private final WsWriteTimeout wsWriteTimeout = new WsWriteTimeout();
 
     private final ServletContext servletContext;
-    private final Map<String,ExactPathMatch> configExactMatchMap = new 
ConcurrentHashMap<>();
-    private final Map<Integer,ConcurrentSkipListMap<String,TemplatePathMatch>> 
configTemplateMatchMap =
-            new ConcurrentHashMap<>();
+    private final Map<String, ExactPathMatch> configExactMatchMap = new 
ConcurrentHashMap<>();
+    private final Map<Integer, ConcurrentSkipListMap<String, 
TemplatePathMatch>> configTemplateMatchMap = new ConcurrentHashMap<>();
     @SuppressWarnings("deprecation")
-    private volatile boolean enforceNoAddAfterHandshake =
-            org.apache.tomcat.websocket.Constants.STRICT_SPEC_COMPLIANCE;
+    private volatile boolean enforceNoAddAfterHandshake = 
org.apache.tomcat.websocket.Constants.STRICT_SPEC_COMPLIANCE;
     private volatile boolean addAllowed = true;
-    private final Map<String,Set<WsSession>> authenticatedSessions = new 
ConcurrentHashMap<>();
+    private final Map<String, Set<WsSession>> authenticatedSessions = new 
ConcurrentHashMap<>();
     private volatile boolean endpointsRegistered = false;
     private volatile boolean deploymentFailed = false;
 
@@ -88,43 +81,37 @@ public class WsServerContainer extends WsWebSocketContainer
         setInstanceManager((InstanceManager) 
servletContext.getAttribute(InstanceManager.class.getName()));
 
         // Configure servlet context wide defaults
-        String value = servletContext.getInitParameter(
-                Constants.BINARY_BUFFER_SIZE_SERVLET_CONTEXT_INIT_PARAM);
+        String value = 
servletContext.getInitParameter(Constants.BINARY_BUFFER_SIZE_SERVLET_CONTEXT_INIT_PARAM);
         if (value != null) {
             setDefaultMaxBinaryMessageBufferSize(Integer.parseInt(value));
         }
 
-        value = servletContext.getInitParameter(
-                Constants.TEXT_BUFFER_SIZE_SERVLET_CONTEXT_INIT_PARAM);
+        value = 
servletContext.getInitParameter(Constants.TEXT_BUFFER_SIZE_SERVLET_CONTEXT_INIT_PARAM);
         if (value != null) {
             setDefaultMaxTextMessageBufferSize(Integer.parseInt(value));
         }
 
-        value = servletContext.getInitParameter(
-                Constants.ENFORCE_NO_ADD_AFTER_HANDSHAKE_CONTEXT_INIT_PARAM);
+        value = 
servletContext.getInitParameter(Constants.ENFORCE_NO_ADD_AFTER_HANDSHAKE_CONTEXT_INIT_PARAM);
         if (value != null) {
             setEnforceNoAddAfterHandshake(Boolean.parseBoolean(value));
         }
 
-        FilterRegistration.Dynamic fr = servletContext.addFilter(
-                "Tomcat WebSocket (JSR356) Filter", new WsFilter());
+        FilterRegistration.Dynamic fr = servletContext.addFilter("Tomcat 
WebSocket (JSR356) Filter", new WsFilter());
         fr.setAsyncSupported(true);
 
-        EnumSet<DispatcherType> types = EnumSet.of(DispatcherType.REQUEST,
-                DispatcherType.FORWARD);
+        EnumSet<DispatcherType> types = EnumSet.of(DispatcherType.REQUEST, 
DispatcherType.FORWARD);
 
         fr.addMappingForUrlPatterns(types, true, "/*");
     }
 
 
     /**
-     * Published the provided endpoint implementation at the specified path 
with
-     * the specified configuration. {@link #WsServerContainer(ServletContext)}
-     * must be called before calling this method.
+     * Published the provided endpoint implementation at the specified path 
with the specified configuration.
+     * {@link #WsServerContainer(ServletContext)} must be called before 
calling this method.
      *
-     * @param sec   The configuration to use when creating endpoint instances
-     * @throws DeploymentException if the endpoint cannot be published as
-     *         requested
+     * @param sec The configuration to use when creating endpoint instances
+     *
+     * @throws DeploymentException if the endpoint cannot be published as 
requested
      */
     @Override
     public void addEndpoint(ServerEndpointConfig sec) throws 
DeploymentException {
@@ -135,13 +122,11 @@ public class WsServerContainer extends 
WsWebSocketContainer
     void addEndpoint(ServerEndpointConfig sec, boolean fromAnnotatedPojo) 
throws DeploymentException {
 
         if (enforceNoAddAfterHandshake && !addAllowed) {
-            throw new DeploymentException(
-                    sm.getString("serverContainer.addNotAllowed"));
+            throw new 
DeploymentException(sm.getString("serverContainer.addNotAllowed"));
         }
 
         if (servletContext == null) {
-            throw new DeploymentException(
-                    sm.getString("serverContainer.servletContextMissing"));
+            throw new 
DeploymentException(sm.getString("serverContainer.servletContextMissing"));
         }
 
         if (deploymentFailed) {
@@ -153,10 +138,10 @@ public class WsServerContainer extends 
WsWebSocketContainer
             String path = sec.getPath();
 
             // Add method mapping to user properties
-            PojoMethodMapping methodMapping = new 
PojoMethodMapping(sec.getEndpointClass(),
-                    sec.getDecoders(), path, 
getInstanceManager(Thread.currentThread().getContextClassLoader()));
-            if (methodMapping.getOnClose() != null || 
methodMapping.getOnOpen() != null
-                    || methodMapping.getOnError() != null || 
methodMapping.hasMessageHandlers()) {
+            PojoMethodMapping methodMapping = new 
PojoMethodMapping(sec.getEndpointClass(), sec.getDecoders(), path,
+                    
getInstanceManager(Thread.currentThread().getContextClassLoader()));
+            if (methodMapping.getOnClose() != null || 
methodMapping.getOnOpen() != null ||
+                    methodMapping.getOnError() != null || 
methodMapping.hasMessageHandlers()) {
                 
sec.getUserProperties().put(org.apache.tomcat.websocket.pojo.Constants.POJO_METHOD_MAPPING_KEY,
                         methodMapping);
             }
@@ -164,8 +149,7 @@ public class WsServerContainer extends WsWebSocketContainer
             UriTemplate uriTemplate = new UriTemplate(path);
             if (uriTemplate.hasParameters()) {
                 Integer key = Integer.valueOf(uriTemplate.getSegmentCount());
-                ConcurrentSkipListMap<String,TemplatePathMatch> 
templateMatches =
-                        configTemplateMatchMap.get(key);
+                ConcurrentSkipListMap<String, TemplatePathMatch> 
templateMatches = configTemplateMatchMap.get(key);
                 if (templateMatches == null) {
                     // Ensure that if concurrent threads execute this block 
they
                     // all end up using the same ConcurrentSkipListMap instance
@@ -177,17 +161,15 @@ public class WsServerContainer extends 
WsWebSocketContainer
                 TemplatePathMatch oldMatch = 
templateMatches.putIfAbsent(uriTemplate.getNormalizedPath(), newMatch);
                 if (oldMatch != null) {
                     // Note: This depends on Endpoint instances being added
-                    //       before POJOs in WsSci#onStartup()
+                    // before POJOs in WsSci#onStartup()
                     if (oldMatch.isFromAnnotatedPojo() && 
!newMatch.isFromAnnotatedPojo() &&
                             oldMatch.getConfig().getEndpointClass() == 
newMatch.getConfig().getEndpointClass()) {
                         // The WebSocket spec says to ignore the new match in 
this case
                         templateMatches.put(path, oldMatch);
                     } else {
                         // Duplicate uriTemplate;
-                        throw new DeploymentException(
-                                sm.getString("serverContainer.duplicatePaths", 
path,
-                                             sec.getEndpointClass(),
-                                             sec.getEndpointClass()));
+                        throw new 
DeploymentException(sm.getString("serverContainer.duplicatePaths", path,
+                                sec.getEndpointClass(), 
sec.getEndpointClass()));
                     }
                 }
             } else {
@@ -196,17 +178,15 @@ public class WsServerContainer extends 
WsWebSocketContainer
                 ExactPathMatch oldMatch = configExactMatchMap.put(path, 
newMatch);
                 if (oldMatch != null) {
                     // Note: This depends on Endpoint instances being added
-                    //       before POJOs in WsSci#onStartup()
+                    // before POJOs in WsSci#onStartup()
                     if (oldMatch.isFromAnnotatedPojo() && 
!newMatch.isFromAnnotatedPojo() &&
                             oldMatch.getConfig().getEndpointClass() == 
newMatch.getConfig().getEndpointClass()) {
                         // The WebSocket spec says to ignore the new match in 
this case
                         configExactMatchMap.put(path, oldMatch);
                     } else {
                         // Duplicate path mappings
-                        throw new DeploymentException(
-                                sm.getString("serverContainer.duplicatePaths", 
path,
-                                             
oldMatch.getConfig().getEndpointClass(),
-                                             sec.getEndpointClass()));
+                        throw new 
DeploymentException(sm.getString("serverContainer.duplicatePaths", path,
+                                oldMatch.getConfig().getEndpointClass(), 
sec.getEndpointClass()));
                     }
                 }
             }
@@ -220,11 +200,10 @@ public class WsServerContainer extends 
WsWebSocketContainer
 
 
     /**
-     * Provides the equivalent of {@link #addEndpoint(ServerEndpointConfig)}
-     * for publishing plain old java objects (POJOs) that have been annotated 
as
-     * WebSocket endpoints.
+     * Provides the equivalent of {@link #addEndpoint(ServerEndpointConfig)} 
for publishing plain old java objects
+     * (POJOs) that have been annotated as WebSocket endpoints.
      *
-     * @param pojo   The annotated POJO
+     * @param pojo The annotated POJO
      */
     @Override
     public void addEndpoint(Class<?> pojo) throws DeploymentException {
@@ -244,9 +223,7 @@ public class WsServerContainer extends WsWebSocketContainer
         try {
             ServerEndpoint annotation = 
pojo.getAnnotation(ServerEndpoint.class);
             if (annotation == null) {
-                throw new DeploymentException(
-                        sm.getString("serverContainer.missingAnnotation",
-                                pojo.getName()));
+                throw new 
DeploymentException(sm.getString("serverContainer.missingAnnotation", 
pojo.getName()));
             }
             String path = annotation.value();
 
@@ -254,25 +231,19 @@ public class WsServerContainer extends 
WsWebSocketContainer
             validateEncoders(annotation.encoders(), 
getInstanceManager(Thread.currentThread().getContextClassLoader()));
 
             // ServerEndpointConfig
-            Class<? extends Configurator> configuratorClazz =
-                    annotation.configurator();
+            Class<? extends Configurator> configuratorClazz = 
annotation.configurator();
             Configurator configurator = null;
             if (!configuratorClazz.equals(Configurator.class)) {
                 try {
                     configurator = 
annotation.configurator().getConstructor().newInstance();
                 } catch (ReflectiveOperationException e) {
-                    throw new DeploymentException(sm.getString(
-                            "serverContainer.configuratorFail",
-                            annotation.configurator().getName(),
-                            pojo.getClass().getName()), e);
+                    throw new 
DeploymentException(sm.getString("serverContainer.configuratorFail",
+                            annotation.configurator().getName(), 
pojo.getClass().getName()), e);
                 }
             }
-            sec = ServerEndpointConfig.Builder.create(pojo, path).
-                    decoders(Arrays.asList(annotation.decoders())).
-                    encoders(Arrays.asList(annotation.encoders())).
-                    subprotocols(Arrays.asList(annotation.subprotocols())).
-                    configurator(configurator).
-                    build();
+            sec = ServerEndpointConfig.Builder.create(pojo, 
path).decoders(Arrays.asList(annotation.decoders()))
+                    .encoders(Arrays.asList(annotation.encoders()))
+                    
.subprotocols(Arrays.asList(annotation.subprotocols())).configurator(configurator).build();
         } catch (DeploymentException de) {
             failDeployment();
             throw de;
@@ -298,32 +269,25 @@ public class WsServerContainer extends 
WsWebSocketContainer
 
 
     /**
-     * Until the WebSocket specification provides such a mechanism, this Tomcat
-     * proprietary method is provided to enable applications to 
programmatically
-     * determine whether or not to upgrade an individual request to WebSocket.
+     * Until the WebSocket specification provides such a mechanism, this 
Tomcat proprietary method is provided to enable
+     * applications to programmatically determine whether or not to upgrade an 
individual request to WebSocket.
      * <p>
-     * Note: This method is not used by Tomcat but is used directly by
-     *       third-party code and must not be removed.
+     * Note: This method is not used by Tomcat but is used directly by 
third-party code and must not be removed.
      *
-     * @param request The request object to be upgraded
-     * @param response The response object to be populated with the result of
-     *                 the upgrade
-     * @param sec The server endpoint to use to process the upgrade request
+     * @param request    The request object to be upgraded
+     * @param response   The response object to be populated with the result 
of the upgrade
+     * @param sec        The server endpoint to use to process the upgrade 
request
      * @param pathParams The path parameters associated with the upgrade 
request
      *
-     * @throws ServletException If a configuration error prevents the upgrade
-     *         from taking place
-     * @throws IOException If an I/O error occurs during the upgrade process
+     * @throws ServletException If a configuration error prevents the upgrade 
from taking place
+     * @throws IOException      If an I/O error occurs during the upgrade 
process
      *
-     * @deprecated This method will be removed in Apache Tomcat 10.1 onwards. 
It
-     *             has been replaced by {@link #upgradeHttpToWebSocket(Object,
-     *             Object, ServerEndpointConfig, Map)}
+     * @deprecated This method will be removed in Apache Tomcat 10.1 onwards. 
It has been replaced by
+     *                 {@link #upgradeHttpToWebSocket(Object, Object, 
ServerEndpointConfig, Map)}
      */
     @Deprecated
-    public void doUpgrade(HttpServletRequest request,
-            HttpServletResponse response, ServerEndpointConfig sec,
-            Map<String,String> pathParams)
-            throws ServletException, IOException {
+    public void doUpgrade(HttpServletRequest request, HttpServletResponse 
response, ServerEndpointConfig sec,
+            Map<String, String> pathParams) throws ServletException, 
IOException {
         UpgradeUtil.doUpgrade(this, request, response, sec, pathParams);
     }
 
@@ -340,27 +304,29 @@ public class WsServerContainer extends 
WsWebSocketContainer
      * <p>
      * This method will be part of the Jakarta WebSocket API from version 2.1
      *
-     * @param httpServletRequest    The {@code HttpServletRequest} to be 
processed as a WebSocket handshake as per
-     *                              section 4.0 of RFC 6455.
-     * @param httpServletResponse   The {@code HttpServletResponse} to be used 
when processing the
-     *                              {@code httpServletRequest} as a WebSocket 
handshake as per section 4.0 of RFC 6455.
-     * @param sec                   The server endpoint configuration to use 
to configure the WebSocket endpoint
-     * @param pathParameters        Provides a mapping of path parameter names 
and values, if any, to be used for the
-     *                              WebSocket connection established by the 
call to this method. If no such mapping is
-     *                              defined, an empty Map must be passed.
+     * @param httpServletRequest  The {@code HttpServletRequest} to be 
processed as a WebSocket handshake as per section
+     *                                4.0 of RFC 6455.
+     * @param httpServletResponse The {@code HttpServletResponse} to be used 
when processing the
+     *                                {@code httpServletRequest} as a 
WebSocket handshake as per section 4.0 of RFC
+     *                                6455.
+     * @param sec                 The server endpoint configuration to use to 
configure the WebSocket endpoint
+     * @param pathParameters      Provides a mapping of path parameter names 
and values, if any, to be used for the
+     *                                WebSocket connection established by the 
call to this method. If no such mapping is
+     *                                defined, an empty Map must be passed.
      *
-     * @throws IllegalStateException if the provided request does not meet the 
requirements of the WebSocket handshake
+     * @throws IllegalStateException         if the provided request does not 
meet the requirements of the WebSocket
+     *                                           handshake
      * @throws UnsupportedOperationException if the WebSocket implementation 
is not deployed as part of a Jakarta
-     *                                       Servlet container
-     * @throws IOException if an I/O error occurs during the establishment of 
a WebSocket connection
-     * @throws DeploymentException if a configuration error prevents the 
establishment of a WebSocket connection
+     *                                           Servlet container
+     * @throws IOException                   if an I/O error occurs during the 
establishment of a WebSocket connection
+     * @throws DeploymentException           if a configuration error prevents 
the establishment of a WebSocket
+     *                                           connection
      */
-    public void upgradeHttpToWebSocket(Object httpServletRequest, Object 
httpServletResponse,
-            ServerEndpointConfig sec, Map<String, String> pathParameters)
-            throws IOException, DeploymentException {
+    public void upgradeHttpToWebSocket(Object httpServletRequest, Object 
httpServletResponse, ServerEndpointConfig sec,
+            Map<String, String> pathParameters) throws IOException, 
DeploymentException {
         try {
-            UpgradeUtil.doUpgrade(this, (HttpServletRequest) 
httpServletRequest, (HttpServletResponse) httpServletResponse,
-                    sec, pathParameters);
+            UpgradeUtil.doUpgrade(this, (HttpServletRequest) 
httpServletRequest,
+                    (HttpServletResponse) httpServletResponse, sec, 
pathParameters);
         } catch (ServletException e) {
             throw new DeploymentException(e.getMessage(), e);
         }
@@ -392,7 +358,7 @@ public class WsServerContainer extends WsWebSocketContainer
 
         // Number of segments has to match
         Integer key = Integer.valueOf(pathUriTemplate.getSegmentCount());
-        ConcurrentSkipListMap<String,TemplatePathMatch> templateMatches = 
configTemplateMatchMap.get(key);
+        ConcurrentSkipListMap<String, TemplatePathMatch> templateMatches = 
configTemplateMatchMap.get(key);
 
         if (templateMatches == null) {
             // No templates with an equal number of segments so there will be
@@ -403,7 +369,7 @@ public class WsServerContainer extends WsWebSocketContainer
         // List is in alphabetical order of normalised templates.
         // Correct match is the first one that matches.
         ServerEndpointConfig sec = null;
-        Map<String,String> pathParams = null;
+        Map<String, String> pathParams = null;
         for (TemplatePathMatch templateMatch : templateMatches.values()) {
             pathParams = templateMatch.getUriTemplate().match(pathUriTemplate);
             if (pathParams != null) {
@@ -428,8 +394,7 @@ public class WsServerContainer extends WsWebSocketContainer
 
 
     @Deprecated
-    public void setEnforceNoAddAfterHandshake(
-            boolean enforceNoAddAfterHandshake) {
+    public void setEnforceNoAddAfterHandshake(boolean 
enforceNoAddAfterHandshake) {
         this.enforceNoAddAfterHandshake = enforceNoAddAfterHandshake;
     }
 
@@ -440,9 +405,7 @@ public class WsServerContainer extends WsWebSocketContainer
 
 
     /**
-     * {@inheritDoc}
-     *
-     * Overridden to make it visible to other classes in this package.
+     * {@inheritDoc} Overridden to make it visible to other classes in this 
package.
      */
     @Override
     protected InstanceManager getInstanceManager(ClassLoader classLoader) {
@@ -451,40 +414,30 @@ public class WsServerContainer extends 
WsWebSocketContainer
 
 
     /**
-     * {@inheritDoc}
-     *
-     * Overridden to make it visible to other classes in this package.
+     * {@inheritDoc} Overridden to make it visible to other classes in this 
package.
      */
     @Override
     protected void registerSession(Object key, WsSession wsSession) {
         super.registerSession(key, wsSession);
-        if (wsSession.isOpen() &&
-                wsSession.getUserPrincipal() != null &&
-                wsSession.getHttpSessionId() != null) {
-            registerAuthenticatedSession(wsSession,
-                    wsSession.getHttpSessionId());
+        if (wsSession.isOpen() && wsSession.getUserPrincipal() != null && 
wsSession.getHttpSessionId() != null) {
+            registerAuthenticatedSession(wsSession, 
wsSession.getHttpSessionId());
         }
     }
 
 
     /**
-     * {@inheritDoc}
-     *
-     * Overridden to make it visible to other classes in this package.
+     * {@inheritDoc} Overridden to make it visible to other classes in this 
package.
      */
     @Override
     protected void unregisterSession(Object key, WsSession wsSession) {
-        if (wsSession.getUserPrincipal() != null &&
-                wsSession.getHttpSessionId() != null) {
-            unregisterAuthenticatedSession(wsSession,
-                    wsSession.getHttpSessionId());
+        if (wsSession.getUserPrincipal() != null && 
wsSession.getHttpSessionId() != null) {
+            unregisterAuthenticatedSession(wsSession, 
wsSession.getHttpSessionId());
         }
         super.unregisterSession(key, wsSession);
     }
 
 
-    private void registerAuthenticatedSession(WsSession wsSession,
-            String httpSessionId) {
+    private void registerAuthenticatedSession(WsSession wsSession, String 
httpSessionId) {
         Set<WsSession> wsSessions = authenticatedSessions.get(httpSessionId);
         if (wsSessions == null) {
             wsSessions = ConcurrentHashMap.newKeySet();
@@ -495,8 +448,7 @@ public class WsServerContainer extends WsWebSocketContainer
     }
 
 
-    private void unregisterAuthenticatedSession(WsSession wsSession,
-            String httpSessionId) {
+    private void unregisterAuthenticatedSession(WsSession wsSession, String 
httpSessionId) {
         Set<WsSession> wsSessions = authenticatedSessions.get(httpSessionId);
         // wsSessions will be null if the HTTP session has ended
         if (wsSessions != null) {
@@ -536,9 +488,8 @@ public class WsServerContainer extends WsWebSocketContainer
                     instance = (Encoder) instanceManager.newInstance(encoder);
                     instanceManager.destroyInstance(instance);
                 }
-            } catch(ReflectiveOperationException | NamingException e) {
-                throw new DeploymentException(sm.getString(
-                        "serverContainer.encoderFail", encoder.getName()), e);
+            } catch (ReflectiveOperationException | NamingException e) {
+                throw new 
DeploymentException(sm.getString("serverContainer.encoderFail", 
encoder.getName()), e);
             }
         }
     }
@@ -549,8 +500,7 @@ public class WsServerContainer extends WsWebSocketContainer
         private final UriTemplate uriTemplate;
         private final boolean fromAnnotatedPojo;
 
-        TemplatePathMatch(ServerEndpointConfig config, UriTemplate uriTemplate,
-                boolean fromAnnotatedPojo) {
+        TemplatePathMatch(ServerEndpointConfig config, UriTemplate 
uriTemplate, boolean fromAnnotatedPojo) {
             this.config = config;
             this.uriTemplate = uriTemplate;
             this.fromAnnotatedPojo = fromAnnotatedPojo;
diff --git a/java/org/apache/tomcat/websocket/server/WsSessionListener.java 
b/java/org/apache/tomcat/websocket/server/WsSessionListener.java
index a4735239e0..afa55cf183 100644
--- a/java/org/apache/tomcat/websocket/server/WsSessionListener.java
+++ b/java/org/apache/tomcat/websocket/server/WsSessionListener.java
@@ -19,7 +19,7 @@ package org.apache.tomcat.websocket.server;
 import javax.servlet.http.HttpSessionEvent;
 import javax.servlet.http.HttpSessionListener;
 
-public class WsSessionListener implements HttpSessionListener{
+public class WsSessionListener implements HttpSessionListener {
 
     private final WsServerContainer wsServerContainer;
 
diff --git a/java/org/apache/tomcat/websocket/server/WsWriteTimeout.java 
b/java/org/apache/tomcat/websocket/server/WsWriteTimeout.java
index 84e2f54417..5dd801012b 100644
--- a/java/org/apache/tomcat/websocket/server/WsWriteTimeout.java
+++ b/java/org/apache/tomcat/websocket/server/WsWriteTimeout.java
@@ -25,18 +25,17 @@ import org.apache.tomcat.websocket.BackgroundProcess;
 import org.apache.tomcat.websocket.BackgroundProcessManager;
 
 /**
- * Provides timeouts for asynchronous web socket writes. On the server side we
- * only have access to {@link javax.servlet.ServletOutputStream} and
- * {@link javax.servlet.ServletInputStream} so there is no way to set a timeout
- * for writes to the client.
+ * Provides timeouts for asynchronous web socket writes. On the server side we 
only have access to
+ * {@link javax.servlet.ServletOutputStream} and {@link 
javax.servlet.ServletInputStream} so there is no way to set a
+ * timeout for writes to the client.
  */
 public class WsWriteTimeout implements BackgroundProcess {
 
     /**
      * Note: The comparator imposes orderings that are inconsistent with equals
      */
-    private final Set<WsRemoteEndpointImplServer> endpoints =
-            new 
ConcurrentSkipListSet<>(Comparator.comparingLong(WsRemoteEndpointImplServer::getTimeoutExpiry));
+    private final Set<WsRemoteEndpointImplServer> endpoints = new 
ConcurrentSkipListSet<>(
+            
Comparator.comparingLong(WsRemoteEndpointImplServer::getTimeoutExpiry));
     private final AtomicInteger count = new AtomicInteger(0);
     private int backgroundProcessCount = 0;
     private volatile int processPeriod = 1;
@@ -44,7 +43,7 @@ public class WsWriteTimeout implements BackgroundProcess {
     @Override
     public void backgroundProcess() {
         // This method gets called once a second.
-        backgroundProcessCount ++;
+        backgroundProcessCount++;
 
         if (backgroundProcessCount >= processPeriod) {
             backgroundProcessCount = 0;
@@ -73,10 +72,7 @@ public class WsWriteTimeout implements BackgroundProcess {
 
 
     /**
-     * {@inheritDoc}
-     *
-     * The default value is 1 which means asynchronous write timeouts are
-     * processed every 1 second.
+     * {@inheritDoc} The default value is 1 which means asynchronous write 
timeouts are processed every 1 second.
      */
     @Override
     public int getProcessPeriod() {
diff --git a/java/org/apache/tomcat/websocket/server/package-info.java 
b/java/org/apache/tomcat/websocket/server/package-info.java
index 75ca74cd85..36819c9ac0 100644
--- a/java/org/apache/tomcat/websocket/server/package-info.java
+++ b/java/org/apache/tomcat/websocket/server/package-info.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 /**
- * Server-side specific implementation classes. These are in a separate package
- * to make packaging a pure client JAR simpler.
+ * Server-side specific implementation classes. These are in a separate 
package to make packaging a pure client JAR
+ * simpler.
  */
 package org.apache.tomcat.websocket.server;
\ No newline at end of file


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

Reply via email to