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 3e8b7ed56511c502617152235576e34ffbbccd5d
Author: Andrea Cosentino <[email protected]>
AuthorDate: Tue Jul 12 08:19:39 2022 +0200

    CAMEL-18208 - vault: allow to retrieve a specific secret version/revision - 
Google Secret Manager
---
 .../GoogleSecretManagerPropertiesFunction.java     | 24 +++++++++++++++++++---
 1 file changed, 21 insertions(+), 3 deletions(-)

diff --git 
a/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerPropertiesFunction.java
 
b/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerPropertiesFunction.java
index b5d7a6a4470..cc39a04ce2b 100644
--- 
a/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerPropertiesFunction.java
+++ 
b/components/camel-google/camel-google-secret-manager/src/main/java/org/apache/camel/component/google/secret/manager/GoogleSecretManagerPropertiesFunction.java
@@ -130,21 +130,39 @@ public class GoogleSecretManagerPropertiesFunction 
extends ServiceSupport implem
         String subkey = null;
         String returnValue = null;
         String defaultValue = null;
+        String version = null;
         if (remainder.contains("/")) {
             key = StringHelper.before(remainder, "/");
             subkey = StringHelper.after(remainder, "/");
             defaultValue = StringHelper.after(subkey, ":");
+            if (ObjectHelper.isNotEmpty(defaultValue)) {
+                if (defaultValue.contains("@")) {
+                    version = StringHelper.after(defaultValue, "@");
+                    defaultValue = StringHelper.before(defaultValue, "@");
+                }
+            }
             if (subkey.contains(":")) {
                 subkey = StringHelper.before(subkey, ":");
             }
+            if (subkey.contains("@")) {
+                version = StringHelper.after(subkey, "@");
+                subkey = StringHelper.before(subkey, "@");
+            }
         } else if (remainder.contains(":")) {
             key = StringHelper.before(remainder, ":");
             defaultValue = StringHelper.after(remainder, ":");
+            if (remainder.contains("@")) {
+                version = StringHelper.after(remainder, "@");
+                defaultValue = StringHelper.before(defaultValue, "@");
+            }
+        } else {
+            key = StringHelper.before(remainder, "@");
+            version = StringHelper.after(remainder, "@");
         }
 
         if (key != null) {
             try {
-                returnValue = getSecretFromSource(key, subkey, defaultValue);
+                returnValue = getSecretFromSource(key, subkey, defaultValue, 
version);
             } catch (JsonProcessingException e) {
                 throw new RuntimeCamelException("Something went wrong while 
recovering " + key + " from vault");
             }
@@ -154,11 +172,11 @@ public class GoogleSecretManagerPropertiesFunction 
extends ServiceSupport implem
     }
 
     private String getSecretFromSource(
-            String key, String subkey, String defaultValue)
+            String key, String subkey, String defaultValue, String version)
             throws JsonProcessingException {
         String returnValue = null;
         try {
-            SecretVersionName secretVersionName = 
SecretVersionName.of(projectId, key, "latest");
+            SecretVersionName secretVersionName = 
SecretVersionName.of(projectId, key, (ObjectHelper.isNotEmpty(version) ? 
version:"latest"));
             AccessSecretVersionResponse response = 
client.accessSecretVersion(secretVersionName);
             if (ObjectHelper.isNotEmpty(response)) {
                 returnValue = response.getPayload().getData().toStringUtf8();

Reply via email to