You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/08/09 19:34:34 UTC

[camel] branch main updated: CAMEL-16852 - Moved ServiceKeys model to camel-huaweicloud-common (#5940)

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

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 08ad7ce  CAMEL-16852 - Moved ServiceKeys model to camel-huaweicloud-common (#5940)
08ad7ce is described below

commit 08ad7ce90ec8a9bdb143747983ed1beaa69377ed
Author: Hokutor <hw...@huawei.com>
AuthorDate: Mon Aug 9 15:34:00 2021 -0400

    CAMEL-16852 - Moved ServiceKeys model to camel-huaweicloud-common (#5940)
    
    * CAMEL-16852 - Moved ServiceKeys model to camel-huaweicloud-common
    
    CAMEL-16852 - Moved ServiceKeys model to camel-huaweicloud-common
    
    * CAMEL-16852 : Updated common package description
    
    CAMEL-16852 : Updated common package description
    
    * CAMEL-16852 - Adding project version to common package dependency
    
    * CAMEL-16852 - Added firstVersion property in common package
    
    CAMEL-16852 - Added firstVersion property in common package
    
    * CAMEL-16852 - Kick off build process again
    
    * CAMEL-16852 - regen
    
    * CAMEL-16852 - regen again
    
    CAMEL-16852 - regen again
    
    * CAMEL-16844 - Regen from mac/linux
    
    CAMEL-16844 - Regen from mac platform/linux
    
    * CAMEL-16844 - Updating  huaweicloud common package in PrepareCatalogMojo EXCLUSION list
---
 .../camel/catalog/docs/hwcloud-obs-component.adoc  | 245 +++++++++++++++++++++
 .../{ => camel-huaweicloud-common}/pom.xml         |  33 +--
 .../services/org/apache/camel/other.properties     |   7 +
 .../generated/resources/huaweicloud-common.json    |  14 ++
 .../huaweicloud/common}/models/ServiceKeys.java    |   2 +-
 .../src/test/resources/log4j2.properties           |  30 +++
 .../camel-huaweicloud-functiongraph/pom.xml        |   6 +
 .../camel/FunctionGraphEndpointConfigurer.java     |   4 +-
 .../org/apache/camel/hwcloud-functiongraph.json    |   2 +-
 .../org/apache/camel/FunctionGraphEndpoint.java    |   2 +-
 .../InvokeFunctionServiceKeyFunctionalTest.java    |   2 +-
 .../apache/camel/InvokeFunctionServiceKeyTest.java |   2 +-
 .../camel-huawei/camel-huaweicloud-iam/pom.xml     |   6 +
 .../huaweicloud/iam/IAMEndpointConfigurer.java     |   4 +-
 .../component/huaweicloud/iam/hwcloud-iam.json     |   2 +-
 .../component/huaweicloud/iam/IAMEndpoint.java     |   2 +-
 .../huaweicloud/iam/models/ServiceKeys.java        |  54 -----
 .../iam/GetGroupUsersFunctionalTest.java           |   2 +-
 .../huaweicloud/iam/GetUserFunctionalTest.java     |   2 +-
 .../component/huaweicloud/iam/GetUserTest.java     |   2 +-
 .../huaweicloud/iam/UpdateGroupFunctionalTest.java |   2 +-
 .../iam/UpdateGroupJsonFunctionalTest.java         |   2 +-
 .../huaweicloud/iam/UpdateGroupJsonTest.java       |   2 +-
 .../component/huaweicloud/iam/UpdateGroupTest.java |   2 +-
 .../camel-huawei/camel-huaweicloud-obs/pom.xml     |   6 +
 .../huaweicloud/obs/OBSEndpointConfigurer.java     |   4 +-
 .../component/huaweicloud/obs/hwcloud-obs.json     |   2 +-
 .../component/huaweicloud/obs/OBSEndpoint.java     |   2 +-
 .../huaweicloud/obs/models/ServiceKeys.java        |  54 -----
 .../huaweicloud/obs/BucketMetadataTest.java        |   2 +-
 .../component/huaweicloud/obs/CheckBucketTest.java |   2 +-
 .../obs/CreateBucketFunctionalTest.java            |   2 +-
 .../obs/CreateBucketJsonFunctionalTest.java        |   2 +-
 .../huaweicloud/obs/CreateBucketJsonTest.java      |   2 +-
 .../obs/CreateBucketPojoFunctionalTest.java        |   2 +-
 .../huaweicloud/obs/CreateBucketPojoTest.java      |   2 +-
 .../huaweicloud/obs/CreateBucketTest.java          |   2 +-
 .../obs/DeleteBucketFunctionalTest.java            |   2 +-
 .../huaweicloud/obs/DeleteBucketTest.java          |   2 +-
 .../obs/DownloadDeleteFunctionalTest.java          |   2 +-
 .../huaweicloud/obs/DownloadFunctionalTest.java    |   2 +-
 .../obs/DownloadMoveExistsFunctionalTest.java      |   2 +-
 .../obs/DownloadMoveFunctionalTest.java            |   2 +-
 .../obs/DownloadSingleFunctionalTest.java          |   2 +-
 .../component/huaweicloud/obs/ListBucketsTest.java |   2 +-
 .../huaweicloud/obs/ListObjectsFunctionalTest.java |   2 +-
 .../obs/ListObjectsJsonFunctionalTest.java         |   2 +-
 .../huaweicloud/obs/ListObjectsJsonTest.java       |   2 +-
 .../huaweicloud/obs/ListObjectsMaxTest.java        |   2 +-
 .../obs/ListObjectsPojoFunctionalTest.java         |   2 +-
 .../huaweicloud/obs/ListObjectsPojoTest.java       |   2 +-
 .../component/huaweicloud/obs/ListObjectsTest.java |   2 +-
 .../camel-huawei/camel-huaweicloud-smn/pom.xml     |   6 +
 .../smn/SimpleNotificationEndpointConfigurer.java  |   4 +-
 .../component/huaweicloud/smn/hwcloud-smn.json     |   2 +-
 .../smn/SimpleNotificationEndpoint.java            |   2 +-
 .../huaweicloud/smn/models/ServiceKeys.java        |  59 -----
 .../smn/PublishTemplatedMessageFunctionalTest.java |   2 +-
 .../smn/PublishTemplatedMessageTest.java           |   2 +-
 ...tedMessageWithCustomEndpointFunctionalTest.java |   2 +-
 ...lishTemplatedMessageWithCustomEndpointTest.java |   2 +-
 .../smn/PublishTextMessageFunctionalTest.java      |   2 +-
 ...extMessageWithCustomEndpointFunctionalTest.java |   2 +-
 components/camel-huawei/pom.xml                    |   2 +
 core/camel-allcomponents/pom.xml                   |   4 +
 .../builder/endpoint/EndpointBuilderFactory.java   |  54 ++---
 .../camel/builder/endpoint/EndpointBuilders.java   |  54 ++---
 .../dsl/FunctionGraphEndpointBuilderFactory.java   |   4 +-
 .../endpoint/dsl/IAMEndpointBuilderFactory.java    |   4 +-
 .../endpoint/dsl/OBSEndpointBuilderFactory.java    |  12 +-
 .../SimpleNotificationEndpointBuilderFactory.java  |   4 +-
 parent/pom.xml                                     |   5 +
 .../camel/maven/packaging/PrepareCatalogMojo.java  |   3 +-
 73 files changed, 474 insertions(+), 302 deletions(-)

diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/hwcloud-obs-component.adoc b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/hwcloud-obs-component.adoc
new file mode 100644
index 0000000..2bf38df
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/hwcloud-obs-component.adoc
@@ -0,0 +1,245 @@
+[[hwcloud-obs-component]]
+= Huawei Object Storage Service (OBS) Component
+:docTitle: Huawei Object Storage Service (OBS)
+:artifactId: camel-huaweicloud-obs
+:description: To provide stable, secure, efficient, and easy-to-use cloud storage service on Huawei Cloud
+:since: 3.12
+:supportLevel: Preview
+:component-header: Both producer and consumer are supported
+include::{cq-version}@camel-quarkus:ROOT:partial$reference/components/hwcloud-obs.adoc[opts=optional]
+//Manually maintained attributes
+:group: Huawei Cloud
+
+*Since Camel {since}*
+
+*{component-header}*
+
+Huawei Cloud Object Storage Service (OBS) component allows you to integrate with https://www.huaweicloud.com/intl/en-us/product/obs.html[OBS] provided by Huawei Cloud.
+
+Maven users will need to add the following dependency to their `pom.xml` for this component:
+
+[source,xml]
+----
+<dependency>
+    <groupId>org.apache.camel</groupId>
+    <artifactId>camel-huaweicloud-obs</artifactId>
+    <version>x.x.x</version>
+    <!-- use the same version as your Camel core version -->
+</dependency>
+----
+
+== URI Format
+
+----
+hwcloud-obs:operation[?options]
+----
+
+
+// component options: START
+== Component Options
+
+
+The Huawei Object Storage Service (OBS) component supports 3 options, which are listed below.
+
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
+| *autowiredEnabled* (advanced) | Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | boolean
+|===
+// component options: END
+// endpoint options: START
+== Endpoint Options
+
+The Huawei Object Storage Service (OBS) endpoint is configured using URI syntax:
+
+----
+hwcloud-obs:operation
+----
+
+with the following path and query parameters:
+
+=== Path Parameters (1 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *operation* | *Required* Operation to be performed |  | String
+|===
+
+
+=== Query Parameters (40 parameters):
+
+
+[width="100%",cols="2,5,^1,2",options="header"]
+|===
+| Name | Description | Default | Type
+| *bucketName* (common) | Name of bucket to perform operation on |  | String
+| *endpoint* (common) | OBS url. Carries higher precedence than region parameter based client initialization |  | String
+| *region* (common) | *Required* OBS service region. This is lower precedence than endpoint based configuration |  | String
+| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
+| *deleteAfterRead* (consumer) | Determines if objects should be deleted after it has been retrieved | false | boolean
+| *delimiter* (consumer) | The character used for grouping object names |  | String
+| *destinationBucket* (consumer) | Name of destination bucket where objects will be moved when moveAfterRead is set to true |  | String
+| *fileName* (consumer) | Get the object from the bucket with the given file name |  | String
+| *includeFolders* (consumer) | If true, objects in folders will be consumed. Otherwise, they will be ignored and no Exchanges will be created for them | true | boolean
+| *maxMessagesPerPoll* (consumer) | The maximum number of messages to poll at each polling | 10 | int
+| *moveAfterRead* (consumer) | Determines whether objects should be moved to a different bucket after they have been retrieved. The destinationBucket option must also be set for this option to work. | false | boolean
+| *prefix* (consumer) | The object name prefix used for filtering objects to be listed |  | String
+| *sendEmptyMessageWhenIdle* (consumer) | If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead. | false | boolean
+| *exceptionHandler* (consumer) | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the consumer will deal with exceptions, that will be logged at WARN or ERROR level and ignored. |  | ExceptionHandler
+| *exchangePattern* (consumer) | Sets the exchange pattern when the consumer creates an exchange. There are 3 enums and the value can be one of: InOnly, InOut, InOptionalOut |  | ExchangePattern
+| *pollStrategy* (consumer) | A pluggable org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your custom implementation to control error handling usually occurred during the poll operation before an Exchange have been created and being routed in Camel. |  | PollingConsumerPollStrategy
+| *bucketLocation* (producer) | Location of bucket when creating a new bucket |  | String
+| *lazyStartProducer* (producer) | Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and [...]
+| *proxyHost* (proxy) | Proxy server ip/hostname |  | String
+| *proxyPassword* (proxy) | Proxy authentication password |  | String
+| *proxyPort* (proxy) | Proxy server port |  | int
+| *proxyUser* (proxy) | Proxy authentication user |  | String
+| *backoffErrorThreshold* (scheduler) | The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in. |  | int
+| *backoffIdleThreshold* (scheduler) | The number of subsequent idle polls that should happen before the backoffMultipler should kick-in. |  | int
+| *backoffMultiplier* (scheduler) | To let the scheduled polling consumer backoff if there has been a number of subsequent idles/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening again. When this option is in use then backoffIdleThreshold and/or backoffErrorThreshold must also be configured. |  | int
+| *delay* (scheduler) | Milliseconds before the next poll. | 500 | long
+| *greedy* (scheduler) | If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages. | false | boolean
+| *initialDelay* (scheduler) | Milliseconds before the first poll starts. | 1000 | long
+| *repeatCount* (scheduler) | Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever. | 0 | long
+| *runLoggingLevel* (scheduler) | The consumer logs a start/complete log line when it polls. This option allows you to configure the logging level for that. There are 6 enums and the value can be one of: TRACE, DEBUG, INFO, WARN, ERROR, OFF | TRACE | LoggingLevel
+| *scheduledExecutorService* (scheduler) | Allows for configuring a custom/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool. |  | ScheduledExecutorService
+| *scheduler* (scheduler) | To use a cron scheduler from either camel-spring or camel-quartz component. Use value spring or quartz for built in scheduler | none | Object
+| *schedulerProperties* (scheduler) | To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler. |  | Map
+| *startScheduler* (scheduler) | Whether the scheduler should be auto started. | true | boolean
+| *timeUnit* (scheduler) | Time unit for initialDelay and delay options. There are 7 enums and the value can be one of: NANOSECONDS, MICROSECONDS, MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS | MILLISECONDS | TimeUnit
+| *useFixedDelay* (scheduler) | Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details. | true | boolean
+| *authenticationKey* (security) | *Required* Authentication key for the cloud user |  | String
+| *ignoreSslVerification* (security) | Ignore SSL verification | false | boolean
+| *secretKey* (security) | *Required* Secret key for the cloud user |  | String
+| *serviceKeys* (security) | Configuration object for cloud service authentication |  | ServiceKeys
+|===
+// endpoint options: END
+
+
+== Usage
+
+=== Message properties evaluated by the OBS producer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelHwCloudObsOperation` |`String` | Name of operation to invoke
+
+|`CamelHwCloudObsBucketName` |`String` | Bucket name to invoke operation on
+
+|`CamelHwCloudObsBucketLocation` |`String` | Bucket location when creating a new bucket
+
+|=======================================================================
+
+If any of the above properties are set, they will override their corresponding query parameter.
+
+=== Message properties set by the OBS producer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelHwCloudObsBucketExists` |`boolean` | Return value when invoking the `checkBucketExists` operation
+
+|=======================================================================
+
+=== Message headers set by the OBS consumer
+
+[width="100%",cols="10%,10%,80%",options="header",]
+|=======================================================================
+|Header |Type |Description
+
+|`CamelHwCloudObsBucketName` |`String` | Name of the bucket where object is contained
+
+|`CamelHwCloudObsObjectKey` |`String` | The key that the object is stored under
+
+|`CamelHwCloudObsLastModified` |`String` | The date and time that the object was last modified
+
+|`Content-Length` |`String` | The size of the object body in bytes
+
+|`Content-Type` |`String` | The type of content stored in the object
+
+|`CamelHwCloudObsETag` |`String` | The 128-bit MD5 digest of the Base64 code of the object. This data is the unique identifier of the object content
+
+|`CamelHwCloudObsContentMD5` |`String` | The 128-bit Base64-encoded digest used to decrypt the object
+
+|`CamelHwCloudObsObjectType` |`String` | Shows whether the object is a `file` or a `folder`
+
+|=======================================================================
+
+
+== List of Supported OBS Operations
+
+- listBuckets
+- createBucket - `bucketName` parameter is *required*, `bucketLocation` parameter is optional
+- deleteBucket - `bucketName` parameter is *required*
+- checkBucketExists - `bucketName` parameter is *required*
+- getBucketMetadata - `bucketName` parameter is *required*
+- listObjects - `bucketName` parameter is *required*
+
+=== Passing Options Through Exchange Body
+There are many options that can be submited to the `createBucket` and `listObjects` operations, so they can be passed through the exchange body.
+
+If you would like to configure all the https://support.huaweicloud.com/intl/en-us/api-obs/obs_04_0021.html[parameters] when creating a bucket, you can pass a https://obssdk-intl.obs.ap-southeast-1.myhuaweicloud.com/apidoc/en/java/com/obs/services/model/CreateBucketRequest.html[CreateBucketRequest] object or a Json string into the exchange body. If the exchange body is empty, a new bucket will be created using the bucketName and bucketLocation (if provided) passed through the endpoint uri.
+
+[source,java]
+----
+from("direct:triggerRoute")
+ .setBody(new CreateBucketRequest("Bucket name", "Bucket location"))
+ .to("hwcloud-obs:createBucket?region=cn-north-4&authenticationKey=********&secretKey=********")
+----
+
+[source,java]
+----
+from("direct:triggerRoute")
+ .setBody("{\"bucketName\":\"Bucket name\",\"location\":\"Bucket location\"}")
+ .to("hwcloud-obs:createBucket?region=cn-north-4&authenticationKey=********&secretKey=********")
+----
+
+If you would like to configure all the https://support.huaweicloud.com/intl/en-us/api-obs/obs_04_0022.html[parameters] when listing objects, you can pass a https://obssdk-intl.obs.ap-southeast-1.myhuaweicloud.com/apidoc/en/java/com/obs/services/model/ListObjectsRequest.html[ListObjectsRequest] object or a Json string into the exchange body. If the exchange body is empty, objects will be listed based on the bucketName passed through the endpoint uri.
+
+[source,java]
+----
+from("direct:triggerRoute")
+ .setBody(new ListObjectsRequest("Bucket name", 1000))
+ .to("hwcloud-obs:listObjects?region=cn-north-4&authenticationKey=********&secretKey=********")
+----
+
+[source,java]
+----
+from("direct:triggerRoute")
+ .setBody("{\"bucketName\":\"Bucket name\",\"maxKeys\":1000"}")
+ .to("hwcloud-obs:listObjects?region=cn-north-4&authenticationKey=********&secretKey=********")
+----
+
+
+== Using ServiceKey Configuration Bean
+
+Authentication key and secret keys are required to authenticate against the OBS cloud. You can avoid having them being exposed
+and scattered over in your endpoint uri by wrapping them inside a bean of class `org.apache.camel.component.huaweicloud.obs.models.ServiceKeys`.
+Add it to the registry and let Camel look it up by referring the object via endpoint query parameter `serviceKeys`.
+
+Check the following code snippets:
+
+[source,xml]
+----
+<bean id="myServiceKeyConfig" class="org.apache.camel.component.huaweicloud.obs.models.ServiceKeys">
+   <property name="authenticationKey" value="your_authentication_key" />
+   <property name="secretKey" value="your_secret_key" />
+</bean>
+----
+[source,java]
+----
+from("direct:triggerRoute")
+ .setProperty(OBSPropeties.OPERATION, constant("createBucket"))
+ .setProperty(OBSPropeties.BUCKET_NAME ,constant("your_bucket_name"))
+ .setProperty(OBSPropeties.BUCKET_LOCATION, constant("your_bucket_location))
+ .to("hwcloud-obs:createBucket?region=cn-north-4&serviceKeys=#myServiceKeyConfig")
+----
diff --git a/components/camel-huawei/pom.xml b/components/camel-huawei/camel-huaweicloud-common/pom.xml
similarity index 56%
copy from components/camel-huawei/pom.xml
copy to components/camel-huawei/camel-huaweicloud-common/pom.xml
index c262c8d..4662cb20 100644
--- a/components/camel-huawei/pom.xml
+++ b/components/camel-huawei/camel-huaweicloud-common/pom.xml
@@ -17,26 +17,33 @@
     limitations under the License.
 
 -->
-<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">
+<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>
         <groupId>org.apache.camel</groupId>
-        <artifactId>components</artifactId>
+        <artifactId>camel-huawei-parent</artifactId>
         <version>3.12.0-SNAPSHOT</version>
     </parent>
 
-    <artifactId>camel-huawei-parent</artifactId>
-    <packaging>pom</packaging>
-    <name>Camel :: Huawei Cloud :: Parent</name>
-    <description>Camel Huawei Cloud parent</description>
-
-    <modules>
-        <module>camel-huaweicloud-functiongraph</module>
-        <module>camel-huaweicloud-iam</module>
-		<module>camel-huaweicloud-obs</module>
-        <module>camel-huaweicloud-smn</module>
-    </modules>
+    <properties>
+        <firstVersion>3.12.0</firstVersion>
+    </properties>
+
+    <artifactId>camel-huaweicloud-common</artifactId>
+    <packaging>jar</packaging>
+    <name>Camel :: Huawei Cloud :: Common</name>
+    <description>Common package for HuaweiCloud components</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-slf4j-impl</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
 
 </project>
diff --git a/components/camel-huawei/camel-huaweicloud-common/src/generated/resources/META-INF/services/org/apache/camel/other.properties b/components/camel-huawei/camel-huaweicloud-common/src/generated/resources/META-INF/services/org/apache/camel/other.properties
new file mode 100644
index 0000000..801bd8e
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-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=huaweicloud-common
+groupId=org.apache.camel
+artifactId=camel-huaweicloud-common
+version=3.12.0-SNAPSHOT
+projectName=Camel :: Huawei Cloud :: Common
+projectDescription=Common package for HuaweiCloud components
diff --git a/components/camel-huawei/camel-huaweicloud-common/src/generated/resources/huaweicloud-common.json b/components/camel-huawei/camel-huaweicloud-common/src/generated/resources/huaweicloud-common.json
new file mode 100644
index 0000000..1a65547
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-common/src/generated/resources/huaweicloud-common.json
@@ -0,0 +1,14 @@
+{
+  "other": {
+    "kind": "other",
+    "name": "huaweicloud-common",
+    "title": "Huaweicloud Common",
+    "description": "Common package for HuaweiCloud components",
+    "deprecated": false,
+    "firstVersion": "3.12.0",
+    "supportLevel": "Preview",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-huaweicloud-common",
+    "version": "3.12.0-SNAPSHOT"
+  }
+}
diff --git a/components/camel-huawei/camel-huaweicloud-functiongraph/src/main/java/org/apache/camel/models/ServiceKeys.java b/components/camel-huawei/camel-huaweicloud-common/src/main/java/org/apache/camel/component/huaweicloud/common/models/ServiceKeys.java
similarity index 96%
rename from components/camel-huawei/camel-huaweicloud-functiongraph/src/main/java/org/apache/camel/models/ServiceKeys.java
rename to components/camel-huawei/camel-huaweicloud-common/src/main/java/org/apache/camel/component/huaweicloud/common/models/ServiceKeys.java
index 90ed5fc..d26b24e 100644
--- a/components/camel-huawei/camel-huaweicloud-functiongraph/src/main/java/org/apache/camel/models/ServiceKeys.java
+++ b/components/camel-huawei/camel-huaweicloud-common/src/main/java/org/apache/camel/component/huaweicloud/common/models/ServiceKeys.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.models;
+package org.apache.camel.component.huaweicloud.common.models;
 
 public class ServiceKeys {
     private String authenticationKey;
diff --git a/components/camel-huawei/camel-huaweicloud-common/src/test/resources/log4j2.properties b/components/camel-huawei/camel-huaweicloud-common/src/test/resources/log4j2.properties
new file mode 100644
index 0000000..1a67160
--- /dev/null
+++ b/components/camel-huawei/camel-huaweicloud-common/src/test/resources/log4j2.properties
@@ -0,0 +1,30 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+
+appender.file.type = File
+appender.file.name = file
+appender.file.fileName = target/camel-huawei-smn-test.log
+appender.file.layout.type = PatternLayout
+appender.file.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
+appender.out.type = Console
+appender.out.name = out
+appender.out.layout.type = PatternLayout
+appender.out.layout.pattern = [%30.30t] %-30.30c{1} %-5p %m%n
+logger.caffeine.name = org.apache.camel.component.caffeine
+logger.caffeine.level = TRACE
+rootLogger.level = INFO
+rootLogger.appenderRef.file.ref = file
diff --git a/components/camel-huawei/camel-huaweicloud-functiongraph/pom.xml b/components/camel-huawei/camel-huaweicloud-functiongraph/pom.xml
index 85f1737..7ef56d3 100644
--- a/components/camel-huawei/camel-huaweicloud-functiongraph/pom.xml
+++ b/components/camel-huawei/camel-huaweicloud-functiongraph/pom.xml
@@ -41,6 +41,12 @@
             <artifactId>camel-support</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-huaweicloud-common</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
         <!-- HuaweiCloud SDK v3 -->
         <dependency>
             <groupId>com.huaweicloud.sdk</groupId>
diff --git a/components/camel-huawei/camel-huaweicloud-functiongraph/src/generated/java/org/apache/camel/FunctionGraphEndpointConfigurer.java b/components/camel-huawei/camel-huaweicloud-functiongraph/src/generated/java/org/apache/camel/FunctionGraphEndpointConfigurer.java
index a750a73..8de0f8b 100644
--- a/components/camel-huawei/camel-huaweicloud-functiongraph/src/generated/java/org/apache/camel/FunctionGraphEndpointConfigurer.java
+++ b/components/camel-huawei/camel-huaweicloud-functiongraph/src/generated/java/org/apache/camel/FunctionGraphEndpointConfigurer.java
@@ -46,7 +46,7 @@ public class FunctionGraphEndpointConfigurer extends PropertyConfigurerSupport i
         case "secretkey":
         case "secretKey": target.setSecretKey(property(camelContext, java.lang.String.class, value)); return true;
         case "servicekeys":
-        case "serviceKeys": target.setServiceKeys(property(camelContext, org.apache.camel.models.ServiceKeys.class, value)); return true;
+        case "serviceKeys": target.setServiceKeys(property(camelContext, org.apache.camel.component.huaweicloud.common.models.ServiceKeys.class, value)); return true;
         default: return false;
         }
     }
@@ -79,7 +79,7 @@ public class FunctionGraphEndpointConfigurer extends PropertyConfigurerSupport i
         case "secretkey":
         case "secretKey": return java.lang.String.class;
         case "servicekeys":
-        case "serviceKeys": return org.apache.camel.models.ServiceKeys.class;
+        case "serviceKeys": return org.apache.camel.component.huaweicloud.common.models.ServiceKeys.class;
         default: return null;
         }
     }
diff --git a/components/camel-huawei/camel-huaweicloud-functiongraph/src/generated/resources/org/apache/camel/hwcloud-functiongraph.json b/components/camel-huawei/camel-huaweicloud-functiongraph/src/generated/resources/org/apache/camel/hwcloud-functiongraph.json
index d33fa04..308e6cf 100644
--- a/components/camel-huawei/camel-huaweicloud-functiongraph/src/generated/resources/org/apache/camel/hwcloud-functiongraph.json
+++ b/components/camel-huawei/camel-huaweicloud-functiongraph/src/generated/resources/org/apache/camel/hwcloud-functiongraph.json
@@ -33,7 +33,7 @@
     "lazyStartProducer": { "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during sta [...]
     "projectId": { "kind": "parameter", "displayName": "Project ID", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Cloud project ID" },
     "region": { "kind": "parameter", "displayName": "Service region", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "FunctionGraph service region. This is lower precedence than endpoint based configuration" },
-    "serviceKeys": { "kind": "parameter", "displayName": "Service Configuration", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.models.ServiceKeys", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "description": "Configuration object for cloud service authentication" },
+    "serviceKeys": { "kind": "parameter", "displayName": "Service Configuration", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.huaweicloud.common.models.ServiceKeys", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "description": "Configuration object for cloud service authentication" },
     "proxyHost": { "kind": "parameter", "displayName": "Proxy server host", "group": "proxy", "label": "proxy", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Proxy server ip\/hostname" },
     "proxyPassword": { "kind": "parameter", "displayName": "Proxy password", "group": "proxy", "label": "proxy", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "description": "Proxy authentication password" },
     "proxyPort": { "kind": "parameter", "displayName": "Proxy server port", "group": "proxy", "label": "proxy", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Proxy server port" },
diff --git a/components/camel-huawei/camel-huaweicloud-functiongraph/src/main/java/org/apache/camel/FunctionGraphEndpoint.java b/components/camel-huawei/camel-huaweicloud-functiongraph/src/main/java/org/apache/camel/FunctionGraphEndpoint.java
index 8902aec..3de99b8 100644
--- a/components/camel-huawei/camel-huaweicloud-functiongraph/src/main/java/org/apache/camel/FunctionGraphEndpoint.java
+++ b/components/camel-huawei/camel-huaweicloud-functiongraph/src/main/java/org/apache/camel/FunctionGraphEndpoint.java
@@ -20,8 +20,8 @@ import com.huaweicloud.sdk.core.auth.BasicCredentials;
 import com.huaweicloud.sdk.core.http.HttpConfig;
 import com.huaweicloud.sdk.functiongraph.v2.FunctionGraphClient;
 import com.huaweicloud.sdk.functiongraph.v2.region.FunctionGraphRegion;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.constants.FunctionGraphConstants;
-import org.apache.camel.models.ServiceKeys;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
diff --git a/components/camel-huawei/camel-huaweicloud-functiongraph/src/test/java/org/apache/camel/InvokeFunctionServiceKeyFunctionalTest.java b/components/camel-huawei/camel-huaweicloud-functiongraph/src/test/java/org/apache/camel/InvokeFunctionServiceKeyFunctionalTest.java
index afa21a8..d88c043 100644
--- a/components/camel-huawei/camel-huaweicloud-functiongraph/src/test/java/org/apache/camel/InvokeFunctionServiceKeyFunctionalTest.java
+++ b/components/camel-huawei/camel-huaweicloud-functiongraph/src/test/java/org/apache/camel/InvokeFunctionServiceKeyFunctionalTest.java
@@ -17,9 +17,9 @@
 package org.apache.camel;
 
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.constants.FunctionGraphProperties;
-import org.apache.camel.models.ServiceKeys;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Ignore;
 import org.junit.Test;
diff --git a/components/camel-huawei/camel-huaweicloud-functiongraph/src/test/java/org/apache/camel/InvokeFunctionServiceKeyTest.java b/components/camel-huawei/camel-huaweicloud-functiongraph/src/test/java/org/apache/camel/InvokeFunctionServiceKeyTest.java
index ecfaea5..8cb4506 100644
--- a/components/camel-huawei/camel-huaweicloud-functiongraph/src/test/java/org/apache/camel/InvokeFunctionServiceKeyTest.java
+++ b/components/camel-huawei/camel-huaweicloud-functiongraph/src/test/java/org/apache/camel/InvokeFunctionServiceKeyTest.java
@@ -17,9 +17,9 @@
 package org.apache.camel;
 
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.constants.FunctionGraphProperties;
-import org.apache.camel.models.ServiceKeys;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
 import org.slf4j.Logger;
diff --git a/components/camel-huawei/camel-huaweicloud-iam/pom.xml b/components/camel-huawei/camel-huaweicloud-iam/pom.xml
index b12dbeb..c51357fe 100644
--- a/components/camel-huawei/camel-huaweicloud-iam/pom.xml
+++ b/components/camel-huawei/camel-huaweicloud-iam/pom.xml
@@ -40,6 +40,12 @@
       <artifactId>camel-support</artifactId>
     </dependency>
 
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-huaweicloud-common</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
     <!-- HuaweiCloud SDK v3 -->
     <dependency>
       <groupId>com.huaweicloud.sdk</groupId>
diff --git a/components/camel-huawei/camel-huaweicloud-iam/src/generated/java/org/apache/camel/component/huaweicloud/iam/IAMEndpointConfigurer.java b/components/camel-huawei/camel-huaweicloud-iam/src/generated/java/org/apache/camel/component/huaweicloud/iam/IAMEndpointConfigurer.java
index 36c3b7a..cb052a8 100644
--- a/components/camel-huawei/camel-huaweicloud-iam/src/generated/java/org/apache/camel/component/huaweicloud/iam/IAMEndpointConfigurer.java
+++ b/components/camel-huawei/camel-huaweicloud-iam/src/generated/java/org/apache/camel/component/huaweicloud/iam/IAMEndpointConfigurer.java
@@ -41,7 +41,7 @@ public class IAMEndpointConfigurer extends PropertyConfigurerSupport implements
         case "secretkey":
         case "secretKey": target.setSecretKey(property(camelContext, java.lang.String.class, value)); return true;
         case "servicekeys":
-        case "serviceKeys": target.setServiceKeys(property(camelContext, org.apache.camel.component.huaweicloud.iam.models.ServiceKeys.class, value)); return true;
+        case "serviceKeys": target.setServiceKeys(property(camelContext, org.apache.camel.component.huaweicloud.common.models.ServiceKeys.class, value)); return true;
         case "userid":
         case "userId": target.setUserId(property(camelContext, java.lang.String.class, value)); return true;
         default: return false;
@@ -71,7 +71,7 @@ public class IAMEndpointConfigurer extends PropertyConfigurerSupport implements
         case "secretkey":
         case "secretKey": return java.lang.String.class;
         case "servicekeys":
-        case "serviceKeys": return org.apache.camel.component.huaweicloud.iam.models.ServiceKeys.class;
+        case "serviceKeys": return org.apache.camel.component.huaweicloud.common.models.ServiceKeys.class;
         case "userid":
         case "userId": return java.lang.String.class;
         default: return null;
diff --git a/components/camel-huawei/camel-huaweicloud-iam/src/generated/resources/org/apache/camel/component/huaweicloud/iam/hwcloud-iam.json b/components/camel-huawei/camel-huaweicloud-iam/src/generated/resources/org/apache/camel/component/huaweicloud/iam/hwcloud-iam.json
index 82a7006..a39193f 100644
--- a/components/camel-huawei/camel-huaweicloud-iam/src/generated/resources/org/apache/camel/component/huaweicloud/iam/hwcloud-iam.json
+++ b/components/camel-huawei/camel-huaweicloud-iam/src/generated/resources/org/apache/camel/component/huaweicloud/iam/hwcloud-iam.json
@@ -37,7 +37,7 @@
     "proxyUser": { "kind": "parameter", "displayName": "Proxy user", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "description": "Proxy authentication user" },
     "region": { "kind": "parameter", "displayName": "Service region", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "IAM service region" },
     "secretKey": { "kind": "parameter", "displayName": "API secret key (SK)", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "description": "Secret key for the cloud user" },
-    "serviceKeys": { "kind": "parameter", "displayName": "Service Configuration", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.huaweicloud.iam.models.ServiceKeys", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "description": "Configuration object for cloud service authentication" },
+    "serviceKeys": { "kind": "parameter", "displayName": "Service Configuration", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.huaweicloud.common.models.ServiceKeys", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "description": "Configuration object for cloud service authentication" },
     "userId": { "kind": "parameter", "displayName": "User ID", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "description": "User ID to perform operation with" }
   }
 }
diff --git a/components/camel-huawei/camel-huaweicloud-iam/src/main/java/org/apache/camel/component/huaweicloud/iam/IAMEndpoint.java b/components/camel-huawei/camel-huaweicloud-iam/src/main/java/org/apache/camel/component/huaweicloud/iam/IAMEndpoint.java
index 51007e2..7894347 100644
--- a/components/camel-huawei/camel-huaweicloud-iam/src/main/java/org/apache/camel/component/huaweicloud/iam/IAMEndpoint.java
+++ b/components/camel-huawei/camel-huaweicloud-iam/src/main/java/org/apache/camel/component/huaweicloud/iam/IAMEndpoint.java
@@ -24,7 +24,7 @@ import org.apache.camel.Category;
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.component.huaweicloud.iam.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
diff --git a/components/camel-huawei/camel-huaweicloud-iam/src/main/java/org/apache/camel/component/huaweicloud/iam/models/ServiceKeys.java b/components/camel-huawei/camel-huaweicloud-iam/src/main/java/org/apache/camel/component/huaweicloud/iam/models/ServiceKeys.java
deleted file mode 100644
index 8d00462..0000000
--- a/components/camel-huawei/camel-huaweicloud-iam/src/main/java/org/apache/camel/component/huaweicloud/iam/models/ServiceKeys.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.huaweicloud.iam.models;
-
-/**
- * Class containing authentication and secret keys if the user does not want to expose these in the endpoint
- */
-public class ServiceKeys {
-    private String authenticationKey;
-    private String secretKey;
-
-    public ServiceKeys() {
-    }
-
-    public ServiceKeys(String authenticationKey, String secretKey) {
-        this.authenticationKey = authenticationKey;
-        this.secretKey = secretKey;
-    }
-
-    public ServiceKeys(String authenticationKey, String secretKey, String projectId) {
-        this.authenticationKey = authenticationKey;
-        this.secretKey = secretKey;
-    }
-
-    public String getAuthenticationKey() {
-        return authenticationKey;
-    }
-
-    public void setAuthenticationKey(String authenticationKey) {
-        this.authenticationKey = authenticationKey;
-    }
-
-    public String getSecretKey() {
-        return secretKey;
-    }
-
-    public void setSecretKey(String secretKey) {
-        this.secretKey = secretKey;
-    }
-}
diff --git a/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/GetGroupUsersFunctionalTest.java b/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/GetGroupUsersFunctionalTest.java
index af10e4b..0f8ca27 100644
--- a/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/GetGroupUsersFunctionalTest.java
+++ b/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/GetGroupUsersFunctionalTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.huaweicloud.iam;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.iam.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Ignore;
diff --git a/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/GetUserFunctionalTest.java b/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/GetUserFunctionalTest.java
index f8b5e3f..be4837f 100644
--- a/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/GetUserFunctionalTest.java
+++ b/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/GetUserFunctionalTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.huaweicloud.iam;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.iam.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Ignore;
diff --git a/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/GetUserTest.java b/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/GetUserTest.java
index 68581de..9d06e74 100644
--- a/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/GetUserTest.java
+++ b/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/GetUserTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.huaweicloud.iam;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.iam.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
diff --git a/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/UpdateGroupFunctionalTest.java b/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/UpdateGroupFunctionalTest.java
index afb5ade..16087d5 100644
--- a/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/UpdateGroupFunctionalTest.java
+++ b/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/UpdateGroupFunctionalTest.java
@@ -20,7 +20,7 @@ import com.huaweicloud.sdk.iam.v3.model.KeystoneUpdateGroupOption;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.iam.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Ignore;
diff --git a/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/UpdateGroupJsonFunctionalTest.java b/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/UpdateGroupJsonFunctionalTest.java
index 1c4f183..aa75f3a 100644
--- a/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/UpdateGroupJsonFunctionalTest.java
+++ b/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/UpdateGroupJsonFunctionalTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.huaweicloud.iam;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.iam.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Ignore;
diff --git a/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/UpdateGroupJsonTest.java b/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/UpdateGroupJsonTest.java
index cf21990..0e36a90 100644
--- a/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/UpdateGroupJsonTest.java
+++ b/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/UpdateGroupJsonTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.huaweicloud.iam;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.iam.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
diff --git a/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/UpdateGroupTest.java b/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/UpdateGroupTest.java
index d387f18..65c0003 100644
--- a/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/UpdateGroupTest.java
+++ b/components/camel-huawei/camel-huaweicloud-iam/src/test/java/org/apache/camel/component/huaweicloud/iam/UpdateGroupTest.java
@@ -20,7 +20,7 @@ import com.huaweicloud.sdk.iam.v3.model.KeystoneUpdateGroupOption;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.iam.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/pom.xml b/components/camel-huawei/camel-huaweicloud-obs/pom.xml
index bd1cafd..893685f 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/pom.xml
+++ b/components/camel-huawei/camel-huaweicloud-obs/pom.xml
@@ -40,6 +40,12 @@
       <artifactId>camel-support</artifactId>
     </dependency>
 
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-huaweicloud-common</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
     <!-- HuaweiCloud OBS SDK -->
     <dependency>
       <groupId>com.huaweicloud</groupId>
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/generated/java/org/apache/camel/component/huaweicloud/obs/OBSEndpointConfigurer.java b/components/camel-huawei/camel-huaweicloud-obs/src/generated/java/org/apache/camel/component/huaweicloud/obs/OBSEndpointConfigurer.java
index 23ed657..87addf1 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/generated/java/org/apache/camel/component/huaweicloud/obs/OBSEndpointConfigurer.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/generated/java/org/apache/camel/component/huaweicloud/obs/OBSEndpointConfigurer.java
@@ -87,7 +87,7 @@ public class OBSEndpointConfigurer extends PropertyConfigurerSupport implements
         case "sendemptymessagewhenidle":
         case "sendEmptyMessageWhenIdle": target.setSendEmptyMessageWhenIdle(property(camelContext, boolean.class, value)); return true;
         case "servicekeys":
-        case "serviceKeys": target.setServiceKeys(property(camelContext, org.apache.camel.component.huaweicloud.obs.models.ServiceKeys.class, value)); return true;
+        case "serviceKeys": target.setServiceKeys(property(camelContext, org.apache.camel.component.huaweicloud.common.models.ServiceKeys.class, value)); return true;
         case "startscheduler":
         case "startScheduler": target.setStartScheduler(property(camelContext, boolean.class, value)); return true;
         case "timeunit":
@@ -167,7 +167,7 @@ public class OBSEndpointConfigurer extends PropertyConfigurerSupport implements
         case "sendemptymessagewhenidle":
         case "sendEmptyMessageWhenIdle": return boolean.class;
         case "servicekeys":
-        case "serviceKeys": return org.apache.camel.component.huaweicloud.obs.models.ServiceKeys.class;
+        case "serviceKeys": return org.apache.camel.component.huaweicloud.common.models.ServiceKeys.class;
         case "startscheduler":
         case "startScheduler": return boolean.class;
         case "timeunit":
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/generated/resources/org/apache/camel/component/huaweicloud/obs/hwcloud-obs.json b/components/camel-huawei/camel-huaweicloud-obs/src/generated/resources/org/apache/camel/component/huaweicloud/obs/hwcloud-obs.json
index eb664bb..86886fe 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/generated/resources/org/apache/camel/component/huaweicloud/obs/hwcloud-obs.json
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/generated/resources/org/apache/camel/component/huaweicloud/obs/hwcloud-obs.json
@@ -67,6 +67,6 @@
     "authenticationKey": { "kind": "parameter", "displayName": "API authentication key (AK)", "group": "security", "label": "security", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "description": "Authentication key for the cloud user" },
     "ignoreSslVerification": { "kind": "parameter", "displayName": "SSL Verification Ignored", "group": "security", "label": "security", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "defaultValue": false, "description": "Ignore SSL verification" },
     "secretKey": { "kind": "parameter", "displayName": "API secret key (SK)", "group": "security", "label": "security", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "description": "Secret key for the cloud user" },
-    "serviceKeys": { "kind": "parameter", "displayName": "Service Configuration", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.component.huaweicloud.obs.models.ServiceKeys", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "description": "Configuration object for cloud service authentication" }
+    "serviceKeys": { "kind": "parameter", "displayName": "Service Configuration", "group": "security", "label": "security", "required": false, "type": "object", "javaType": "org.apache.camel.component.huaweicloud.common.models.ServiceKeys", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "description": "Configuration object for cloud service authentication" }
   }
 }
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/main/java/org/apache/camel/component/huaweicloud/obs/OBSEndpoint.java b/components/camel-huawei/camel-huaweicloud-obs/src/main/java/org/apache/camel/component/huaweicloud/obs/OBSEndpoint.java
index 7de80b5..cd702b1 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/main/java/org/apache/camel/component/huaweicloud/obs/OBSEndpoint.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/main/java/org/apache/camel/component/huaweicloud/obs/OBSEndpoint.java
@@ -23,8 +23,8 @@ import org.apache.camel.Category;
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.huaweicloud.obs.models.OBSRegion;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/main/java/org/apache/camel/component/huaweicloud/obs/models/ServiceKeys.java b/components/camel-huawei/camel-huaweicloud-obs/src/main/java/org/apache/camel/component/huaweicloud/obs/models/ServiceKeys.java
deleted file mode 100644
index b8be1f7..0000000
--- a/components/camel-huawei/camel-huaweicloud-obs/src/main/java/org/apache/camel/component/huaweicloud/obs/models/ServiceKeys.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * 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.huaweicloud.obs.models;
-
-/**
- * Class containing authentication and secret keys if the user does not want to expose these in the endpoint
- */
-public class ServiceKeys {
-    private String authenticationKey;
-    private String secretKey;
-
-    public ServiceKeys() {
-    }
-
-    public ServiceKeys(String authenticationKey, String secretKey) {
-        this.authenticationKey = authenticationKey;
-        this.secretKey = secretKey;
-    }
-
-    public ServiceKeys(String authenticationKey, String secretKey, String projectId) {
-        this.authenticationKey = authenticationKey;
-        this.secretKey = secretKey;
-    }
-
-    public String getAuthenticationKey() {
-        return authenticationKey;
-    }
-
-    public void setAuthenticationKey(String authenticationKey) {
-        this.authenticationKey = authenticationKey;
-    }
-
-    public String getSecretKey() {
-        return secretKey;
-    }
-
-    public void setSecretKey(String secretKey) {
-        this.secretKey = secretKey;
-    }
-}
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/BucketMetadataTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/BucketMetadataTest.java
index ef4beab83..3a10a7c 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/BucketMetadataTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/BucketMetadataTest.java
@@ -22,7 +22,7 @@ import com.obs.services.model.BucketMetadataInfoResult;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CheckBucketTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CheckBucketTest.java
index 6822df5..0783d7e 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CheckBucketTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CheckBucketTest.java
@@ -20,8 +20,8 @@ import com.obs.services.ObsClient;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.huaweicloud.obs.constants.OBSProperties;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketFunctionalTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketFunctionalTest.java
index a9c548f..ca6dc40 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketFunctionalTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketFunctionalTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.huaweicloud.obs;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Ignore;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketJsonFunctionalTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketJsonFunctionalTest.java
index 9b5b15e..11ccd4f 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketJsonFunctionalTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketJsonFunctionalTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.huaweicloud.obs;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Ignore;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketJsonTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketJsonTest.java
index f3630a3..91f8e5a 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketJsonTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketJsonTest.java
@@ -22,7 +22,7 @@ import com.obs.services.model.ObsBucket;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketPojoFunctionalTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketPojoFunctionalTest.java
index 0bc3be3..bf057d8 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketPojoFunctionalTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketPojoFunctionalTest.java
@@ -20,7 +20,7 @@ import com.obs.services.model.CreateBucketRequest;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Ignore;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketPojoTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketPojoTest.java
index c6d4dc7e..60a3038 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketPojoTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketPojoTest.java
@@ -22,7 +22,7 @@ import com.obs.services.model.ObsBucket;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketTest.java
index 4181ba8..a4c95e0 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/CreateBucketTest.java
@@ -22,7 +22,7 @@ import com.obs.services.model.ObsBucket;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DeleteBucketFunctionalTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DeleteBucketFunctionalTest.java
index 7dad637..e316e94 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DeleteBucketFunctionalTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DeleteBucketFunctionalTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.huaweicloud.obs;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Ignore;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DeleteBucketTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DeleteBucketTest.java
index 3b6db67..9ab803e 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DeleteBucketTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DeleteBucketTest.java
@@ -24,7 +24,7 @@ import com.obs.services.model.HeaderResponse;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DownloadDeleteFunctionalTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DownloadDeleteFunctionalTest.java
index 7935e1d..9910c6e 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DownloadDeleteFunctionalTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DownloadDeleteFunctionalTest.java
@@ -21,8 +21,8 @@ import java.util.List;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.huaweicloud.obs.constants.OBSHeaders;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Ignore;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DownloadFunctionalTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DownloadFunctionalTest.java
index 1417e3b..210f572 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DownloadFunctionalTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DownloadFunctionalTest.java
@@ -21,8 +21,8 @@ import java.util.List;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.huaweicloud.obs.constants.OBSHeaders;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Ignore;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DownloadMoveExistsFunctionalTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DownloadMoveExistsFunctionalTest.java
index 474b957..a16c223 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DownloadMoveExistsFunctionalTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DownloadMoveExistsFunctionalTest.java
@@ -21,8 +21,8 @@ import java.util.List;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.huaweicloud.obs.constants.OBSHeaders;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Ignore;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DownloadMoveFunctionalTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DownloadMoveFunctionalTest.java
index 3807334..0e63d86 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DownloadMoveFunctionalTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DownloadMoveFunctionalTest.java
@@ -21,8 +21,8 @@ import java.util.List;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.huaweicloud.obs.constants.OBSHeaders;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Ignore;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DownloadSingleFunctionalTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DownloadSingleFunctionalTest.java
index b4bf8dd..4e389f1 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DownloadSingleFunctionalTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/DownloadSingleFunctionalTest.java
@@ -19,8 +19,8 @@ package org.apache.camel.component.huaweicloud.obs;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.huaweicloud.obs.constants.OBSHeaders;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Ignore;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListBucketsTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListBucketsTest.java
index 626190e..7f930ac 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListBucketsTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListBucketsTest.java
@@ -27,7 +27,7 @@ import com.obs.services.model.Owner;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsFunctionalTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsFunctionalTest.java
index 8aa3e9c..3394182 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsFunctionalTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsFunctionalTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.huaweicloud.obs;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Ignore;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsJsonFunctionalTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsJsonFunctionalTest.java
index f94c11e..a7cf235 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsJsonFunctionalTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsJsonFunctionalTest.java
@@ -19,7 +19,7 @@ package org.apache.camel.component.huaweicloud.obs;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Ignore;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsJsonTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsJsonTest.java
index a8e57a6..e036352 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsJsonTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsJsonTest.java
@@ -26,7 +26,7 @@ import com.obs.services.model.ObsObject;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsMaxTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsMaxTest.java
index 8593291..0fa3788 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsMaxTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsMaxTest.java
@@ -28,7 +28,7 @@ import com.obs.services.model.ObsObject;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsPojoFunctionalTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsPojoFunctionalTest.java
index 02d4217..679a5e9 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsPojoFunctionalTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsPojoFunctionalTest.java
@@ -20,7 +20,7 @@ import com.obs.services.model.ListObjectsRequest;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Ignore;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsPojoTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsPojoTest.java
index 6db54dc..2a6e6b3 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsPojoTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsPojoTest.java
@@ -26,7 +26,7 @@ import com.obs.services.model.ObsObject;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsTest.java b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsTest.java
index a5417bb..f19d4bc 100644
--- a/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsTest.java
+++ b/components/camel-huawei/camel-huaweicloud-obs/src/test/java/org/apache/camel/component/huaweicloud/obs/ListObjectsTest.java
@@ -26,7 +26,7 @@ import com.obs.services.model.ObsObject;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.huaweicloud.obs.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.junit.Test;
diff --git a/components/camel-huawei/camel-huaweicloud-smn/pom.xml b/components/camel-huawei/camel-huaweicloud-smn/pom.xml
index c64ebaf..3d07e23 100644
--- a/components/camel-huawei/camel-huaweicloud-smn/pom.xml
+++ b/components/camel-huawei/camel-huaweicloud-smn/pom.xml
@@ -42,6 +42,12 @@
         </dependency>
 
         <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-huaweicloud-common</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-core</artifactId>
             <version>${jackson2-version}</version>
diff --git a/components/camel-huawei/camel-huaweicloud-smn/src/generated/java/org/apache/camel/component/huaweicloud/smn/SimpleNotificationEndpointConfigurer.java b/components/camel-huawei/camel-huaweicloud-smn/src/generated/java/org/apache/camel/component/huaweicloud/smn/SimpleNotificationEndpointConfigurer.java
index 97692de..fa6eee3 100644
--- a/components/camel-huawei/camel-huaweicloud-smn/src/generated/java/org/apache/camel/component/huaweicloud/smn/SimpleNotificationEndpointConfigurer.java
+++ b/components/camel-huawei/camel-huaweicloud-smn/src/generated/java/org/apache/camel/component/huaweicloud/smn/SimpleNotificationEndpointConfigurer.java
@@ -45,7 +45,7 @@ public class SimpleNotificationEndpointConfigurer extends PropertyConfigurerSupp
         case "secretkey":
         case "secretKey": target.setSecretKey(property(camelContext, java.lang.String.class, value)); return true;
         case "servicekeys":
-        case "serviceKeys": target.setServiceKeys(property(camelContext, org.apache.camel.component.huaweicloud.smn.models.ServiceKeys.class, value)); return true;
+        case "serviceKeys": target.setServiceKeys(property(camelContext, org.apache.camel.component.huaweicloud.common.models.ServiceKeys.class, value)); return true;
         default: return false;
         }
     }
@@ -77,7 +77,7 @@ public class SimpleNotificationEndpointConfigurer extends PropertyConfigurerSupp
         case "secretkey":
         case "secretKey": return java.lang.String.class;
         case "servicekeys":
-        case "serviceKeys": return org.apache.camel.component.huaweicloud.smn.models.ServiceKeys.class;
+        case "serviceKeys": return org.apache.camel.component.huaweicloud.common.models.ServiceKeys.class;
         default: return null;
         }
     }
diff --git a/components/camel-huawei/camel-huaweicloud-smn/src/generated/resources/org/apache/camel/component/huaweicloud/smn/hwcloud-smn.json b/components/camel-huawei/camel-huaweicloud-smn/src/generated/resources/org/apache/camel/component/huaweicloud/smn/hwcloud-smn.json
index 6cd437e..5e2e5bf 100644
--- a/components/camel-huawei/camel-huaweicloud-smn/src/generated/resources/org/apache/camel/component/huaweicloud/smn/hwcloud-smn.json
+++ b/components/camel-huawei/camel-huaweicloud-smn/src/generated/resources/org/apache/camel/component/huaweicloud/smn/hwcloud-smn.json
@@ -40,6 +40,6 @@
     "proxyUser": { "kind": "parameter", "displayName": "Proxy user", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "description": "Proxy authentication user" },
     "region": { "kind": "parameter", "displayName": "Service region", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "SMN service region. This is lower precedence than endpoint based configuration" },
     "secretKey": { "kind": "parameter", "displayName": "API secret key (SK)", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "description": "Secret key for the cloud user" },
-    "serviceKeys": { "kind": "parameter", "displayName": "Service Configuration", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.huaweicloud.smn.models.ServiceKeys", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "description": "Configuration object for cloud service authentication" }
+    "serviceKeys": { "kind": "parameter", "displayName": "Service Configuration", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.huaweicloud.common.models.ServiceKeys", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "description": "Configuration object for cloud service authentication" }
   }
 }
diff --git a/components/camel-huawei/camel-huaweicloud-smn/src/main/java/org/apache/camel/component/huaweicloud/smn/SimpleNotificationEndpoint.java b/components/camel-huawei/camel-huaweicloud-smn/src/main/java/org/apache/camel/component/huaweicloud/smn/SimpleNotificationEndpoint.java
index a525f3b..c03acd7 100644
--- a/components/camel-huawei/camel-huaweicloud-smn/src/main/java/org/apache/camel/component/huaweicloud/smn/SimpleNotificationEndpoint.java
+++ b/components/camel-huawei/camel-huaweicloud-smn/src/main/java/org/apache/camel/component/huaweicloud/smn/SimpleNotificationEndpoint.java
@@ -23,7 +23,7 @@ import org.apache.camel.Category;
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.Producer;
-import org.apache.camel.component.huaweicloud.smn.models.ServiceKeys;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
diff --git a/components/camel-huawei/camel-huaweicloud-smn/src/main/java/org/apache/camel/component/huaweicloud/smn/models/ServiceKeys.java b/components/camel-huawei/camel-huaweicloud-smn/src/main/java/org/apache/camel/component/huaweicloud/smn/models/ServiceKeys.java
deleted file mode 100644
index 726726a..0000000
--- a/components/camel-huawei/camel-huaweicloud-smn/src/main/java/org/apache/camel/component/huaweicloud/smn/models/ServiceKeys.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.huaweicloud.smn.models;
-
-public class ServiceKeys {
-    /**
-     * cloud service authentication key (AK)
-     */
-    private String authenticationKey;
-
-    /**
-     * cloud service secret key (SK)
-     */
-    private String secretKey;
-
-    public ServiceKeys() {
-    }
-
-    public ServiceKeys(String authenticationKey, String secretKey) {
-        this.authenticationKey = authenticationKey;
-        this.secretKey = secretKey;
-    }
-
-    public ServiceKeys(String authenticationKey, String secretKey, String projectId) {
-        this.authenticationKey = authenticationKey;
-        this.secretKey = secretKey;
-    }
-
-    public String getAuthenticationKey() {
-        return authenticationKey;
-    }
-
-    public void setAuthenticationKey(String authenticationKey) {
-        this.authenticationKey = authenticationKey;
-    }
-
-    public String getSecretKey() {
-        return secretKey;
-    }
-
-    public void setSecretKey(String secretKey) {
-        this.secretKey = secretKey;
-    }
-
-}
diff --git a/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTemplatedMessageFunctionalTest.java b/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTemplatedMessageFunctionalTest.java
index 6096b44..ae8c0f9 100644
--- a/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTemplatedMessageFunctionalTest.java
+++ b/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTemplatedMessageFunctionalTest.java
@@ -22,8 +22,8 @@ import java.util.Map;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.huaweicloud.smn.constants.SmnProperties;
-import org.apache.camel.component.huaweicloud.smn.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Disabled;
diff --git a/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTemplatedMessageTest.java b/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTemplatedMessageTest.java
index 1aa01c6..ff4e496 100644
--- a/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTemplatedMessageTest.java
+++ b/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTemplatedMessageTest.java
@@ -22,8 +22,8 @@ import java.util.Map;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.huaweicloud.smn.constants.SmnProperties;
-import org.apache.camel.component.huaweicloud.smn.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Test;
diff --git a/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTemplatedMessageWithCustomEndpointFunctionalTest.java b/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTemplatedMessageWithCustomEndpointFunctionalTest.java
index 81fae7e..aae80d4 100644
--- a/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTemplatedMessageWithCustomEndpointFunctionalTest.java
+++ b/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTemplatedMessageWithCustomEndpointFunctionalTest.java
@@ -22,8 +22,8 @@ import java.util.Map;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.huaweicloud.smn.constants.SmnProperties;
-import org.apache.camel.component.huaweicloud.smn.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Disabled;
diff --git a/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTemplatedMessageWithCustomEndpointTest.java b/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTemplatedMessageWithCustomEndpointTest.java
index 2225493..5d77480 100644
--- a/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTemplatedMessageWithCustomEndpointTest.java
+++ b/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTemplatedMessageWithCustomEndpointTest.java
@@ -22,8 +22,8 @@ import java.util.Map;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.huaweicloud.smn.constants.SmnProperties;
-import org.apache.camel.component.huaweicloud.smn.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Test;
diff --git a/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTextMessageFunctionalTest.java b/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTextMessageFunctionalTest.java
index b535ffc..017965d 100644
--- a/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTextMessageFunctionalTest.java
+++ b/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTextMessageFunctionalTest.java
@@ -19,8 +19,8 @@ package org.apache.camel.component.huaweicloud.smn;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.huaweicloud.smn.constants.SmnProperties;
-import org.apache.camel.component.huaweicloud.smn.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Disabled;
diff --git a/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTextMessageWithCustomEndpointFunctionalTest.java b/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTextMessageWithCustomEndpointFunctionalTest.java
index 5e03b23..20e7f0c 100644
--- a/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTextMessageWithCustomEndpointFunctionalTest.java
+++ b/components/camel-huawei/camel-huaweicloud-smn/src/test/java/org/apache/camel/component/huaweicloud/smn/PublishTextMessageWithCustomEndpointFunctionalTest.java
@@ -19,8 +19,8 @@ package org.apache.camel.component.huaweicloud.smn;
 import org.apache.camel.BindToRegistry;
 import org.apache.camel.Exchange;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.huaweicloud.common.models.ServiceKeys;
 import org.apache.camel.component.huaweicloud.smn.constants.SmnProperties;
-import org.apache.camel.component.huaweicloud.smn.models.ServiceKeys;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Disabled;
diff --git a/components/camel-huawei/pom.xml b/components/camel-huawei/pom.xml
index c262c8d..039a263 100644
--- a/components/camel-huawei/pom.xml
+++ b/components/camel-huawei/pom.xml
@@ -32,7 +32,9 @@
     <name>Camel :: Huawei Cloud :: Parent</name>
     <description>Camel Huawei Cloud parent</description>
 
+    
     <modules>
+		<module>camel-huaweicloud-common</module>
         <module>camel-huaweicloud-functiongraph</module>
         <module>camel-huaweicloud-iam</module>
 		<module>camel-huaweicloud-obs</module>
diff --git a/core/camel-allcomponents/pom.xml b/core/camel-allcomponents/pom.xml
index 69018c3..72cd68f 100644
--- a/core/camel-allcomponents/pom.xml
+++ b/core/camel-allcomponents/pom.xml
@@ -615,6 +615,10 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.camel</groupId>
+			<artifactId>camel-huaweicloud-common</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.camel</groupId>
 			<artifactId>camel-huaweicloud-functiongraph</artifactId>
 		</dependency>
 		<dependency>
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
index 1ea0291..917aea5 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java
@@ -28,13 +28,11 @@ import javax.annotation.Generated;
 @Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
 public interface EndpointBuilderFactory
         extends
-            org.apache.camel.builder.endpoint.dsl.AMQPEndpointBuilderFactory.AMQPBuilders,
-            org.apache.camel.builder.endpoint.dsl.AS2EndpointBuilderFactory.AS2Builders,
-            org.apache.camel.builder.endpoint.dsl.AWS2EC2EndpointBuilderFactory.AWS2EC2Builders,
-            org.apache.camel.builder.endpoint.dsl.AWS2S3EndpointBuilderFactory.AWS2S3Builders,
             org.apache.camel.builder.endpoint.dsl.ActiveMQEndpointBuilderFactory.ActiveMQBuilders,
             org.apache.camel.builder.endpoint.dsl.AhcEndpointBuilderFactory.AhcBuilders,
+            org.apache.camel.builder.endpoint.dsl.AMQPEndpointBuilderFactory.AMQPBuilders,
             org.apache.camel.builder.endpoint.dsl.ArangoDbEndpointBuilderFactory.ArangoDbBuilders,
+            org.apache.camel.builder.endpoint.dsl.AS2EndpointBuilderFactory.AS2Builders,
             org.apache.camel.builder.endpoint.dsl.AsteriskEndpointBuilderFactory.AsteriskBuilders,
             org.apache.camel.builder.endpoint.dsl.Athena2EndpointBuilderFactory.Athena2Builders,
             org.apache.camel.builder.endpoint.dsl.AtlasMapEndpointBuilderFactory.AtlasMapBuilders,
@@ -48,16 +46,16 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.AtomixSetEndpointBuilderFactory.AtomixSetBuilders,
             org.apache.camel.builder.endpoint.dsl.AtomixValueEndpointBuilderFactory.AtomixValueBuilders,
             org.apache.camel.builder.endpoint.dsl.AvroEndpointBuilderFactory.AvroBuilders,
+            org.apache.camel.builder.endpoint.dsl.AWS2EC2EndpointBuilderFactory.AWS2EC2Builders,
+            org.apache.camel.builder.endpoint.dsl.AWS2S3EndpointBuilderFactory.AWS2S3Builders,
             org.apache.camel.builder.endpoint.dsl.BeanEndpointBuilderFactory.BeanBuilders,
-            org.apache.camel.builder.endpoint.dsl.BeanValidatorEndpointBuilderFactory.BeanValidatorBuilders,
             org.apache.camel.builder.endpoint.dsl.BeanstalkEndpointBuilderFactory.BeanstalkBuilders,
+            org.apache.camel.builder.endpoint.dsl.BeanValidatorEndpointBuilderFactory.BeanValidatorBuilders,
             org.apache.camel.builder.endpoint.dsl.BlobEndpointBuilderFactory.BlobBuilders,
             org.apache.camel.builder.endpoint.dsl.BonitaEndpointBuilderFactory.BonitaBuilders,
             org.apache.camel.builder.endpoint.dsl.BoxEndpointBuilderFactory.BoxBuilders,
             org.apache.camel.builder.endpoint.dsl.BraintreeEndpointBuilderFactory.BraintreeBuilders,
             org.apache.camel.builder.endpoint.dsl.BrowseEndpointBuilderFactory.BrowseBuilders,
-            org.apache.camel.builder.endpoint.dsl.CMEndpointBuilderFactory.CMBuilders,
-            org.apache.camel.builder.endpoint.dsl.CMISEndpointBuilderFactory.CMISBuilders,
             org.apache.camel.builder.endpoint.dsl.CaffeineCacheEndpointBuilderFactory.CaffeineCacheBuilders,
             org.apache.camel.builder.endpoint.dsl.CaffeineLoadCacheEndpointBuilderFactory.CaffeineLoadCacheBuilders,
             org.apache.camel.builder.endpoint.dsl.CassandraEndpointBuilderFactory.CassandraBuilders,
@@ -66,19 +64,20 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.CinderEndpointBuilderFactory.CinderBuilders,
             org.apache.camel.builder.endpoint.dsl.ClassEndpointBuilderFactory.ClassBuilders,
             org.apache.camel.builder.endpoint.dsl.ClientEndpointBuilderFactory.ClientBuilders,
+            org.apache.camel.builder.endpoint.dsl.CMEndpointBuilderFactory.CMBuilders,
+            org.apache.camel.builder.endpoint.dsl.CMISEndpointBuilderFactory.CMISBuilders,
             org.apache.camel.builder.endpoint.dsl.CoAPEndpointBuilderFactory.CoAPBuilders,
             org.apache.camel.builder.endpoint.dsl.CometdEndpointBuilderFactory.CometdBuilders,
             org.apache.camel.builder.endpoint.dsl.ConsulEndpointBuilderFactory.ConsulBuilders,
             org.apache.camel.builder.endpoint.dsl.ControlBusEndpointBuilderFactory.ControlBusBuilders,
             org.apache.camel.builder.endpoint.dsl.CordaEndpointBuilderFactory.CordaBuilders,
             org.apache.camel.builder.endpoint.dsl.CosmosDbEndpointBuilderFactory.CosmosDbBuilders,
-            org.apache.camel.builder.endpoint.dsl.CouchDbEndpointBuilderFactory.CouchDbBuilders,
             org.apache.camel.builder.endpoint.dsl.CouchbaseEndpointBuilderFactory.CouchbaseBuilders,
+            org.apache.camel.builder.endpoint.dsl.CouchDbEndpointBuilderFactory.CouchDbBuilders,
             org.apache.camel.builder.endpoint.dsl.CronEndpointBuilderFactory.CronBuilders,
             org.apache.camel.builder.endpoint.dsl.Cw2EndpointBuilderFactory.Cw2Builders,
             org.apache.camel.builder.endpoint.dsl.CxfEndpointBuilderFactory.CxfBuilders,
             org.apache.camel.builder.endpoint.dsl.CxfRsEndpointBuilderFactory.CxfRsBuilders,
-            org.apache.camel.builder.endpoint.dsl.DJLEndpointBuilderFactory.DJLBuilders,
             org.apache.camel.builder.endpoint.dsl.DataFormatEndpointBuilderFactory.DataFormatBuilders,
             org.apache.camel.builder.endpoint.dsl.DataLakeEndpointBuilderFactory.DataLakeBuilders,
             org.apache.camel.builder.endpoint.dsl.DataSetEndpointBuilderFactory.DataSetBuilders,
@@ -95,22 +94,23 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.DirectVmEndpointBuilderFactory.DirectVmBuilders,
             org.apache.camel.builder.endpoint.dsl.DisruptorEndpointBuilderFactory.DisruptorBuilders,
             org.apache.camel.builder.endpoint.dsl.DisruptorVmEndpointBuilderFactory.DisruptorVmBuilders,
+            org.apache.camel.builder.endpoint.dsl.DJLEndpointBuilderFactory.DJLBuilders,
             org.apache.camel.builder.endpoint.dsl.DnsEndpointBuilderFactory.DnsBuilders,
             org.apache.camel.builder.endpoint.dsl.DockerEndpointBuilderFactory.DockerBuilders,
             org.apache.camel.builder.endpoint.dsl.DozerEndpointBuilderFactory.DozerBuilders,
             org.apache.camel.builder.endpoint.dsl.DrillEndpointBuilderFactory.DrillBuilders,
             org.apache.camel.builder.endpoint.dsl.DropboxEndpointBuilderFactory.DropboxBuilders,
             org.apache.camel.builder.endpoint.dsl.ECS2EndpointBuilderFactory.ECS2Builders,
-            org.apache.camel.builder.endpoint.dsl.EKS2EndpointBuilderFactory.EKS2Builders,
             org.apache.camel.builder.endpoint.dsl.EhcacheEndpointBuilderFactory.EhcacheBuilders,
+            org.apache.camel.builder.endpoint.dsl.EKS2EndpointBuilderFactory.EKS2Builders,
             org.apache.camel.builder.endpoint.dsl.ElasticsearchEndpointBuilderFactory.ElasticsearchBuilders,
             org.apache.camel.builder.endpoint.dsl.ElsqlEndpointBuilderFactory.ElsqlBuilders,
             org.apache.camel.builder.endpoint.dsl.EtcdKeysEndpointBuilderFactory.EtcdKeysBuilders,
             org.apache.camel.builder.endpoint.dsl.EtcdStatsEndpointBuilderFactory.EtcdStatsBuilders,
             org.apache.camel.builder.endpoint.dsl.EtcdWatchEndpointBuilderFactory.EtcdWatchBuilders,
+            org.apache.camel.builder.endpoint.dsl.EventbridgeEndpointBuilderFactory.EventbridgeBuilders,
             org.apache.camel.builder.endpoint.dsl.EventEndpointBuilderFactory.EventBuilders,
             org.apache.camel.builder.endpoint.dsl.EventHubsEndpointBuilderFactory.EventHubsBuilders,
-            org.apache.camel.builder.endpoint.dsl.EventbridgeEndpointBuilderFactory.EventbridgeBuilders,
             org.apache.camel.builder.endpoint.dsl.ExecEndpointBuilderFactory.ExecBuilders,
             org.apache.camel.builder.endpoint.dsl.FacebookEndpointBuilderFactory.FacebookBuilders,
             org.apache.camel.builder.endpoint.dsl.FhirEndpointBuilderFactory.FhirBuilders,
@@ -146,7 +146,6 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.GridFsEndpointBuilderFactory.GridFsBuilders,
             org.apache.camel.builder.endpoint.dsl.GrpcEndpointBuilderFactory.GrpcBuilders,
             org.apache.camel.builder.endpoint.dsl.GuavaEventBusEndpointBuilderFactory.GuavaEventBusBuilders,
-            org.apache.camel.builder.endpoint.dsl.HBaseEndpointBuilderFactory.HBaseBuilders,
             org.apache.camel.builder.endpoint.dsl.HazelcastAtomicnumberEndpointBuilderFactory.HazelcastAtomicnumberBuilders,
             org.apache.camel.builder.endpoint.dsl.HazelcastInstanceEndpointBuilderFactory.HazelcastInstanceBuilders,
             org.apache.camel.builder.endpoint.dsl.HazelcastListEndpointBuilderFactory.HazelcastListBuilders,
@@ -158,12 +157,11 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.HazelcastSedaEndpointBuilderFactory.HazelcastSedaBuilders,
             org.apache.camel.builder.endpoint.dsl.HazelcastSetEndpointBuilderFactory.HazelcastSetBuilders,
             org.apache.camel.builder.endpoint.dsl.HazelcastTopicEndpointBuilderFactory.HazelcastTopicBuilders,
+            org.apache.camel.builder.endpoint.dsl.HBaseEndpointBuilderFactory.HBaseBuilders,
             org.apache.camel.builder.endpoint.dsl.HdfsEndpointBuilderFactory.HdfsBuilders,
             org.apache.camel.builder.endpoint.dsl.HttpEndpointBuilderFactory.HttpBuilders,
             org.apache.camel.builder.endpoint.dsl.IAM2EndpointBuilderFactory.IAM2Builders,
             org.apache.camel.builder.endpoint.dsl.IAMEndpointBuilderFactory.IAMBuilders,
-            org.apache.camel.builder.endpoint.dsl.IOTAEndpointBuilderFactory.IOTABuilders,
-            org.apache.camel.builder.endpoint.dsl.IPFSEndpointBuilderFactory.IPFSBuilders,
             org.apache.camel.builder.endpoint.dsl.IgniteCacheEndpointBuilderFactory.IgniteCacheBuilders,
             org.apache.camel.builder.endpoint.dsl.IgniteComputeEndpointBuilderFactory.IgniteComputeBuilders,
             org.apache.camel.builder.endpoint.dsl.IgniteEventsEndpointBuilderFactory.IgniteEventsBuilders,
@@ -174,35 +172,37 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.InfinispanEmbeddedEndpointBuilderFactory.InfinispanEmbeddedBuilders,
             org.apache.camel.builder.endpoint.dsl.InfinispanRemoteEndpointBuilderFactory.InfinispanRemoteBuilders,
             org.apache.camel.builder.endpoint.dsl.InfluxDbEndpointBuilderFactory.InfluxDbBuilders,
+            org.apache.camel.builder.endpoint.dsl.IOTAEndpointBuilderFactory.IOTABuilders,
+            org.apache.camel.builder.endpoint.dsl.IPFSEndpointBuilderFactory.IPFSBuilders,
             org.apache.camel.builder.endpoint.dsl.IrcEndpointBuilderFactory.IrcBuilders,
             org.apache.camel.builder.endpoint.dsl.IronMQEndpointBuilderFactory.IronMQBuilders,
             org.apache.camel.builder.endpoint.dsl.JBPMEndpointBuilderFactory.JBPMBuilders,
             org.apache.camel.builder.endpoint.dsl.JCacheEndpointBuilderFactory.JCacheBuilders,
-            org.apache.camel.builder.endpoint.dsl.JGroupsEndpointBuilderFactory.JGroupsBuilders,
-            org.apache.camel.builder.endpoint.dsl.JGroupsRaftEndpointBuilderFactory.JGroupsRaftBuilders,
-            org.apache.camel.builder.endpoint.dsl.JMXEndpointBuilderFactory.JMXBuilders,
-            org.apache.camel.builder.endpoint.dsl.JSR356WebSocketEndpointBuilderFactory.JSR356WebSocketBuilders,
             org.apache.camel.builder.endpoint.dsl.JcloudsEndpointBuilderFactory.JcloudsBuilders,
             org.apache.camel.builder.endpoint.dsl.JcrEndpointBuilderFactory.JcrBuilders,
             org.apache.camel.builder.endpoint.dsl.JdbcEndpointBuilderFactory.JdbcBuilders,
             org.apache.camel.builder.endpoint.dsl.JettyHttpEndpointBuilderFactory.JettyHttpBuilders,
+            org.apache.camel.builder.endpoint.dsl.JGroupsEndpointBuilderFactory.JGroupsBuilders,
+            org.apache.camel.builder.endpoint.dsl.JGroupsRaftEndpointBuilderFactory.JGroupsRaftBuilders,
             org.apache.camel.builder.endpoint.dsl.JingEndpointBuilderFactory.JingBuilders,
             org.apache.camel.builder.endpoint.dsl.JiraEndpointBuilderFactory.JiraBuilders,
             org.apache.camel.builder.endpoint.dsl.JmsEndpointBuilderFactory.JmsBuilders,
+            org.apache.camel.builder.endpoint.dsl.JMXEndpointBuilderFactory.JMXBuilders,
             org.apache.camel.builder.endpoint.dsl.JoltEndpointBuilderFactory.JoltBuilders,
             org.apache.camel.builder.endpoint.dsl.JooqEndpointBuilderFactory.JooqBuilders,
             org.apache.camel.builder.endpoint.dsl.JpaEndpointBuilderFactory.JpaBuilders,
             org.apache.camel.builder.endpoint.dsl.JsltEndpointBuilderFactory.JsltBuilders,
-            org.apache.camel.builder.endpoint.dsl.JsonValidatorEndpointBuilderFactory.JsonValidatorBuilders,
             org.apache.camel.builder.endpoint.dsl.JsonataEndpointBuilderFactory.JsonataBuilders,
+            org.apache.camel.builder.endpoint.dsl.JsonValidatorEndpointBuilderFactory.JsonValidatorBuilders,
+            org.apache.camel.builder.endpoint.dsl.JSR356WebSocketEndpointBuilderFactory.JSR356WebSocketBuilders,
             org.apache.camel.builder.endpoint.dsl.Jt400EndpointBuilderFactory.Jt400Builders,
-            org.apache.camel.builder.endpoint.dsl.KMS2EndpointBuilderFactory.KMS2Builders,
             org.apache.camel.builder.endpoint.dsl.KafkaEndpointBuilderFactory.KafkaBuilders,
             org.apache.camel.builder.endpoint.dsl.KameletEndpointBuilderFactory.KameletBuilders,
             org.apache.camel.builder.endpoint.dsl.KameletReifyEndpointBuilderFactory.KameletReifyBuilders,
             org.apache.camel.builder.endpoint.dsl.KeystoneEndpointBuilderFactory.KeystoneBuilders,
             org.apache.camel.builder.endpoint.dsl.Kinesis2EndpointBuilderFactory.Kinesis2Builders,
             org.apache.camel.builder.endpoint.dsl.KinesisFirehose2EndpointBuilderFactory.KinesisFirehose2Builders,
+            org.apache.camel.builder.endpoint.dsl.KMS2EndpointBuilderFactory.KMS2Builders,
             org.apache.camel.builder.endpoint.dsl.KubernetesConfigMapsEndpointBuilderFactory.KubernetesConfigMapsBuilders,
             org.apache.camel.builder.endpoint.dsl.KubernetesCustomResourcesEndpointBuilderFactory.KubernetesCustomResourcesBuilders,
             org.apache.camel.builder.endpoint.dsl.KubernetesDeploymentsEndpointBuilderFactory.KubernetesDeploymentsBuilders,
@@ -226,13 +226,11 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.LogEndpointBuilderFactory.LogBuilders,
             org.apache.camel.builder.endpoint.dsl.LuceneEndpointBuilderFactory.LuceneBuilders,
             org.apache.camel.builder.endpoint.dsl.LumberjackEndpointBuilderFactory.LumberjackBuilders,
-            org.apache.camel.builder.endpoint.dsl.MQ2EndpointBuilderFactory.MQ2Builders,
-            org.apache.camel.builder.endpoint.dsl.MSK2EndpointBuilderFactory.MSK2Builders,
             org.apache.camel.builder.endpoint.dsl.MailEndpointBuilderFactory.MailBuilders,
             org.apache.camel.builder.endpoint.dsl.MasterEndpointBuilderFactory.MasterBuilders,
             org.apache.camel.builder.endpoint.dsl.MetricsEndpointBuilderFactory.MetricsBuilders,
-            org.apache.camel.builder.endpoint.dsl.MicroProfileMetricsEndpointBuilderFactory.MicroProfileMetricsBuilders,
             org.apache.camel.builder.endpoint.dsl.MicrometerEndpointBuilderFactory.MicrometerBuilders,
+            org.apache.camel.builder.endpoint.dsl.MicroProfileMetricsEndpointBuilderFactory.MicroProfileMetricsBuilders,
             org.apache.camel.builder.endpoint.dsl.MiloClientEndpointBuilderFactory.MiloClientBuilders,
             org.apache.camel.builder.endpoint.dsl.MiloServerEndpointBuilderFactory.MiloServerBuilders,
             org.apache.camel.builder.endpoint.dsl.MinaEndpointBuilderFactory.MinaBuilders,
@@ -240,6 +238,8 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.MllpEndpointBuilderFactory.MllpBuilders,
             org.apache.camel.builder.endpoint.dsl.MockEndpointBuilderFactory.MockBuilders,
             org.apache.camel.builder.endpoint.dsl.MongoDbEndpointBuilderFactory.MongoDbBuilders,
+            org.apache.camel.builder.endpoint.dsl.MQ2EndpointBuilderFactory.MQ2Builders,
+            org.apache.camel.builder.endpoint.dsl.MSK2EndpointBuilderFactory.MSK2Builders,
             org.apache.camel.builder.endpoint.dsl.MsvEndpointBuilderFactory.MsvBuilders,
             org.apache.camel.builder.endpoint.dsl.MustacheEndpointBuilderFactory.MustacheBuilders,
             org.apache.camel.builder.endpoint.dsl.MvelEndpointBuilderFactory.MvelBuilders,
@@ -247,9 +247,9 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.MyBatisEndpointBuilderFactory.MyBatisBuilders,
             org.apache.camel.builder.endpoint.dsl.NagiosEndpointBuilderFactory.NagiosBuilders,
             org.apache.camel.builder.endpoint.dsl.NatsEndpointBuilderFactory.NatsBuilders,
-            org.apache.camel.builder.endpoint.dsl.NetWeaverEndpointBuilderFactory.NetWeaverBuilders,
             org.apache.camel.builder.endpoint.dsl.NettyEndpointBuilderFactory.NettyBuilders,
             org.apache.camel.builder.endpoint.dsl.NettyHttpEndpointBuilderFactory.NettyHttpBuilders,
+            org.apache.camel.builder.endpoint.dsl.NetWeaverEndpointBuilderFactory.NetWeaverBuilders,
             org.apache.camel.builder.endpoint.dsl.NeutronEndpointBuilderFactory.NeutronBuilders,
             org.apache.camel.builder.endpoint.dsl.NitriteEndpointBuilderFactory.NitriteBuilders,
             org.apache.camel.builder.endpoint.dsl.NovaEndpointBuilderFactory.NovaBuilders,
@@ -278,13 +278,12 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.RedisEndpointBuilderFactory.RedisBuilders,
             org.apache.camel.builder.endpoint.dsl.RefEndpointBuilderFactory.RefBuilders,
             org.apache.camel.builder.endpoint.dsl.RestApiEndpointBuilderFactory.RestApiBuilders,
+            org.apache.camel.builder.endpoint.dsl.ResteasyEndpointBuilderFactory.ResteasyBuilders,
             org.apache.camel.builder.endpoint.dsl.RestEndpointBuilderFactory.RestBuilders,
             org.apache.camel.builder.endpoint.dsl.RestOpenApiEndpointBuilderFactory.RestOpenApiBuilders,
             org.apache.camel.builder.endpoint.dsl.RestSwaggerEndpointBuilderFactory.RestSwaggerBuilders,
-            org.apache.camel.builder.endpoint.dsl.ResteasyEndpointBuilderFactory.ResteasyBuilders,
             org.apache.camel.builder.endpoint.dsl.RobotFrameworkEndpointBuilderFactory.RobotFrameworkBuilders,
             org.apache.camel.builder.endpoint.dsl.RssEndpointBuilderFactory.RssBuilders,
-            org.apache.camel.builder.endpoint.dsl.STS2EndpointBuilderFactory.STS2Builders,
             org.apache.camel.builder.endpoint.dsl.SagaEndpointBuilderFactory.SagaBuilders,
             org.apache.camel.builder.endpoint.dsl.SalesforceEndpointBuilderFactory.SalesforceBuilders,
             org.apache.camel.builder.endpoint.dsl.SchedulerEndpointBuilderFactory.SchedulerBuilders,
@@ -327,6 +326,7 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.StompEndpointBuilderFactory.StompBuilders,
             org.apache.camel.builder.endpoint.dsl.StreamEndpointBuilderFactory.StreamBuilders,
             org.apache.camel.builder.endpoint.dsl.StringTemplateEndpointBuilderFactory.StringTemplateBuilders,
+            org.apache.camel.builder.endpoint.dsl.STS2EndpointBuilderFactory.STS2Builders,
             org.apache.camel.builder.endpoint.dsl.StubEndpointBuilderFactory.StubBuilders,
             org.apache.camel.builder.endpoint.dsl.SwiftEndpointBuilderFactory.SwiftBuilders,
             org.apache.camel.builder.endpoint.dsl.TelegramEndpointBuilderFactory.TelegramBuilders,
@@ -356,10 +356,10 @@ public interface EndpointBuilderFactory
             org.apache.camel.builder.endpoint.dsl.WsEndpointBuilderFactory.WsBuilders,
             org.apache.camel.builder.endpoint.dsl.XChangeEndpointBuilderFactory.XChangeBuilders,
             org.apache.camel.builder.endpoint.dsl.XJEndpointBuilderFactory.XJBuilders,
-            org.apache.camel.builder.endpoint.dsl.XQueryEndpointBuilderFactory.XQueryBuilders,
             org.apache.camel.builder.endpoint.dsl.XmlSignerEndpointBuilderFactory.XmlSignerBuilders,
             org.apache.camel.builder.endpoint.dsl.XmlVerifierEndpointBuilderFactory.XmlVerifierBuilders,
             org.apache.camel.builder.endpoint.dsl.XmppEndpointBuilderFactory.XmppBuilders,
+            org.apache.camel.builder.endpoint.dsl.XQueryEndpointBuilderFactory.XQueryBuilders,
             org.apache.camel.builder.endpoint.dsl.XsltEndpointBuilderFactory.XsltBuilders,
             org.apache.camel.builder.endpoint.dsl.XsltSaxonEndpointBuilderFactory.XsltSaxonBuilders,
             org.apache.camel.builder.endpoint.dsl.YammerEndpointBuilderFactory.YammerBuilders,
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
index 215fe6e..9a4f73d 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java
@@ -25,13 +25,11 @@ import javax.annotation.Generated;
 @Generated("org.apache.camel.maven.packaging.EndpointDslMojo")
 public interface EndpointBuilders
         extends
-            org.apache.camel.builder.endpoint.dsl.AMQPEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.AS2EndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.AWS2EC2EndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.AWS2S3EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ActiveMQEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.AhcEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.AMQPEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ArangoDbEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.AS2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.AsteriskEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.Athena2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.AtlasMapEndpointBuilderFactory,
@@ -45,16 +43,16 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.AtomixSetEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.AtomixValueEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.AvroEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.AWS2EC2EndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.AWS2S3EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.BeanEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.BeanValidatorEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.BeanstalkEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.BeanValidatorEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.BlobEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.BonitaEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.BoxEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.BraintreeEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.BrowseEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.CMEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.CMISEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CaffeineCacheEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CaffeineLoadCacheEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CassandraEndpointBuilderFactory,
@@ -63,19 +61,20 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.CinderEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ClassEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ClientEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.CMEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.CMISEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CoAPEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CometdEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ConsulEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ControlBusEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CordaEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CosmosDbEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.CouchDbEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CouchbaseEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.CouchDbEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CronEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.Cw2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CxfEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.CxfRsEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.DJLEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DataFormatEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DataLakeEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DataSetEndpointBuilderFactory,
@@ -92,22 +91,23 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.DirectVmEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DisruptorEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DisruptorVmEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.DJLEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DnsEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DockerEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DozerEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DrillEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.DropboxEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ECS2EndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.EKS2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.EhcacheEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.EKS2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ElasticsearchEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ElsqlEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.EtcdKeysEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.EtcdStatsEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.EtcdWatchEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.EventbridgeEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.EventEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.EventHubsEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.EventbridgeEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.ExecEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.FacebookEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.FhirEndpointBuilderFactory,
@@ -143,7 +143,6 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.GridFsEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.GrpcEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.GuavaEventBusEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.HBaseEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.HazelcastAtomicnumberEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.HazelcastInstanceEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.HazelcastListEndpointBuilderFactory,
@@ -155,12 +154,11 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.HazelcastSedaEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.HazelcastSetEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.HazelcastTopicEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.HBaseEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.HdfsEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.HttpEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.IAM2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.IAMEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.IOTAEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.IPFSEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.IgniteCacheEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.IgniteComputeEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.IgniteEventsEndpointBuilderFactory,
@@ -171,35 +169,37 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.InfinispanEmbeddedEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.InfinispanRemoteEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.InfluxDbEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.IOTAEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.IPFSEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.IrcEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.IronMQEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JBPMEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JCacheEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.JGroupsEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.JGroupsRaftEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.JMXEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.JSR356WebSocketEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JcloudsEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JcrEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JdbcEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JettyHttpEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.JGroupsEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.JGroupsRaftEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JingEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JiraEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JmsEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.JMXEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JoltEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JooqEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JpaEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JsltEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.JsonValidatorEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.JsonataEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.JsonValidatorEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.JSR356WebSocketEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.Jt400EndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.KMS2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.KafkaEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.KameletEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.KameletReifyEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.KeystoneEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.Kinesis2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.KinesisFirehose2EndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.KMS2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.KubernetesConfigMapsEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.KubernetesCustomResourcesEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.KubernetesDeploymentsEndpointBuilderFactory,
@@ -223,13 +223,11 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.LogEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.LuceneEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.LumberjackEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.MQ2EndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.MSK2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MailEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MasterEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MetricsEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.MicroProfileMetricsEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MicrometerEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.MicroProfileMetricsEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MiloClientEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MiloServerEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MinaEndpointBuilderFactory,
@@ -237,6 +235,8 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.MllpEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MockEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MongoDbEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.MQ2EndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.MSK2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MsvEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MustacheEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.MvelEndpointBuilderFactory,
@@ -244,9 +244,9 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.MyBatisEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.NagiosEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.NatsEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.NetWeaverEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.NettyEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.NettyHttpEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.NetWeaverEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.NeutronEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.NitriteEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.NovaEndpointBuilderFactory,
@@ -275,13 +275,12 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.RedisEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.RefEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.RestApiEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.ResteasyEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.RestEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.RestOpenApiEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.RestSwaggerEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.ResteasyEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.RobotFrameworkEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.RssEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.STS2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.SagaEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.SalesforceEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.SchedulerEndpointBuilderFactory,
@@ -324,6 +323,7 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.StompEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.StreamEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.StringTemplateEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.STS2EndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.StubEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.SwiftEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.TelegramEndpointBuilderFactory,
@@ -353,10 +353,10 @@ public interface EndpointBuilders
             org.apache.camel.builder.endpoint.dsl.WsEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.XChangeEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.XJEndpointBuilderFactory,
-            org.apache.camel.builder.endpoint.dsl.XQueryEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.XmlSignerEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.XmlVerifierEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.XmppEndpointBuilderFactory,
+            org.apache.camel.builder.endpoint.dsl.XQueryEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.XsltEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.XsltSaxonEndpointBuilderFactory,
             org.apache.camel.builder.endpoint.dsl.YammerEndpointBuilderFactory,
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/FunctionGraphEndpointBuilderFactory.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/FunctionGraphEndpointBuilderFactory.java
index ae0854a..7fa2d7f 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/FunctionGraphEndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/FunctionGraphEndpointBuilderFactory.java
@@ -165,7 +165,7 @@ public interface FunctionGraphEndpointBuilderFactory {
          * Configuration object for cloud service authentication.
          * 
          * The option is a:
-         * &lt;code&gt;org.apache.camel.models.ServiceKeys&lt;/code&gt; type.
+         * &lt;code&gt;org.apache.camel.component.huaweicloud.common.models.ServiceKeys&lt;/code&gt; type.
          * 
          * Group: producer
          * 
@@ -180,7 +180,7 @@ public interface FunctionGraphEndpointBuilderFactory {
          * Configuration object for cloud service authentication.
          * 
          * The option will be converted to a
-         * &lt;code&gt;org.apache.camel.models.ServiceKeys&lt;/code&gt; type.
+         * &lt;code&gt;org.apache.camel.component.huaweicloud.common.models.ServiceKeys&lt;/code&gt; type.
          * 
          * Group: producer
          * 
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/IAMEndpointBuilderFactory.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/IAMEndpointBuilderFactory.java
index 8d4a6e7..d59b0c9 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/IAMEndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/IAMEndpointBuilderFactory.java
@@ -248,7 +248,7 @@ public interface IAMEndpointBuilderFactory {
          * Configuration object for cloud service authentication.
          * 
          * The option is a:
-         * &lt;code&gt;org.apache.camel.component.huaweicloud.iam.models.ServiceKeys&lt;/code&gt; type.
+         * &lt;code&gt;org.apache.camel.component.huaweicloud.common.models.ServiceKeys&lt;/code&gt; type.
          * 
          * Group: producer
          * 
@@ -263,7 +263,7 @@ public interface IAMEndpointBuilderFactory {
          * Configuration object for cloud service authentication.
          * 
          * The option will be converted to a
-         * &lt;code&gt;org.apache.camel.component.huaweicloud.iam.models.ServiceKeys&lt;/code&gt; type.
+         * &lt;code&gt;org.apache.camel.component.huaweicloud.common.models.ServiceKeys&lt;/code&gt; type.
          * 
          * Group: producer
          * 
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OBSEndpointBuilderFactory.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OBSEndpointBuilderFactory.java
index b42d56f..5d8cc23 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OBSEndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/OBSEndpointBuilderFactory.java
@@ -975,7 +975,7 @@ public interface OBSEndpointBuilderFactory {
          * Configuration object for cloud service authentication.
          * 
          * The option is a:
-         * &lt;code&gt;org.apache.camel.component.huaweicloud.obs.models.ServiceKeys&lt;/code&gt; type.
+         * &lt;code&gt;org.apache.camel.component.huaweicloud.common.models.ServiceKeys&lt;/code&gt; type.
          * 
          * Group: security
          * 
@@ -990,7 +990,7 @@ public interface OBSEndpointBuilderFactory {
          * Configuration object for cloud service authentication.
          * 
          * The option will be converted to a
-         * &lt;code&gt;org.apache.camel.component.huaweicloud.obs.models.ServiceKeys&lt;/code&gt; type.
+         * &lt;code&gt;org.apache.camel.component.huaweicloud.common.models.ServiceKeys&lt;/code&gt; type.
          * 
          * Group: security
          * 
@@ -1379,7 +1379,7 @@ public interface OBSEndpointBuilderFactory {
          * Configuration object for cloud service authentication.
          * 
          * The option is a:
-         * &lt;code&gt;org.apache.camel.component.huaweicloud.obs.models.ServiceKeys&lt;/code&gt; type.
+         * &lt;code&gt;org.apache.camel.component.huaweicloud.common.models.ServiceKeys&lt;/code&gt; type.
          * 
          * Group: security
          * 
@@ -1394,7 +1394,7 @@ public interface OBSEndpointBuilderFactory {
          * Configuration object for cloud service authentication.
          * 
          * The option will be converted to a
-         * &lt;code&gt;org.apache.camel.component.huaweicloud.obs.models.ServiceKeys&lt;/code&gt; type.
+         * &lt;code&gt;org.apache.camel.component.huaweicloud.common.models.ServiceKeys&lt;/code&gt; type.
          * 
          * Group: security
          * 
@@ -1612,7 +1612,7 @@ public interface OBSEndpointBuilderFactory {
          * Configuration object for cloud service authentication.
          * 
          * The option is a:
-         * &lt;code&gt;org.apache.camel.component.huaweicloud.obs.models.ServiceKeys&lt;/code&gt; type.
+         * &lt;code&gt;org.apache.camel.component.huaweicloud.common.models.ServiceKeys&lt;/code&gt; type.
          * 
          * Group: security
          * 
@@ -1627,7 +1627,7 @@ public interface OBSEndpointBuilderFactory {
          * Configuration object for cloud service authentication.
          * 
          * The option will be converted to a
-         * &lt;code&gt;org.apache.camel.component.huaweicloud.obs.models.ServiceKeys&lt;/code&gt; type.
+         * &lt;code&gt;org.apache.camel.component.huaweicloud.common.models.ServiceKeys&lt;/code&gt; type.
          * 
          * Group: security
          * 
diff --git a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SimpleNotificationEndpointBuilderFactory.java b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SimpleNotificationEndpointBuilderFactory.java
index f504165..c935ad6 100644
--- a/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SimpleNotificationEndpointBuilderFactory.java
+++ b/core/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SimpleNotificationEndpointBuilderFactory.java
@@ -316,7 +316,7 @@ public interface SimpleNotificationEndpointBuilderFactory {
          * Configuration object for cloud service authentication.
          * 
          * The option is a:
-         * &lt;code&gt;org.apache.camel.component.huaweicloud.smn.models.ServiceKeys&lt;/code&gt; type.
+         * &lt;code&gt;org.apache.camel.component.huaweicloud.common.models.ServiceKeys&lt;/code&gt; type.
          * 
          * Group: producer
          * 
@@ -331,7 +331,7 @@ public interface SimpleNotificationEndpointBuilderFactory {
          * Configuration object for cloud service authentication.
          * 
          * The option will be converted to a
-         * &lt;code&gt;org.apache.camel.component.huaweicloud.smn.models.ServiceKeys&lt;/code&gt; type.
+         * &lt;code&gt;org.apache.camel.component.huaweicloud.common.models.ServiceKeys&lt;/code&gt; type.
          * 
          * Group: producer
          * 
diff --git a/parent/pom.xml b/parent/pom.xml
index b97d910..2a5a02c 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -1551,6 +1551,11 @@
 			</dependency>
 			<dependency>
 				<groupId>org.apache.camel</groupId>
+				<artifactId>camel-huaweicloud-common</artifactId>
+				<version>${project.version}</version>
+			</dependency>
+			<dependency>
+				<groupId>org.apache.camel</groupId>
 				<artifactId>camel-huaweicloud-functiongraph</artifactId>
 				<version>${project.version}</version>
 			</dependency>
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 bd44834..07b15e2 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
@@ -67,7 +67,8 @@ public class PrepareCatalogMojo extends AbstractMojo {
     private static final String[] EXCLUDE_DOC_FILES
             = {
                     "camel-core-model", "camel-core-xml", "camel-http-common", "camel-http-base", "camel-jetty-common",
-                    "camel-debezium-common", "camel-infinispan-common", "camel-vertx-common" };
+                    "camel-debezium-common", "camel-infinispan-common", "camel-vertx-common",
+                    "camel-huaweicloud-common" };
 
     private static final int UNUSED_LABELS_WARN = 15;