This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch 23044-sheets
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 2e68a31c41e7a4c0a7a68cc332315afca461a4b1
Author: Andrea Cosentino <[email protected]>
AuthorDate: Tue Mar 10 10:56:04 2026 +0100

    CAMEL-23044 - Generalize Google services authentication with common module 
- Google Sheets
    
    Signed-off-by: Andrea Cosentino <[email protected]>
---
 .../camel/component/google/common/GoogleCredentialsHelper.java    | 8 ++++++--
 .../component/google/sheets/BatchGoogleSheetsClientFactory.java   | 7 +++----
 .../camel/component/google/sheets/GoogleSheetsComponent.java      | 6 ++----
 .../google/sheets/stream/GoogleSheetsStreamComponent.java         | 6 ++----
 4 files changed, 13 insertions(+), 14 deletions(-)

diff --git 
a/components/camel-google/camel-google-common/src/main/java/org/apache/camel/component/google/common/GoogleCredentialsHelper.java
 
b/components/camel-google/camel-google-common/src/main/java/org/apache/camel/component/google/common/GoogleCredentialsHelper.java
index f0d06e31aff1..1449534d33b4 100644
--- 
a/components/camel-google/camel-google-common/src/main/java/org/apache/camel/component/google/common/GoogleCredentialsHelper.java
+++ 
b/components/camel-google/camel-google-common/src/main/java/org/apache/camel/component/google/common/GoogleCredentialsHelper.java
@@ -150,8 +150,12 @@ public final class GoogleCredentialsHelper {
                     context, serviceAccountKey, scopes, config.getDelegate(), 
transport, factory);
         }
 
-        throw new IllegalArgumentException(
-                "Either OAuth credentials (clientId + clientSecret) or 
serviceAccountKey must be provided");
+        // Fall back to Application Default Credentials
+        GoogleCredential credential = 
GoogleCredential.getApplicationDefault(transport, factory);
+        if (scopes != null && !scopes.isEmpty()) {
+            credential = credential.createScoped(scopes);
+        }
+        return credential;
     }
 
     /**
diff --git 
a/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/BatchGoogleSheetsClientFactory.java
 
b/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/BatchGoogleSheetsClientFactory.java
index 777f2a228202..dd494763f137 100644
--- 
a/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/BatchGoogleSheetsClientFactory.java
+++ 
b/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/BatchGoogleSheetsClientFactory.java
@@ -91,13 +91,12 @@ public class BatchGoogleSheetsClientFactory implements 
GoogleSheetsClientFactory
     public Sheets makeClient(
             CamelContext camelContext, String serviceAccountKey, 
Collection<String> scopes, String applicationName,
             String delegate) {
-        if (serviceAccountKey == null) {
-            throw new IllegalArgumentException("serviceAccountKey is required 
to create Google Sheets client.");
-        }
         try {
             // Create a temporary configuration to use GoogleCredentialsHelper
             GoogleSheetsConfiguration tempConfig = new 
GoogleSheetsConfiguration();
-            tempConfig.setServiceAccountKey(serviceAccountKey);
+            if (serviceAccountKey != null) {
+                tempConfig.setServiceAccountKey(serviceAccountKey);
+            }
             tempConfig.setDelegate(delegate);
 
             Credential credential
diff --git 
a/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsComponent.java
 
b/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsComponent.java
index 8e45c4bc5170..463946c21276 100644
--- 
a/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsComponent.java
+++ 
b/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/GoogleSheetsComponent.java
@@ -57,12 +57,10 @@ public class GoogleSheetsComponent
                 client = getClientFactory().makeClient(config.getClientId(),
                         config.getClientSecret(), config.getScopesAsList(),
                         config.getApplicationName(), config.getRefreshToken(), 
config.getAccessToken());
-            } else if (config.getServiceAccountKey() != null && 
!config.getServiceAccountKey().isBlank()) {
+            } else {
+                // Use service account key or fall back to Application Default 
Credentials
                 client = getClientFactory().makeClient(getCamelContext(), 
config.getServiceAccountKey(),
                         config.getScopesAsList(), config.getApplicationName(), 
config.getDelegate());
-            } else {
-                throw new IllegalArgumentException(
-                        "(clientId and clientSecret) or serviceAccountKey are 
required to create Google Sheets client");
             }
         }
         return client;
diff --git 
a/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/stream/GoogleSheetsStreamComponent.java
 
b/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/stream/GoogleSheetsStreamComponent.java
index 9b7e8b74e915..9a0dfbf74030 100644
--- 
a/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/stream/GoogleSheetsStreamComponent.java
+++ 
b/components/camel-google/camel-google-sheets/src/main/java/org/apache/camel/component/google/sheets/stream/GoogleSheetsStreamComponent.java
@@ -53,12 +53,10 @@ public class GoogleSheetsStreamComponent extends 
HealthCheckComponent {
                 client = getClientFactory().makeClient(config.getClientId(),
                         config.getClientSecret(), config.getScopesAsList(),
                         config.getApplicationName(), config.getRefreshToken(), 
config.getAccessToken());
-            } else if (config.getServiceAccountKey() != null) {
+            } else {
+                // Use service account key or fall back to Application Default 
Credentials
                 client = getClientFactory().makeClient(getCamelContext(), 
config.getServiceAccountKey(),
                         config.getScopesAsList(), config.getApplicationName(), 
config.getDelegate());
-            } else {
-                throw new IllegalArgumentException(
-                        "(clientId and clientSecret) or serviceAccountKey are 
required to create Gmail client");
             }
         }
         return client;

Reply via email to