You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2019/07/01 07:49:49 UTC

[tomcat] 01/02: Align with 8.5.x.

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

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

commit 45170f0138845e609869afb70564b1023ff21711
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Sun Jun 30 23:41:22 2019 +0100

    Align with 8.5.x.
---
 .../apache/tomcat/websocket/server/Constants.java  |  7 ++++--
 .../server/DefaultServerEndpointConfigurator.java  |  6 +++--
 .../websocket/server/LocalStrings.properties       |  3 +--
 .../tomcat/websocket/server/UpgradeUtil.java       | 12 +++++++---
 .../tomcat/websocket/server/UriTemplate.java       |  3 +--
 .../apache/tomcat/websocket/server/WsFilter.java   |  2 --
 .../tomcat/websocket/server/WsFrameServer.java     |  5 ++++-
 .../websocket/server/WsHandshakeRequest.java       |  4 +---
 .../server/WsRemoteEndpointImplServer.java         |  4 ++--
 java/org/apache/tomcat/websocket/server/WsSci.java |  6 ++---
 .../tomcat/websocket/server/WsServerContainer.java | 26 +++++++---------------
 .../tomcat/websocket/server/WsWriteTimeout.java    |  5 +----
 12 files changed, 38 insertions(+), 45 deletions(-)

diff --git a/java/org/apache/tomcat/websocket/server/Constants.java b/java/org/apache/tomcat/websocket/server/Constants.java
index 8a86d70..4afb1a7 100644
--- a/java/org/apache/tomcat/websocket/server/Constants.java
+++ b/java/org/apache/tomcat/websocket/server/Constants.java
@@ -21,8 +21,11 @@ package org.apache.tomcat.websocket.server;
  */
 public class Constants {
 
-    protected static final String PACKAGE_NAME =
-            Constants.class.getPackage().getName();
+    /**
+     * @deprecated. Will be removed in 8.5.x onwards.
+     */
+    @Deprecated
+    protected static final String PACKAGE_NAME = Constants.class.getPackage().getName();
 
     public static final String BINARY_BUFFER_SIZE_SERVLET_CONTEXT_INIT_PARAM =
             "org.apache.tomcat.websocket.binaryBufferSize";
diff --git a/java/org/apache/tomcat/websocket/server/DefaultServerEndpointConfigurator.java b/java/org/apache/tomcat/websocket/server/DefaultServerEndpointConfigurator.java
index 64ac8ca..c6cbbd6 100644
--- a/java/org/apache/tomcat/websocket/server/DefaultServerEndpointConfigurator.java
+++ b/java/org/apache/tomcat/websocket/server/DefaultServerEndpointConfigurator.java
@@ -33,8 +33,10 @@ public class DefaultServerEndpointConfigurator
     public <T> T getEndpointInstance(Class<T> clazz)
             throws InstantiationException {
         try {
-            return clazz.newInstance();
-        } catch (IllegalAccessException e) {
+            return clazz.getConstructor().newInstance();
+        } catch (InstantiationException e) {
+            throw e;
+        } catch (ReflectiveOperationException e) {
             InstantiationException ie = new InstantiationException();
             ie.initCause(e);
             throw ie;
diff --git a/java/org/apache/tomcat/websocket/server/LocalStrings.properties b/java/org/apache/tomcat/websocket/server/LocalStrings.properties
index c987458..85cedd6 100644
--- a/java/org/apache/tomcat/websocket/server/LocalStrings.properties
+++ b/java/org/apache/tomcat/websocket/server/LocalStrings.properties
@@ -17,9 +17,8 @@ sci.noWebSocketSupport=JSR 356 WebSocket (Java WebSocket 1.1) support is not ava
 
 serverContainer.addNotAllowed=No further Endpoints may be registered once an attempt has been made to use one of the previously registered endpoints
 serverContainer.configuratorFail=Failed to create configurator of type [{0}] for POJO of type [{1}]
-serverContainer.duplicatePaths=Multiple Endpoints may not be deployed to the same path [{0}] : existing endpoint was {1} and new endpoint is {2}
+serverContainer.duplicatePaths=Multiple Endpoints may not be deployed to the same path [{0}] : existing endpoint was [{1}] and new endpoint is [{2}]
 serverContainer.encoderFail=Unable to create encoder of type [{0}]
-serverContainer.endpointDeploy=Endpoint class [{0}] deploying to path [{1}] in ServletContext [{2}]
 serverContainer.failedDeployment=Deployment of WebSocket Endpoints to the web application with path [{0}] is not permitted due to the failure of a previous deployment
 serverContainer.missingAnnotation=Cannot deploy POJO class [{0}] as it is not annotated with @ServerEndpoint
 serverContainer.missingEndpoint=An Endpoint instance has been request for path [{0}] but no matching Endpoint class was found
diff --git a/java/org/apache/tomcat/websocket/server/UpgradeUtil.java b/java/org/apache/tomcat/websocket/server/UpgradeUtil.java
index 7a752ff..36dfbc5 100644
--- a/java/org/apache/tomcat/websocket/server/UpgradeUtil.java
+++ b/java/org/apache/tomcat/websocket/server/UpgradeUtil.java
@@ -50,8 +50,8 @@ import org.apache.tomcat.websocket.pojo.PojoEndpointServer;
 
 public class UpgradeUtil {
 
-    private static final StringManager sm = StringManager
-            .getManager(org.apache.tomcat.websocket.server.Constants.PACKAGE_NAME);
+    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);
@@ -67,6 +67,11 @@ public class UpgradeUtil {
      * 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 a HTTP Upgrade request
+     *         for the WebSocket protocol, otherwise <code>false</code>
      */
     public static boolean isWebSocketUpgradeRequest(ServletRequest request,
             ServletResponse response) {
@@ -222,7 +227,7 @@ public class UpgradeUtil {
                 ep = new PojoEndpointServer();
                 // Need to make path params available to POJO
                 perSessionServerEndpointConfig.getUserProperties().put(
-                        PojoEndpointServer.POJO_PATH_PARAM_KEY, pathParams);
+                        org.apache.tomcat.websocket.pojo.Constants.POJO_PATH_PARAM_KEY, pathParams);
             }
         } catch (InstantiationException e) {
             throw new ServletException(e);
@@ -279,6 +284,7 @@ public class UpgradeUtil {
         return result;
     }
 
+
     private static void append(StringBuilder sb, Extension extension) {
         if (extension == null || extension.getName() == null || extension.getName().length() == 0) {
             return;
diff --git a/java/org/apache/tomcat/websocket/server/UriTemplate.java b/java/org/apache/tomcat/websocket/server/UriTemplate.java
index 26ea7f3..172359a 100644
--- a/java/org/apache/tomcat/websocket/server/UriTemplate.java
+++ b/java/org/apache/tomcat/websocket/server/UriTemplate.java
@@ -34,8 +34,7 @@ import org.apache.tomcat.util.res.StringManager;
  */
 public class UriTemplate {
 
-    private static final StringManager sm =
-            StringManager.getManager(Constants.PACKAGE_NAME);
+    private static final StringManager sm = StringManager.getManager(UriTemplate.class);
 
     private final String normalized;
     private final List<Segment> segments = new ArrayList<Segment>();
diff --git a/java/org/apache/tomcat/websocket/server/WsFilter.java b/java/org/apache/tomcat/websocket/server/WsFilter.java
index f4ee916..58a1bf7 100644
--- a/java/org/apache/tomcat/websocket/server/WsFilter.java
+++ b/java/org/apache/tomcat/websocket/server/WsFilter.java
@@ -83,6 +83,4 @@ public class WsFilter implements Filter {
     public void destroy() {
         // NO-OP
     }
-
-
 }
diff --git a/java/org/apache/tomcat/websocket/server/WsFrameServer.java b/java/org/apache/tomcat/websocket/server/WsFrameServer.java
index 2576af8..e5e0511 100644
--- a/java/org/apache/tomcat/websocket/server/WsFrameServer.java
+++ b/java/org/apache/tomcat/websocket/server/WsFrameServer.java
@@ -30,7 +30,7 @@ import org.apache.tomcat.websocket.WsSession;
 public class WsFrameServer extends WsFrameBase {
 
     private final Log log = LogFactory.getLog(WsFrameServer.class); // must not be static
-    private static final StringManager sm = StringManager.getManager(Constants.PACKAGE_NAME);
+    private static final StringManager sm = StringManager.getManager(WsFrameServer.class);
 
     private final AbstractServletInputStream sis;
     private final Object connectionReadLock = new Object();
@@ -45,6 +45,9 @@ 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
      */
     public void onDataAvailable() throws IOException {
         if (log.isDebugEnabled()) {
diff --git a/java/org/apache/tomcat/websocket/server/WsHandshakeRequest.java b/java/org/apache/tomcat/websocket/server/WsHandshakeRequest.java
index 7717ccf..70c5078 100644
--- a/java/org/apache/tomcat/websocket/server/WsHandshakeRequest.java
+++ b/java/org/apache/tomcat/websocket/server/WsHandshakeRequest.java
@@ -69,9 +69,7 @@ public class WsHandshakeRequest implements HandshakeRequest {
                             Arrays.asList(entry.getValue())));
         }
         for (Entry<String,String> entry : pathParams.entrySet()) {
-            newParameters.put(entry.getKey(),
-                    Collections.unmodifiableList(
-                            Arrays.asList(entry.getValue())));
+            newParameters.put(entry.getKey(), Collections.singletonList(entry.getValue()));
         }
         parameterMap = Collections.unmodifiableMap(newParameters);
 
diff --git a/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java b/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
index e53bc97..1b0494f 100644
--- a/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
+++ b/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
@@ -112,9 +112,9 @@ public class WsRemoteEndpointImplServer extends WsRemoteEndpointImplBase {
             clearHandler(ioe, useDispatch);
             close();
         }
+
         if (!complete) {
             // Async write is in progress
-
             long timeout = getSendTimeout();
             if (timeout > 0) {
                 // Register with timeout thread
@@ -136,7 +136,7 @@ public class WsRemoteEndpointImplServer extends WsRemoteEndpointImplBase {
         }
         try {
             sos.close();
-        } catch (IOException e) {
+        } catch (Exception e) {
             if (log.isInfoEnabled()) {
                 log.info(sm.getString("wsRemoteEndpointServer.closeFailed"), e);
             }
diff --git a/java/org/apache/tomcat/websocket/server/WsSci.java b/java/org/apache/tomcat/websocket/server/WsSci.java
index db9bbe1..d451f6f 100644
--- a/java/org/apache/tomcat/websocket/server/WsSci.java
+++ b/java/org/apache/tomcat/websocket/server/WsSci.java
@@ -92,7 +92,7 @@ public class WsSci implements ServletContainerInitializer {
                 }
                 if (ServerApplicationConfig.class.isAssignableFrom(clazz)) {
                     serverApplicationConfigs.add(
-                            (ServerApplicationConfig) clazz.newInstance());
+                            (ServerApplicationConfig) clazz.getConstructor().newInstance());
                 }
                 if (Endpoint.class.isAssignableFrom(clazz)) {
                     @SuppressWarnings("unchecked")
@@ -104,9 +104,7 @@ public class WsSci implements ServletContainerInitializer {
                     scannedPojoEndpoints.add(clazz);
                 }
             }
-        } catch (InstantiationException e) {
-            throw new ServletException(e);
-        } catch (IllegalAccessException e) {
+        } catch (ReflectiveOperationException e) {
             throw new ServletException(e);
         }
 
diff --git a/java/org/apache/tomcat/websocket/server/WsServerContainer.java b/java/org/apache/tomcat/websocket/server/WsServerContainer.java
index 8592a10..33b03d5 100644
--- a/java/org/apache/tomcat/websocket/server/WsServerContainer.java
+++ b/java/org/apache/tomcat/websocket/server/WsServerContainer.java
@@ -53,7 +53,6 @@ import org.apache.tomcat.InstanceManager;
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.tomcat.websocket.WsSession;
 import org.apache.tomcat.websocket.WsWebSocketContainer;
-import org.apache.tomcat.websocket.pojo.PojoEndpointServer;
 import org.apache.tomcat.websocket.pojo.PojoMethodMapping;
 
 /**
@@ -69,8 +68,7 @@ import org.apache.tomcat.websocket.pojo.PojoMethodMapping;
 public class WsServerContainer extends WsWebSocketContainer
         implements ServerContainer {
 
-    private static final StringManager sm =
-            StringManager.getManager(Constants.PACKAGE_NAME);
+    private static final StringManager sm = StringManager.getManager(WsServerContainer.class);
     private final Log log = LogFactory.getLog(WsServerContainer.class); // must not be static
 
     private static final CloseReason AUTHENTICATED_HTTP_SESSION_CLOSED =
@@ -164,7 +162,8 @@ public class WsServerContainer extends WsWebSocketContainer
      * must be called before calling this method.
      *
      * @param sec   The configuration to use when creating endpoint instances
-     * @throws DeploymentException
+     * @throws DeploymentException if the endpoint cannot be published as
+     *         requested
      */
     @Override
     public void addEndpoint(ServerEndpointConfig sec) throws DeploymentException {
@@ -197,8 +196,7 @@ public class WsServerContainer extends WsWebSocketContainer
                     sec.getDecoders(), path);
             if (methodMapping.getOnClose() != null || methodMapping.getOnOpen() != null
                     || methodMapping.getOnError() != null || methodMapping.hasMessageHandlers()) {
-                sec.getUserProperties().put(
-                        PojoEndpointServer.POJO_METHOD_MAPPING_KEY,
+                sec.getUserProperties().put(org.apache.tomcat.websocket.pojo.Constants.POJO_METHOD_MAPPING_KEY,
                         methodMapping);
             }
 
@@ -300,13 +298,8 @@ public class WsServerContainer extends WsWebSocketContainer
             Configurator configurator = null;
             if (!configuratorClazz.equals(Configurator.class)) {
                 try {
-                    configurator = annotation.configurator().newInstance();
-                } catch (InstantiationException e) {
-                    throw new DeploymentException(sm.getString(
-                            "serverContainer.configuratorFail",
-                            annotation.configurator().getName(),
-                            pojo.getClass().getName()), e);
-                } catch (IllegalAccessException e) {
+                    configurator = annotation.configurator().getConstructor().newInstance();
+                } catch (ReflectiveOperationException e) {
                     throw new DeploymentException(sm.getString(
                             "serverContainer.configuratorFail",
                             annotation.configurator().getName(),
@@ -582,11 +575,8 @@ public class WsServerContainer extends WsWebSocketContainer
             @SuppressWarnings("unused")
             Encoder instance;
             try {
-                encoder.newInstance();
-            } catch(InstantiationException e) {
-                throw new DeploymentException(sm.getString(
-                        "serverContainer.encoderFail", encoder.getName()), e);
-            } catch (IllegalAccessException e) {
+                encoder.getConstructor().newInstance();
+            } catch(ReflectiveOperationException e) {
                 throw new DeploymentException(sm.getString(
                         "serverContainer.encoderFail", encoder.getName()), e);
             }
diff --git a/java/org/apache/tomcat/websocket/server/WsWriteTimeout.java b/java/org/apache/tomcat/websocket/server/WsWriteTimeout.java
index 282014c..539730a 100644
--- a/java/org/apache/tomcat/websocket/server/WsWriteTimeout.java
+++ b/java/org/apache/tomcat/websocket/server/WsWriteTimeout.java
@@ -17,7 +17,6 @@
 package org.apache.tomcat.websocket.server;
 
 import java.util.Comparator;
-import java.util.Iterator;
 import java.util.Set;
 import java.util.concurrent.ConcurrentSkipListSet;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -48,9 +47,7 @@ public class WsWriteTimeout implements BackgroundProcess {
             backgroundProcessCount = 0;
 
             long now = System.currentTimeMillis();
-            Iterator<WsRemoteEndpointImplServer> iter = endpoints.iterator();
-            while (iter.hasNext()) {
-                WsRemoteEndpointImplServer endpoint = iter.next();
+            for (WsRemoteEndpointImplServer endpoint : endpoints) {
                 if (endpoint.getTimeoutExpiry() < now) {
                     // Background thread, not the thread that triggered the
                     // write so no need to use a dispatch


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