This is an automated email from the ASF dual-hosted git repository.
remm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/master by this push:
new 48c9b87 Remove ugly reflection using a generic id
48c9b87 is described below
commit 48c9b873ab0eef18d5a4d76cf80033ee2afca7eb
Author: remm <[email protected]>
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 4f4be1c..8eb235d 100644
--- a/java/org/apache/catalina/connector/Connector.java
+++ b/java/org/apache/catalina/connector/Connector.java
@@ -950,11 +950,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();
@@ -1066,7 +1066,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())));
}
@@ -1132,9 +1132,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 09b60dd..7b8756d 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
@@ -347,9 +353,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 dfa5a25..cf25010 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
* @return the newly instantiated protocol handler
diff --git a/java/org/apache/tomcat/util/net/AbstractEndpoint.java
b/java/org/apache/tomcat/util/net/AbstractEndpoint.java
index 62f8045..ae5c798 100644
--- a/java/org/apache/tomcat/util/net/AbstractEndpoint.java
+++ b/java/org/apache/tomcat/util/net/AbstractEndpoint.java
@@ -807,6 +807,17 @@ public abstract class AbstractEndpoint<S,U> {
}
+ /**
+ * 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 9d212a1..cf62eab 100644
--- a/java/org/apache/tomcat/util/net/AprEndpoint.java
+++ b/java/org/apache/tomcat/util/net/AprEndpoint.java
@@ -304,6 +304,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 5d16bbf..3c9515a 100644
--- a/java/org/apache/tomcat/util/net/NioEndpoint.java
+++ b/java/org/apache/tomcat/util/net/NioEndpoint.java
@@ -176,6 +176,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: [email protected]
For additional commands, e-mail: [email protected]