This is an automated email from the ASF dual-hosted git repository. acosentino pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit 949172c487366fa69b49743b15690adbb7495829 Author: Andrea Cosentino <anco...@gmail.com> AuthorDate: Fri Jun 28 10:58:18 2024 +0200 CAMEL-20798: EndpointServiceLocation on components to make it possible to know which remote system Camel connects to to assist for monitoring and observability - Google Mail/Mail Stream Signed-off-by: Andrea Cosentino <anco...@gmail.com> --- .../component/google/mail/GoogleMailEndpoint.java | 25 +++++++++++++++++++++- .../mail/stream/GoogleMailStreamEndpoint.java | 17 ++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailEndpoint.java b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailEndpoint.java index baa21927fe2..baee7164ed9 100644 --- a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailEndpoint.java +++ b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/GoogleMailEndpoint.java @@ -27,11 +27,13 @@ import org.apache.camel.component.google.mail.internal.GoogleMailApiCollection; import org.apache.camel.component.google.mail.internal.GoogleMailApiName; import org.apache.camel.component.google.mail.internal.GoogleMailConstants; import org.apache.camel.component.google.mail.internal.GoogleMailPropertiesHelper; +import org.apache.camel.spi.EndpointServiceLocation; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; import org.apache.camel.support.component.AbstractApiEndpoint; import org.apache.camel.support.component.ApiMethod; import org.apache.camel.support.component.ApiMethodPropertiesHelper; +import org.apache.camel.util.ObjectHelper; /** * Manage messages in Google Mail. @@ -43,7 +45,7 @@ import org.apache.camel.support.component.ApiMethodPropertiesHelper; apiSyntax = "apiName/methodName", consumerPrefix = "consumer", category = { Category.CLOUD, Category.API, Category.MAIL }) -public class GoogleMailEndpoint extends AbstractApiEndpoint<GoogleMailApiName, GoogleMailConfiguration> { +public class GoogleMailEndpoint extends AbstractApiEndpoint<GoogleMailApiName, GoogleMailConfiguration> implements EndpointServiceLocation { private Object apiProxy; @@ -129,4 +131,25 @@ public class GoogleMailEndpoint extends AbstractApiEndpoint<GoogleMailApiName, G public void setClientFactory(GoogleMailClientFactory clientFactory) { ((GoogleMailComponent) getComponent()).setClientFactory(clientFactory); } + + @Override + public String getServiceUrl() { + if (ObjectHelper.isNotEmpty(ObjectHelper.isNotEmpty(configuration.getApiName()) && ObjectHelper.isNotEmpty(configuration.getMethodName()))) { + return getServiceProtocol() + ":" + configuration.getApiName() + ":" + configuration.getMethodName(); + } + return null; + } + + @Override + public String getServiceProtocol() { + return "mail"; + } + + @Override + public Map<String, String> getServiceMetadata() { + if (configuration.getApplicationName() != null) { + return Map.of("applicationName", configuration.getApplicationName()); + } + return null; + } } diff --git a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamEndpoint.java b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamEndpoint.java index 0e8c1983ffe..26d98407124 100644 --- a/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamEndpoint.java +++ b/components/camel-google/camel-google-mail/src/main/java/org/apache/camel/component/google/mail/stream/GoogleMailStreamEndpoint.java @@ -18,6 +18,7 @@ package org.apache.camel.component.google.mail.stream; import java.util.ArrayList; import java.util.List; +import java.util.Map; import com.google.api.services.gmail.Gmail; import com.google.api.services.gmail.model.Label; @@ -28,6 +29,7 @@ import org.apache.camel.Consumer; import org.apache.camel.Processor; import org.apache.camel.Producer; import org.apache.camel.component.google.mail.GoogleMailClientFactory; +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.ObjectHelper; syntax = "google-mail-stream:index", consumerOnly = true, category = { Category.CLOUD, Category.MAIL }, headersClass = GoogleMailStreamConstants.class) -public class GoogleMailStreamEndpoint extends ScheduledPollEndpoint { +public class GoogleMailStreamEndpoint extends ScheduledPollEndpoint implements EndpointServiceLocation { @UriParam private GoogleMailStreamConfiguration configuration; @@ -104,4 +106,17 @@ public class GoogleMailStreamEndpoint extends ScheduledPollEndpoint { private List<String> splitLabels(String labels) { return Splitter.on(',').splitToList(labels); } + + @Override + public String getServiceUrl() { + if (ObjectHelper.isNotEmpty(ObjectHelper.isNotEmpty(configuration.getApplicationName()) && ObjectHelper.isNotEmpty(configuration.getIndex()))) { + return getServiceProtocol() + ":" + configuration.getApplicationName() + ":" + configuration.getIndex(); + } + return null; + } + + @Override + public String getServiceProtocol() { + return "mail-stream"; + } }