This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch ra in repository https://gitbox.apache.org/repos/asf/camel.git
commit 398d1bc957006a31dfd5948306037cc6e5156441 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Fri May 24 13:49:04 2024 +0200 CAMEL-20798: Add RemoteAddress to endpoints so they can tell the url/hostname etc for the system it connects. This is needed for better monitoring, tracing and management. Add this information into camel-tracer as tags. --- .../camel/component/activemq/ActiveMQEndpoint.java | 4 ++-- .../component/activemq6/ActiveMQEndpoint.java | 4 ++-- .../camel/component/ironmq/IronMQEndpoint.java | 4 ++-- .../camel/component/kafka/KafkaEndpoint.java | 4 ++-- .../apache/camel/component/nats/NatsEndpoint.java | 4 ++-- .../apache/camel/component/paho/PahoEndpoint.java | 4 ++-- .../platform/http/PlatformHttpEndpoint.java | 19 ++++++++++++++++- .../springrabbit/SpringRabbitMQEndpoint.java | 4 ++-- .../camel/component/sql/DefaultSqlEndpoint.java | 4 ++-- .../camel/component/stomp/StompEndpoint.java | 4 ++-- .../tracing/decorators/AbstractSpanDecorator.java | 14 ++++++------- ...ressAware.java => EndpointLocationAddress.java} | 24 ++++++++++++++++------ .../camel/impl/console/EndpointDevConsole.java | 8 +++++--- .../api/management/mbean/ManagedEndpointMBean.java | 15 ++++++++------ .../camel/management/mbean/ManagedEndpoint.java | 18 +++++++++++----- .../jbang/core/commands/process/ListEndpoint.java | 4 ++-- 16 files changed, 89 insertions(+), 49 deletions(-) diff --git a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQEndpoint.java b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQEndpoint.java index caf63bf815f..0f2de7b346e 100644 --- a/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQEndpoint.java +++ b/components/camel-activemq/src/main/java/org/apache/camel/component/activemq/ActiveMQEndpoint.java @@ -24,7 +24,7 @@ import org.apache.camel.component.jms.JmsBinding; import org.apache.camel.component.jms.JmsComponent; import org.apache.camel.component.jms.JmsConfiguration; import org.apache.camel.component.jms.JmsEndpoint; -import org.apache.camel.spi.RemoteAddressAware; +import org.apache.camel.spi.EndpointLocationAddress; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -34,7 +34,7 @@ import org.apache.camel.spi.UriParam; @UriEndpoint(firstVersion = "1.0.0", extendsScheme = "jms", scheme = "activemq", title = "ActiveMQ 5.x", syntax = "activemq:destinationType:destinationName", category = { Category.MESSAGING }) -public class ActiveMQEndpoint extends JmsEndpoint implements RemoteAddressAware { +public class ActiveMQEndpoint extends JmsEndpoint implements EndpointLocationAddress { @UriParam(multiValue = true, prefix = "destination.", label = "consumer,advanced") private Map<String, String> destinationOptions; diff --git a/components/camel-activemq6/src/main/java/org/apache/camel/component/activemq6/ActiveMQEndpoint.java b/components/camel-activemq6/src/main/java/org/apache/camel/component/activemq6/ActiveMQEndpoint.java index 29bfce5ad32..336d3a04c48 100644 --- a/components/camel-activemq6/src/main/java/org/apache/camel/component/activemq6/ActiveMQEndpoint.java +++ b/components/camel-activemq6/src/main/java/org/apache/camel/component/activemq6/ActiveMQEndpoint.java @@ -24,7 +24,7 @@ import org.apache.camel.component.jms.JmsBinding; import org.apache.camel.component.jms.JmsComponent; import org.apache.camel.component.jms.JmsConfiguration; import org.apache.camel.component.jms.JmsEndpoint; -import org.apache.camel.spi.RemoteAddressAware; +import org.apache.camel.spi.EndpointLocationAddress; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -34,7 +34,7 @@ import org.apache.camel.spi.UriParam; @UriEndpoint(firstVersion = "4.7.0", extendsScheme = "jms", scheme = "activemq6", title = "ActiveMQ 6.x", syntax = "activemq6:destinationType:destinationName", category = { Category.MESSAGING }) -public class ActiveMQEndpoint extends JmsEndpoint implements RemoteAddressAware { +public class ActiveMQEndpoint extends JmsEndpoint implements EndpointLocationAddress { @UriParam(multiValue = true, prefix = "destination.", label = "consumer,advanced") private Map<String, String> destinationOptions; diff --git a/components/camel-ironmq/src/main/java/org/apache/camel/component/ironmq/IronMQEndpoint.java b/components/camel-ironmq/src/main/java/org/apache/camel/component/ironmq/IronMQEndpoint.java index c9897e968eb..b5f774bc60c 100644 --- a/components/camel-ironmq/src/main/java/org/apache/camel/component/ironmq/IronMQEndpoint.java +++ b/components/camel-ironmq/src/main/java/org/apache/camel/component/ironmq/IronMQEndpoint.java @@ -24,7 +24,7 @@ import org.apache.camel.Category; import org.apache.camel.Consumer; import org.apache.camel.Processor; import org.apache.camel.Producer; -import org.apache.camel.spi.RemoteAddressAware; +import org.apache.camel.spi.EndpointLocationAddress; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; import org.apache.camel.support.ScheduledPollEndpoint; @@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory; */ @UriEndpoint(firstVersion = "2.17.0", scheme = "ironmq", syntax = "ironmq:queueName", title = "IronMQ", category = { Category.CLOUD, Category.MESSAGING }, headersClass = IronMQConstants.class) -public class IronMQEndpoint extends ScheduledPollEndpoint implements RemoteAddressAware { +public class IronMQEndpoint extends ScheduledPollEndpoint implements EndpointLocationAddress { private static final Logger LOG = LoggerFactory.getLogger(IronMQEndpoint.class); diff --git a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaEndpoint.java b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaEndpoint.java index 1bfbc129b9a..dd591d94470 100644 --- a/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaEndpoint.java +++ b/components/camel-kafka/src/main/java/org/apache/camel/component/kafka/KafkaEndpoint.java @@ -28,7 +28,7 @@ import org.apache.camel.Producer; import org.apache.camel.component.kafka.consumer.KafkaManualCommit; import org.apache.camel.component.kafka.consumer.KafkaManualCommitFactory; import org.apache.camel.spi.ClassResolver; -import org.apache.camel.spi.RemoteAddressAware; +import org.apache.camel.spi.EndpointLocationAddress; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; import org.apache.camel.support.DefaultEndpoint; @@ -48,7 +48,7 @@ import org.slf4j.LoggerFactory; */ @UriEndpoint(firstVersion = "2.13.0", scheme = "kafka", title = "Kafka", syntax = "kafka:topic", category = { Category.MESSAGING }, headersClass = KafkaConstants.class) -public class KafkaEndpoint extends DefaultEndpoint implements MultipleConsumersSupport, RemoteAddressAware { +public class KafkaEndpoint extends DefaultEndpoint implements MultipleConsumersSupport, EndpointLocationAddress { private static final Logger LOG = LoggerFactory.getLogger(KafkaEndpoint.class); diff --git a/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsEndpoint.java b/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsEndpoint.java index 1ab1735a1f4..f083f2ad9e1 100644 --- a/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsEndpoint.java +++ b/components/camel-nats/src/main/java/org/apache/camel/component/nats/NatsEndpoint.java @@ -31,9 +31,9 @@ import org.apache.camel.Consumer; import org.apache.camel.MultipleConsumersSupport; import org.apache.camel.Processor; import org.apache.camel.Producer; +import org.apache.camel.spi.EndpointLocationAddress; import org.apache.camel.spi.HeaderFilterStrategy; import org.apache.camel.spi.HeaderFilterStrategyAware; -import org.apache.camel.spi.RemoteAddressAware; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; import org.apache.camel.support.DefaultEndpoint; @@ -45,7 +45,7 @@ import org.apache.camel.util.ObjectHelper; */ @UriEndpoint(firstVersion = "2.17.0", scheme = "nats", title = "Nats", syntax = "nats:topic", category = { Category.MESSAGING }, headersClass = NatsConstants.class) -public class NatsEndpoint extends DefaultEndpoint implements MultipleConsumersSupport, HeaderFilterStrategyAware, RemoteAddressAware { +public class NatsEndpoint extends DefaultEndpoint implements MultipleConsumersSupport, HeaderFilterStrategyAware, EndpointLocationAddress { @UriParam private NatsConfiguration configuration; diff --git a/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoEndpoint.java b/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoEndpoint.java index 6e787178073..fa319d5840b 100644 --- a/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoEndpoint.java +++ b/components/camel-paho/src/main/java/org/apache/camel/component/paho/PahoEndpoint.java @@ -20,8 +20,8 @@ import org.apache.camel.Category; import org.apache.camel.Consumer; import org.apache.camel.Processor; import org.apache.camel.Producer; +import org.apache.camel.spi.EndpointLocationAddress; import org.apache.camel.spi.Metadata; -import org.apache.camel.spi.RemoteAddressAware; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; import org.apache.camel.spi.UriPath; @@ -41,7 +41,7 @@ import java.util.Map; */ @UriEndpoint(firstVersion = "2.16.0", scheme = "paho", title = "Paho", category = { Category.MESSAGING, Category.IOT }, syntax = "paho:topic", headersClass = PahoConstants.class) -public class PahoEndpoint extends DefaultEndpoint implements RemoteAddressAware { +public class PahoEndpoint extends DefaultEndpoint implements EndpointLocationAddress { // Configuration members @UriPath(description = "Name of the topic") diff --git a/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpEndpoint.java b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpEndpoint.java index 1e8e5065c8f..ef77dbf5f70 100644 --- a/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpEndpoint.java +++ b/components/camel-platform-http/src/main/java/org/apache/camel/component/platform/http/PlatformHttpEndpoint.java @@ -25,6 +25,7 @@ import org.apache.camel.component.platform.http.cookie.CookieConfiguration; import org.apache.camel.component.platform.http.spi.PlatformHttpConsumer; import org.apache.camel.component.platform.http.spi.PlatformHttpEngine; import org.apache.camel.http.base.HttpHeaderFilterStrategy; +import org.apache.camel.spi.EndpointLocationAddress; import org.apache.camel.spi.HeaderFilterStrategy; import org.apache.camel.spi.HeaderFilterStrategyAware; import org.apache.camel.spi.Metadata; @@ -41,7 +42,8 @@ import org.apache.camel.support.DefaultEndpoint; @Metadata(annotations = { "protocol=http", }) -public class PlatformHttpEndpoint extends DefaultEndpoint implements AsyncEndpoint, HeaderFilterStrategyAware { +public class PlatformHttpEndpoint extends DefaultEndpoint + implements AsyncEndpoint, HeaderFilterStrategyAware, EndpointLocationAddress { private static final String PROXY_PATH = "proxy"; @@ -95,6 +97,21 @@ public class PlatformHttpEndpoint extends DefaultEndpoint implements AsyncEndpoi return (PlatformHttpComponent) super.getComponent(); } + @Override + public boolean isHostedAddress() { + return true; + } + + @Override + public String getAddress() { + String server = "http://0.0.0.0"; + int port = getOrCreateEngine().getServerPort(); + if (port > 0) { + server += ":" + port; + } + return server; + } + @Override public Producer createProducer() throws Exception { throw new UnsupportedOperationException("Producer is not supported"); diff --git a/components/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/SpringRabbitMQEndpoint.java b/components/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/SpringRabbitMQEndpoint.java index 876428c6537..f9a1dfd5814 100644 --- a/components/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/SpringRabbitMQEndpoint.java +++ b/components/camel-spring-rabbitmq/src/main/java/org/apache/camel/component/springrabbit/SpringRabbitMQEndpoint.java @@ -26,8 +26,8 @@ import org.apache.camel.Exchange; import org.apache.camel.PollingConsumer; import org.apache.camel.Processor; import org.apache.camel.Producer; +import org.apache.camel.spi.EndpointLocationAddress; import org.apache.camel.spi.Metadata; -import org.apache.camel.spi.RemoteAddressAware; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; import org.apache.camel.spi.UriPath; @@ -57,7 +57,7 @@ import static org.apache.camel.component.springrabbit.SpringRabbitMQConstants.DI @UriEndpoint(firstVersion = "3.8.0", scheme = "spring-rabbitmq", title = "Spring RabbitMQ", syntax = "spring-rabbitmq:exchangeName", category = { Category.MESSAGING }, headersClass = SpringRabbitMQConstants.class) -public class SpringRabbitMQEndpoint extends DefaultEndpoint implements AsyncEndpoint, RemoteAddressAware { +public class SpringRabbitMQEndpoint extends DefaultEndpoint implements AsyncEndpoint, EndpointLocationAddress { public static final String ARG_PREFIX = "arg."; public static final String CONSUMER_ARG_PREFIX = "consumer."; diff --git a/components/camel-sql/src/main/java/org/apache/camel/component/sql/DefaultSqlEndpoint.java b/components/camel-sql/src/main/java/org/apache/camel/component/sql/DefaultSqlEndpoint.java index e17dc38f0d0..eacae6f97ef 100644 --- a/components/camel-sql/src/main/java/org/apache/camel/component/sql/DefaultSqlEndpoint.java +++ b/components/camel-sql/src/main/java/org/apache/camel/component/sql/DefaultSqlEndpoint.java @@ -27,8 +27,8 @@ import java.util.Map; import javax.sql.DataSource; import org.apache.camel.Component; +import org.apache.camel.spi.EndpointLocationAddress; import org.apache.camel.spi.Metadata; -import org.apache.camel.spi.RemoteAddressAware; import org.apache.camel.spi.UriParam; import org.apache.camel.support.DefaultPollingEndpoint; import org.springframework.jdbc.core.JdbcTemplate; @@ -39,7 +39,7 @@ import org.springframework.jdbc.datasource.AbstractDriverBasedDataSource; /** * Base class for SQL endpoints. */ -public abstract class DefaultSqlEndpoint extends DefaultPollingEndpoint implements RemoteAddressAware { +public abstract class DefaultSqlEndpoint extends DefaultPollingEndpoint implements EndpointLocationAddress { private JdbcTemplate jdbcTemplate; @Metadata(autowired = true) diff --git a/components/camel-stomp/src/main/java/org/apache/camel/component/stomp/StompEndpoint.java b/components/camel-stomp/src/main/java/org/apache/camel/component/stomp/StompEndpoint.java index 6364706a3db..b4ba1ed90a2 100644 --- a/components/camel-stomp/src/main/java/org/apache/camel/component/stomp/StompEndpoint.java +++ b/components/camel-stomp/src/main/java/org/apache/camel/component/stomp/StompEndpoint.java @@ -30,10 +30,10 @@ import org.apache.camel.Consumer; import org.apache.camel.Exchange; import org.apache.camel.Processor; import org.apache.camel.Producer; +import org.apache.camel.spi.EndpointLocationAddress; import org.apache.camel.spi.HeaderFilterStrategy; import org.apache.camel.spi.HeaderFilterStrategyAware; import org.apache.camel.spi.Metadata; -import org.apache.camel.spi.RemoteAddressAware; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; import org.apache.camel.spi.UriPath; @@ -60,7 +60,7 @@ import static org.fusesource.stomp.client.Constants.UNSUBSCRIBE; */ @UriEndpoint(firstVersion = "2.12.0", scheme = "stomp", title = "Stomp", syntax = "stomp:destination", category = { Category.MESSAGING }) -public class StompEndpoint extends DefaultEndpoint implements AsyncEndpoint, HeaderFilterStrategyAware, RemoteAddressAware { +public class StompEndpoint extends DefaultEndpoint implements AsyncEndpoint, HeaderFilterStrategyAware, EndpointLocationAddress { private CallbackConnection connection; private Stomp stomp; diff --git a/components/camel-tracing/src/main/java/org/apache/camel/tracing/decorators/AbstractSpanDecorator.java b/components/camel-tracing/src/main/java/org/apache/camel/tracing/decorators/AbstractSpanDecorator.java index a3c8db212e0..a249423ecff 100644 --- a/components/camel-tracing/src/main/java/org/apache/camel/tracing/decorators/AbstractSpanDecorator.java +++ b/components/camel-tracing/src/main/java/org/apache/camel/tracing/decorators/AbstractSpanDecorator.java @@ -20,7 +20,7 @@ import java.util.*; import org.apache.camel.Endpoint; import org.apache.camel.Exchange; -import org.apache.camel.spi.RemoteAddressAware; +import org.apache.camel.spi.EndpointLocationAddress; import org.apache.camel.tracing.ExtractAdapter; import org.apache.camel.tracing.InjectAdapter; import org.apache.camel.tracing.SpanAdapter; @@ -88,10 +88,8 @@ public abstract class AbstractSpanDecorator implements SpanDecorator { @Override public String getOperationName(Exchange exchange, Endpoint endpoint) { // OpenTracing aims to use low cardinality operation names. Ideally a - // specific - // span decorator should be defined for all relevant Camel components - // that - // identify a meaningful operation name + // specific span decorator should be defined for all relevant Camel + // components that identify a meaningful operation name return getComponentName(endpoint); } @@ -111,12 +109,12 @@ public abstract class AbstractSpanDecorator implements SpanDecorator { span.setTag(TagConstants.URL_QUERY, query); } - if (endpoint instanceof RemoteAddressAware raa) { - String adr = raa.getAddress(); + if (endpoint instanceof EndpointLocationAddress ela) { + String adr = ela.getAddress(); if (adr != null) { span.setTag(TagConstants.SERVER_ADDRESS, adr); } - Map map = raa.getAddressMetadata(); + Map map = ela.getAddressMetadata(); if (map != null) { String un = (String) map.get("username"); if (un != null) { diff --git a/core/camel-api/src/main/java/org/apache/camel/spi/RemoteAddressAware.java b/core/camel-api/src/main/java/org/apache/camel/spi/EndpointLocationAddress.java similarity index 54% rename from core/camel-api/src/main/java/org/apache/camel/spi/RemoteAddressAware.java rename to core/camel-api/src/main/java/org/apache/camel/spi/EndpointLocationAddress.java index 7a1e2cfcf1d..5a6c35ec96d 100644 --- a/core/camel-api/src/main/java/org/apache/camel/spi/RemoteAddressAware.java +++ b/core/camel-api/src/main/java/org/apache/camel/spi/EndpointLocationAddress.java @@ -19,21 +19,33 @@ package org.apache.camel.spi; import java.util.Map; /** - * Used for getting information about remote URL used for connecting to a remote system, such as from an - * {@link org.apache.camel.Endpoint} or {@link org.apache.camel.Component} that connects to messaging brokers, cloud - * systems, databases etc. + * Used for getting information about (hosted or external) service addresses used for connecting to a remote system such + * as message brokers, databases, or cloud services. + * + * Hosted services are running inside this Camel application such as with embedded HTTP server for Rest DSL, or + * TCP networking with netty etc. */ -public interface RemoteAddressAware { +public interface EndpointLocationAddress { + + /** + * Is this service address hosted (in this Camel application) or external such as on a remote network connection. + */ + default boolean isHostedAddress() { + return false; + } /** * Gets the remote address such as URL or hostname * - * @return the address or null if no address can be resolved + * @return the address or null if no address can be determined. */ String getAddress(); /** - * Optional additional metadata that is relevant to the remote address as key value pairs + * Optional additional metadata that is relevant to the address as key value pairs. + * Notice that the metadata is not supposed to contain sensitive security details + * such as access token, api keys, or passwords. Only share information that can + * be safely accessed and written to logs. * * @return optional metadata or null if no data */ diff --git a/core/camel-console/src/main/java/org/apache/camel/impl/console/EndpointDevConsole.java b/core/camel-console/src/main/java/org/apache/camel/impl/console/EndpointDevConsole.java index 75b43b6c657..794a57cf584 100644 --- a/core/camel-console/src/main/java/org/apache/camel/impl/console/EndpointDevConsole.java +++ b/core/camel-console/src/main/java/org/apache/camel/impl/console/EndpointDevConsole.java @@ -24,7 +24,7 @@ import java.util.Optional; import org.apache.camel.Endpoint; import org.apache.camel.spi.EndpointRegistry; -import org.apache.camel.spi.RemoteAddressAware; +import org.apache.camel.spi.EndpointLocationAddress; import org.apache.camel.spi.RuntimeEndpointRegistry; import org.apache.camel.spi.annotations.DevConsole; import org.apache.camel.support.console.AbstractDevConsole; @@ -98,14 +98,16 @@ public class EndpointDevConsole extends AbstractDevConsole { JsonObject jo = new JsonObject(); boolean stub = e.getComponent().getClass().getSimpleName().equals("StubComponent"); jo.put("uri", e.getEndpointUri()); - if (e instanceof RemoteAddressAware raa) { + if (e instanceof EndpointLocationAddress raa) { JsonObject ro = new JsonObject(); + ro.put("hosted", raa.isHostedAddress()); + ro.put("remote", !raa.isHostedAddress()); ro.put("address", raa.getAddress()); var d = raa.getAddressMetadata(); if (d != null) { ro.putAll(d); } - jo.put("remote", ro); + jo.put("location", ro); } jo.put("stub", stub); var stat = findStats(stats, e.getEndpointUri()); diff --git a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java index eac9172353c..53c2418c762 100644 --- a/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java +++ b/core/camel-management-api/src/main/java/org/apache/camel/api/management/mbean/ManagedEndpointMBean.java @@ -16,10 +16,10 @@ */ package org.apache.camel.api.management.mbean; -import java.util.Map; - import org.apache.camel.api.management.ManagedAttribute; +import java.util.Map; + public interface ManagedEndpointMBean { @ManagedAttribute(description = "Camel ID") @@ -40,10 +40,13 @@ public interface ManagedEndpointMBean { @ManagedAttribute(description = "Endpoint State") String getState(); - @ManagedAttribute(description = "Remote Address this endpoint is connecting (only available for some components)") - String getRemoteAddress(); + @ManagedAttribute(description = "Whether the endpoint location address is hosted or external (only available for some components)") + boolean isEndpointLocationHosted(); + + @ManagedAttribute(description = "Address (such as URL or hostname) this endpoint is connecting (only available for some components)") + String getEndpointLocationAddress(); - @ManagedAttribute(description = "Remote Address metadata this endpoint is connecting (only available for some components)") - Map<String, String> getRemoteAddressMetadata(); + @ManagedAttribute(description = "Additional metadata this endpoint is used for connecting (only available for some components)") + Map<String, String> getEndpointLocationAddressMetadata(); } diff --git a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java index 80f27eaf16b..7c50fb0a0c2 100644 --- a/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java +++ b/core/camel-management/src/main/java/org/apache/camel/management/mbean/ManagedEndpoint.java @@ -25,7 +25,7 @@ import org.apache.camel.api.management.ManagedInstance; import org.apache.camel.api.management.ManagedResource; import org.apache.camel.api.management.mbean.ManagedEndpointMBean; import org.apache.camel.spi.ManagementStrategy; -import org.apache.camel.spi.RemoteAddressAware; +import org.apache.camel.spi.EndpointLocationAddress; @ManagedResource(description = "Managed Endpoint") public class ManagedEndpoint implements ManagedInstance, ManagedEndpointMBean { @@ -81,16 +81,24 @@ public class ManagedEndpoint implements ManagedInstance, ManagedEndpointMBean { } @Override - public String getRemoteAddress() { - if (endpoint instanceof RemoteAddressAware raa) { + public boolean isEndpointLocationHosted() { + if (endpoint instanceof EndpointLocationAddress raa) { + return raa.isHostedAddress(); + } + return false; + } + + @Override + public String getEndpointLocationAddress() { + if (endpoint instanceof EndpointLocationAddress raa) { return raa.getAddress(); } return null; } @Override - public Map<String, String> getRemoteAddressMetadata() { - if (endpoint instanceof RemoteAddressAware raa) { + public Map<String, String> getEndpointLocationAddressMetadata() { + if (endpoint instanceof EndpointLocationAddress raa) { return raa.getAddressMetadata(); } return null; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEndpoint.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEndpoint.java index 893350ee544..4e576d79446 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEndpoint.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEndpoint.java @@ -117,7 +117,7 @@ public class ListEndpoint extends ProcessWatchCommand { } row.pid = Long.toString(ph.pid()); row.endpoint = o.getString("uri"); - JsonObject ro = (JsonObject) o.get("remote"); + JsonObject ro = (JsonObject) o.get("location"); if (ro != null) { row.address = ro; } @@ -206,7 +206,7 @@ public class ListEndpoint extends ProcessWatchCommand { if (r.address.size() > 1) { StringJoiner sj = new StringJoiner(" "); r.address.forEach((k, v) -> { - if (!"address".equals(k)) { + if (!"address".equals(k) && !"hosted".equals(k) && !"remote".equals(k)) { sj.add(k + "=" + v); } });