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 ddfbfa54c6bb8b8b916bf0541bda9620f2599caa
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Sun May 26 10:59:10 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/arangodb/ArangoDbEndpoint.java | 18 +++++++++++++++-
 .../camel/component/asterisk/AsteriskEndpoint.java | 18 +++++++++++++++-
 .../camel/component/bonita/BonitaEndpoint.java     | 25 ++++++++++++++++++----
 3 files changed, 55 insertions(+), 6 deletions(-)

diff --git 
a/components/camel-arangodb/src/main/java/org/apache/camel/component/arangodb/ArangoDbEndpoint.java
 
b/components/camel-arangodb/src/main/java/org/apache/camel/component/arangodb/ArangoDbEndpoint.java
index dd4d64d1906..a64b08b8b79 100644
--- 
a/components/camel-arangodb/src/main/java/org/apache/camel/component/arangodb/ArangoDbEndpoint.java
+++ 
b/components/camel-arangodb/src/main/java/org/apache/camel/component/arangodb/ArangoDbEndpoint.java
@@ -21,6 +21,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.EndpointLocationAddress;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
@@ -28,12 +29,14 @@ import org.apache.camel.spi.UriPath;
 import org.apache.camel.support.DefaultEndpoint;
 import org.apache.camel.util.ObjectHelper;
 
+import java.util.Map;
+
 /**
  * Perform operations on ArangoDb when used as a Document Database, or as a 
Graph Database
  */
 @UriEndpoint(firstVersion = "3.5.0", scheme = "arangodb", title = "ArangoDb", 
syntax = "arangodb:database",
              category = { Category.DATABASE }, producerOnly = true, 
headersClass = ArangoDbConstants.class)
-public class ArangoDbEndpoint extends DefaultEndpoint {
+public class ArangoDbEndpoint extends DefaultEndpoint implements 
EndpointLocationAddress {
 
     @UriPath(description = "database name")
     @Metadata(required = true)
@@ -51,6 +54,19 @@ public class ArangoDbEndpoint extends DefaultEndpoint {
         this.configuration = configuration;
     }
 
+    @Override
+    public String getAddress() {
+        return configuration.getHost() + ":" + configuration.getPort();
+    }
+
+    @Override
+    public Map<String, String> getAddressMetadata() {
+        if (configuration.getUser() != null) {
+            return Map.of("username", configuration.getUser());
+        }
+        return null;
+    }
+
     public Producer createProducer() {
         return new ArangoDbProducer(this);
     }
diff --git 
a/components/camel-asterisk/src/main/java/org/apache/camel/component/asterisk/AsteriskEndpoint.java
 
b/components/camel-asterisk/src/main/java/org/apache/camel/component/asterisk/AsteriskEndpoint.java
index e60afde901e..4fb8928e640 100644
--- 
a/components/camel-asterisk/src/main/java/org/apache/camel/component/asterisk/AsteriskEndpoint.java
+++ 
b/components/camel-asterisk/src/main/java/org/apache/camel/component/asterisk/AsteriskEndpoint.java
@@ -20,6 +20,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.EndpointLocationAddress;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
@@ -27,12 +28,14 @@ import org.apache.camel.spi.UriPath;
 import org.apache.camel.support.DefaultEndpoint;
 import org.apache.camel.util.ObjectHelper;
 
+import java.util.Map;
+
 /**
  * Interact with Asterisk PBX Server (VoIP).
  */
 @UriEndpoint(firstVersion = "2.18.0", scheme = "asterisk", title = "Asterisk", 
syntax = "asterisk:name",
              category = { Category.MOBILE }, headersClass = 
AsteriskConstants.class)
-public class AsteriskEndpoint extends DefaultEndpoint {
+public class AsteriskEndpoint extends DefaultEndpoint implements 
EndpointLocationAddress {
     @UriPath(description = "Name of component")
     @Metadata(required = true)
     private String name;
@@ -75,6 +78,19 @@ public class AsteriskEndpoint extends DefaultEndpoint {
         return new AsteriskConsumer(this, processor);
     }
 
+    @Override
+    public String getAddress() {
+        return hostname;
+    }
+
+    @Override
+    public Map<String, String> getAddressMetadata() {
+        if (username != null) {
+            return Map.of("username", username);
+        }
+        return null;
+    }
+
     public String getUsername() {
         return username;
     }
diff --git 
a/components/camel-bonita/src/main/java/org/apache/camel/component/bonita/BonitaEndpoint.java
 
b/components/camel-bonita/src/main/java/org/apache/camel/component/bonita/BonitaEndpoint.java
index c30fae3ed29..4db5622e7f9 100644
--- 
a/components/camel-bonita/src/main/java/org/apache/camel/component/bonita/BonitaEndpoint.java
+++ 
b/components/camel-bonita/src/main/java/org/apache/camel/component/bonita/BonitaEndpoint.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.component.bonita;
 
+import java.util.Map;
+
 import org.apache.camel.Category;
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
@@ -23,6 +25,7 @@ import org.apache.camel.Producer;
 import org.apache.camel.component.bonita.exception.BonitaException;
 import org.apache.camel.component.bonita.producer.BonitaStartProducer;
 import org.apache.camel.component.bonita.util.BonitaOperation;
+import org.apache.camel.spi.EndpointLocationAddress;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.support.DefaultEndpoint;
@@ -32,20 +35,30 @@ import org.apache.camel.support.DefaultEndpoint;
  */
 @UriEndpoint(firstVersion = "2.19.0", scheme = "bonita", title = "Bonita", 
syntax = "bonita:operation", producerOnly = true,
              category = { Category.WORKFLOW })
-public class BonitaEndpoint extends DefaultEndpoint {
+public class BonitaEndpoint extends DefaultEndpoint implements 
EndpointLocationAddress {
 
     @UriParam
     private BonitaConfiguration configuration;
 
-    public BonitaEndpoint() {
-    }
-
     public BonitaEndpoint(String uri, BonitaComponent component,
                           BonitaConfiguration configuration) {
         super(uri, component);
         this.configuration = configuration;
     }
 
+    @Override
+    public String getAddress() {
+        return configuration.getHostname() + ":" + configuration.getPort();
+    }
+
+    @Override
+    public Map<String, String> getAddressMetadata() {
+        if (configuration.getUsername() != null) {
+            return Map.of("username", configuration.getUsername());
+        }
+        return null;
+    }
+
     @Override
     public Producer createProducer() throws Exception {
         if (configuration.getOperation() == BonitaOperation.startCase) {
@@ -60,6 +73,10 @@ public class BonitaEndpoint extends DefaultEndpoint {
         throw new UnsupportedOperationException("Consumer not supported");
     }
 
+    public void setConfiguration(BonitaConfiguration configuration) {
+        this.configuration = configuration;
+    }
+
     public BonitaConfiguration getConfiguration() {
         return configuration;
     }

Reply via email to