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 2e6adff748323266a260ab9aebb62b7a6db4411a
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Mon May 27 18:37:11 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.
---
 .../apache/camel/component/atom/AtomEndpoint.java  | 13 ++++++++++-
 .../apache/camel/component/irc/IrcEndpoint.java    | 23 +++++++++++++++++-
 .../apache/camel/component/jira/JiraEndpoint.java  | 22 +++++++++++++++++-
 .../apache/camel/component/jmx/JMXEndpoint.java    | 21 ++++++++++++++++-
 .../camel/component/jt400/Jt400Endpoint.java       | 23 +++++++++++++++++-
 .../kubernetes/AbstractKubernetesEndpoint.java     | 17 +++++++++++++-
 .../camel/component/milvus/MilvusEndpoint.java     | 14 ++++++++++-
 .../camel/component/minio/MinioEndpoint.java       | 13 ++++++++++-
 .../camel/oaipmh/component/OAIPMHEndpoint.java     | 13 ++++++++++-
 .../camel/component/pgevent/PgEventEndpoint.java   | 27 ++++++++++++++++++++--
 .../camel/component/plc4x/Plc4XEndpoint.java       | 14 ++++++++++-
 .../camel/component/printer/PrinterEndpoint.java   | 13 ++++++++++-
 .../camel/component/qdrant/QdrantEndpoint.java     | 13 ++++++++++-
 .../robotframework/RobotFrameworkEndpoint.java     |  2 +-
 .../apache/camel/component/rss/RssEndpoint.java    | 13 ++++++++++-
 .../spring/ws/SpringWebserviceConsumer.java        |  5 ++++
 .../camel/component/telegram/TelegramEndpoint.java | 16 ++++++++++++-
 17 files changed, 245 insertions(+), 17 deletions(-)

diff --git 
a/components/camel-atom/src/main/java/org/apache/camel/component/atom/AtomEndpoint.java
 
b/components/camel-atom/src/main/java/org/apache/camel/component/atom/AtomEndpoint.java
index 6322fed1260..f54b66c88a3 100644
--- 
a/components/camel-atom/src/main/java/org/apache/camel/component/atom/AtomEndpoint.java
+++ 
b/components/camel-atom/src/main/java/org/apache/camel/component/atom/AtomEndpoint.java
@@ -22,6 +22,7 @@ import org.apache.camel.Processor;
 import org.apache.camel.component.feed.FeedComponent;
 import org.apache.camel.component.feed.FeedEndpoint;
 import org.apache.camel.component.feed.FeedPollingConsumer;
+import org.apache.camel.spi.EndpointServiceLocation;
 import org.apache.camel.spi.UriEndpoint;
 
 /**
@@ -29,7 +30,7 @@ import org.apache.camel.spi.UriEndpoint;
  */
 @UriEndpoint(firstVersion = "1.2.0", scheme = "atom", title = "Atom", syntax = 
"atom:feedUri", consumerOnly = true,
              category = { Category.DOCUMENT }, lenientProperties = true, 
headersClass = AtomConstants.class)
-public class AtomEndpoint extends FeedEndpoint {
+public class AtomEndpoint extends FeedEndpoint implements 
EndpointServiceLocation {
 
     public AtomEndpoint() {
     }
@@ -38,6 +39,16 @@ public class AtomEndpoint extends FeedEndpoint {
         super(endpointUri, component, feedUri);
     }
 
+    @Override
+    public String getServiceUrl() {
+        return feedUri;
+    }
+
+    @Override
+    public String getServiceProtocol() {
+        return "atom";
+    }
+
     @Override
     public Exchange createExchange(Object feed) {
         Exchange exchange = createExchangeWithFeedHeader(feed, 
AtomConstants.ATOM_FEED);
diff --git 
a/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcEndpoint.java
 
b/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcEndpoint.java
index 81543e496b6..d36813fd6cf 100644
--- 
a/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcEndpoint.java
+++ 
b/components/camel-irc/src/main/java/org/apache/camel/component/irc/IrcEndpoint.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.irc;
 
 import org.apache.camel.Category;
 import org.apache.camel.Processor;
+import org.apache.camel.spi.EndpointServiceLocation;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.support.DefaultEndpoint;
@@ -28,6 +29,8 @@ import org.schwering.irc.lib.IRCConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.Map;
+
 /**
  * Send and receive messages to/from and IRC chat.
  */
@@ -37,7 +40,7 @@ import org.slf4j.LoggerFactory;
              syntax = "irc:hostname:port",
              alternativeSyntax = "irc:username:password@hostname:port",
              category = { Category.CHAT }, headersClass = IrcConstants.class)
-public class IrcEndpoint extends DefaultEndpoint {
+public class IrcEndpoint extends DefaultEndpoint implements 
EndpointServiceLocation {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(IrcEndpoint.class);
 
@@ -52,6 +55,24 @@ public class IrcEndpoint extends DefaultEndpoint {
         this.configuration = configuration;
     }
 
+    @Override
+    public String getServiceUrl() {
+        return configuration.getHostname();
+    }
+
+    @Override
+    public String getServiceProtocol() {
+        return "irc";
+    }
+
+    @Override
+    public Map<String, String> getServiceMetadata() {
+        if (configuration.getUsername() != null) {
+            return Map.of("username", configuration.getUsername());
+        }
+        return null;
+    }
+
     @Override
     public IrcProducer createProducer() throws Exception {
         return new IrcProducer(this);
diff --git 
a/components/camel-jira/src/main/java/org/apache/camel/component/jira/JiraEndpoint.java
 
b/components/camel-jira/src/main/java/org/apache/camel/component/jira/JiraEndpoint.java
index f8da482ed8d..48589615aae 100644
--- 
a/components/camel-jira/src/main/java/org/apache/camel/component/jira/JiraEndpoint.java
+++ 
b/components/camel-jira/src/main/java/org/apache/camel/component/jira/JiraEndpoint.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.jira;
 
 import java.net.URI;
+import java.util.Map;
 
 import com.atlassian.jira.rest.client.api.JiraRestClient;
 import com.atlassian.jira.rest.client.api.JiraRestClientFactory;
@@ -40,6 +41,7 @@ import 
org.apache.camel.component.jira.producer.FetchIssueProducer;
 import org.apache.camel.component.jira.producer.TransitionIssueProducer;
 import org.apache.camel.component.jira.producer.UpdateIssueProducer;
 import org.apache.camel.component.jira.producer.WatcherProducer;
+import org.apache.camel.spi.EndpointServiceLocation;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.Registry;
 import org.apache.camel.spi.UriEndpoint;
@@ -75,7 +77,7 @@ import static 
org.apache.camel.component.jira.JiraConstants.JIRA_REST_CLIENT_FAC
  */
 @UriEndpoint(firstVersion = "3.0", scheme = "jira", title = "Jira", syntax = 
"jira:type",
              category = { Category.DOCUMENT }, headersClass = 
JiraConstants.class)
-public class JiraEndpoint extends DefaultEndpoint {
+public class JiraEndpoint extends DefaultEndpoint implements 
EndpointServiceLocation {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(JiraEndpoint.class);
 
@@ -100,6 +102,24 @@ public class JiraEndpoint extends DefaultEndpoint {
         this.configuration = configuration;
     }
 
+    @Override
+    public String getServiceUrl() {
+        return configuration.getJiraUrl();
+    }
+
+    @Override
+    public String getServiceProtocol() {
+        return "rest";
+    }
+
+    @Override
+    public Map<String, String> getServiceMetadata() {
+        if (configuration.getUsername() != null) {
+            return Map.of("username", configuration.getUsername());
+        }
+        return null;
+    }
+
     public JiraConfiguration getConfiguration() {
         return configuration;
     }
diff --git 
a/components/camel-jmx/src/main/java/org/apache/camel/component/jmx/JMXEndpoint.java
 
b/components/camel-jmx/src/main/java/org/apache/camel/component/jmx/JMXEndpoint.java
index ac88a52cbbf..d9dee42a4a5 100644
--- 
a/components/camel-jmx/src/main/java/org/apache/camel/component/jmx/JMXEndpoint.java
+++ 
b/components/camel-jmx/src/main/java/org/apache/camel/component/jmx/JMXEndpoint.java
@@ -28,6 +28,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.EndpointServiceLocation;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
@@ -52,7 +53,7 @@ import org.apache.camel.util.ObjectHelper;
  */
 @UriEndpoint(firstVersion = "2.6.0", scheme = "jmx", title = "JMX", syntax = 
"jmx:serverURL", consumerOnly = true,
              remote = false, category = { Category.MONITORING }, headersClass 
= JMXConstants.class)
-public class JMXEndpoint extends DefaultEndpoint {
+public class JMXEndpoint extends DefaultEndpoint implements 
EndpointServiceLocation {
 
     // error messages as constants so they can be asserted on from unit tests
     protected static final String ERR_PLATFORM_SERVER = "Monitor type consumer 
only supported on platform server.";
@@ -254,6 +255,24 @@ public class JMXEndpoint extends DefaultEndpoint {
         super(aEndpointUri, aComponent);
     }
 
+    @Override
+    public String getServiceUrl() {
+        return serverURL;
+    }
+
+    @Override
+    public String getServiceProtocol() {
+        return "rmi";
+    }
+
+    @Override
+    public Map<String, String> getServiceMetadata() {
+        if (user != null) {
+            return Map.of("username", user);
+        }
+        return null;
+    }
+
     @Override
     public Consumer createConsumer(Processor aProcessor) throws Exception {
         // validate that all of the endpoint is configured properly
diff --git 
a/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400Endpoint.java
 
b/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400Endpoint.java
index 794ebd669e4..2a8271c9f12 100644
--- 
a/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400Endpoint.java
+++ 
b/components/camel-jt400/src/main/java/org/apache/camel/component/jt400/Jt400Endpoint.java
@@ -18,6 +18,7 @@ package org.apache.camel.component.jt400;
 
 import java.net.URISyntaxException;
 import java.util.Arrays;
+import java.util.Map;
 
 import javax.naming.OperationNotSupportedException;
 
@@ -29,6 +30,7 @@ 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.EndpointServiceLocation;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.support.ScheduledPollEndpoint;
@@ -42,7 +44,7 @@ import org.apache.camel.util.URISupport;
 @UriEndpoint(firstVersion = "1.5.0", scheme = "jt400", title = "JT400",
              syntax = 
"jt400:userID:password@systemName/QSYS.LIB/objectPath.type", category = { 
Category.MESSAGING },
              headersClass = Jt400Constants.class)
-public class Jt400Endpoint extends ScheduledPollEndpoint implements 
MultipleConsumersSupport {
+public class Jt400Endpoint extends ScheduledPollEndpoint implements 
MultipleConsumersSupport, EndpointServiceLocation {
 
     public static final String KEY = Jt400Constants.KEY;
     public static final String SENDER_INFORMATION = 
Jt400Constants.SENDER_INFORMATION;
@@ -73,6 +75,25 @@ public class Jt400Endpoint extends ScheduledPollEndpoint 
implements MultipleCons
         }
     }
 
+    @Override
+    public String getServiceUrl() {
+        return configuration.getSystemName();
+    }
+
+    @Override
+    public String getServiceProtocol() {
+        return "tcp";
+    }
+
+    @Override
+    public Map<String, String> getServiceMetadata() {
+        if (getUserID() != null) {
+            return Map.of("username", getUserID());
+        }
+        return null;
+    }
+
+
     public Jt400Configuration getConfiguration() {
         return configuration;
     }
diff --git 
a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/AbstractKubernetesEndpoint.java
 
b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/AbstractKubernetesEndpoint.java
index 01aa3c85e39..381780b50aa 100644
--- 
a/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/AbstractKubernetesEndpoint.java
+++ 
b/components/camel-kubernetes/src/main/java/org/apache/camel/component/kubernetes/AbstractKubernetesEndpoint.java
@@ -19,13 +19,14 @@ package org.apache.camel.component.kubernetes;
 import java.util.concurrent.ExecutorService;
 
 import io.fabric8.kubernetes.client.KubernetesClient;
+import org.apache.camel.spi.EndpointServiceLocation;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.support.DefaultEndpoint;
 
 /**
  * The base kubernetes endpoint allows to work with Kubernetes PaaS.
  */
-public abstract class AbstractKubernetesEndpoint extends DefaultEndpoint {
+public abstract class AbstractKubernetesEndpoint extends DefaultEndpoint 
implements EndpointServiceLocation {
 
     @UriParam
     private KubernetesConfiguration configuration;
@@ -37,6 +38,20 @@ public abstract class AbstractKubernetesEndpoint extends 
DefaultEndpoint {
         this.configuration = config;
     }
 
+    @Override
+    public String getServiceUrl() {
+        String answer = configuration.getMasterUrl();
+        if (answer == null || answer.isEmpty() && client != null) {
+            answer = client.getMasterUrl().toString();
+        }
+        return answer;
+    }
+
+    @Override
+    public String getServiceProtocol() {
+        return "rest";
+    }
+
     public KubernetesConfiguration getConfiguration() {
         return configuration;
     }
diff --git 
a/components/camel-milvus/src/main/java/org/apache/camel/component/milvus/MilvusEndpoint.java
 
b/components/camel-milvus/src/main/java/org/apache/camel/component/milvus/MilvusEndpoint.java
index 908e72380f6..7069961fd27 100644
--- 
a/components/camel-milvus/src/main/java/org/apache/camel/component/milvus/MilvusEndpoint.java
+++ 
b/components/camel-milvus/src/main/java/org/apache/camel/component/milvus/MilvusEndpoint.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.milvus;
 
+import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
 import io.milvus.client.MilvusClient;
@@ -26,6 +27,7 @@ import org.apache.camel.Component;
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.spi.EndpointServiceLocation;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
@@ -46,7 +48,7 @@ import org.apache.camel.support.DefaultEndpoint;
                      Category.AI
              },
              headersClass = Milvus.Headers.class)
-public class MilvusEndpoint extends DefaultEndpoint {
+public class MilvusEndpoint extends DefaultEndpoint implements 
EndpointServiceLocation {
 
     @Metadata(required = true)
     @UriPath(description = "The collection Name")
@@ -74,6 +76,16 @@ public class MilvusEndpoint extends DefaultEndpoint {
         this.lock = new Object();
     }
 
+    @Override
+    public String getServiceUrl() {
+        return configuration.getHost() + ":" + configuration.getPort();
+    }
+
+    @Override
+    public String getServiceProtocol() {
+        return "grpc";
+    }
+
     public MilvusConfiguration getConfiguration() {
         return configuration;
     }
diff --git 
a/components/camel-minio/src/main/java/org/apache/camel/component/minio/MinioEndpoint.java
 
b/components/camel-minio/src/main/java/org/apache/camel/component/minio/MinioEndpoint.java
index 71e8e66da6c..0b6de66089a 100644
--- 
a/components/camel-minio/src/main/java/org/apache/camel/component/minio/MinioEndpoint.java
+++ 
b/components/camel-minio/src/main/java/org/apache/camel/component/minio/MinioEndpoint.java
@@ -28,6 +28,7 @@ import org.apache.camel.Consumer;
 import org.apache.camel.Message;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.spi.EndpointServiceLocation;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.support.ScheduledPollEndpoint;
@@ -41,7 +42,7 @@ import static org.apache.camel.util.ObjectHelper.isNotEmpty;
  */
 @UriEndpoint(firstVersion = "3.5.0", scheme = "minio", title = "Minio", syntax 
= "minio:bucketName",
              category = { Category.CLOUD, Category.FILE }, headersClass = 
MinioConstants.class)
-public class MinioEndpoint extends ScheduledPollEndpoint {
+public class MinioEndpoint extends ScheduledPollEndpoint implements 
EndpointServiceLocation {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(MinioEndpoint.class);
 
@@ -55,6 +56,16 @@ public class MinioEndpoint extends ScheduledPollEndpoint {
         this.configuration = configuration;
     }
 
+    @Override
+    public String getServiceUrl() {
+        return configuration.getEndpoint();
+    }
+
+    @Override
+    public String getServiceProtocol() {
+        return "rest";
+    }
+
     @Override
     public Consumer createConsumer(Processor processor) throws Exception {
         MinioConsumer minioConsumer = new MinioConsumer(this, processor);
diff --git 
a/components/camel-oaipmh/src/main/java/org/apache/camel/oaipmh/component/OAIPMHEndpoint.java
 
b/components/camel-oaipmh/src/main/java/org/apache/camel/oaipmh/component/OAIPMHEndpoint.java
index 3ce9bc6004a..0b030a93995 100644
--- 
a/components/camel-oaipmh/src/main/java/org/apache/camel/oaipmh/component/OAIPMHEndpoint.java
+++ 
b/components/camel-oaipmh/src/main/java/org/apache/camel/oaipmh/component/OAIPMHEndpoint.java
@@ -24,6 +24,7 @@ import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.oaipmh.component.model.OAIPMHConstants;
+import org.apache.camel.spi.EndpointServiceLocation;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
@@ -37,7 +38,7 @@ import org.joda.time.format.ISODateTimeFormat;
  */
 @UriEndpoint(firstVersion = "3.5.0", scheme = "oaipmh", title = "OAI-PMH", 
syntax = "oaipmh:baseUrl", lenientProperties = true,
              category = { Category.SEARCH }, headersClass = 
OAIPMHConstants.class)
-public class OAIPMHEndpoint extends ScheduledPollEndpoint {
+public class OAIPMHEndpoint extends ScheduledPollEndpoint implements 
EndpointServiceLocation {
 
     private transient URI url;
 
@@ -81,6 +82,16 @@ public class OAIPMHEndpoint extends ScheduledPollEndpoint {
         this.baseUrl = remaining;
     }
 
+    @Override
+    public String getServiceUrl() {
+        return baseUrl;
+    }
+
+    @Override
+    public String getServiceProtocol() {
+        return "oai-phm";
+    }
+
     @Override
     public boolean isLenientProperties() {
         return true;
diff --git 
a/components/camel-pgevent/src/main/java/org/apache/camel/component/pgevent/PgEventEndpoint.java
 
b/components/camel-pgevent/src/main/java/org/apache/camel/component/pgevent/PgEventEndpoint.java
index d84675dfbfe..ca506ffef4b 100644
--- 
a/components/camel-pgevent/src/main/java/org/apache/camel/component/pgevent/PgEventEndpoint.java
+++ 
b/components/camel-pgevent/src/main/java/org/apache/camel/component/pgevent/PgEventEndpoint.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.pgevent;
 
 import java.sql.DriverManager;
+import java.util.Map;
 
 import javax.sql.DataSource;
 
@@ -27,6 +28,7 @@ import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
 import org.apache.camel.spi.ClassResolver;
+import org.apache.camel.spi.EndpointServiceLocation;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
@@ -43,7 +45,7 @@ import org.slf4j.LoggerFactory;
 @UriEndpoint(firstVersion = "2.15.0", scheme = "pgevent", title = "PostgresSQL 
Event",
              syntax = "pgevent:host:port/database/channel",
              category = { Category.DATABASE }, headersClass = 
PgEventConstants.class)
-public class PgEventEndpoint extends DefaultEndpoint {
+public class PgEventEndpoint extends DefaultEndpoint implements 
EndpointServiceLocation {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(PgEventEndpoint.class);
 
@@ -66,7 +68,7 @@ public class PgEventEndpoint extends DefaultEndpoint {
     private String user = "postgres";
     @UriParam(label = "security", secret = true)
     private String pass;
-    @UriParam
+    @UriParam(label = "advanced")
     private DataSource datasource;
 
     private final String uri;
@@ -84,6 +86,27 @@ public class PgEventEndpoint extends DefaultEndpoint {
         parseUri();
     }
 
+    @Override
+    public String getServiceUrl() {
+        if (host != null) {
+            return host + ":" + port;
+        }
+        return null;
+    }
+
+    @Override
+    public Map<String, String> getServiceMetadata() {
+        if (user != null) {
+            return Map.of("username", user);
+        }
+        return null;
+    }
+
+    @Override
+    public String getServiceProtocol() {
+        return "jdbc";
+    }
+
     public final PGConnection initJdbc() throws Exception {
         PGConnection conn;
         if (this.getDatasource() != null) {
diff --git 
a/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java
 
b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java
index 584931353db..b4f6008ffcb 100644
--- 
a/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java
+++ 
b/components/camel-plc4x/src/main/java/org/apache/camel/component/plc4x/Plc4XEndpoint.java
@@ -24,11 +24,13 @@ import org.apache.camel.Consumer;
 import org.apache.camel.PollingConsumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.spi.EndpointServiceLocation;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
 import org.apache.camel.support.DefaultEndpoint;
+import org.apache.camel.util.StringHelper;
 import org.apache.plc4x.java.DefaultPlcDriverManager;
 import org.apache.plc4x.java.api.PlcConnection;
 import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
@@ -43,7 +45,7 @@ import org.slf4j.LoggerFactory;
  */
 @UriEndpoint(scheme = "plc4x", firstVersion = "3.20.0", title = "PLC4X",
              syntax = "plc4x:driver", category = Category.IOT)
-public class Plc4XEndpoint extends DefaultEndpoint {
+public class Plc4XEndpoint extends DefaultEndpoint implements 
EndpointServiceLocation {
     private static final Logger LOGGER = 
LoggerFactory.getLogger(Plc4XEndpoint.class);
 
     protected DefaultPlcDriverManager plcDriverManager;
@@ -74,6 +76,16 @@ public class Plc4XEndpoint extends DefaultEndpoint {
         this.uri = endpointUri.replaceFirst("plc4x:/?/?", "");
     }
 
+    @Override
+    public String getServiceUrl() {
+        return StringHelper.after(uri, ":", uri);
+    }
+
+    @Override
+    public String getServiceProtocol() {
+        return StringHelper.before(uri, ":", "plc4x");
+    }
+
     public int getPeriod() {
         return period;
     }
diff --git 
a/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterEndpoint.java
 
b/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterEndpoint.java
index 1c911691d6a..f65e2d4e2e2 100644
--- 
a/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterEndpoint.java
+++ 
b/components/camel-printer/src/main/java/org/apache/camel/component/printer/PrinterEndpoint.java
@@ -21,6 +21,7 @@ import org.apache.camel.Component;
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.spi.EndpointServiceLocation;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
@@ -37,7 +38,7 @@ import org.apache.camel.support.DefaultEndpoint;
  */
 @UriEndpoint(firstVersion = "2.1.0", scheme = "lpr", title = "Printer", syntax 
= "lpr:hostname:port/printername",
              producerOnly = true, category = { Category.DOCUMENT }, 
headersClass = PrinterEndpoint.class)
-public class PrinterEndpoint extends DefaultEndpoint {
+public class PrinterEndpoint extends DefaultEndpoint implements 
EndpointServiceLocation {
 
     @Metadata(label = "producer", description = "The name of the job", 
javaType = "String")
     public static final String JOB_NAME = "PrinterJobName";
@@ -53,6 +54,16 @@ public class PrinterEndpoint extends DefaultEndpoint {
         this.config = config;
     }
 
+    @Override
+    public String getServiceUrl() {
+        return config.getHostname() + ":" + config.getPort();
+    }
+
+    @Override
+    public String getServiceProtocol() {
+        return "printer";
+    }
+
     @Override
     public Consumer createConsumer(Processor processor) throws Exception {
         throw new UnsupportedOperationException("You cannot create a consumer 
for a Printer endpoint");
diff --git 
a/components/camel-qdrant/src/main/java/org/apache/camel/component/qdrant/QdrantEndpoint.java
 
b/components/camel-qdrant/src/main/java/org/apache/camel/component/qdrant/QdrantEndpoint.java
index 3004cf30763..50b90bf24bc 100644
--- 
a/components/camel-qdrant/src/main/java/org/apache/camel/component/qdrant/QdrantEndpoint.java
+++ 
b/components/camel-qdrant/src/main/java/org/apache/camel/component/qdrant/QdrantEndpoint.java
@@ -25,6 +25,7 @@ import org.apache.camel.Component;
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.spi.EndpointServiceLocation;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
@@ -45,7 +46,7 @@ import org.apache.camel.support.DefaultEndpoint;
                      Category.AI
              },
              headersClass = Qdrant.Headers.class)
-public class QdrantEndpoint extends DefaultEndpoint {
+public class QdrantEndpoint extends DefaultEndpoint implements 
EndpointServiceLocation {
 
     @Metadata(required = true)
     @UriPath(description = "The collection Name")
@@ -73,6 +74,16 @@ public class QdrantEndpoint extends DefaultEndpoint {
         this.lock = new Object();
     }
 
+    @Override
+    public String getServiceUrl() {
+        return configuration.getHost() + ":" + configuration.getPort();
+    }
+
+    @Override
+    public String getServiceProtocol() {
+        return "grpc";
+    }
+
     public QdrantConfiguration getConfiguration() {
         return configuration;
     }
diff --git 
a/components/camel-robotframework/src/main/java/org/apache/camel/component/robotframework/RobotFrameworkEndpoint.java
 
b/components/camel-robotframework/src/main/java/org/apache/camel/component/robotframework/RobotFrameworkEndpoint.java
index 393895ecee8..ef3b229c0dc 100644
--- 
a/components/camel-robotframework/src/main/java/org/apache/camel/component/robotframework/RobotFrameworkEndpoint.java
+++ 
b/components/camel-robotframework/src/main/java/org/apache/camel/component/robotframework/RobotFrameworkEndpoint.java
@@ -33,7 +33,7 @@ import org.robotframework.RobotFramework;
  */
 @UriEndpoint(firstVersion = "3.0.0", scheme = "robotframework", title = "Robot 
Framework",
              syntax = "robotframework:resourceUri", category = { 
Category.TESTING },
-             headersClass = RobotFrameworkCamelConstants.class)
+             remote = false, headersClass = RobotFrameworkCamelConstants.class)
 public class RobotFrameworkEndpoint extends ResourceEndpoint {
 
     @UriParam
diff --git 
a/components/camel-rss/src/main/java/org/apache/camel/component/rss/RssEndpoint.java
 
b/components/camel-rss/src/main/java/org/apache/camel/component/rss/RssEndpoint.java
index b8663c15279..fef1db7d13f 100644
--- 
a/components/camel-rss/src/main/java/org/apache/camel/component/rss/RssEndpoint.java
+++ 
b/components/camel-rss/src/main/java/org/apache/camel/component/rss/RssEndpoint.java
@@ -27,6 +27,7 @@ import org.apache.camel.Producer;
 import org.apache.camel.component.feed.FeedComponent;
 import org.apache.camel.component.feed.FeedEndpoint;
 import org.apache.camel.component.feed.FeedPollingConsumer;
+import org.apache.camel.spi.EndpointServiceLocation;
 import org.apache.camel.spi.UriEndpoint;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -37,7 +38,7 @@ import org.slf4j.LoggerFactory;
 @UriEndpoint(firstVersion = "2.0.0", scheme = "rss", extendsScheme = "atom", 
title = "RSS",
              syntax = "rss:feedUri", consumerOnly = true, category = { 
Category.DOCUMENT }, lenientProperties = true,
              headersClass = RssConstants.class)
-public class RssEndpoint extends FeedEndpoint {
+public class RssEndpoint extends FeedEndpoint implements 
EndpointServiceLocation {
     protected static final Logger LOG = 
LoggerFactory.getLogger(RssEndpoint.class);
 
     public RssEndpoint() {
@@ -47,6 +48,16 @@ public class RssEndpoint extends FeedEndpoint {
         super(endpointUri, component, feedUri);
     }
 
+    @Override
+    public String getServiceUrl() {
+        return feedUri;
+    }
+
+    @Override
+    public String getServiceProtocol() {
+        return "rss";
+    }
+
     @Override
     public Producer createProducer() throws Exception {
         throw new UnsupportedOperationException("RssProducer is not 
implemented");
diff --git 
a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java
 
b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java
index 7d5426ae047..69feccd65dd 100644
--- 
a/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java
+++ 
b/components/camel-spring-ws/src/main/java/org/apache/camel/component/spring/ws/SpringWebserviceConsumer.java
@@ -55,6 +55,11 @@ public class SpringWebserviceConsumer extends 
DefaultConsumer implements Message
         this.configuration = this.endpoint.getConfiguration();
     }
 
+    @Override
+    public boolean isHostedService() {
+        return true;
+    }
+
     /**
      * Invoked by Spring-WS when a {@link WebServiceMessage} is received
      */
diff --git 
a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramEndpoint.java
 
b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramEndpoint.java
index f82e2193b94..b3530de0724 100644
--- 
a/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramEndpoint.java
+++ 
b/components/camel-telegram/src/main/java/org/apache/camel/component/telegram/TelegramEndpoint.java
@@ -31,6 +31,7 @@ import org.apache.camel.RuntimeCamelException;
 import 
org.apache.camel.component.telegram.service.TelegramServiceRestBotAPIAdapter;
 import org.apache.camel.component.webhook.WebhookCapableEndpoint;
 import org.apache.camel.component.webhook.WebhookConfiguration;
+import org.apache.camel.spi.EndpointServiceLocation;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.support.ScheduledPollEndpoint;
@@ -43,7 +44,7 @@ import org.slf4j.LoggerFactory;
  */
 @UriEndpoint(firstVersion = "2.18.0", scheme = "telegram", title = "Telegram", 
syntax = "telegram:type",
              category = { Category.CLOUD, Category.API, Category.CHAT }, 
headersClass = TelegramConstants.class)
-public class TelegramEndpoint extends ScheduledPollEndpoint implements 
WebhookCapableEndpoint {
+public class TelegramEndpoint extends ScheduledPollEndpoint implements 
WebhookCapableEndpoint, EndpointServiceLocation {
     private static final Logger LOG = 
LoggerFactory.getLogger(TelegramEndpoint.class);
 
     @UriParam
@@ -67,6 +68,19 @@ public class TelegramEndpoint extends ScheduledPollEndpoint 
implements WebhookCa
         this.client = client;
     }
 
+    @Override
+    public String getServiceUrl() {
+        if (configuration.getBaseUri() != null) {
+            return configuration.getBaseUri();
+        }
+        return "https://api.telegram.org";;
+    }
+
+    @Override
+    public String getServiceProtocol() {
+        return "rest";
+    }
+
     @Override
     protected void doStart() throws Exception {
         super.doStart();

Reply via email to