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 396dc87f0ad0a3107cfbade9c1326a092aab7190
Author: Andrea Cosentino <anco...@gmail.com>
AuthorDate: Wed Jul 13 11:54:26 2022 +0200

    CAMEL-18208 - vault: allow to retrieve a specific secret version/revision - 
Azure Key Vault
---
 .../key/vault/KeyVaultPropertiesFunction.java      | 26 +++++++++++++++++++---
 1 file changed, 23 insertions(+), 3 deletions(-)

diff --git 
a/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/KeyVaultPropertiesFunction.java
 
b/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/KeyVaultPropertiesFunction.java
index e1d8c91bea2..506f4c3c203 100644
--- 
a/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/KeyVaultPropertiesFunction.java
+++ 
b/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/KeyVaultPropertiesFunction.java
@@ -128,21 +128,41 @@ public class KeyVaultPropertiesFunction extends 
ServiceSupport implements Proper
         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 {
+            if (remainder.contains("@")) {
+                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");
             }
@@ -152,11 +172,11 @@ public class KeyVaultPropertiesFunction extends 
ServiceSupport implements Proper
     }
 
     private String getSecretFromSource(
-            String key, String subkey, String defaultValue)
+            String key, String subkey, String defaultValue, String version)
             throws JsonProcessingException {
         String returnValue;
         try {
-            KeyVaultSecret secret = client.getSecret(key);
+            KeyVaultSecret secret = client.getSecret(key, 
(ObjectHelper.isNotEmpty(version) ? version : ""));
             returnValue = secret.getValue();
             if (ObjectHelper.isNotEmpty(subkey)) {
                 ObjectMapper mapper = new ObjectMapper();

Reply via email to