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
The following commit(s) were added to refs/heads/main by this push:
new b5885f37065f CAMEL-23042 - Generalize Google services authentication
with common module - Google Pubsub (#21604)
b5885f37065f is described below
commit b5885f37065f8e3928a080adc9ae0ebcc324f04e
Author: Andrea Cosentino <[email protected]>
AuthorDate: Thu Feb 26 10:25:11 2026 +0100
CAMEL-23042 - Generalize Google services authentication with common module
- Google Pubsub (#21604)
Signed-off-by: Andrea Cosentino <[email protected]>
---
components/camel-google/camel-google-pubsub/pom.xml | 4 ++++
.../google/pubsub/GooglePubsubComponent.java | 21 +++++++--------------
.../google/pubsub/GooglePubsubEndpoint.java | 6 +++++-
3 files changed, 16 insertions(+), 15 deletions(-)
diff --git a/components/camel-google/camel-google-pubsub/pom.xml
b/components/camel-google/camel-google-pubsub/pom.xml
index 179c1110ee78..faed915579e0 100644
--- a/components/camel-google/camel-google-pubsub/pom.xml
+++ b/components/camel-google/camel-google-pubsub/pom.xml
@@ -48,6 +48,10 @@
</properties>
<dependencies>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-google-common</artifactId>
+ </dependency>
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-support</artifactId>
diff --git
a/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubComponent.java
b/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubComponent.java
index fd2fe9c00dff..55b04aefb329 100644
---
a/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubComponent.java
+++
b/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubComponent.java
@@ -32,8 +32,7 @@ import com.google.api.gax.grpc.GrpcTransportChannel;
import com.google.api.gax.rpc.FixedTransportChannelProvider;
import com.google.api.gax.rpc.StatusCode;
import com.google.api.gax.rpc.TransportChannelProvider;
-import com.google.auth.oauth2.GoogleCredentials;
-import com.google.auth.oauth2.ServiceAccountCredentials;
+import com.google.auth.Credentials;
import com.google.cloud.pubsub.v1.MessageReceiver;
import com.google.cloud.pubsub.v1.Publisher;
import com.google.cloud.pubsub.v1.Subscriber;
@@ -47,11 +46,10 @@ import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder;
import org.apache.camel.Endpoint;
import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.component.google.common.GoogleCredentialsHelper;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.annotations.Component;
import org.apache.camel.support.HeaderFilterStrategyComponent;
-import org.apache.camel.support.ResourceHelper;
-import org.apache.camel.util.ObjectHelper;
import org.apache.camel.util.StringHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -216,18 +214,13 @@ public class GooglePubsubComponent extends
HeaderFilterStrategyComponent {
}
private CredentialsProvider getCredentialsProvider(GooglePubsubEndpoint
endpoint) throws IOException {
- CredentialsProvider credentialsProvider;
-
- if (endpoint.isAuthenticate()) {
- credentialsProvider =
FixedCredentialsProvider.create(ObjectHelper.isEmpty(endpoint.getServiceAccountKey())
- ? GoogleCredentials.getApplicationDefault() :
ServiceAccountCredentials.fromStream(ResourceHelper
-
.resolveMandatoryResourceAsInputStream(getCamelContext(),
endpoint.getServiceAccountKey()))
-
.createScoped(PublisherStubSettings.getDefaultServiceScopes()));
- } else {
- credentialsProvider = NoCredentialsProvider.create();
+ if (!endpoint.isAuthenticate()) {
+ return NoCredentialsProvider.create();
}
- return credentialsProvider;
+ Credentials credentials = GoogleCredentialsHelper.getCredentials(
+ getCamelContext(), endpoint,
PublisherStubSettings.getDefaultServiceScopes());
+ return FixedCredentialsProvider.create(credentials);
}
public String getEndpoint() {
diff --git
a/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubEndpoint.java
b/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubEndpoint.java
index 2fdec64f2e7c..ec876c0d3d39 100644
---
a/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubEndpoint.java
+++
b/components/camel-google/camel-google-pubsub/src/main/java/org/apache/camel/component/google/pubsub/GooglePubsubEndpoint.java
@@ -26,6 +26,7 @@ import org.apache.camel.Consumer;
import org.apache.camel.ExchangePattern;
import org.apache.camel.Processor;
import org.apache.camel.Producer;
+import org.apache.camel.component.google.common.GoogleCommonConfiguration;
import
org.apache.camel.component.google.pubsub.serializer.DefaultGooglePubsubSerializer;
import
org.apache.camel.component.google.pubsub.serializer.GooglePubsubSerializer;
import org.apache.camel.spi.*;
@@ -42,7 +43,8 @@ import org.slf4j.LoggerFactory;
@UriEndpoint(firstVersion = "2.19.0", scheme = "google-pubsub", title =
"Google Pubsub",
syntax = "google-pubsub:projectId:destinationName", category = {
Category.CLOUD, Category.MESSAGING },
headersClass = GooglePubsubConstants.class)
-public class GooglePubsubEndpoint extends DefaultEndpoint implements
EndpointServiceLocation, HeaderFilterStrategyAware {
+public class GooglePubsubEndpoint extends DefaultEndpoint
+ implements EndpointServiceLocation, HeaderFilterStrategyAware,
GoogleCommonConfiguration {
private Logger log;
@@ -174,6 +176,7 @@ public class GooglePubsubEndpoint extends DefaultEndpoint
implements EndpointSer
this.loggerId = loggerId;
}
+ @Override
public boolean isAuthenticate() {
return authenticate;
}
@@ -182,6 +185,7 @@ public class GooglePubsubEndpoint extends DefaultEndpoint
implements EndpointSer
this.authenticate = authenticate;
}
+ @Override
public String getServiceAccountKey() {
return serviceAccountKey;
}