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 4d5fcd3ae7663e7b27b271bbed860b37619e7791
Author: Andrea Cosentino <[email protected]>
AuthorDate: Fri Apr 1 12:04:41 2022 +0200

    CAMEL-17686 - Support ability to load properties from Vault/Secrets cloud 
services - Azure Key Vault
---
 .../camel/vault/AzureVaultConfiguration.java       | 78 ++++++++++++++++++++
 .../AwsVaultConfigurationPropertiesConfigurer.java |  6 ++
 ...zureVaultConfigurationPropertiesConfigurer.java | 85 ++++++++++++++++++++++
 .../GcpVaultConfigurationPropertiesConfigurer.java |  6 ++
 ...he.camel.main.AzureVaultConfigurationProperties |  2 +
 ...java => AzureVaultConfigurationProperties.java} | 67 ++++++++---------
 .../camel/main/VaultConfigurationProperties.java   |  1 -
 7 files changed, 211 insertions(+), 34 deletions(-)

diff --git 
a/core/camel-api/src/main/java/org/apache/camel/vault/AzureVaultConfiguration.java
 
b/core/camel-api/src/main/java/org/apache/camel/vault/AzureVaultConfiguration.java
new file mode 100644
index 0000000..e5f74ff
--- /dev/null
+++ 
b/core/camel-api/src/main/java/org/apache/camel/vault/AzureVaultConfiguration.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.vault;
+
+import org.apache.camel.spi.Metadata;
+
+/**
+ * Configuration for access to Azure Key Vault.
+ */
+public class AzureVaultConfiguration extends VaultConfiguration {
+
+    @Metadata
+    private String vaultName;
+    @Metadata(secret = true)
+    private String clientId;
+    @Metadata(secret = true)
+    private String clientSecret;
+    @Metadata(secret = true)
+    private String tenantId;
+
+    /*
+     * The vault Name in Azure Key Vault
+     */
+    public String getVaultName() {
+        return vaultName;
+    }
+
+    public void setVaultName(String vaultName) {
+        this.vaultName = vaultName;
+    }
+
+    /*
+     * The client Id for accessing Azure Key Vault
+     */
+    public String getClientId() {
+        return clientId;
+    }
+
+    public void setClientId(String clientId) {
+        this.clientId = clientId;
+    }
+
+    /*
+     * The client Secret for accessing Azure Key Vault
+     */
+    public String getClientSecret() {
+        return clientSecret;
+    }
+
+    public void setClientSecret(String clientSecret) {
+        this.clientSecret = clientSecret;
+    }
+
+    /*
+     * The Tenant Id for accessing Azure Key Vault
+     */
+    public String getTenantId() {
+        return tenantId;
+    }
+
+    public void setTenantId(String tenantId) {
+        this.tenantId = tenantId;
+    }
+}
diff --git 
a/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationPropertiesConfigurer.java
 
b/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationPropertiesConfigurer.java
index 1727ab3..a2eec11 100644
--- 
a/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationPropertiesConfigurer.java
+++ 
b/core/camel-main/src/generated/java/org/apache/camel/main/AwsVaultConfigurationPropertiesConfigurer.java
@@ -25,6 +25,8 @@ public class AwsVaultConfigurationPropertiesConfigurer 
extends org.apache.camel.
         case "AccessKey": target.setAccessKey(property(camelContext, 
java.lang.String.class, value)); return true;
         case "awsvaultconfiguration":
         case "AwsVaultConfiguration": 
target.setAwsVaultConfiguration(property(camelContext, 
org.apache.camel.vault.AwsVaultConfiguration.class, value)); return true;
+        case "azurevaultconfiguration":
+        case "AzureVaultConfiguration": 
target.setAzureVaultConfiguration(property(camelContext, 
org.apache.camel.vault.AzureVaultConfiguration.class, value)); return true;
         case "defaultcredentialsprovider":
         case "DefaultCredentialsProvider": 
target.setDefaultCredentialsProvider(property(camelContext, boolean.class, 
value)); return true;
         case "gcpvaultconfiguration":
@@ -44,6 +46,8 @@ public class AwsVaultConfigurationPropertiesConfigurer 
extends org.apache.camel.
         case "AccessKey": return java.lang.String.class;
         case "awsvaultconfiguration":
         case "AwsVaultConfiguration": return 
org.apache.camel.vault.AwsVaultConfiguration.class;
+        case "azurevaultconfiguration":
+        case "AzureVaultConfiguration": return 
org.apache.camel.vault.AzureVaultConfiguration.class;
         case "defaultcredentialsprovider":
         case "DefaultCredentialsProvider": return boolean.class;
         case "gcpvaultconfiguration":
@@ -64,6 +68,8 @@ public class AwsVaultConfigurationPropertiesConfigurer 
extends org.apache.camel.
         case "AccessKey": return target.getAccessKey();
         case "awsvaultconfiguration":
         case "AwsVaultConfiguration": return target.getAwsVaultConfiguration();
+        case "azurevaultconfiguration":
+        case "AzureVaultConfiguration": return 
target.getAzureVaultConfiguration();
         case "defaultcredentialsprovider":
         case "DefaultCredentialsProvider": return 
target.isDefaultCredentialsProvider();
         case "gcpvaultconfiguration":
diff --git 
a/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationPropertiesConfigurer.java
 
b/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationPropertiesConfigurer.java
new file mode 100644
index 0000000..53a4d8e
--- /dev/null
+++ 
b/core/camel-main/src/generated/java/org/apache/camel/main/AzureVaultConfigurationPropertiesConfigurer.java
@@ -0,0 +1,85 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.main;
+
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.main.AzureVaultConfigurationProperties;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@SuppressWarnings("unchecked")
+public class AzureVaultConfigurationPropertiesConfigurer extends 
org.apache.camel.support.component.PropertyConfigurerSupport implements 
GeneratedPropertyConfigurer, PropertyConfigurerGetter {
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String 
name, Object value, boolean ignoreCase) {
+        org.apache.camel.main.AzureVaultConfigurationProperties target = 
(org.apache.camel.main.AzureVaultConfigurationProperties) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "awsvaultconfiguration":
+        case "AwsVaultConfiguration": 
target.setAwsVaultConfiguration(property(camelContext, 
org.apache.camel.vault.AwsVaultConfiguration.class, value)); return true;
+        case "azurevaultconfiguration":
+        case "AzureVaultConfiguration": 
target.setAzureVaultConfiguration(property(camelContext, 
org.apache.camel.vault.AzureVaultConfiguration.class, value)); return true;
+        case "clientid":
+        case "ClientId": target.setClientId(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "clientsecret":
+        case "ClientSecret": target.setClientSecret(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "gcpvaultconfiguration":
+        case "GcpVaultConfiguration": 
target.setGcpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
+        case "tenantid":
+        case "TenantId": target.setTenantId(property(camelContext, 
java.lang.String.class, value)); return true;
+        case "vaultname":
+        case "VaultName": target.setVaultName(property(camelContext, 
java.lang.String.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "awsvaultconfiguration":
+        case "AwsVaultConfiguration": return 
org.apache.camel.vault.AwsVaultConfiguration.class;
+        case "azurevaultconfiguration":
+        case "AzureVaultConfiguration": return 
org.apache.camel.vault.AzureVaultConfiguration.class;
+        case "clientid":
+        case "ClientId": return java.lang.String.class;
+        case "clientsecret":
+        case "ClientSecret": return java.lang.String.class;
+        case "gcpvaultconfiguration":
+        case "GcpVaultConfiguration": return 
org.apache.camel.vault.GcpVaultConfiguration.class;
+        case "tenantid":
+        case "TenantId": return java.lang.String.class;
+        case "vaultname":
+        case "VaultName": return java.lang.String.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        org.apache.camel.main.AzureVaultConfigurationProperties target = 
(org.apache.camel.main.AzureVaultConfigurationProperties) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "awsvaultconfiguration":
+        case "AwsVaultConfiguration": return target.getAwsVaultConfiguration();
+        case "azurevaultconfiguration":
+        case "AzureVaultConfiguration": return 
target.getAzureVaultConfiguration();
+        case "clientid":
+        case "ClientId": return target.getClientId();
+        case "clientsecret":
+        case "ClientSecret": return target.getClientSecret();
+        case "gcpvaultconfiguration":
+        case "GcpVaultConfiguration": return target.getGcpVaultConfiguration();
+        case "tenantid":
+        case "TenantId": return target.getTenantId();
+        case "vaultname":
+        case "VaultName": return target.getVaultName();
+        default: return null;
+        }
+    }
+}
+
diff --git 
a/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationPropertiesConfigurer.java
 
b/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationPropertiesConfigurer.java
index 83b3680..617c14f 100644
--- 
a/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationPropertiesConfigurer.java
+++ 
b/core/camel-main/src/generated/java/org/apache/camel/main/GcpVaultConfigurationPropertiesConfigurer.java
@@ -23,6 +23,8 @@ public class GcpVaultConfigurationPropertiesConfigurer 
extends org.apache.camel.
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "awsvaultconfiguration":
         case "AwsVaultConfiguration": 
target.setAwsVaultConfiguration(property(camelContext, 
org.apache.camel.vault.AwsVaultConfiguration.class, value)); return true;
+        case "azurevaultconfiguration":
+        case "AzureVaultConfiguration": 
target.setAzureVaultConfiguration(property(camelContext, 
org.apache.camel.vault.AzureVaultConfiguration.class, value)); return true;
         case "gcpvaultconfiguration":
         case "GcpVaultConfiguration": 
target.setGcpVaultConfiguration(property(camelContext, 
org.apache.camel.vault.GcpVaultConfiguration.class, value)); return true;
         case "projectid":
@@ -40,6 +42,8 @@ public class GcpVaultConfigurationPropertiesConfigurer 
extends org.apache.camel.
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "awsvaultconfiguration":
         case "AwsVaultConfiguration": return 
org.apache.camel.vault.AwsVaultConfiguration.class;
+        case "azurevaultconfiguration":
+        case "AzureVaultConfiguration": return 
org.apache.camel.vault.AzureVaultConfiguration.class;
         case "gcpvaultconfiguration":
         case "GcpVaultConfiguration": return 
org.apache.camel.vault.GcpVaultConfiguration.class;
         case "projectid":
@@ -58,6 +62,8 @@ public class GcpVaultConfigurationPropertiesConfigurer 
extends org.apache.camel.
         switch (ignoreCase ? name.toLowerCase() : name) {
         case "awsvaultconfiguration":
         case "AwsVaultConfiguration": return target.getAwsVaultConfiguration();
+        case "azurevaultconfiguration":
+        case "AzureVaultConfiguration": return 
target.getAzureVaultConfiguration();
         case "gcpvaultconfiguration":
         case "GcpVaultConfiguration": return target.getGcpVaultConfiguration();
         case "projectid":
diff --git 
a/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.main.AzureVaultConfigurationProperties
 
b/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.main.AzureVaultConfigurationProperties
new file mode 100644
index 0000000..70011a4
--- /dev/null
+++ 
b/core/camel-main/src/generated/resources/META-INF/services/org/apache/camel/configurer/org.apache.camel.main.AzureVaultConfigurationProperties
@@ -0,0 +1,2 @@
+# Generated by camel build tools - do NOT edit this file!
+class=org.apache.camel.main.AzureVaultConfigurationPropertiesConfigurer
diff --git 
a/core/camel-main/src/main/java/org/apache/camel/main/VaultConfigurationProperties.java
 
b/core/camel-main/src/main/java/org/apache/camel/main/AzureVaultConfigurationProperties.java
similarity index 55%
copy from 
core/camel-main/src/main/java/org/apache/camel/main/VaultConfigurationProperties.java
copy to 
core/camel-main/src/main/java/org/apache/camel/main/AzureVaultConfigurationProperties.java
index 5fc870f..23d4c0b 100644
--- 
a/core/camel-main/src/main/java/org/apache/camel/main/VaultConfigurationProperties.java
+++ 
b/core/camel-main/src/main/java/org/apache/camel/main/AzureVaultConfigurationProperties.java
@@ -17,17 +17,18 @@
 package org.apache.camel.main;
 
 import org.apache.camel.spi.BootstrapCloseable;
+import org.apache.camel.spi.Configurer;
 import org.apache.camel.vault.AzureVaultConfiguration;
-import org.apache.camel.vault.VaultConfiguration;
 
-public class VaultConfigurationProperties extends VaultConfiguration 
implements BootstrapCloseable {
+/**
+ * Configuration for access to Azure Key Vault Secret.
+ */
+@Configurer(bootstrap = true)
+public class AzureVaultConfigurationProperties extends AzureVaultConfiguration 
implements BootstrapCloseable {
 
     private MainConfigurationProperties parent;
-    private AwsVaultConfigurationProperties aws;
-    private GcpVaultConfigurationProperties gcp;
-    private AzureVaultConfigurationProperties azure;
 
-    public VaultConfigurationProperties(MainConfigurationProperties parent) {
+    public AzureVaultConfigurationProperties(MainConfigurationProperties 
parent) {
         this.parent = parent;
     }
 
@@ -38,15 +39,6 @@ public class VaultConfigurationProperties extends 
VaultConfiguration implements
     @Override
     public void close() {
         parent = null;
-        if (aws != null) {
-            aws.close();
-        }
-        if (gcp != null) {
-            gcp.close();
-        }
-        if (azure != null) {
-            azure.close();
-        }
     }
 
     // getter and setters
@@ -57,27 +49,36 @@ public class VaultConfigurationProperties extends 
VaultConfiguration implements
     // fluent builders
     // --------------------------------------------------------------
 
-    @Override
-    public AwsVaultConfigurationProperties aws() {
-        if (aws == null) {
-            aws = new AwsVaultConfigurationProperties(parent);
-        }
-        return aws;
+    /**
+     * The Vault Name
+     */
+    public AzureVaultConfigurationProperties withVaultName(String vaultName) {
+        setVaultName(vaultName);
+        return this;
     }
 
-    @Override
-    public GcpVaultConfigurationProperties gcp() {
-        if (gcp == null) {
-            gcp = new GcpVaultConfigurationProperties(parent);
-        }
-        return gcp;
+    /**
+     * The Azure Key Vault Client ID
+     */
+    public AzureVaultConfigurationProperties withClientId(String clientId) {
+        setClientId(clientId);
+        return this;
     }
 
-    @Override
-    public AzureVaultConfigurationProperties azure() {
-        if (azure == null) {
-            azure = new AzureVaultConfigurationProperties(parent);
-        }
-        return azure;
+    /**
+     * The Azure Key Vault Client Secret
+     */
+    public AzureVaultConfigurationProperties withClientSecret(String 
clientSecret) {
+        setClientSecret(clientSecret);
+        return this;
     }
+
+    /**
+     * The Azure Key Vault Tenant Id
+     */
+    public AzureVaultConfigurationProperties withTenantId(String tenantId) {
+        setTenantId(tenantId);
+        return this;
+    }
+
 }
diff --git 
a/core/camel-main/src/main/java/org/apache/camel/main/VaultConfigurationProperties.java
 
b/core/camel-main/src/main/java/org/apache/camel/main/VaultConfigurationProperties.java
index 5fc870f..3e93d5d 100644
--- 
a/core/camel-main/src/main/java/org/apache/camel/main/VaultConfigurationProperties.java
+++ 
b/core/camel-main/src/main/java/org/apache/camel/main/VaultConfigurationProperties.java
@@ -17,7 +17,6 @@
 package org.apache.camel.main;
 
 import org.apache.camel.spi.BootstrapCloseable;
-import org.apache.camel.vault.AzureVaultConfiguration;
 import org.apache.camel.vault.VaultConfiguration;
 
 public class VaultConfigurationProperties extends VaultConfiguration 
implements BootstrapCloseable {

Reply via email to