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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org