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; }