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

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

commit eb6cf300575129304b18646eb97dc8e071b4cafe
Author: Andrea Cosentino <[email protected]>
AuthorDate: Mon Mar 23 14:44:18 2026 +0100

    CAMEL-23232 - Camel-Azure components: Standardize CredentialType enums 
across all Azure components
    
    Create a new camel-azure-common module with a unified CredentialType
    enum containing all 10 credential types (SHARED_KEY_CREDENTIAL,
    SHARED_ACCOUNT_KEY, AZURE_IDENTITY, AZURE_SAS, CONNECTION_STRING,
    CLIENT_SECRET, TOKEN_CREDENTIAL, SERVICE_CLIENT_INSTANCE, ACCESS_KEY,
    FUNCTION_KEY) with a component support matrix in the javadoc.
    
    Deprecate the 10 component-specific CredentialType enums in cosmosdb,
    eventhubs, files, key-vault, servicebus, storage-blob, storage-datalake,
    storage-queue, eventgrid, and functions with @Deprecated(since="4.19.0")
    pointing to the shared enum.
    
    Add migration guide entry to camel-4x-upgrade-guide-4_19.adoc.
    URI-based configuration requires no changes; Java API users only need
    to update the import statement.
    
    Signed-off-by: Andrea Cosentino <[email protected]>
---
 .../pom.xml                                        |  26 ++---
 .../services/org/apache/camel/other.properties     |   7 ++
 .../src/generated/resources/azure-common.json      |  15 +++
 .../component/azure/common/CredentialType.java     | 120 +++++++++++++++++++++
 .../component/azure/common/CredentialTypeTest.java |  53 +++++++++
 .../camel-azure/camel-azure-cosmosdb/pom.xml       |   4 +
 .../component/azure/cosmosdb/CredentialType.java   |   4 +
 .../camel-azure/camel-azure-eventgrid/pom.xml      |   4 +
 .../component/azure/eventgrid/CredentialType.java  |   4 +
 .../camel-azure/camel-azure-eventhubs/pom.xml      |   4 +
 .../component/azure/eventhubs/CredentialType.java  |   4 +
 components/camel-azure/camel-azure-files/pom.xml   |   4 +
 .../camel/component/file/azure/CredentialType.java |   4 +
 .../camel-azure/camel-azure-functions/pom.xml      |   4 +
 .../component/azure/functions/CredentialType.java  |   3 +
 .../camel-azure/camel-azure-key-vault/pom.xml      |   4 +
 .../component/azure/key/vault/CredentialType.java  |   4 +
 .../camel-azure/camel-azure-servicebus/pom.xml     |   4 +
 .../component/azure/servicebus/CredentialType.java |   4 +
 .../camel-azure/camel-azure-storage-blob/pom.xml   |   4 +
 .../azure/storage/blob/CredentialType.java         |   4 +
 .../camel-azure-storage-datalake/pom.xml           |   4 +
 .../azure/storage/datalake/CredentialType.java     |   4 +
 .../camel-azure/camel-azure-storage-queue/pom.xml  |   4 +
 .../azure/storage/queue/CredentialType.java        |   4 +
 components/camel-azure/pom.xml                     |   1 +
 coverage/pom.xml                                   |   5 +
 .../ROOT/pages/camel-4x-upgrade-guide-4_19.adoc    |  25 +++++
 parent/pom.xml                                     |   5 +
 .../camel/maven/packaging/PrepareCatalogMojo.java  |   1 +
 30 files changed, 319 insertions(+), 18 deletions(-)

diff --git a/components/camel-azure/camel-azure-files/pom.xml 
b/components/camel-azure/camel-azure-common/pom.xml
similarity index 67%
copy from components/camel-azure/camel-azure-files/pom.xml
copy to components/camel-azure/camel-azure-common/pom.xml
index 3f83a71f4574..e8ba192290cc 100644
--- a/components/camel-azure/camel-azure-files/pom.xml
+++ b/components/camel-azure/camel-azure-common/pom.xml
@@ -18,6 +18,7 @@
 
 -->
 <project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
@@ -26,31 +27,20 @@
         <version>4.19.0-SNAPSHOT</version>
     </parent>
 
-    <artifactId>camel-azure-files</artifactId>
+    <artifactId>camel-azure-common</artifactId>
     <packaging>jar</packaging>
-    <name>Camel :: Azure :: Files</name>
-    <description>Camel Azure Files Component</description>
+    <name>Camel :: Azure :: Common</name>
+    <description>Camel Azure Common utilities shared across Azure 
components</description>
 
     <properties>
-        <supportLevel>Preview</supportLevel>
+        <firstVersion>4.19.0</firstVersion>
+        <label>cloud,azure</label>
     </properties>
 
     <dependencies>
         <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-ftp</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.azure</groupId>
-            <artifactId>azure-storage-file-share</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.azure</groupId>
-            <artifactId>azure-identity</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-test-junit6</artifactId>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git 
a/components/camel-azure/camel-azure-common/src/generated/resources/META-INF/services/org/apache/camel/other.properties
 
b/components/camel-azure/camel-azure-common/src/generated/resources/META-INF/services/org/apache/camel/other.properties
new file mode 100644
index 000000000000..c075213acda5
--- /dev/null
+++ 
b/components/camel-azure/camel-azure-common/src/generated/resources/META-INF/services/org/apache/camel/other.properties
@@ -0,0 +1,7 @@
+# Generated by camel build tools - do NOT edit this file!
+name=azure-common
+groupId=org.apache.camel
+artifactId=camel-azure-common
+version=4.19.0-SNAPSHOT
+projectName=Camel :: Azure :: Common
+projectDescription=Camel Azure Common utilities shared across Azure components
diff --git 
a/components/camel-azure/camel-azure-common/src/generated/resources/azure-common.json
 
b/components/camel-azure/camel-azure-common/src/generated/resources/azure-common.json
new file mode 100644
index 000000000000..43ec2e55f3b5
--- /dev/null
+++ 
b/components/camel-azure/camel-azure-common/src/generated/resources/azure-common.json
@@ -0,0 +1,15 @@
+{
+  "other": {
+    "kind": "other",
+    "name": "azure-common",
+    "title": "Azure Common",
+    "description": "Camel Azure Common utilities shared across Azure 
components",
+    "deprecated": false,
+    "firstVersion": "4.19.0",
+    "label": "cloud,azure",
+    "supportLevel": "Preview",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-azure-common",
+    "version": "4.19.0-SNAPSHOT"
+  }
+}
diff --git 
a/components/camel-azure/camel-azure-common/src/main/java/org/apache/camel/component/azure/common/CredentialType.java
 
b/components/camel-azure/camel-azure-common/src/main/java/org/apache/camel/component/azure/common/CredentialType.java
new file mode 100644
index 000000000000..43b6535b3b08
--- /dev/null
+++ 
b/components/camel-azure/camel-azure-common/src/main/java/org/apache/camel/component/azure/common/CredentialType.java
@@ -0,0 +1,120 @@
+/*
+ * 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.component.azure.common;
+
+/**
+ * Unified credential type enum shared across all Azure components.
+ * <p>
+ * Not all credential types are supported by every Azure component. The 
following table shows which credential types are
+ * supported by each component:
+ * <table>
+ * <caption>Credential type support matrix</caption>
+ * <tr>
+ * <th>Credential Type</th>
+ * <th>Components</th>
+ * </tr>
+ * <tr>
+ * <td>{@link #AZURE_IDENTITY}</td>
+ * <td>All Azure components</td>
+ * </tr>
+ * <tr>
+ * <td>{@link #SHARED_ACCOUNT_KEY}</td>
+ * <td>storage-blob, storage-queue, cosmosdb, files</td>
+ * </tr>
+ * <tr>
+ * <td>{@link #SHARED_KEY_CREDENTIAL}</td>
+ * <td>storage-blob, storage-datalake, storage-queue</td>
+ * </tr>
+ * <tr>
+ * <td>{@link #AZURE_SAS}</td>
+ * <td>storage-blob, storage-datalake, files</td>
+ * </tr>
+ * <tr>
+ * <td>{@link #CONNECTION_STRING}</td>
+ * <td>eventhubs, servicebus</td>
+ * </tr>
+ * <tr>
+ * <td>{@link #CLIENT_SECRET}</td>
+ * <td>storage-datalake, key-vault</td>
+ * </tr>
+ * <tr>
+ * <td>{@link #TOKEN_CREDENTIAL}</td>
+ * <td>eventhubs, servicebus, eventgrid, functions</td>
+ * </tr>
+ * <tr>
+ * <td>{@link #ACCESS_KEY}</td>
+ * <td>eventgrid</td>
+ * </tr>
+ * <tr>
+ * <td>{@link #FUNCTION_KEY}</td>
+ * <td>functions</td>
+ * </tr>
+ * <tr>
+ * <td>{@link #SERVICE_CLIENT_INSTANCE}</td>
+ * <td>storage-datalake</td>
+ * </tr>
+ * </table>
+ *
+ * @since 4.19.0
+ */
+public enum CredentialType {
+    /**
+     * Azure Storage shared key credential.
+     *
+     * @see com.azure.storage.common.StorageSharedKeyCredential
+     */
+    SHARED_KEY_CREDENTIAL,
+    /**
+     * Azure Storage shared account key (account name + account key pair).
+     */
+    SHARED_ACCOUNT_KEY,
+    /**
+     * Azure Identity (DefaultAzureCredential). Supports service principal 
with secret/certificate, managed identity,
+     * environment variables, and other credential sources.
+     *
+     * @see com.azure.identity.DefaultAzureCredentialBuilder
+     */
+    AZURE_IDENTITY,
+    /**
+     * Azure Shared Access Signature (SAS) token.
+     */
+    AZURE_SAS,
+    /**
+     * Connection string-based authentication (e.g., for Service Bus, Event 
Hubs).
+     */
+    CONNECTION_STRING,
+    /**
+     * Client secret credential (client ID + tenant ID + client secret).
+     */
+    CLIENT_SECRET,
+    /**
+     * Pre-built token credential instance provided by the user.
+     */
+    TOKEN_CREDENTIAL,
+    /**
+     * Pre-built service client instance provided by the user.
+     */
+    SERVICE_CLIENT_INSTANCE,
+    /**
+     * Access key authentication (e.g., for Event Grid).
+     */
+    ACCESS_KEY,
+    /**
+     * Azure Function key authentication.
+     */
+    FUNCTION_KEY
+}
diff --git 
a/components/camel-azure/camel-azure-common/src/test/java/org/apache/camel/component/azure/common/CredentialTypeTest.java
 
b/components/camel-azure/camel-azure-common/src/test/java/org/apache/camel/component/azure/common/CredentialTypeTest.java
new file mode 100644
index 000000000000..37fafdb4f301
--- /dev/null
+++ 
b/components/camel-azure/camel-azure-common/src/test/java/org/apache/camel/component/azure/common/CredentialTypeTest.java
@@ -0,0 +1,53 @@
+/*
+ * 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.component.azure.common;
+
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+class CredentialTypeTest {
+
+    @Test
+    void testAllCredentialTypesExist() {
+        assertEquals(10, CredentialType.values().length);
+    }
+
+    @Test
+    void testValueOfForAllTypes() {
+        assertNotNull(CredentialType.valueOf("SHARED_KEY_CREDENTIAL"));
+        assertNotNull(CredentialType.valueOf("SHARED_ACCOUNT_KEY"));
+        assertNotNull(CredentialType.valueOf("AZURE_IDENTITY"));
+        assertNotNull(CredentialType.valueOf("AZURE_SAS"));
+        assertNotNull(CredentialType.valueOf("CONNECTION_STRING"));
+        assertNotNull(CredentialType.valueOf("CLIENT_SECRET"));
+        assertNotNull(CredentialType.valueOf("TOKEN_CREDENTIAL"));
+        assertNotNull(CredentialType.valueOf("SERVICE_CLIENT_INSTANCE"));
+        assertNotNull(CredentialType.valueOf("ACCESS_KEY"));
+        assertNotNull(CredentialType.valueOf("FUNCTION_KEY"));
+    }
+
+    @Test
+    void testValueOfMatchesComponentSpecificNames() {
+        // These are the exact same enum value names used in 
component-specific enums,
+        // ensuring backward compatibility when resolving from URI parameter 
strings
+        assertEquals(CredentialType.AZURE_IDENTITY, 
CredentialType.valueOf("AZURE_IDENTITY"));
+        assertEquals(CredentialType.CONNECTION_STRING, 
CredentialType.valueOf("CONNECTION_STRING"));
+        assertEquals(CredentialType.SHARED_ACCOUNT_KEY, 
CredentialType.valueOf("SHARED_ACCOUNT_KEY"));
+    }
+}
diff --git a/components/camel-azure/camel-azure-cosmosdb/pom.xml 
b/components/camel-azure/camel-azure-cosmosdb/pom.xml
index e9f14be76d15..21117b7dc0cd 100644
--- a/components/camel-azure/camel-azure-cosmosdb/pom.xml
+++ b/components/camel-azure/camel-azure-cosmosdb/pom.xml
@@ -36,6 +36,10 @@
     </properties>
 
     <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-azure-common</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-support</artifactId>
diff --git 
a/components/camel-azure/camel-azure-cosmosdb/src/main/java/org/apache/camel/component/azure/cosmosdb/CredentialType.java
 
b/components/camel-azure/camel-azure-cosmosdb/src/main/java/org/apache/camel/component/azure/cosmosdb/CredentialType.java
index 2ee476684bc2..d00266a456e4 100644
--- 
a/components/camel-azure/camel-azure-cosmosdb/src/main/java/org/apache/camel/component/azure/cosmosdb/CredentialType.java
+++ 
b/components/camel-azure/camel-azure-cosmosdb/src/main/java/org/apache/camel/component/azure/cosmosdb/CredentialType.java
@@ -16,6 +16,10 @@
  */
 package org.apache.camel.component.azure.cosmosdb;
 
+/**
+ * @deprecated Use {@link 
org.apache.camel.component.azure.common.CredentialType} instead.
+ */
+@Deprecated(since = "4.19.0")
 public enum CredentialType {
     /**
      * storage shared account key
diff --git a/components/camel-azure/camel-azure-eventgrid/pom.xml 
b/components/camel-azure/camel-azure-eventgrid/pom.xml
index 506d40a57cd0..77c2e2bb850b 100644
--- a/components/camel-azure/camel-azure-eventgrid/pom.xml
+++ b/components/camel-azure/camel-azure-eventgrid/pom.xml
@@ -36,6 +36,10 @@
     </properties>
 
     <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-azure-common</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-support</artifactId>
diff --git 
a/components/camel-azure/camel-azure-eventgrid/src/main/java/org/apache/camel/component/azure/eventgrid/CredentialType.java
 
b/components/camel-azure/camel-azure-eventgrid/src/main/java/org/apache/camel/component/azure/eventgrid/CredentialType.java
index a091748c393e..e756a23a5aaa 100644
--- 
a/components/camel-azure/camel-azure-eventgrid/src/main/java/org/apache/camel/component/azure/eventgrid/CredentialType.java
+++ 
b/components/camel-azure/camel-azure-eventgrid/src/main/java/org/apache/camel/component/azure/eventgrid/CredentialType.java
@@ -16,6 +16,10 @@
  */
 package org.apache.camel.component.azure.eventgrid;
 
+/**
+ * @deprecated Use {@link 
org.apache.camel.component.azure.common.CredentialType} instead.
+ */
+@Deprecated(since = "4.19.0")
 public enum CredentialType {
     /**
      * EventGrid Access Key
diff --git a/components/camel-azure/camel-azure-eventhubs/pom.xml 
b/components/camel-azure/camel-azure-eventhubs/pom.xml
index 767447e25d73..2c3b5dff5fa4 100644
--- a/components/camel-azure/camel-azure-eventhubs/pom.xml
+++ b/components/camel-azure/camel-azure-eventhubs/pom.xml
@@ -36,6 +36,10 @@
     </properties>
 
     <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-azure-common</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-support</artifactId>
diff --git 
a/components/camel-azure/camel-azure-eventhubs/src/main/java/org/apache/camel/component/azure/eventhubs/CredentialType.java
 
b/components/camel-azure/camel-azure-eventhubs/src/main/java/org/apache/camel/component/azure/eventhubs/CredentialType.java
index f3d9bff9b58a..9631881ee86b 100644
--- 
a/components/camel-azure/camel-azure-eventhubs/src/main/java/org/apache/camel/component/azure/eventhubs/CredentialType.java
+++ 
b/components/camel-azure/camel-azure-eventhubs/src/main/java/org/apache/camel/component/azure/eventhubs/CredentialType.java
@@ -16,6 +16,10 @@
  */
 package org.apache.camel.component.azure.eventhubs;
 
+/**
+ * @deprecated Use {@link 
org.apache.camel.component.azure.common.CredentialType} instead.
+ */
+@Deprecated(since = "4.19.0")
 public enum CredentialType {
     /**
      * Eventhubs Connection String
diff --git a/components/camel-azure/camel-azure-files/pom.xml 
b/components/camel-azure/camel-azure-files/pom.xml
index 3f83a71f4574..72a87b060a14 100644
--- a/components/camel-azure/camel-azure-files/pom.xml
+++ b/components/camel-azure/camel-azure-files/pom.xml
@@ -36,6 +36,10 @@
     </properties>
 
     <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-azure-common</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-ftp</artifactId>
diff --git 
a/components/camel-azure/camel-azure-files/src/main/java/org/apache/camel/component/file/azure/CredentialType.java
 
b/components/camel-azure/camel-azure-files/src/main/java/org/apache/camel/component/file/azure/CredentialType.java
index d251cb9f6fcc..dcfcda9e2aaf 100644
--- 
a/components/camel-azure/camel-azure-files/src/main/java/org/apache/camel/component/file/azure/CredentialType.java
+++ 
b/components/camel-azure/camel-azure-files/src/main/java/org/apache/camel/component/file/azure/CredentialType.java
@@ -16,6 +16,10 @@
  */
 package org.apache.camel.component.file.azure;
 
+/**
+ * @deprecated Use {@link 
org.apache.camel.component.azure.common.CredentialType} instead.
+ */
+@Deprecated(since = "4.19.0")
 public enum CredentialType {
     SHARED_ACCOUNT_KEY,
     /**
diff --git a/components/camel-azure/camel-azure-functions/pom.xml 
b/components/camel-azure/camel-azure-functions/pom.xml
index 008f6c531dbf..47ff1e9051ff 100644
--- a/components/camel-azure/camel-azure-functions/pom.xml
+++ b/components/camel-azure/camel-azure-functions/pom.xml
@@ -33,6 +33,10 @@
     <description>Camel Azure Functions Component</description>
 
     <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-azure-common</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-support</artifactId>
diff --git 
a/components/camel-azure/camel-azure-functions/src/main/java/org/apache/camel/component/azure/functions/CredentialType.java
 
b/components/camel-azure/camel-azure-functions/src/main/java/org/apache/camel/component/azure/functions/CredentialType.java
index 7bae8a349248..450fd8fddf0f 100644
--- 
a/components/camel-azure/camel-azure-functions/src/main/java/org/apache/camel/component/azure/functions/CredentialType.java
+++ 
b/components/camel-azure/camel-azure-functions/src/main/java/org/apache/camel/component/azure/functions/CredentialType.java
@@ -18,7 +18,10 @@ package org.apache.camel.component.azure.functions;
 
 /**
  * Determines the credential strategy to use for Azure Functions operations.
+ *
+ * @deprecated Use {@link 
org.apache.camel.component.azure.common.CredentialType} instead.
  */
+@Deprecated(since = "4.19.0")
 public enum CredentialType {
     /**
      * Uses DefaultAzureCredential for automatic credential chain. Supports 
environment variables, managed identity,
diff --git a/components/camel-azure/camel-azure-key-vault/pom.xml 
b/components/camel-azure/camel-azure-key-vault/pom.xml
index 9f0c8b0a8c34..dbd8798ef994 100644
--- a/components/camel-azure/camel-azure-key-vault/pom.xml
+++ b/components/camel-azure/camel-azure-key-vault/pom.xml
@@ -36,6 +36,10 @@
     </properties>
 
     <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-azure-common</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-support</artifactId>
diff --git 
a/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/CredentialType.java
 
b/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/CredentialType.java
index 8c8b294a98a3..4182186b373d 100644
--- 
a/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/CredentialType.java
+++ 
b/components/camel-azure/camel-azure-key-vault/src/main/java/org/apache/camel/component/azure/key/vault/CredentialType.java
@@ -16,6 +16,10 @@
  */
 package org.apache.camel.component.azure.key.vault;
 
+/**
+ * @deprecated Use {@link 
org.apache.camel.component.azure.common.CredentialType} instead.
+ */
+@Deprecated(since = "4.19.0")
 public enum CredentialType {
     /**
      * Client Secret Credential
diff --git a/components/camel-azure/camel-azure-servicebus/pom.xml 
b/components/camel-azure/camel-azure-servicebus/pom.xml
index 63559d4caefd..9ba53064ea00 100644
--- a/components/camel-azure/camel-azure-servicebus/pom.xml
+++ b/components/camel-azure/camel-azure-servicebus/pom.xml
@@ -36,6 +36,10 @@
     </properties>
 
     <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-azure-common</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-support</artifactId>
diff --git 
a/components/camel-azure/camel-azure-servicebus/src/main/java/org/apache/camel/component/azure/servicebus/CredentialType.java
 
b/components/camel-azure/camel-azure-servicebus/src/main/java/org/apache/camel/component/azure/servicebus/CredentialType.java
index 7a0cd4a6899c..a3ee00ebf433 100644
--- 
a/components/camel-azure/camel-azure-servicebus/src/main/java/org/apache/camel/component/azure/servicebus/CredentialType.java
+++ 
b/components/camel-azure/camel-azure-servicebus/src/main/java/org/apache/camel/component/azure/servicebus/CredentialType.java
@@ -16,6 +16,10 @@
  */
 package org.apache.camel.component.azure.servicebus;
 
+/**
+ * @deprecated Use {@link 
org.apache.camel.component.azure.common.CredentialType} instead.
+ */
+@Deprecated(since = "4.19.0")
 public enum CredentialType {
     /**
      * Servicebus Connection String
diff --git a/components/camel-azure/camel-azure-storage-blob/pom.xml 
b/components/camel-azure/camel-azure-storage-blob/pom.xml
index d1041a9e9e99..dfb161fe8653 100644
--- a/components/camel-azure/camel-azure-storage-blob/pom.xml
+++ b/components/camel-azure/camel-azure-storage-blob/pom.xml
@@ -41,6 +41,10 @@
     </properties>
 
     <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-azure-common</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-support</artifactId>
diff --git 
a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/CredentialType.java
 
b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/CredentialType.java
index cc7f10991c5e..f97643d11dc1 100644
--- 
a/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/CredentialType.java
+++ 
b/components/camel-azure/camel-azure-storage-blob/src/main/java/org/apache/camel/component/azure/storage/blob/CredentialType.java
@@ -16,6 +16,10 @@
  */
 package org.apache.camel.component.azure.storage.blob;
 
+/**
+ * @deprecated Use {@link 
org.apache.camel.component.azure.common.CredentialType} instead.
+ */
+@Deprecated(since = "4.19.0")
 public enum CredentialType {
     /**
      * Shared key credential
diff --git a/components/camel-azure/camel-azure-storage-datalake/pom.xml 
b/components/camel-azure/camel-azure-storage-datalake/pom.xml
index a0413132d999..0e990ad86745 100644
--- a/components/camel-azure/camel-azure-storage-datalake/pom.xml
+++ b/components/camel-azure/camel-azure-storage-datalake/pom.xml
@@ -33,6 +33,10 @@
     <description>Camel Azure Datalake Component</description>
 
     <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-azure-common</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-support</artifactId>
diff --git 
a/components/camel-azure/camel-azure-storage-datalake/src/main/java/org/apache/camel/component/azure/storage/datalake/CredentialType.java
 
b/components/camel-azure/camel-azure-storage-datalake/src/main/java/org/apache/camel/component/azure/storage/datalake/CredentialType.java
index 676aed072414..91045f371cc4 100644
--- 
a/components/camel-azure/camel-azure-storage-datalake/src/main/java/org/apache/camel/component/azure/storage/datalake/CredentialType.java
+++ 
b/components/camel-azure/camel-azure-storage-datalake/src/main/java/org/apache/camel/component/azure/storage/datalake/CredentialType.java
@@ -16,6 +16,10 @@
  */
 package org.apache.camel.component.azure.storage.datalake;
 
+/**
+ * @deprecated Use {@link 
org.apache.camel.component.azure.common.CredentialType} instead.
+ */
+@Deprecated(since = "4.19.0")
 public enum CredentialType {
     /**
      * Shared key credential
diff --git a/components/camel-azure/camel-azure-storage-queue/pom.xml 
b/components/camel-azure/camel-azure-storage-queue/pom.xml
index d383b3ee324d..311f68ef8842 100644
--- a/components/camel-azure/camel-azure-storage-queue/pom.xml
+++ b/components/camel-azure/camel-azure-storage-queue/pom.xml
@@ -41,6 +41,10 @@
     </properties>
 
     <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-azure-common</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-support</artifactId>
diff --git 
a/components/camel-azure/camel-azure-storage-queue/src/main/java/org/apache/camel/component/azure/storage/queue/CredentialType.java
 
b/components/camel-azure/camel-azure-storage-queue/src/main/java/org/apache/camel/component/azure/storage/queue/CredentialType.java
index c34ebbeb9296..528d82de7183 100644
--- 
a/components/camel-azure/camel-azure-storage-queue/src/main/java/org/apache/camel/component/azure/storage/queue/CredentialType.java
+++ 
b/components/camel-azure/camel-azure-storage-queue/src/main/java/org/apache/camel/component/azure/storage/queue/CredentialType.java
@@ -16,6 +16,10 @@
  */
 package org.apache.camel.component.azure.storage.queue;
 
+/**
+ * @deprecated Use {@link 
org.apache.camel.component.azure.common.CredentialType} instead.
+ */
+@Deprecated(since = "4.19.0")
 public enum CredentialType {
     /**
      * Shared key credential
diff --git a/components/camel-azure/pom.xml b/components/camel-azure/pom.xml
index bcf08acc86e8..1f933557735b 100644
--- a/components/camel-azure/pom.xml
+++ b/components/camel-azure/pom.xml
@@ -45,6 +45,7 @@
     </dependencyManagement>
 
     <modules>
+        <module>camel-azure-common</module>
         <module>camel-azure-eventhubs</module>
         <module>camel-azure-eventgrid</module>
         <module>camel-azure-storage-blob</module>
diff --git a/coverage/pom.xml b/coverage/pom.xml
index 0ad772205afd..8a1f698bb057 100644
--- a/coverage/pom.xml
+++ b/coverage/pom.xml
@@ -466,6 +466,11 @@
             <artifactId>camel-aws2-translate</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-azure-common</artifactId>
+            <version>${project.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-azure-cosmosdb</artifactId>
diff --git 
a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_19.adoc 
b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_19.adoc
index 411bea6e0528..5094008b1b78 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_19.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_19.adoc
@@ -430,6 +430,31 @@ you will need to add the `camel-ftp-common` dependency to 
your project:
 </dependency>
 ----
 
+=== camel-azure (CredentialType standardization)
+
+The component-specific `CredentialType` enums in all Azure components have 
been deprecated in favor of a single shared
+`org.apache.camel.component.azure.common.CredentialType` enum in the new 
`camel-azure-common` module. This shared enum
+contains the union of all credential types across all Azure components.
+
+If you reference `CredentialType` in Java code, update your imports:
+
+Before:
+[source,java]
+----
+import org.apache.camel.component.azure.storage.blob.CredentialType;
+----
+
+After:
+[source,java]
+----
+import org.apache.camel.component.azure.common.CredentialType;
+----
+
+URI-based configuration (e.g., `credentialType=AZURE_IDENTITY`) requires no 
changes, as the enum value names are identical.
+
+The deprecated component-specific enums will be removed in a future release. 
The new `camel-azure-common` module is
+automatically included as a transitive dependency of all Azure components.
+
 === camel-quickfix
 
 Upgraded QuickFixJ from 2.3.2 to 3.0.0 in `camel-quickfix` component.
diff --git a/parent/pom.xml b/parent/pom.xml
index 891f9e99f8af..5f49fa329f6f 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -992,6 +992,11 @@
                 <artifactId>camel-aws2-translate</artifactId>
                 <version>${project.version}</version>
             </dependency>
+            <dependency>
+                <groupId>org.apache.camel</groupId>
+                <artifactId>camel-azure-common</artifactId>
+                <version>${project.version}</version>
+            </dependency>
             <dependency>
                 <groupId>org.apache.camel</groupId>
                 <artifactId>camel-azure-cosmosdb</artifactId>
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java
 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java
index 57eb38d4bbd2..ac0515a96e51 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCatalogMojo.java
@@ -932,6 +932,7 @@ public class PrepareCatalogMojo extends AbstractMojo {
                 case "camel-aws":
                 case "camel-aws-common":
                 case "camel-azure":
+                case "camel-azure-common":
                 case "camel-box":
                 case "camel-cxf":
                 case "camel-debezium":

Reply via email to