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

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

commit a14b3d29bd08a7ec157319f7d3171d3aed9743aa
Author: remm <r...@apache.org>
AuthorDate: Mon Feb 1 15:04:32 2021 +0100

    Remove ugly reflection using a generic id
    
    The id if available then replaces address-port to name threads and
    mbeans.
---
 java/org/apache/catalina/connector/Connector.java     | 14 +++++++-------
 java/org/apache/coyote/AbstractProtocol.java          | 12 +++++++++---
 java/org/apache/coyote/ProtocolHandler.java           | 11 +++++++++++
 java/org/apache/tomcat/util/net/AbstractEndpoint.java | 11 +++++++++++
 java/org/apache/tomcat/util/net/AprEndpoint.java      | 10 ++++++++++
 java/org/apache/tomcat/util/net/NioEndpoint.java      | 12 ++++++++++++
 6 files changed, 60 insertions(+), 10 deletions(-)

diff --git a/java/org/apache/catalina/connector/Connector.java 
b/java/org/apache/catalina/connector/Connector.java
index 28e0019..b8fb103 100644
--- a/java/org/apache/catalina/connector/Connector.java
+++ b/java/org/apache/catalina/connector/Connector.java
@@ -944,11 +944,11 @@ public class Connector extends LifecycleMBeanBase  {
 
         StringBuilder sb = new StringBuilder("type=");
         sb.append(type);
-        Object path = getProperty("unixDomainSocketPath");
-        if (path != null) {
+        String id = protocolHandler.getId();
+        if (id != null) {
             // Maintain MBean name compatibility, even if not accurate
             sb.append(",port=0,address=");
-            sb.append(ObjectName.quote(path.toString()));
+            sb.append(ObjectName.quote(id));
         } else {
             sb.append(",port=");
             int port = getPortWithOffset();
@@ -1060,7 +1060,7 @@ public class Connector extends LifecycleMBeanBase  {
     protected void startInternal() throws LifecycleException {
 
         // Validate settings before starting
-        if (getProperty("unixDomainSocketPath") == null && getPortWithOffset() 
< 0) {
+        if (protocolHandler.getId() == null && getPortWithOffset() < 0) {
             throw new LifecycleException(sm.getString(
                     "coyoteConnector.invalidPort", 
Integer.valueOf(getPortWithOffset())));
         }
@@ -1126,9 +1126,9 @@ public class Connector extends LifecycleMBeanBase  {
         StringBuilder sb = new StringBuilder("Connector[");
         sb.append(getProtocol());
         sb.append('-');
-        Object path = getProperty("unixDomainSocketPath");
-        if (path != null) {
-            sb.append(path.toString());
+        Object id = protocolHandler.getId();
+        if (id != null) {
+            sb.append(id.toString());
         } else {
             int port = getPortWithOffset();
             if (port > 0) {
diff --git a/java/org/apache/coyote/AbstractProtocol.java 
b/java/org/apache/coyote/AbstractProtocol.java
index 227f9c1..a2fca87 100644
--- a/java/org/apache/coyote/AbstractProtocol.java
+++ b/java/org/apache/coyote/AbstractProtocol.java
@@ -207,6 +207,12 @@ public abstract class AbstractProtocol<S> implements 
ProtocolHandler,
     }
 
 
+    @Override
+    public String getId() {
+        return endpoint.getId();
+    }
+
+
     // ---------------------- Properties that are passed through to the 
EndPoint
 
     @Override
@@ -370,9 +376,9 @@ public abstract class AbstractProtocol<S> implements 
ProtocolHandler,
     private String getNameInternal() {
         StringBuilder name = new StringBuilder(getNamePrefix());
         name.append('-');
-        String path = getProperty("unixDomainSocketPath");
-        if (path != null) {
-            name.append(path);
+        String id = getId();
+        if (id != null) {
+            name.append(id);
         } else {
             if (getAddress() != null) {
                 name.append(getAddress().getHostAddress());
diff --git a/java/org/apache/coyote/ProtocolHandler.java 
b/java/org/apache/coyote/ProtocolHandler.java
index 0b884d3..5c7a9f9 100644
--- a/java/org/apache/coyote/ProtocolHandler.java
+++ b/java/org/apache/coyote/ProtocolHandler.java
@@ -207,6 +207,17 @@ public interface ProtocolHandler {
 
 
     /**
+     * The default behavior is to identify connectors uniquely with address
+     * and port. However, certain connectors are not using that and need
+     * some other identifier, which then can be used as a replacement.
+     * @return the id
+     */
+    public default String getId() {
+        return null;
+    }
+
+
+    /**
      * Create a new ProtocolHandler for the given protocol.
      * @param protocol the protocol
      * @param apr if <code>true</code> the APR protcol handler will be used
diff --git a/java/org/apache/tomcat/util/net/AbstractEndpoint.java 
b/java/org/apache/tomcat/util/net/AbstractEndpoint.java
index a0f9719..9022213 100644
--- a/java/org/apache/tomcat/util/net/AbstractEndpoint.java
+++ b/java/org/apache/tomcat/util/net/AbstractEndpoint.java
@@ -836,6 +836,17 @@ public abstract class AbstractEndpoint<S,U> {
     protected abstract boolean getDeferAccept();
 
 
+    /**
+     * The default behavior is to identify connectors uniquely with address
+     * and port. However, certain connectors are not using that and need
+     * some other identifier, which then can be used as a replacement.
+     * @return the id
+     */
+    public String getId() {
+        return null;
+    }
+
+
     protected final List<String> negotiableProtocols = new ArrayList<>();
     public void addNegotiatedProtocol(String negotiableProtocol) {
         negotiableProtocols.add(negotiableProtocol);
diff --git a/java/org/apache/tomcat/util/net/AprEndpoint.java 
b/java/org/apache/tomcat/util/net/AprEndpoint.java
index cb67e07..9878646 100644
--- a/java/org/apache/tomcat/util/net/AprEndpoint.java
+++ b/java/org/apache/tomcat/util/net/AprEndpoint.java
@@ -274,6 +274,16 @@ public class AprEndpoint extends 
AbstractEndpoint<Long,Long> implements SNICallB
     }
 
 
+    @Override
+    public String getId() {
+        if (getUnixDomainSocketPath() != null) {
+            return getUnixDomainSocketPath();
+        } else {
+            return null;
+        }
+    }
+
+
     // ----------------------------------------------- Public Lifecycle Methods
 
 
diff --git a/java/org/apache/tomcat/util/net/NioEndpoint.java 
b/java/org/apache/tomcat/util/net/NioEndpoint.java
index bb63718..a748819 100644
--- a/java/org/apache/tomcat/util/net/NioEndpoint.java
+++ b/java/org/apache/tomcat/util/net/NioEndpoint.java
@@ -231,6 +231,18 @@ public class NioEndpoint extends 
AbstractJsseEndpoint<NioChannel,SocketChannel>
     }
 
 
+    @Override
+    public String getId() {
+        if (getUseInheritedChannel()) {
+            return "JVMInheritedChannel";
+        } else if (getUnixDomainSocketPath() != null) {
+            return getUnixDomainSocketPath();
+        } else {
+            return null;
+        }
+    }
+
+
     // ----------------------------------------------- Public Lifecycle Methods
 
     /**


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

Reply via email to