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

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


The following commit(s) were added to refs/heads/8.5.x by this push:
     new 7d08606  Align with 9.0.x - additional generics for Endpoint
7d08606 is described below

commit 7d08606d24ebf68f6c1e6fc352f549d9ada473f6
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Feb 17 14:24:01 2022 +0000

    Align with 9.0.x - additional generics for Endpoint
    
    Backported primarily to align 8.5.x with 9.0.x to simplify additional
    backports.
    Due to type erasure, this should be binary compatible with existing
    compipled code. Source may need changes and recompilation.
---
 java/org/apache/coyote/AbstractProcessor.java                      | 6 +++---
 java/org/apache/coyote/AbstractProtocol.java                       | 6 +++---
 java/org/apache/coyote/ajp/AbstractAjpProtocol.java                | 4 ++--
 java/org/apache/coyote/ajp/AjpProcessor.java                       | 2 +-
 java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java      | 6 +++---
 java/org/apache/coyote/http11/AbstractHttp11Protocol.java          | 4 ++--
 java/org/apache/coyote/http11/Http11Processor.java                 | 2 +-
 java/org/apache/tomcat/util/net/AbstractEndpoint.java              | 7 +++++--
 java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java          | 2 +-
 java/org/apache/tomcat/util/net/AprEndpoint.java                   | 2 +-
 java/org/apache/tomcat/util/net/Nio2Endpoint.java                  | 2 +-
 java/org/apache/tomcat/util/net/NioEndpoint.java                   | 2 +-
 java/org/apache/tomcat/util/net/SocketWrapperBase.java             | 6 +++---
 .../apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java | 2 +-
 14 files changed, 28 insertions(+), 25 deletions(-)

diff --git a/java/org/apache/coyote/AbstractProcessor.java 
b/java/org/apache/coyote/AbstractProcessor.java
index 4b10ef5..47762bc 100644
--- a/java/org/apache/coyote/AbstractProcessor.java
+++ b/java/org/apache/coyote/AbstractProcessor.java
@@ -63,7 +63,7 @@ public abstract class AbstractProcessor extends 
AbstractProcessorLight implement
      * current async generation. This prevents the response mix-up.
      */
     private volatile long asyncTimeoutGeneration = 0;
-    protected final AbstractEndpoint<?> endpoint;
+    protected final AbstractEndpoint<?,?> endpoint;
     protected final Request request;
     protected final Response response;
     protected volatile SocketWrapperBase<?> socketWrapper = null;
@@ -77,12 +77,12 @@ public abstract class AbstractProcessor extends 
AbstractProcessorLight implement
 
     protected final UserDataHelper userDataHelper;
 
-    public AbstractProcessor(AbstractEndpoint<?> endpoint) {
+    public AbstractProcessor(AbstractEndpoint<?,?> endpoint) {
         this(endpoint, new Request(), new Response());
     }
 
 
-    protected AbstractProcessor(AbstractEndpoint<?> endpoint, Request 
coyoteRequest,
+    protected AbstractProcessor(AbstractEndpoint<?,?> endpoint, Request 
coyoteRequest,
             Response coyoteResponse) {
         this.endpoint = endpoint;
         asyncStateMachine = new AsyncStateMachine(this);
diff --git a/java/org/apache/coyote/AbstractProtocol.java 
b/java/org/apache/coyote/AbstractProtocol.java
index d894d47..d3f83a7 100644
--- a/java/org/apache/coyote/AbstractProtocol.java
+++ b/java/org/apache/coyote/AbstractProtocol.java
@@ -75,7 +75,7 @@ public abstract class AbstractProtocol<S> implements 
ProtocolHandler,
      * ProtocolHandler implementation (ProtocolHandler using NIO, requires NIO
      * Endpoint etc.).
      */
-    private final AbstractEndpoint<S> endpoint;
+    private final AbstractEndpoint<S,?> endpoint;
 
 
     private Handler<S> handler;
@@ -91,7 +91,7 @@ public abstract class AbstractProtocol<S> implements 
ProtocolHandler,
     private AsyncTimeout asyncTimeout = null;
 
 
-    public AbstractProtocol(AbstractEndpoint<S> endpoint) {
+    public AbstractProtocol(AbstractEndpoint<S,?> endpoint) {
         this.endpoint = endpoint;
         setSoLinger(Constants.DEFAULT_CONNECTION_LINGER);
         setTcpNoDelay(Constants.DEFAULT_TCP_NO_DELAY);
@@ -444,7 +444,7 @@ public abstract class AbstractProtocol<S> implements 
ProtocolHandler,
 
     // ----------------------------------------------- Accessors for 
sub-classes
 
-    protected AbstractEndpoint<S> getEndpoint() {
+    protected AbstractEndpoint<S,?> getEndpoint() {
         return endpoint;
     }
 
diff --git a/java/org/apache/coyote/ajp/AbstractAjpProtocol.java 
b/java/org/apache/coyote/ajp/AbstractAjpProtocol.java
index 1bc9816..70f392f 100644
--- a/java/org/apache/coyote/ajp/AbstractAjpProtocol.java
+++ b/java/org/apache/coyote/ajp/AbstractAjpProtocol.java
@@ -44,7 +44,7 @@ public abstract class AbstractAjpProtocol<S> extends 
AbstractProtocol<S> {
     protected static final StringManager sm = 
StringManager.getManager(AbstractAjpProtocol.class);
 
 
-    public AbstractAjpProtocol(AbstractEndpoint<S> endpoint) {
+    public AbstractAjpProtocol(AbstractEndpoint<S,?> endpoint) {
         super(endpoint);
         setConnectionTimeout(Constants.DEFAULT_CONNECTION_TIMEOUT);
         // AJP does not use Send File
@@ -69,7 +69,7 @@ public abstract class AbstractAjpProtocol<S> extends 
AbstractProtocol<S> {
      * Overridden to make getter accessible to other classes in this package.
      */
     @Override
-    protected AbstractEndpoint<S> getEndpoint() {
+    protected AbstractEndpoint<S,?> getEndpoint() {
         return super.getEndpoint();
     }
 
diff --git a/java/org/apache/coyote/ajp/AjpProcessor.java 
b/java/org/apache/coyote/ajp/AjpProcessor.java
index 69db2e4..322a14e 100644
--- a/java/org/apache/coyote/ajp/AjpProcessor.java
+++ b/java/org/apache/coyote/ajp/AjpProcessor.java
@@ -267,7 +267,7 @@ public class AjpProcessor extends AbstractProcessor {
 
     // ------------------------------------------------------------ Constructor
 
-    public AjpProcessor(int packetSize, AbstractEndpoint<?> endpoint) {
+    public AjpProcessor(int packetSize, AbstractEndpoint<?,?> endpoint) {
 
         super(endpoint);
 
diff --git a/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java 
b/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java
index f8cfe05..d988095 100644
--- a/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java
+++ b/java/org/apache/coyote/http11/AbstractHttp11JsseProtocol.java
@@ -22,15 +22,15 @@ import 
org.apache.tomcat.util.net.openssl.OpenSSLImplementation;
 public abstract class AbstractHttp11JsseProtocol<S>
         extends AbstractHttp11Protocol<S> {
 
-    public AbstractHttp11JsseProtocol(AbstractJsseEndpoint<S> endpoint) {
+    public AbstractHttp11JsseProtocol(AbstractJsseEndpoint<S,?> endpoint) {
         super(endpoint);
     }
 
 
     @Override
-    protected AbstractJsseEndpoint<S> getEndpoint() {
+    protected AbstractJsseEndpoint<S,?> getEndpoint() {
         // Over-ridden to add cast
-        return (AbstractJsseEndpoint<S>) super.getEndpoint();
+        return (AbstractJsseEndpoint<S,?>) super.getEndpoint();
     }
 
 
diff --git a/java/org/apache/coyote/http11/AbstractHttp11Protocol.java 
b/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
index 30f5957..8c5b3f4 100644
--- a/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
+++ b/java/org/apache/coyote/http11/AbstractHttp11Protocol.java
@@ -59,7 +59,7 @@ public abstract class AbstractHttp11Protocol<S> extends 
AbstractProtocol<S> {
     private final CompressionConfig compressionConfig = new 
CompressionConfig();
 
 
-    public AbstractHttp11Protocol(AbstractEndpoint<S> endpoint) {
+    public AbstractHttp11Protocol(AbstractEndpoint<S,?> endpoint) {
         super(endpoint);
         setConnectionTimeout(Constants.DEFAULT_CONNECTION_TIMEOUT);
         ConnectionHandler<S> cHandler = new ConnectionHandler<>(this);
@@ -120,7 +120,7 @@ public abstract class AbstractHttp11Protocol<S> extends 
AbstractProtocol<S> {
      * Over-ridden here to make the method visible to nested classes.
      */
     @Override
-    protected AbstractEndpoint<S> getEndpoint() {
+    protected AbstractEndpoint<S,?> getEndpoint() {
         return super.getEndpoint();
     }
 
diff --git a/java/org/apache/coyote/http11/Http11Processor.java 
b/java/org/apache/coyote/http11/Http11Processor.java
index 196dc33..6751f74 100644
--- a/java/org/apache/coyote/http11/Http11Processor.java
+++ b/java/org/apache/coyote/http11/Http11Processor.java
@@ -183,7 +183,7 @@ public class Http11Processor extends AbstractProcessor {
 
 
     @SuppressWarnings("deprecation")
-    public Http11Processor(AbstractHttp11Protocol<?> protocol, 
AbstractEndpoint<?> endpoint) {
+    public Http11Processor(AbstractHttp11Protocol<?> protocol, 
AbstractEndpoint<?,?> endpoint) {
         super(endpoint);
         this.protocol = protocol;
 
diff --git a/java/org/apache/tomcat/util/net/AbstractEndpoint.java 
b/java/org/apache/tomcat/util/net/AbstractEndpoint.java
index 1ce26b7..2b8c900 100644
--- a/java/org/apache/tomcat/util/net/AbstractEndpoint.java
+++ b/java/org/apache/tomcat/util/net/AbstractEndpoint.java
@@ -51,12 +51,15 @@ import org.apache.tomcat.util.threads.TaskThreadFactory;
 import org.apache.tomcat.util.threads.ThreadPoolExecutor;
 
 /**
- * @param <S> The type for the sockets managed by this endpoint.
+ * @param <S> The type used by the socket wrapper associated with this 
endpoint.
+ *            May be the same as U.
+ * @param <U> The type of the underlying socket used by this endpoint. May be
+ *            the same as S.
  *
  * @author Mladen Turk
  * @author Remy Maucherat
  */
-public abstract class AbstractEndpoint<S> {
+public abstract class AbstractEndpoint<S,U> {
 
     // -------------------------------------------------------------- Constants
 
diff --git a/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java 
b/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java
index 16ce41e..9cf780f 100644
--- a/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java
+++ b/java/org/apache/tomcat/util/net/AbstractJsseEndpoint.java
@@ -32,7 +32,7 @@ import org.apache.tomcat.util.compat.JreCompat;
 import org.apache.tomcat.util.net.openssl.OpenSSLImplementation;
 import org.apache.tomcat.util.net.openssl.ciphers.Cipher;
 
-public abstract class AbstractJsseEndpoint<S> extends AbstractEndpoint<S> {
+public abstract class AbstractJsseEndpoint<S,U> extends AbstractEndpoint<S,U> {
 
     private String sslImplementationName = null;
     private int sniParseLimit = 64 * 1024;
diff --git a/java/org/apache/tomcat/util/net/AprEndpoint.java 
b/java/org/apache/tomcat/util/net/AprEndpoint.java
index 8653707..75ffdf7 100644
--- a/java/org/apache/tomcat/util/net/AprEndpoint.java
+++ b/java/org/apache/tomcat/util/net/AprEndpoint.java
@@ -76,7 +76,7 @@ import org.apache.tomcat.util.net.openssl.OpenSSLUtil;
  * @author Mladen Turk
  * @author Remy Maucherat
  */
-public class AprEndpoint extends AbstractEndpoint<Long> implements SNICallBack 
{
+public class AprEndpoint extends AbstractEndpoint<Long,Long> implements 
SNICallBack {
 
     // -------------------------------------------------------------- Constants
 
diff --git a/java/org/apache/tomcat/util/net/Nio2Endpoint.java 
b/java/org/apache/tomcat/util/net/Nio2Endpoint.java
index 30c054d..4c9ecc0 100644
--- a/java/org/apache/tomcat/util/net/Nio2Endpoint.java
+++ b/java/org/apache/tomcat/util/net/Nio2Endpoint.java
@@ -51,7 +51,7 @@ import org.apache.tomcat.util.net.jsse.JSSESupport;
 /**
  * NIO2 endpoint.
  */
-public class Nio2Endpoint extends AbstractJsseEndpoint<Nio2Channel> {
+public class Nio2Endpoint extends 
AbstractJsseEndpoint<Nio2Channel,AsynchronousSocketChannel> {
 
 
     // -------------------------------------------------------------- Constants
diff --git a/java/org/apache/tomcat/util/net/NioEndpoint.java 
b/java/org/apache/tomcat/util/net/NioEndpoint.java
index e2466de..cce04ff 100644
--- a/java/org/apache/tomcat/util/net/NioEndpoint.java
+++ b/java/org/apache/tomcat/util/net/NioEndpoint.java
@@ -69,7 +69,7 @@ import org.apache.tomcat.util.net.jsse.JSSESupport;
  * @author Mladen Turk
  * @author Remy Maucherat
  */
-public class NioEndpoint extends AbstractJsseEndpoint<NioChannel> {
+public class NioEndpoint extends 
AbstractJsseEndpoint<NioChannel,SocketChannel> {
 
 
     // -------------------------------------------------------------- Constants
diff --git a/java/org/apache/tomcat/util/net/SocketWrapperBase.java 
b/java/org/apache/tomcat/util/net/SocketWrapperBase.java
index d6f224c..3db0812 100644
--- a/java/org/apache/tomcat/util/net/SocketWrapperBase.java
+++ b/java/org/apache/tomcat/util/net/SocketWrapperBase.java
@@ -42,7 +42,7 @@ public abstract class SocketWrapperBase<E> {
     protected static final StringManager sm = 
StringManager.getManager(SocketWrapperBase.class);
 
     private final E socket;
-    private final AbstractEndpoint<E> endpoint;
+    private final AbstractEndpoint<E,?> endpoint;
 
     // Volatile because I/O and setting the timeout values occurs on a 
different
     // thread to the thread checking the timeout.
@@ -103,7 +103,7 @@ public abstract class SocketWrapperBase<E> {
     protected final Semaphore writePending;
     protected volatile OperationState<?> writeOperation = null;
 
-    public SocketWrapperBase(E socket, AbstractEndpoint<E> endpoint) {
+    public SocketWrapperBase(E socket, AbstractEndpoint<E,?> endpoint) {
         this.socket = socket;
         this.endpoint = endpoint;
         if (endpoint.getUseAsyncIO() || needSemaphores()) {
@@ -119,7 +119,7 @@ public abstract class SocketWrapperBase<E> {
         return socket;
     }
 
-    public AbstractEndpoint<E> getEndpoint() {
+    public AbstractEndpoint<E,?> getEndpoint() {
         return endpoint;
     }
 
diff --git 
a/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java 
b/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
index 360c415..81043d8 100644
--- a/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
+++ b/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
@@ -228,7 +228,7 @@ public class WsRemoteEndpointImplServer extends 
WsRemoteEndpointImplBase {
         if (sh != null) {
             if (useDispatch) {
                 OnResultRunnable r = new OnResultRunnable(sh, t);
-                AbstractEndpoint<?> endpoint = socketWrapper.getEndpoint();
+                AbstractEndpoint<?,?> endpoint = socketWrapper.getEndpoint();
                 Executor containerExecutor = endpoint.getExecutor();
                 if (endpoint.isRunning() && containerExecutor != null) {
                     containerExecutor.execute(r);

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

Reply via email to