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 74d74d6de98b0951be3ca01fde81330786615f60 Author: Andrea Cosentino <anco...@gmail.com> AuthorDate: Fri Jun 28 11:09:07 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 Sheets/Sheets Stream Signed-off-by: Andrea Cosentino <anco...@gmail.com> --- .../google/sheets/GoogleSheetsEndpoint.java | 25 +++++++++++++++++++++- .../sheets/stream/GoogleSheetsStreamEndpoint.java | 17 ++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsEndpoint.java b/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsEndpoint.java index 0c493811d86..af14eeab322 100644 --- a/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsEndpoint.java +++ b/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsEndpoint.java @@ -27,11 +27,13 @@ import org.apache.camel.component.google.sheets.internal.GoogleSheetsApiCollecti import org.apache.camel.component.google.sheets.internal.GoogleSheetsApiName; import org.apache.camel.component.google.sheets.internal.GoogleSheetsConstants; import org.apache.camel.component.google.sheets.internal.GoogleSheetsPropertiesHelper; +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 spreadsheets in Google Sheets. @@ -39,7 +41,7 @@ import org.apache.camel.support.component.ApiMethodPropertiesHelper; @UriEndpoint(firstVersion = "2.23.0", scheme = "google-sheets", title = "Google Sheets", syntax = "google-sheets:apiName/methodName", apiSyntax = "apiName/methodName", category = { Category.CLOUD, Category.DOCUMENT }) -public class GoogleSheetsEndpoint extends AbstractApiEndpoint<GoogleSheetsApiName, GoogleSheetsConfiguration> { +public class GoogleSheetsEndpoint extends AbstractApiEndpoint<GoogleSheetsApiName, GoogleSheetsConfiguration> implements EndpointServiceLocation { @UriParam private GoogleSheetsConfiguration configuration; @@ -109,4 +111,25 @@ public class GoogleSheetsEndpoint extends AbstractApiEndpoint<GoogleSheetsApiNam public void setClientFactory(GoogleSheetsClientFactory clientFactory) { ((GoogleSheetsComponent) 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 "sheets"; + } + + @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-sheets/src/main/java/org/apache/camel/component/google/sheets/stream/GoogleSheetsStreamEndpoint.java b/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/stream/GoogleSheetsStreamEndpoint.java index 718e47e6594..768ad66b948 100644 --- a/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/stream/GoogleSheetsStreamEndpoint.java +++ b/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/stream/GoogleSheetsStreamEndpoint.java @@ -22,9 +22,11 @@ import org.apache.camel.Consumer; import org.apache.camel.Processor; import org.apache.camel.Producer; import org.apache.camel.component.google.sheets.GoogleSheetsClientFactory; +import org.apache.camel.spi.EndpointServiceLocation; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; import org.apache.camel.support.ScheduledPollEndpoint; +import org.apache.camel.util.ObjectHelper; /** * Poll for changes in Google Sheets. @@ -35,7 +37,7 @@ import org.apache.camel.support.ScheduledPollEndpoint; syntax = "google-sheets-stream:spreadsheetId", consumerOnly = true, category = { Category.CLOUD, Category.DOCUMENT }, headersClass = GoogleSheetsStreamConstants.class) -public class GoogleSheetsStreamEndpoint extends ScheduledPollEndpoint { +public class GoogleSheetsStreamEndpoint extends ScheduledPollEndpoint implements EndpointServiceLocation { @UriParam private GoogleSheetsStreamConfiguration configuration; @@ -74,4 +76,17 @@ public class GoogleSheetsStreamEndpoint extends ScheduledPollEndpoint { return configuration; } + @Override + public String getServiceUrl() { + if (ObjectHelper.isNotEmpty(ObjectHelper.isNotEmpty(configuration.getApplicationName()) && ObjectHelper.isNotEmpty(configuration.getSpreadsheetId()))) { + return getServiceProtocol() + ":" + configuration.getApplicationName() + ":" + configuration.getSpreadsheetId(); + } + return null; + } + + @Override + public String getServiceProtocol() { + return "sheets-stream"; + } + }