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();