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:48 UTC

[tomcat] branch 7.0.x updated (bf5e555 -> 0ef94ce)

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

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


    from bf5e555  Revert changes that broke compilation with source=1.6
     new 45170f0  Align with 8.5.x.
     new 0ef94ce  Align with 8.5.x

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../tomcat/websocket/AsyncChannelGroupUtil.java    |  2 +-
 .../websocket/AsyncChannelWrapperSecure.java       | 27 ++++-----
 .../tomcat/websocket/BackgroundProcessManager.java |  2 +-
 java/org/apache/tomcat/websocket/Constants.java    | 14 +++--
 .../tomcat/websocket/FutureToSendHandler.java      |  2 +-
 .../apache/tomcat/websocket/PerMessageDeflate.java |  2 +-
 .../apache/tomcat/websocket/Transformation.java    |  9 +++
 .../tomcat/websocket/TransformationFactory.java    |  2 +-
 java/org/apache/tomcat/websocket/Util.java         |  3 +-
 java/org/apache/tomcat/websocket/WsFrameBase.java  | 70 +++++++++-------------
 .../org/apache/tomcat/websocket/WsFrameClient.java | 22 +++----
 .../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 +-
 23 files changed, 110 insertions(+), 128 deletions(-)


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


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

Posted by ma...@apache.org.
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 0ef94cefaa6ae86791806e83d5f6161786231803
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Sun Jun 30 23:53:57 2019 +0100

    Align with 8.5.x
---
 .../tomcat/websocket/AsyncChannelGroupUtil.java    |  2 +-
 .../websocket/AsyncChannelWrapperSecure.java       | 27 ++++-----
 .../tomcat/websocket/BackgroundProcessManager.java |  2 +-
 java/org/apache/tomcat/websocket/Constants.java    | 14 +++--
 .../tomcat/websocket/FutureToSendHandler.java      |  2 +-
 .../apache/tomcat/websocket/PerMessageDeflate.java |  2 +-
 .../apache/tomcat/websocket/Transformation.java    |  9 +++
 .../tomcat/websocket/TransformationFactory.java    |  2 +-
 java/org/apache/tomcat/websocket/Util.java         |  3 +-
 java/org/apache/tomcat/websocket/WsFrameBase.java  | 70 +++++++++-------------
 .../org/apache/tomcat/websocket/WsFrameClient.java | 22 +++----
 11 files changed, 72 insertions(+), 83 deletions(-)

diff --git a/java/org/apache/tomcat/websocket/AsyncChannelGroupUtil.java b/java/org/apache/tomcat/websocket/AsyncChannelGroupUtil.java
index 0e81011..fe0136e 100644
--- a/java/org/apache/tomcat/websocket/AsyncChannelGroupUtil.java
+++ b/java/org/apache/tomcat/websocket/AsyncChannelGroupUtil.java
@@ -37,7 +37,7 @@ import org.apache.tomcat.util.threads.ThreadPoolExecutor;
 public class AsyncChannelGroupUtil {
 
     private static final StringManager sm =
-            StringManager.getManager(Constants.PACKAGE_NAME);
+            StringManager.getManager(AsyncChannelGroupUtil.class);
 
     private static AsynchronousChannelGroup group = null;
     private static int usageCount = 0;
diff --git a/java/org/apache/tomcat/websocket/AsyncChannelWrapperSecure.java b/java/org/apache/tomcat/websocket/AsyncChannelWrapperSecure.java
index 0f0f038..c5eac9f 100644
--- a/java/org/apache/tomcat/websocket/AsyncChannelWrapperSecure.java
+++ b/java/org/apache/tomcat/websocket/AsyncChannelWrapperSecure.java
@@ -51,7 +51,7 @@ public class AsyncChannelWrapperSecure implements AsyncChannelWrapper {
     private final Log log =
             LogFactory.getLog(AsyncChannelWrapperSecure.class);
     private static final StringManager sm =
-            StringManager.getManager(Constants.PACKAGE_NAME);
+            StringManager.getManager(AsyncChannelWrapperSecure.class);
 
     private static final ByteBuffer DUMMY = ByteBuffer.allocate(16921);
     private final AsynchronousSocketChannel socketChannel;
@@ -268,8 +268,7 @@ public class AsyncChannelWrapperSecure implements AsyncChannelWrapper {
                         Future<Integer> f = socketChannel.read(socketReadBuffer);
                         Integer socketRead = f.get();
                         if (socketRead.intValue() == -1) {
-                            throw new EOFException(sm.getString(
-                                    "asyncChannelWrapperSecure.eof"));
+                            throw new EOFException(sm.getString("asyncChannelWrapperSecure.eof"));
                         }
                     }
 
@@ -277,8 +276,7 @@ public class AsyncChannelWrapperSecure implements AsyncChannelWrapper {
 
                     if (socketReadBuffer.hasRemaining()) {
                         // Decrypt the data in the buffer
-                        SSLEngineResult r =
-                                sslEngine.unwrap(socketReadBuffer, dest);
+                        SSLEngineResult r = sslEngine.unwrap(socketReadBuffer, dest);
                         read += r.bytesProduced();
                         Status s = r.getStatus();
 
@@ -405,17 +403,15 @@ public class AsyncChannelWrapperSecure implements AsyncChannelWrapper {
                             handshaking = false;
                             break;
                         }
-                        default: {
-                            throw new SSLException("TODO");
+                        case NOT_HANDSHAKING: {
+                            throw new SSLException(
+                                    sm.getString("asyncChannelWrapperSecure.notHandshaking"));
                         }
                     }
                 }
-            } catch (SSLException e) {
-                hFuture.fail(e);
-            } catch (InterruptedException e) {
-                hFuture.fail(e);
-            } catch (ExecutionException e) {
+            } catch (Exception e) {
                 hFuture.fail(e);
+                return;
             }
 
             hFuture.complete(null);
@@ -429,13 +425,14 @@ public class AsyncChannelWrapperSecure implements AsyncChannelWrapper {
 
             if (resultStatus != Status.OK &&
                     (wrap || resultStatus != Status.BUFFER_UNDERFLOW)) {
-                throw new SSLException("TODO");
+                throw new SSLException(
+                        sm.getString("asyncChannelWrapperSecure.check.notOk", resultStatus));
             }
             if (wrap && result.bytesConsumed() != 0) {
-                throw new SSLException("TODO");
+                throw new SSLException(sm.getString("asyncChannelWrapperSecure.check.wrap"));
             }
             if (!wrap && result.bytesProduced() != 0) {
-                throw new SSLException("TODO");
+                throw new SSLException(sm.getString("asyncChannelWrapperSecure.check.unwrap"));
             }
         }
     }
diff --git a/java/org/apache/tomcat/websocket/BackgroundProcessManager.java b/java/org/apache/tomcat/websocket/BackgroundProcessManager.java
index 8de6a55..53aed20 100644
--- a/java/org/apache/tomcat/websocket/BackgroundProcessManager.java
+++ b/java/org/apache/tomcat/websocket/BackgroundProcessManager.java
@@ -34,7 +34,7 @@ public class BackgroundProcessManager {
     private final Log log =
             LogFactory.getLog(BackgroundProcessManager.class);
     private static final StringManager sm =
-            StringManager.getManager(Constants.PACKAGE_NAME);
+            StringManager.getManager(BackgroundProcessManager.class);
     private static final BackgroundProcessManager instance;
 
 
diff --git a/java/org/apache/tomcat/websocket/Constants.java b/java/org/apache/tomcat/websocket/Constants.java
index 5a292f8..bdadbb6 100644
--- a/java/org/apache/tomcat/websocket/Constants.java
+++ b/java/org/apache/tomcat/websocket/Constants.java
@@ -27,8 +27,12 @@ import javax.websocket.Extension;
  */
 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();
+
     // OP Codes
     public static final byte OPCODE_CONTINUATION = 0x00;
     public static final byte OPCODE_TEXT = 0x01;
@@ -67,10 +71,8 @@ public class Constants {
     public static final String WS_VERSION_HEADER_NAME = "Sec-WebSocket-Version";
     public static final String WS_VERSION_HEADER_VALUE = "13";
     public static final String WS_KEY_HEADER_NAME = "Sec-WebSocket-Key";
-    public static final String WS_PROTOCOL_HEADER_NAME =
-            "Sec-WebSocket-Protocol";
-    public static final String WS_EXTENSIONS_HEADER_NAME =
-            "Sec-WebSocket-Extensions";
+    public static final String WS_PROTOCOL_HEADER_NAME = "Sec-WebSocket-Protocol";
+    public static final String WS_EXTENSIONS_HEADER_NAME = "Sec-WebSocket-Extensions";
 
     /// HTTP redirection status codes
     public static final int MULTIPLE_CHOICES = 300;
diff --git a/java/org/apache/tomcat/websocket/FutureToSendHandler.java b/java/org/apache/tomcat/websocket/FutureToSendHandler.java
index 62871aa..8c837fb 100644
--- a/java/org/apache/tomcat/websocket/FutureToSendHandler.java
+++ b/java/org/apache/tomcat/websocket/FutureToSendHandler.java
@@ -34,7 +34,7 @@ import org.apache.tomcat.util.res.StringManager;
  */
 class FutureToSendHandler implements Future<Void>, SendHandler {
 
-    private static final StringManager sm = StringManager.getManager(Constants.PACKAGE_NAME);
+    private static final StringManager sm = StringManager.getManager(FutureToSendHandler.class);
 
     private final CountDownLatch latch = new CountDownLatch(1);
     private final WsSession wsSession;
diff --git a/java/org/apache/tomcat/websocket/PerMessageDeflate.java b/java/org/apache/tomcat/websocket/PerMessageDeflate.java
index 010f711..c4fe1c4 100644
--- a/java/org/apache/tomcat/websocket/PerMessageDeflate.java
+++ b/java/org/apache/tomcat/websocket/PerMessageDeflate.java
@@ -418,7 +418,7 @@ public class PerMessageDeflate implements Transformation {
                                     uncompressedIntermediateHandler, uncompressedIntermediateHandler);
                         }
                     } else {
-                        throw new IllegalStateException("Should never happen");
+                        throw new IllegalStateException(sm.getString("perMessageDeflate.invalidState"));
                     }
 
                     // Add the newly created compressed part to the set of parts
diff --git a/java/org/apache/tomcat/websocket/Transformation.java b/java/org/apache/tomcat/websocket/Transformation.java
index e5d82de..5186181 100644
--- a/java/org/apache/tomcat/websocket/Transformation.java
+++ b/java/org/apache/tomcat/websocket/Transformation.java
@@ -30,6 +30,7 @@ public interface Transformation {
 
     /**
      * Sets the next transformation in the pipeline.
+     * @param t The next transformation
      */
     void setNext(Transformation t);
 
@@ -52,6 +53,9 @@ public interface Transformation {
     /**
      * Obtain the extension that describes the information to be returned to the
      * client.
+     *
+     * @return The extension information that describes the parameters that have
+     *         been agreed for this transformation
      */
     Extension getExtensionResponse();
 
@@ -63,6 +67,11 @@ public interface Transformation {
      * @param rsv       The reserved bits for the frame currently being
      *                      processed
      * @param dest      The buffer in which the data is to be written
+     *
+     * @return The result of trying to read more data from the transform
+     *
+     * @throws IOException If an I/O error occurs while reading data from the
+     *         transform
      */
     TransformationResult getMoreData(byte opCode, boolean fin, int rsv, ByteBuffer dest) throws IOException;
 
diff --git a/java/org/apache/tomcat/websocket/TransformationFactory.java b/java/org/apache/tomcat/websocket/TransformationFactory.java
index fed13f9..643be94 100644
--- a/java/org/apache/tomcat/websocket/TransformationFactory.java
+++ b/java/org/apache/tomcat/websocket/TransformationFactory.java
@@ -24,7 +24,7 @@ import org.apache.tomcat.util.res.StringManager;
 
 public class TransformationFactory {
 
-    private static final StringManager sm = StringManager.getManager(Constants.PACKAGE_NAME);
+    private static final StringManager sm = StringManager.getManager(TransformationFactory.class);
 
     private static final TransformationFactory factory = new TransformationFactory();
 
diff --git a/java/org/apache/tomcat/websocket/Util.java b/java/org/apache/tomcat/websocket/Util.java
index 27ff24a..e935056 100644
--- a/java/org/apache/tomcat/websocket/Util.java
+++ b/java/org/apache/tomcat/websocket/Util.java
@@ -59,8 +59,7 @@ import org.apache.tomcat.websocket.pojo.PojoMessageHandlerWholeText;
  */
 public class Util {
 
-    private static final StringManager sm =
-            StringManager.getManager(Constants.PACKAGE_NAME);
+    private static final StringManager sm = StringManager.getManager(Util.class);
     private static final Queue<SecureRandom> randoms =
             new ConcurrentLinkedQueue<SecureRandom>();
 
diff --git a/java/org/apache/tomcat/websocket/WsFrameBase.java b/java/org/apache/tomcat/websocket/WsFrameBase.java
index ae6f8e8..b3d7261 100644
--- a/java/org/apache/tomcat/websocket/WsFrameBase.java
+++ b/java/org/apache/tomcat/websocket/WsFrameBase.java
@@ -42,8 +42,7 @@ import org.apache.tomcat.util.res.StringManager;
  */
 public abstract class WsFrameBase {
 
-    private static final StringManager sm =
-            StringManager.getManager(Constants.PACKAGE_NAME);
+    private static final StringManager sm = StringManager.getManager(WsFrameBase.class);
 
     // Connection level attributes
     protected final WsSession wsSession;
@@ -79,10 +78,10 @@ public abstract class WsFrameBase {
     private final byte[] mask = new byte[4];
     private int maskIndex = 0;
     private long payloadLength = 0;
-    private long payloadWritten = 0;
+    private volatile long payloadWritten = 0;
 
     // Attributes tracking state
-    private State state = State.NEW_FRAME;
+    private volatile State state = State.NEW_FRAME;
     private volatile boolean open = true;
     private int readPos = 0;
     protected int writePos = 0;
@@ -152,8 +151,7 @@ public abstract class WsFrameBase {
         if (!transformation.validateRsv(rsv, opCode)) {
             throw new WsIOException(new CloseReason(
                     CloseCodes.PROTOCOL_ERROR,
-                    sm.getString("wsFrame.wrongRsv", Integer.valueOf(rsv),
-                            Integer.valueOf(opCode))));
+                    sm.getString("wsFrame.wrongRsv", Integer.valueOf(rsv), Integer.valueOf(opCode))));
         }
 
         if (Util.isControl(opCode)) {
@@ -167,8 +165,7 @@ public abstract class WsFrameBase {
                     opCode != Constants.OPCODE_CLOSE) {
                 throw new WsIOException(new CloseReason(
                         CloseCodes.PROTOCOL_ERROR,
-                        sm.getString("wsFrame.invalidOpCode",
-                                Integer.valueOf(opCode))));
+                        sm.getString("wsFrame.invalidOpCode", Integer.valueOf(opCode))));
             }
         } else {
             if (continuationExpected) {
@@ -200,8 +197,7 @@ public abstract class WsFrameBase {
                     } else {
                         throw new WsIOException(new CloseReason(
                                 CloseCodes.PROTOCOL_ERROR,
-                                sm.getString("wsFrame.invalidOpCode",
-                                        Integer.valueOf(opCode))));
+                                sm.getString("wsFrame.invalidOpCode", Integer.valueOf(opCode))));
                     }
                 } catch (IllegalStateException ise) {
                     // Thrown if the session is already closed
@@ -321,7 +317,7 @@ public abstract class WsFrameBase {
             int code = CloseCodes.NORMAL_CLOSURE.getCode();
             if (controlBufferBinary.remaining() == 1) {
                 controlBufferBinary.clear();
-                // Payload must be zero or greater than 2
+                // Payload must be zero or 2+ bytes long
                 throw new WsIOException(new CloseReason(
                         CloseCodes.PROTOCOL_ERROR,
                         sm.getString("wsFrame.oneByteCloseCode")));
@@ -329,8 +325,8 @@ public abstract class WsFrameBase {
             if (controlBufferBinary.remaining() > 1) {
                 code = controlBufferBinary.getShort();
                 if (controlBufferBinary.remaining() > 0) {
-                    CoderResult cr = utf8DecoderControl.decode(
-                            controlBufferBinary, controlBufferText, true);
+                    CoderResult cr = utf8DecoderControl.decode(controlBufferBinary,
+                            controlBufferText, true);
                     if (cr.isError()) {
                         controlBufferBinary.clear();
                         controlBufferText.clear();
@@ -351,8 +347,7 @@ public abstract class WsFrameBase {
                 wsSession.getBasicRemote().sendPong(controlBufferBinary);
             }
         } else if (opCode == Constants.OPCODE_PONG) {
-            MessageHandler.Whole<PongMessage> mhPong =
-                    wsSession.getPongMessageHandler();
+            MessageHandler.Whole<PongMessage> mhPong = wsSession.getPongMessageHandler();
             if (mhPong != null) {
                 try {
                     mhPong.onMessage(new WsPongMessage(controlBufferBinary));
@@ -367,8 +362,7 @@ public abstract class WsFrameBase {
             controlBufferBinary.clear();
             throw new WsIOException(new CloseReason(
                     CloseCodes.PROTOCOL_ERROR,
-                    sm.getString("wsFrame.invalidOpCode",
-                            Integer.valueOf(opCode))));
+                    sm.getString("wsFrame.invalidOpCode", Integer.valueOf(opCode))));
         }
         controlBufferBinary.clear();
         newFrame();
@@ -379,10 +373,8 @@ public abstract class WsFrameBase {
     @SuppressWarnings("unchecked")
     private void sendMessageText(boolean last) throws WsIOException {
         if (textMsgHandler instanceof WrappedMessageHandler) {
-            long maxMessageSize =
-                    ((WrappedMessageHandler) textMsgHandler).getMaxMessageSize();
-            if (maxMessageSize > -1 &&
-                    messageBufferText.remaining() > maxMessageSize) {
+            long maxMessageSize = ((WrappedMessageHandler) textMsgHandler).getMaxMessageSize();
+            if (maxMessageSize > -1 && messageBufferText.remaining() > maxMessageSize) {
                 throw new WsIOException(new CloseReason(CloseCodes.TOO_BIG,
                         sm.getString("wsFrame.messageTooBig",
                                 Long.valueOf(messageBufferText.remaining()),
@@ -392,12 +384,12 @@ public abstract class WsFrameBase {
 
         try {
             if (textMsgHandler instanceof MessageHandler.Partial<?>) {
-                ((MessageHandler.Partial<String>) textMsgHandler).onMessage(
-                        messageBufferText.toString(), last);
+                ((MessageHandler.Partial<String>) textMsgHandler)
+                        .onMessage(messageBufferText.toString(), last);
             } else {
                 // Caller ensures last == true if this branch is used
-                ((MessageHandler.Whole<String>) textMsgHandler).onMessage(
-                        messageBufferText.toString());
+                ((MessageHandler.Whole<String>) textMsgHandler)
+                        .onMessage(messageBufferText.toString());
             }
         } catch (Throwable t) {
             handleThrowableOnSend(t);
@@ -415,8 +407,8 @@ public abstract class WsFrameBase {
             // Convert bytes to UTF-8
             messageBufferBinary.flip();
             while (true) {
-                CoderResult cr = utf8DecoderMessage.decode(
-                        messageBufferBinary, messageBufferText, false);
+                CoderResult cr = utf8DecoderMessage.decode(messageBufferBinary, messageBufferText,
+                        false);
                 if (cr.isError()) {
                     throw new WsIOException(new CloseReason(
                             CloseCodes.NOT_CONSISTENT,
@@ -458,8 +450,8 @@ public abstract class WsFrameBase {
         // Frame is fully received
         // Convert bytes to UTF-8
         while (true) {
-            CoderResult cr = utf8DecoderMessage.decode(messageBufferBinary,
-                    messageBufferText, last);
+            CoderResult cr = utf8DecoderMessage.decode(messageBufferBinary, messageBufferText,
+                    last);
             if (cr.isError()) {
                 throw new WsIOException(new CloseReason(
                         CloseCodes.NOT_CONSISTENT,
@@ -520,14 +512,12 @@ public abstract class WsFrameBase {
             if (!usePartial()) {
                 CloseReason cr = new CloseReason(CloseCodes.TOO_BIG,
                         sm.getString("wsFrame.bufferTooSmall",
-                                Integer.valueOf(
-                                        messageBufferBinary.capacity()),
+                                Integer.valueOf(messageBufferBinary.capacity()),
                                 Long.valueOf(payloadLength)));
                 throw new WsIOException(cr);
             }
             messageBufferBinary.flip();
-            ByteBuffer copy =
-                    ByteBuffer.allocate(messageBufferBinary.limit());
+            ByteBuffer copy = ByteBuffer.allocate(messageBufferBinary.limit());
             copy.put(messageBufferBinary);
             copy.flip();
             sendMessageBinary(copy, false);
@@ -542,8 +532,7 @@ public abstract class WsFrameBase {
         // - the message is complete
         if (usePartial() || !continuationExpected) {
             messageBufferBinary.flip();
-            ByteBuffer copy =
-                    ByteBuffer.allocate(messageBufferBinary.limit());
+            ByteBuffer copy = ByteBuffer.allocate(messageBufferBinary.limit());
             copy.put(messageBufferBinary);
             copy.flip();
             sendMessageBinary(copy, !continuationExpected);
@@ -575,8 +564,7 @@ public abstract class WsFrameBase {
     private void sendMessageBinary(ByteBuffer msg, boolean last)
             throws WsIOException {
         if (binaryMsgHandler instanceof WrappedMessageHandler) {
-            long maxMessageSize =
-                    ((WrappedMessageHandler) binaryMsgHandler).getMaxMessageSize();
+            long maxMessageSize = ((WrappedMessageHandler) binaryMsgHandler).getMaxMessageSize();
             if (maxMessageSize > -1 && msg.remaining() > maxMessageSize) {
                 throw new WsIOException(new CloseReason(CloseCodes.TOO_BIG,
                         sm.getString("wsFrame.messageTooBig",
@@ -591,7 +579,7 @@ public abstract class WsFrameBase {
                 // Caller ensures last == true if this branch is used
                 ((MessageHandler.Whole<ByteBuffer>) binaryMsgHandler).onMessage(msg);
             }
-        } catch(Throwable t) {
+        } catch (Throwable t) {
             handleThrowableOnSend(t);
         }
     }
@@ -677,11 +665,9 @@ public abstract class WsFrameBase {
     }
 
 
-    protected static long byteArrayToLong(byte[] b, int start, int len)
-            throws IOException {
+    protected static long byteArrayToLong(byte[] b, int start, int len) throws IOException {
         if (len > 8) {
-            throw new IOException(sm.getString("wsFrame.byteToLongFail",
-                    Long.valueOf(len)));
+            throw new IOException(sm.getString("wsFrame.byteToLongFail", Long.valueOf(len)));
         }
         int shift = 0;
         long result = 0;
diff --git a/java/org/apache/tomcat/websocket/WsFrameClient.java b/java/org/apache/tomcat/websocket/WsFrameClient.java
index 546810c..ea1c014 100644
--- a/java/org/apache/tomcat/websocket/WsFrameClient.java
+++ b/java/org/apache/tomcat/websocket/WsFrameClient.java
@@ -31,16 +31,15 @@ import org.apache.tomcat.util.res.StringManager;
 public class WsFrameClient extends WsFrameBase {
 
     private final Log log = LogFactory.getLog(WsFrameClient.class); // must not be static
-    private static final StringManager sm =
-            StringManager.getManager(Constants.PACKAGE_NAME);
+    private static final StringManager sm = StringManager.getManager(WsFrameClient.class);
 
     private final AsyncChannelWrapper channel;
-    private final CompletionHandler<Integer,Void> handler;
+    private final CompletionHandler<Integer, Void> handler;
     // Not final as it may need to be re-sized
-    private ByteBuffer response;
+    private volatile ByteBuffer response;
 
-    public WsFrameClient(ByteBuffer response, AsyncChannelWrapper channel,
-            WsSession wsSession, Transformation transformation) {
+    public WsFrameClient(ByteBuffer response, AsyncChannelWrapper channel, WsSession wsSession,
+            Transformation transformation) {
         super(wsSession, transformation);
         this.response = response;
         this.channel = channel;
@@ -90,8 +89,7 @@ public class WsFrameClient extends WsFrameBase {
         if (t instanceof WsIOException) {
             cr = ((WsIOException) t).getCloseReason();
         } else {
-            cr = new CloseReason(
-                CloseCodes.CLOSED_ABNORMALLY, t.getMessage());
+            cr = new CloseReason(CloseCodes.CLOSED_ABNORMALLY, t.getMessage());
         }
 
         wsSession.doClose(cr, cr, true);
@@ -110,9 +108,7 @@ public class WsFrameClient extends WsFrameBase {
         return log;
     }
 
-
-    private class WsFrameClientCompletionHandler
-            implements CompletionHandler<Integer,Void> {
+    private class WsFrameClientCompletionHandler implements CompletionHandler<Integer, Void> {
 
         @Override
         public void completed(Integer result, Void attachment) {
@@ -146,8 +142,8 @@ public class WsFrameClient extends WsFrameBase {
         public void failed(Throwable exc, Void attachment) {
             if (exc instanceof ReadBufferOverflowException) {
                 // response will be empty if this exception is thrown
-                response = ByteBuffer.allocate(
-                        ((ReadBufferOverflowException) exc).getMinBufferSize());
+                response = ByteBuffer
+                        .allocate(((ReadBufferOverflowException) exc).getMinBufferSize());
                 response.flip();
                 try {
                     processSocketRead();


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


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

Posted by ma...@apache.org.
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