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
commit 06b8176b534746336e3b0026608ec08b9dcd6162 Author: Claus Ibsen <[email protected]> AuthorDate: Sat Oct 24 19:57:06 2026 +0200 CAMEL-24961: Catalog body types for the seven huawei cloud components and the six openstack components (#28406) Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> Signed-off-by: Claus Ibsen <[email protected]> --- .../camel/catalog/components/hwcloud-dms.json | 4 ++ .../camel/catalog/components/hwcloud-frs.json | 4 ++ .../catalog/components/hwcloud-functiongraph.json | 4 ++ .../camel/catalog/components/hwcloud-iam.json | 4 ++ .../components/hwcloud-imagerecognition.json | 4 ++ .../camel/catalog/components/hwcloud-obs.json | 5 +++ .../camel/catalog/components/hwcloud-smn.json | 4 ++ .../camel/catalog/components/openstack-cinder.json | 4 ++ .../camel/catalog/components/openstack-glance.json | 4 ++ .../catalog/components/openstack-keystone.json | 4 ++ .../catalog/components/openstack-neutron.json | 4 ++ .../camel/catalog/components/openstack-nova.json | 4 ++ .../camel/catalog/components/openstack-swift.json | 4 ++ .../catalog/docs/openstack-swift-component.adoc | 3 ++ .../component/huaweicloud/dms/hwcloud-dms.json | 4 ++ .../component/huaweicloud/dms/DMSEndpoint.java | 32 +++++++++++++++ .../component/huaweicloud/frs/hwcloud-frs.json | 4 ++ .../huaweicloud/frs/FaceRecognitionEndpoint.java | 14 +++++++ .../org/apache/camel/hwcloud-functiongraph.json | 4 ++ .../org/apache/camel/FunctionGraphEndpoint.java | 12 ++++++ .../component/huaweicloud/iam/hwcloud-iam.json | 4 ++ .../component/huaweicloud/iam/IAMEndpoint.java | 19 +++++++++ .../image/hwcloud-imagerecognition.json | 4 ++ .../image/ImageRecognitionEndpoint.java | 18 +++++++++ .../component/huaweicloud/obs/hwcloud-obs.json | 5 +++ .../component/huaweicloud/obs/OBSEndpoint.java | 45 ++++++++++++++++++++++ .../component/huaweicloud/smn/hwcloud-smn.json | 4 ++ .../smn/SimpleNotificationEndpoint.java | 16 ++++++++ .../openstack/cinder/openstack-cinder.json | 4 ++ .../openstack/glance/openstack-glance.json | 4 ++ .../openstack/keystone/openstack-keystone.json | 4 ++ .../openstack/neutron/openstack-neutron.json | 4 ++ .../component/openstack/nova/openstack-nova.json | 4 ++ .../component/openstack/swift/openstack-swift.json | 4 ++ .../src/main/docs/openstack-swift-component.adoc | 3 ++ .../component/openstack/cinder/CinderEndpoint.java | 15 ++++++++ .../component/openstack/glance/GlanceEndpoint.java | 20 ++++++++++ .../openstack/keystone/KeystoneEndpoint.java | 24 ++++++++++++ .../openstack/neutron/NeutronEndpoint.java | 19 +++++++++ .../component/openstack/nova/NovaEndpoint.java | 20 ++++++++++ .../component/openstack/swift/SwiftEndpoint.java | 22 +++++++++++ 41 files changed, 388 insertions(+) diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-dms.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-dms.json index a46f4bfa101f..a3e5a7107b55 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-dms.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-dms.json @@ -27,6 +27,10 @@ "lazyStartProducer": { "index": 0, "kind": "property", "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 [...] "autowiredEnabled": { "index": 1, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "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 t [...] }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "byOption": [ { "option": "operation", "value": "createInstance", "carriers": [ "text", "pojo" ] }, { "option": "operation", "value": "updateInstance", "carriers": [ "text", "pojo" ] } ], "description": "Not used by deleteInstance, listInstances and queryInstance, which take the instance id and the engine from the options or exchange properties such as CamelHwCloudDmsInstanceId. createInstance takes a CreateInstanceRequestBody or its JSON as tex [...] + "producerOut": { "carriers": [ "unchanged" ], "byOption": [ { "option": "operation", "value": "createInstance", "carriers": [ "text" ], "javaType": "java.lang.String" }, { "option": "operation", "value": "listInstances", "carriers": [ "text" ], "javaType": "java.lang.String" }, { "option": "operation", "value": "queryInstance", "carriers": [ "text" ], "javaType": "java.lang.String" } ], "description": "The JSON of the response as text: the id of the new instance for createInstance, t [...] + }, "properties": { "operation": { "index": 0, "kind": "path", "displayName": "Operation", "group": "producer", "label": "producer", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Operation to be performed" }, "accessKey": { "index": 1, "kind": "parameter", "displayName": "API access key (AK)", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "security": "secret", "description": "Access key for the cloud user" }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-frs.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-frs.json index 213725c4de6c..e5cf4dfaa5d3 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-frs.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-frs.json @@ -27,6 +27,10 @@ "lazyStartProducer": { "index": 0, "kind": "property", "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 [...] "autowiredEnabled": { "index": 1, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "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 t [...] }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "description": "Not used, not even for the image: the image comes from the options or the exchange properties as base64 (CamelHwCloudFrsImageBase64), a URL (CamelHwCloudFrsImageUrl) or a local file path (CamelHwCloudFrsImageFilePath), the second image of faceVerification from the CamelHwCloudFrsAnotherImage properties, and the video of faceLiveDetection from the CamelHwCloudFrsVideo properties" }, + "producerOut": { "carriers": [ "pojo" ], "description": "The response of the Huawei Cloud SDK for the operation and the source of the image, such as the DetectFaceByBase64Response of faceDetection with base64, which holds the faces found" } + }, "properties": { "operation": { "index": 0, "kind": "path", "displayName": "Operation name", "group": "producer", "label": "producer", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Name of Face Recognition operation to perform, including faceDetection, faceVerification and faceLiveDetection" }, "accessKey": { "index": 1, "kind": "parameter", "displayName": "Account access key (AK)", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "security": "secret", "description": "Access key for the cloud user" }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-functiongraph.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-functiongraph.json index ca11b59ccc62..d4329e6c5174 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-functiongraph.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-functiongraph.json @@ -27,6 +27,10 @@ "lazyStartProducer": { "index": 0, "kind": "property", "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 [...] "autowiredEnabled": { "index": 1, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "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 t [...] }, + "bodyTypes": { + "producerIn": { "carriers": [ "map", "text" ], "description": "The event of the function, as a Map or a JSON object as text. Bytes, a stream, a file, a JSON array, a POJO or no body fail: convert the body to a String or a Map first" }, + "producerOut": { "carriers": [ "text", "null" ], "description": "The body field of the result of the function as text: a string as it is, an object or an array as JSON. No body when the result has no body field. With the CamelHwCloudFgXCffLogType exchange property set, the log of the call is in the CamelHwCloudFgXCffLogs exchange property" } + }, "properties": { "operation": { "index": 0, "kind": "path", "displayName": "Operation", "group": "producer", "label": "producer", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Operation to be performed" }, "endpoint": { "index": 1, "kind": "parameter", "displayName": "Service endpoint", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "FunctionGraph url. Carries higher precedence than region parameter based client initialization" }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-iam.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-iam.json index 87ee67035a88..b8f04f244e6f 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-iam.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-iam.json @@ -27,6 +27,10 @@ "lazyStartProducer": { "index": 0, "kind": "property", "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 [...] "autowiredEnabled": { "index": 1, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "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 t [...] }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "byOption": [ { "option": "operation", "value": "updateUser", "carriers": [ "text", "pojo" ] }, { "option": "operation", "value": "updateGroup", "carriers": [ "text", "pojo" ] } ], "description": "Not used by the list and get operations, which take the ids from the options or the CamelHwCloudIamUserId and CamelHwCloudIamGroupId exchange properties. updateUser needs an UpdateUserOption of the Huawei Cloud SDK or its JSON as text, and updateGroup [...] + "producerOut": { "carriers": [ "text" ], "javaType": "java.lang.String", "format": "json", "description": "The JSON of the result as text: the array of the users or the groups for listUsers, listGroups and getGroupUsers, the user or the group for getUser, updateUser and updateGroup. The keys are the field names of the Huawei Cloud SDK, such as domainId" } + }, "properties": { "operation": { "index": 0, "kind": "path", "displayName": "Operation", "group": "producer", "label": "producer", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Operation to be performed" }, "accessKey": { "index": 1, "kind": "parameter", "displayName": "API access key (AK)", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "security": "secret", "description": "Access key for the cloud user" }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-imagerecognition.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-imagerecognition.json index 62d32ec88fc2..0dc79160f15f 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-imagerecognition.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-imagerecognition.json @@ -27,6 +27,10 @@ "lazyStartProducer": { "index": 0, "kind": "property", "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 [...] "autowiredEnabled": { "index": 1, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "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 t [...] }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "description": "Not used, not even for the image: the image comes from the imageContent option or the CamelHwCloudImageContent exchange property as base64, or from the imageUrl option or the CamelHwCloudImageUrl exchange property as a URL" }, + "producerOut": { "carriers": [ "list", "pojo" ], "byOption": [ { "option": "operation", "value": "celebrityRecognition", "carriers": [ "list" ], "javaType": "java.util.List<com.huaweicloud.sdk.image.v2.model.CelebrityRecognitionResultBody>" }, { "option": "operation", "value": "tagRecognition", "carriers": [ "pojo" ], "javaType": "com.huaweicloud.sdk.image.v2.model.ImageTaggingResponseResult" } ], "description": "The result of the Huawei Cloud SDK: for celebrityRecognition a List wit [...] + }, "properties": { "operation": { "index": 0, "kind": "path", "displayName": "Operation name", "group": "producer", "label": "producer", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Name of Image Recognition operation to perform, including celebrityRecognition and tagRecognition" }, "accessKey": { "index": 1, "kind": "parameter", "displayName": "Account access key (AK)", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "security": "secret", "description": "Access key for the cloud user" }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-obs.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-obs.json index 07a27257ba6d..136e28769e21 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-obs.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-obs.json @@ -41,6 +41,11 @@ "Content-Type": { "index": 7, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The type of content stored in the object", "constantName": "org.apache.camel.component.huaweicloud.obs.constants.OBSHeaders#CONTENT_TYPE" }, "CamelFileName": { "index": 8, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Name of the object with which the operation is to be performed", "constantName": "org.apache.camel.component.huaweicloud.obs.constants.OBSHeaders#FILE_NAME" } }, + "bodyTypes": { + "consumerOut": { "carriers": [ "bytes" ], "javaType": "byte[]", "description": "The content of the object as a byte array, one message per object, with its bucket, key and metadata in headers such as CamelHwCloudObsObjectKey, and the key in CamelFileName too. Folders are consumed too, with an empty body, unless includeFolders=false" }, + "producerIn": { "carriers": [ "any" ], "byOption": [ { "option": "operation", "value": "putObject", "carriers": [ "text", "bytes", "stream", "file" ] }, { "option": "operation", "value": "createBucket", "carriers": [ "text", "pojo" ] }, { "option": "operation", "value": "listObjects", "carriers": [ "text", "pojo" ] } ], "description": "For putObject the content to upload: text, bytes, a stream or a file, such as the file of a file consumer, whose name is the object name when objectNa [...] + "producerOut": { "carriers": [ "unchanged" ], "byOption": [ { "option": "operation", "value": "putObject", "carriers": [ "text" ], "javaType": "java.lang.String" }, { "option": "operation", "value": "getObject", "carriers": [ "bytes" ], "javaType": "byte[]" }, { "option": "operation", "value": "listObjects", "carriers": [ "text" ], "javaType": "java.lang.String" }, { "option": "operation", "value": "listBuckets", "carriers": [ "text" ], "javaType": "java.lang.String" }, { "option": " [...] + }, "properties": { "operation": { "index": 0, "kind": "path", "displayName": "Operation", "group": "producer", "label": "producer", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Operation to be performed" }, "bucketName": { "index": 1, "kind": "parameter", "displayName": "Bucket Name", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "endpointIdentity": true, "description": "Name of bucket to perform operation on" }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-smn.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-smn.json index bc9d4331b5ba..9264f439019a 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-smn.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/hwcloud-smn.json @@ -27,6 +27,10 @@ "lazyStartProducer": { "index": 0, "kind": "property", "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 [...] "autowiredEnabled": { "index": 1, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "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 t [...] }, + "bodyTypes": { + "producerIn": { "carriers": [ "text", "bytes", "stream", "file" ], "byOption": [ { "option": "operation", "value": "publishAsTemplatedMessage", "carriers": [ "text", "bytes", "stream", "file", "null" ] } ], "description": "The message to publish, as text: bytes, a stream or a file are read as text, and a Map or a POJO is sent as its toString(): marshal it first. No body fails for publishAsTextMessage, while publishAsTemplatedMessage can have no body, with the template from the CamelH [...] + "producerOut": { "carriers": [ "unchanged" ], "description": "Unchanged, with the ids of the message and of the request in the CamelHwCloudSmnMesssageId and CamelHwCloudSmnRequestId exchange properties" } + }, "properties": { "smnService": { "index": 0, "kind": "path", "displayName": "Service name", "group": "producer", "label": "producer", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Name of SMN service to invoke" }, "accessKey": { "index": 1, "kind": "parameter", "displayName": "API access key (AK)", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "security": "secret", "description": "Access key for the cloud user" }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-cinder.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-cinder.json index d2cafdeab7fe..73d6bf76d429 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-cinder.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-cinder.json @@ -40,6 +40,10 @@ "CamelOpenstackName": { "index": 9, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#NAME" }, "CamelOpenstackDescription": { "index": 10, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The description.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#DESCRIPTION" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "description": "Read by create and update only: a Volume or VolumeSnapshot of openstack4j, or else the fields from headers such as CamelOpenstackName. The other operations take the id from a header" }, + "producerOut": { "carriers": [ "pojo", "list", "null", "unchanged" ], "byOption": [ { "option": "operation", "value": "create", "carriers": [ "pojo" ] }, { "option": "operation", "value": "get", "carriers": [ "pojo", "null" ] }, { "option": "operation", "value": "getAll", "carriers": [ "list" ] }, { "option": "operation", "value": "getAllTypes", "carriers": [ "list" ] }, { "option": "operation", "value": "update", "carriers": [ "unchanged" ] }, { "option": "operation", "value": "dele [...] + }, "properties": { "host": { "index": 0, "kind": "path", "displayName": "Host", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "OpenStack host url" }, "apiVersion": { "index": 1, "kind": "parameter", "displayName": "Api Version", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "V2", "V3" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "V3", "description": "OpenStack API version" }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-glance.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-glance.json index 21882d5994c7..e3ec1c39a4d0 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-glance.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-glance.json @@ -41,6 +41,10 @@ "CamelOpenstackName": { "index": 10, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#NAME" }, "CamelOpenstackProperties": { "index": 11, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Map<String, String>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The image properties.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#PROPERTIES" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "byOption": [ { "option": "operation", "value": "create", "carriers": [ "stream", "file", "pojo" ] }, { "option": "operation", "value": "upload", "carriers": [ "stream", "file", "pojo" ] } ], "description": "For create and upload the image data: an InputStream, a File, a URL or a Payload of openstack4j; text, bytes or the file of the file consumer fail: convert it to a File or an InputStream first. reserve and update take an Image of openstack4j [...] + "producerOut": { "carriers": [ "pojo", "list", "null", "unchanged" ], "byOption": [ { "option": "operation", "value": "reserve", "carriers": [ "pojo" ] }, { "option": "operation", "value": "create", "carriers": [ "pojo" ] }, { "option": "operation", "value": "upload", "carriers": [ "pojo" ] }, { "option": "operation", "value": "update", "carriers": [ "pojo" ] }, { "option": "operation", "value": "get", "carriers": [ "pojo", "null" ] }, { "option": "operation", "value": "getAll", "car [...] + }, "properties": { "host": { "index": 0, "kind": "path", "displayName": "Host", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "OpenStack host url" }, "apiVersion": { "index": 1, "kind": "parameter", "displayName": "Api Version", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "V2", "V3" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "V3", "description": "OpenStack API version" }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-keystone.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-keystone.json index 56ebed2fbd1f..593ce641b978 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-keystone.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-keystone.json @@ -39,6 +39,10 @@ "CamelOpenstackId": { "index": 8, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The ID.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#ID" }, "CamelOpenstackName": { "index": 9, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#NAME" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "description": "Read by create and update only: a Region, Domain, Project, User or Group of openstack4j, or else the fields from headers such as CamelOpenstackName. The other operations take the ids from headers" }, + "producerOut": { "carriers": [ "pojo", "list", "value", "null", "unchanged" ], "byOption": [ { "option": "operation", "value": "create", "carriers": [ "pojo" ] }, { "option": "operation", "value": "get", "carriers": [ "pojo", "null" ] }, { "option": "operation", "value": "getAll", "carriers": [ "list" ] }, { "option": "operation", "value": "update", "carriers": [ "pojo" ] }, { "option": "operation", "value": "delete", "carriers": [ "unchanged" ] }, { "option": "operation", "value": " [...] + }, "properties": { "host": { "index": 0, "kind": "path", "displayName": "Host", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "OpenStack host url" }, "config": { "index": 1, "kind": "parameter", "displayName": "Config", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.openstack4j.core.transport.Config", "deprecated": false, "autowired": false, "secret": false, "description": "OpenStack configuration" }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-neutron.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-neutron.json index e5c629100cd1..0a150984a242 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-neutron.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-neutron.json @@ -51,6 +51,10 @@ "CamelOpenstackId": { "index": 20, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The ID.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#ID" }, "CamelOpenstackName": { "index": 21, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#NAME" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "description": "Read by create and update only: a Network, Subnet, Port or Router of openstack4j, or else the fields from headers such as CamelOpenstackName. The other operations take the ids from headers" }, + "producerOut": { "carriers": [ "pojo", "list", "null", "unchanged" ], "byOption": [ { "option": "operation", "value": "create", "carriers": [ "pojo" ] }, { "option": "operation", "value": "get", "carriers": [ "pojo", "null" ] }, { "option": "operation", "value": "getAll", "carriers": [ "list" ] }, { "option": "operation", "value": "update", "carriers": [ "pojo" ] }, { "option": "operation", "value": "delete", "carriers": [ "unchanged" ] }, { "option": "operation", "value": "attachInt [...] + }, "properties": { "host": { "index": 0, "kind": "path", "displayName": "Host", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "OpenStack host url" }, "apiVersion": { "index": 1, "kind": "parameter", "displayName": "Api Version", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "V2", "V3" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "V3", "description": "OpenStack API version" }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-nova.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-nova.json index aea1a77b347c..d8fcd3b87dcb 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-nova.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-nova.json @@ -43,6 +43,10 @@ "CamelOpenstackId": { "index": 12, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The ID.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#ID" }, "CamelOpenstackName": { "index": 13, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#NAME" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "description": "Read by create only: a Flavor or ServerCreate of openstack4j, or else the fields from headers such as CamelOpenstackName; for keypairs the public key as text, or no body to have the key pair generated. The other operations take the id or name from headers" }, + "producerOut": { "carriers": [ "pojo", "list", "text", "null", "unchanged" ], "byOption": [ { "option": "operation", "value": "create", "carriers": [ "pojo" ] }, { "option": "operation", "value": "get", "carriers": [ "pojo", "null" ] }, { "option": "operation", "value": "getAll", "carriers": [ "list" ] }, { "option": "operation", "value": "createSnapshot", "carriers": [ "text" ], "javaType": "java.lang.String" }, { "option": "operation", "value": "delete", "carriers": [ "unchanged" ] [...] + }, "properties": { "host": { "index": 0, "kind": "path", "displayName": "Host", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "OpenStack host url" }, "apiVersion": { "index": 1, "kind": "parameter", "displayName": "Api Version", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "V2", "V3" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "V3", "description": "OpenStack API version" }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-swift.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-swift.json index 4563b934a010..f830823a94c3 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-swift.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/openstack-swift.json @@ -43,6 +43,10 @@ "CamelOpenstackId": { "index": 12, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The ID.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#ID" }, "CamelOpenstackName": { "index": 13, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#NAME" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "description": "For create of an object the content: an InputStream, a File, a URL or a Payload of openstack4j; text, bytes or the file of the file consumer fail: convert it to a File or an InputStream first. createUpdateMetadata and deleteMetadata take the metadata as a Map. The containers take a CreateUpdateContainerOptions or ContainerListOptions of openstack4j, or else headers" }, + "producerOut": { "carriers": [ "text", "pojo", "list", "map", "null", "unchanged" ], "byOption": [ { "option": "operation", "value": "getAll", "carriers": [ "list" ] }, { "option": "operation", "value": "getMetadata", "carriers": [ "map" ] }, { "option": "operation", "value": "delete", "carriers": [ "unchanged" ] }, { "option": "operation", "value": "createUpdateMetadata", "carriers": [ "unchanged" ] }, { "option": "operation", "value": "deleteMetadata", "carriers": [ "unchanged" ] } [...] + }, "properties": { "host": { "index": 0, "kind": "path", "displayName": "Host", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "OpenStack host url" }, "apiVersion": { "index": 1, "kind": "parameter", "displayName": "Api Version", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "V2", "V3" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "V3", "description": "OpenStack API version" }, diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/openstack-swift-component.adoc b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/openstack-swift-component.adoc index 23f05bbb7d4d..9ec139f27562 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/openstack-swift-component.adoc +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/openstack-swift-component.adoc @@ -103,6 +103,7 @@ or `org.openstack4j.model.storage.object.options.ContainerListOptions` for listi === Example The following route stores each file of the `outbox` folder as an object of the `reports` container. +The body must be an `InputStream`, a `File`, a `URL` or a `Payload` of openstack4j, so the route converts the file of the file consumer to a `java.io.File` first. The endpoint is the address of the identity service (Keystone), and the credentials are property placeholders: [source,yaml] @@ -121,6 +122,8 @@ The endpoint is the address of the identity service (Keystone), and the credenti expression: simple: expression: "${header.CamelFileName}" + - convertBodyTo: + type: java.io.File - to: uri: openstack-swift:http://controller:5000/v3 parameters: diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/dms/hwcloud-dms.json b/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/dms/hwcloud-dms.json index a46f4bfa101f..a3e5a7107b55 100644 --- a/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/dms/hwcloud-dms.json +++ b/components/camel-huawei/camel-huaweicloud-dms/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/dms/hwcloud-dms.json @@ -27,6 +27,10 @@ "lazyStartProducer": { "index": 0, "kind": "property", "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 [...] "autowiredEnabled": { "index": 1, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "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 t [...] }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "byOption": [ { "option": "operation", "value": "createInstance", "carriers": [ "text", "pojo" ] }, { "option": "operation", "value": "updateInstance", "carriers": [ "text", "pojo" ] } ], "description": "Not used by deleteInstance, listInstances and queryInstance, which take the instance id and the engine from the options or exchange properties such as CamelHwCloudDmsInstanceId. createInstance takes a CreateInstanceRequestBody or its JSON as tex [...] + "producerOut": { "carriers": [ "unchanged" ], "byOption": [ { "option": "operation", "value": "createInstance", "carriers": [ "text" ], "javaType": "java.lang.String" }, { "option": "operation", "value": "listInstances", "carriers": [ "text" ], "javaType": "java.lang.String" }, { "option": "operation", "value": "queryInstance", "carriers": [ "text" ], "javaType": "java.lang.String" } ], "description": "The JSON of the response as text: the id of the new instance for createInstance, t [...] + }, "properties": { "operation": { "index": 0, "kind": "path", "displayName": "Operation", "group": "producer", "label": "producer", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Operation to be performed" }, "accessKey": { "index": 1, "kind": "parameter", "displayName": "API access key (AK)", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "security": "secret", "description": "Access key for the cloud user" }, diff --git a/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DMSEndpoint.java b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DMSEndpoint.java index 58a60ccfc76d..97694fc9ad46 100644 --- a/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DMSEndpoint.java +++ b/components/camel-huawei/camel-huaweicloud-dms/src/main/java/org/apache/camel/component/huaweicloud/dms/DMSEndpoint.java @@ -27,6 +27,9 @@ 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.dms.models.DmsRegion; +import org.apache.camel.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -40,6 +43,35 @@ import org.apache.camel.util.ObjectHelper; @UriEndpoint(firstVersion = "3.12.0", scheme = "hwcloud-dms", title = "Huawei Distributed Message Service (DMS)", syntax = "hwcloud-dms:operation", category = { Category.CLOUD }, producerOnly = true) +@BodyTypes(producerIn = @BodyType(value = Carrier.ANY, + byOption = { + @BodyType.When(option = "operation", value = "createInstance", + carriers = { Carrier.TEXT, Carrier.POJO }), + @BodyType.When(option = "operation", value = "updateInstance", + carriers = { Carrier.TEXT, Carrier.POJO }) }, + description = "Not used by deleteInstance, listInstances and queryInstance, which take the" + + " instance id and the engine from the options or exchange properties such as" + + " CamelHwCloudDmsInstanceId. createInstance takes a CreateInstanceRequestBody or" + + " its JSON as text, and with another body, JSON as bytes or a stream too, creates" + + " the instance from the options. updateInstance needs an UpdateInstanceRequestBody" + + " or its JSON as text: another body fails"), + producerOut = @BodyType(value = Carrier.UNCHANGED, + byOption = { + @BodyType.When(option = "operation", value = "createInstance", + carriers = Carrier.TEXT, + javaType = "java.lang.String"), + @BodyType.When(option = "operation", value = "listInstances", + carriers = Carrier.TEXT, + javaType = "java.lang.String"), + @BodyType.When(option = "operation", value = "queryInstance", + carriers = Carrier.TEXT, + javaType = "java.lang.String") }, + description = "The JSON of the response as text: the id of the new instance for" + + " createInstance, the array of the instances for listInstances and the instance" + + " for queryInstance. Unchanged after deleteInstance and updateInstance, which set" + + " the CamelHwCloudDmsInstanceDeleted or CamelHwCloudDmsInstanceUpdated exchange" + + " property to true. The CamelHwCloudDmsOperation exchange property overrides the" + + " operation")) public class DMSEndpoint extends DefaultEndpoint { @UriPath(description = "Operation to be performed", displayName = "Operation", label = "producer") diff --git a/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/frs/hwcloud-frs.json b/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/frs/hwcloud-frs.json index 213725c4de6c..e5cf4dfaa5d3 100644 --- a/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/frs/hwcloud-frs.json +++ b/components/camel-huawei/camel-huaweicloud-frs/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/frs/hwcloud-frs.json @@ -27,6 +27,10 @@ "lazyStartProducer": { "index": 0, "kind": "property", "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 [...] "autowiredEnabled": { "index": 1, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "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 t [...] }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "description": "Not used, not even for the image: the image comes from the options or the exchange properties as base64 (CamelHwCloudFrsImageBase64), a URL (CamelHwCloudFrsImageUrl) or a local file path (CamelHwCloudFrsImageFilePath), the second image of faceVerification from the CamelHwCloudFrsAnotherImage properties, and the video of faceLiveDetection from the CamelHwCloudFrsVideo properties" }, + "producerOut": { "carriers": [ "pojo" ], "description": "The response of the Huawei Cloud SDK for the operation and the source of the image, such as the DetectFaceByBase64Response of faceDetection with base64, which holds the faces found" } + }, "properties": { "operation": { "index": 0, "kind": "path", "displayName": "Operation name", "group": "producer", "label": "producer", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Name of Face Recognition operation to perform, including faceDetection, faceVerification and faceLiveDetection" }, "accessKey": { "index": 1, "kind": "parameter", "displayName": "Account access key (AK)", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "security": "secret", "description": "Access key for the cloud user" }, diff --git a/components/camel-huawei/camel-huaweicloud-frs/src/main/java/org/apache/camel/component/huaweicloud/frs/FaceRecognitionEndpoint.java b/components/camel-huawei/camel-huaweicloud-frs/src/main/java/org/apache/camel/component/huaweicloud/frs/FaceRecognitionEndpoint.java index 2f4ce8f071ec..550182c22247 100644 --- a/components/camel-huawei/camel-huaweicloud-frs/src/main/java/org/apache/camel/component/huaweicloud/frs/FaceRecognitionEndpoint.java +++ b/components/camel-huawei/camel-huaweicloud-frs/src/main/java/org/apache/camel/component/huaweicloud/frs/FaceRecognitionEndpoint.java @@ -22,6 +22,9 @@ 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.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -35,6 +38,17 @@ import org.apache.camel.support.DefaultEndpoint; @UriEndpoint(firstVersion = "3.15.0", scheme = "hwcloud-frs", title = "Huawei Cloud Face Recognition Service (FRS)", syntax = "hwcloud-frs:operation", category = { Category.CLOUD, Category.MESSAGING }, producerOnly = true) +@BodyTypes(producerIn = @BodyType(value = Carrier.ANY, + description = "Not used, not even for the image: the image comes from the options or the" + + " exchange properties as base64 (CamelHwCloudFrsImageBase64), a URL" + + " (CamelHwCloudFrsImageUrl) or a local file path (CamelHwCloudFrsImageFilePath)," + + " the second image of faceVerification from the CamelHwCloudFrsAnotherImage" + + " properties, and the video of faceLiveDetection from the CamelHwCloudFrsVideo" + + " properties"), + producerOut = @BodyType(value = Carrier.POJO, + description = "The response of the Huawei Cloud SDK for the operation and the source of the" + + " image, such as the DetectFaceByBase64Response of faceDetection with base64," + + " which holds the faces found")) public class FaceRecognitionEndpoint extends DefaultEndpoint { @UriPath( description = "Name of Face Recognition operation to perform, including faceDetection, faceVerification and faceLiveDetection", diff --git a/components/camel-huawei/camel-huaweicloud-functiongraph/src/generated/resources/META-INF/org/apache/camel/hwcloud-functiongraph.json b/components/camel-huawei/camel-huaweicloud-functiongraph/src/generated/resources/META-INF/org/apache/camel/hwcloud-functiongraph.json index ca11b59ccc62..d4329e6c5174 100644 --- a/components/camel-huawei/camel-huaweicloud-functiongraph/src/generated/resources/META-INF/org/apache/camel/hwcloud-functiongraph.json +++ b/components/camel-huawei/camel-huaweicloud-functiongraph/src/generated/resources/META-INF/org/apache/camel/hwcloud-functiongraph.json @@ -27,6 +27,10 @@ "lazyStartProducer": { "index": 0, "kind": "property", "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 [...] "autowiredEnabled": { "index": 1, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "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 t [...] }, + "bodyTypes": { + "producerIn": { "carriers": [ "map", "text" ], "description": "The event of the function, as a Map or a JSON object as text. Bytes, a stream, a file, a JSON array, a POJO or no body fail: convert the body to a String or a Map first" }, + "producerOut": { "carriers": [ "text", "null" ], "description": "The body field of the result of the function as text: a string as it is, an object or an array as JSON. No body when the result has no body field. With the CamelHwCloudFgXCffLogType exchange property set, the log of the call is in the CamelHwCloudFgXCffLogs exchange property" } + }, "properties": { "operation": { "index": 0, "kind": "path", "displayName": "Operation", "group": "producer", "label": "producer", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Operation to be performed" }, "endpoint": { "index": 1, "kind": "parameter", "displayName": "Service endpoint", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "FunctionGraph url. Carries higher precedence than region parameter based client initialization" }, 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 0992b4c9a41f..2df0b0625ef1 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 @@ -22,6 +22,9 @@ 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.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -35,6 +38,15 @@ import org.apache.camel.util.ObjectHelper; @UriEndpoint(firstVersion = "3.11.0", scheme = "hwcloud-functiongraph", title = "Huawei FunctionGraph", syntax = "hwcloud-functiongraph:operation", category = { Category.CLOUD, Category.SERVERLESS }, producerOnly = true) +@BodyTypes(producerIn = @BodyType(value = { Carrier.MAP, Carrier.TEXT }, + description = "The event of the function, as a Map or a JSON object as text. Bytes, a stream," + + " a file, a JSON array, a POJO or no body fail: convert the body to a String or" + + " a Map first"), + producerOut = @BodyType(value = { Carrier.TEXT, Carrier.NULL }, + description = "The body field of the result of the function as text: a string as it is, an" + + " object or an array as JSON. No body when the result has no body field. With" + + " the CamelHwCloudFgXCffLogType exchange property set, the log of the call is in" + + " the CamelHwCloudFgXCffLogs exchange property")) public class FunctionGraphEndpoint extends DefaultEndpoint { @UriPath(description = "Operation to be performed", displayName = "Operation", label = "producer") diff --git a/components/camel-huawei/camel-huaweicloud-iam/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/iam/hwcloud-iam.json b/components/camel-huawei/camel-huaweicloud-iam/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/iam/hwcloud-iam.json index 87ee67035a88..b8f04f244e6f 100644 --- a/components/camel-huawei/camel-huaweicloud-iam/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/iam/hwcloud-iam.json +++ b/components/camel-huawei/camel-huaweicloud-iam/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/iam/hwcloud-iam.json @@ -27,6 +27,10 @@ "lazyStartProducer": { "index": 0, "kind": "property", "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 [...] "autowiredEnabled": { "index": 1, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "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 t [...] }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "byOption": [ { "option": "operation", "value": "updateUser", "carriers": [ "text", "pojo" ] }, { "option": "operation", "value": "updateGroup", "carriers": [ "text", "pojo" ] } ], "description": "Not used by the list and get operations, which take the ids from the options or the CamelHwCloudIamUserId and CamelHwCloudIamGroupId exchange properties. updateUser needs an UpdateUserOption of the Huawei Cloud SDK or its JSON as text, and updateGroup [...] + "producerOut": { "carriers": [ "text" ], "javaType": "java.lang.String", "format": "json", "description": "The JSON of the result as text: the array of the users or the groups for listUsers, listGroups and getGroupUsers, the user or the group for getUser, updateUser and updateGroup. The keys are the field names of the Huawei Cloud SDK, such as domainId" } + }, "properties": { "operation": { "index": 0, "kind": "path", "displayName": "Operation", "group": "producer", "label": "producer", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Operation to be performed" }, "accessKey": { "index": 1, "kind": "parameter", "displayName": "API access key (AK)", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "security": "secret", "description": "Access key for the cloud user" }, 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 2c1256e52515..40ce05b7fcd1 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 @@ -25,6 +25,9 @@ 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.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -38,6 +41,22 @@ import org.apache.camel.util.ObjectHelper; @UriEndpoint(firstVersion = "3.11.0", scheme = "hwcloud-iam", title = "Huawei Identity and Access Management (IAM)", syntax = "hwcloud-iam:operation", category = { Category.CLOUD }, producerOnly = true) +@BodyTypes(producerIn = @BodyType(value = Carrier.ANY, + byOption = { + @BodyType.When(option = "operation", value = "updateUser", + carriers = { Carrier.TEXT, Carrier.POJO }), + @BodyType.When(option = "operation", value = "updateGroup", + carriers = { Carrier.TEXT, Carrier.POJO }) }, + description = "Not used by the list and get operations, which take the ids from the options" + + " or the CamelHwCloudIamUserId and CamelHwCloudIamGroupId exchange properties." + + " updateUser needs an UpdateUserOption of the Huawei Cloud SDK or its JSON as" + + " text, and updateGroup a KeystoneUpdateGroupOption or its JSON: another body," + + " JSON as bytes or a stream too, fails"), + producerOut = @BodyType(value = Carrier.TEXT, javaType = "java.lang.String", format = "json", + description = "The JSON of the result as text: the array of the users or the groups for" + + " listUsers, listGroups and getGroupUsers, the user or the group for getUser," + + " updateUser and updateGroup. The keys are the field names of the Huawei Cloud" + + " SDK, such as domainId")) public class IAMEndpoint extends DefaultEndpoint { @UriPath(description = "Operation to be performed", displayName = "Operation", label = "producer") diff --git a/components/camel-huawei/camel-huaweicloud-imagerecognition/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/image/hwcloud-imagerecognition.json b/components/camel-huawei/camel-huaweicloud-imagerecognition/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/image/hwcloud-imagerecognition.json index 62d32ec88fc2..0dc79160f15f 100644 --- a/components/camel-huawei/camel-huaweicloud-imagerecognition/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/image/hwcloud-imagerecognition.json +++ b/components/camel-huawei/camel-huaweicloud-imagerecognition/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/image/hwcloud-imagerecognition.json @@ -27,6 +27,10 @@ "lazyStartProducer": { "index": 0, "kind": "property", "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 [...] "autowiredEnabled": { "index": 1, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "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 t [...] }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "description": "Not used, not even for the image: the image comes from the imageContent option or the CamelHwCloudImageContent exchange property as base64, or from the imageUrl option or the CamelHwCloudImageUrl exchange property as a URL" }, + "producerOut": { "carriers": [ "list", "pojo" ], "byOption": [ { "option": "operation", "value": "celebrityRecognition", "carriers": [ "list" ], "javaType": "java.util.List<com.huaweicloud.sdk.image.v2.model.CelebrityRecognitionResultBody>" }, { "option": "operation", "value": "tagRecognition", "carriers": [ "pojo" ], "javaType": "com.huaweicloud.sdk.image.v2.model.ImageTaggingResponseResult" } ], "description": "The result of the Huawei Cloud SDK: for celebrityRecognition a List wit [...] + }, "properties": { "operation": { "index": 0, "kind": "path", "displayName": "Operation name", "group": "producer", "label": "producer", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Name of Image Recognition operation to perform, including celebrityRecognition and tagRecognition" }, "accessKey": { "index": 1, "kind": "parameter", "displayName": "Account access key (AK)", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "security": "secret", "description": "Access key for the cloud user" }, diff --git a/components/camel-huawei/camel-huaweicloud-imagerecognition/src/main/java/org/apache/camel/component/huaweicloud/image/ImageRecognitionEndpoint.java b/components/camel-huawei/camel-huaweicloud-imagerecognition/src/main/java/org/apache/camel/component/huaweicloud/image/ImageRecognitionEndpoint.java index 5c51c500a442..1933b43aa1ce 100644 --- a/components/camel-huawei/camel-huaweicloud-imagerecognition/src/main/java/org/apache/camel/component/huaweicloud/image/ImageRecognitionEndpoint.java +++ b/components/camel-huawei/camel-huaweicloud-imagerecognition/src/main/java/org/apache/camel/component/huaweicloud/image/ImageRecognitionEndpoint.java @@ -23,6 +23,9 @@ 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.image.constants.ImageRecognitionConstants; +import org.apache.camel.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -35,6 +38,21 @@ import org.apache.camel.support.DefaultEndpoint; @UriEndpoint(firstVersion = "3.12.0", scheme = "hwcloud-imagerecognition", title = "Huawei Cloud Image Recognition", syntax = "hwcloud-imagerecognition:operation", category = { Category.CLOUD, Category.MESSAGING }, producerOnly = true) +@BodyTypes(producerIn = @BodyType(value = Carrier.ANY, + description = "Not used, not even for the image: the image comes from the imageContent option" + + " or the CamelHwCloudImageContent exchange property as base64, or from the" + + " imageUrl option or the CamelHwCloudImageUrl exchange property as a URL"), + producerOut = @BodyType(value = { Carrier.LIST, Carrier.POJO }, + byOption = { + @BodyType.When(option = "operation", value = "celebrityRecognition", + carriers = Carrier.LIST, + javaType = "java.util.List<com.huaweicloud.sdk.image.v2.model.CelebrityRecognitionResultBody>"), + @BodyType.When(option = "operation", value = "tagRecognition", + carriers = Carrier.POJO, + javaType = "com.huaweicloud.sdk.image.v2.model.ImageTaggingResponseResult") }, + description = "The result of the Huawei Cloud SDK: for celebrityRecognition a List with a" + + " CelebrityRecognitionResultBody per celebrity found, and for tagRecognition" + + " an ImageTaggingResponseResult with the tags")) public class ImageRecognitionEndpoint extends DefaultEndpoint { @UriPath( description = "Name of Image Recognition operation to perform, including celebrityRecognition and tagRecognition", diff --git a/components/camel-huawei/camel-huaweicloud-obs/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/obs/hwcloud-obs.json b/components/camel-huawei/camel-huaweicloud-obs/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/obs/hwcloud-obs.json index 07a27257ba6d..136e28769e21 100644 --- a/components/camel-huawei/camel-huaweicloud-obs/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/obs/hwcloud-obs.json +++ b/components/camel-huawei/camel-huaweicloud-obs/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/obs/hwcloud-obs.json @@ -41,6 +41,11 @@ "Content-Type": { "index": 7, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The type of content stored in the object", "constantName": "org.apache.camel.component.huaweicloud.obs.constants.OBSHeaders#CONTENT_TYPE" }, "CamelFileName": { "index": 8, "kind": "header", "displayName": "", "group": "consumer", "label": "consumer", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Name of the object with which the operation is to be performed", "constantName": "org.apache.camel.component.huaweicloud.obs.constants.OBSHeaders#FILE_NAME" } }, + "bodyTypes": { + "consumerOut": { "carriers": [ "bytes" ], "javaType": "byte[]", "description": "The content of the object as a byte array, one message per object, with its bucket, key and metadata in headers such as CamelHwCloudObsObjectKey, and the key in CamelFileName too. Folders are consumed too, with an empty body, unless includeFolders=false" }, + "producerIn": { "carriers": [ "any" ], "byOption": [ { "option": "operation", "value": "putObject", "carriers": [ "text", "bytes", "stream", "file" ] }, { "option": "operation", "value": "createBucket", "carriers": [ "text", "pojo" ] }, { "option": "operation", "value": "listObjects", "carriers": [ "text", "pojo" ] } ], "description": "For putObject the content to upload: text, bytes, a stream or a file, such as the file of a file consumer, whose name is the object name when objectNa [...] + "producerOut": { "carriers": [ "unchanged" ], "byOption": [ { "option": "operation", "value": "putObject", "carriers": [ "text" ], "javaType": "java.lang.String" }, { "option": "operation", "value": "getObject", "carriers": [ "bytes" ], "javaType": "byte[]" }, { "option": "operation", "value": "listObjects", "carriers": [ "text" ], "javaType": "java.lang.String" }, { "option": "operation", "value": "listBuckets", "carriers": [ "text" ], "javaType": "java.lang.String" }, { "option": " [...] + }, "properties": { "operation": { "index": 0, "kind": "path", "displayName": "Operation", "group": "producer", "label": "producer", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Operation to be performed" }, "bucketName": { "index": 1, "kind": "parameter", "displayName": "Bucket Name", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "endpointIdentity": true, "description": "Name of bucket to perform operation on" }, 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 72a32a897e34..a0e621264180 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 @@ -26,6 +26,9 @@ import org.apache.camel.Producer; 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.OBSRegion; +import org.apache.camel.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -39,6 +42,48 @@ import org.apache.camel.util.ObjectHelper; @UriEndpoint(firstVersion = "3.12.0", scheme = "hwcloud-obs", title = "Huawei Object Storage Service (OBS)", syntax = "hwcloud-obs:operation", category = { Category.CLOUD }, headersClass = OBSHeaders.class) +@BodyTypes(consumerOut = @BodyType(value = Carrier.BYTES, javaType = "byte[]", + description = "The content of the object as a byte array, one message per object, with its" + + " bucket, key and metadata in headers such as CamelHwCloudObsObjectKey, and the" + + " key in CamelFileName too. Folders are consumed too, with an empty body, unless" + + " includeFolders=false"), + producerIn = @BodyType(value = Carrier.ANY, + byOption = { + @BodyType.When(option = "operation", value = "putObject", + carriers = { + Carrier.TEXT, Carrier.BYTES, Carrier.STREAM, Carrier.FILE }), + @BodyType.When(option = "operation", value = "createBucket", + carriers = { Carrier.TEXT, Carrier.POJO }), + @BodyType.When(option = "operation", value = "listObjects", + carriers = { Carrier.TEXT, Carrier.POJO }) }, + description = "For putObject the content to upload: text, bytes, a stream or a file, such as" + + " the file of a file consumer, whose name is the object name when objectName is" + + " not set. A Map or a POJO fails: marshal it first. createBucket takes a" + + " CreateBucketRequest of the OBS SDK or its JSON as text, and listObjects a" + + " ListObjectsRequest or its JSON, and with another body use the options. The" + + " other operations do not use the body"), + producerOut = @BodyType(value = Carrier.UNCHANGED, + byOption = { + @BodyType.When(option = "operation", value = "putObject", carriers = Carrier.TEXT, + javaType = "java.lang.String"), + @BodyType.When(option = "operation", value = "getObject", carriers = Carrier.BYTES, + javaType = "byte[]"), + @BodyType.When(option = "operation", value = "listObjects", carriers = Carrier.TEXT, + javaType = "java.lang.String"), + @BodyType.When(option = "operation", value = "listBuckets", carriers = Carrier.TEXT, + javaType = "java.lang.String"), + @BodyType.When(option = "operation", value = "createBucket", carriers = Carrier.TEXT, + javaType = "java.lang.String"), + @BodyType.When(option = "operation", value = "deleteBucket", carriers = Carrier.TEXT, + javaType = "java.lang.String"), + @BodyType.When(option = "operation", value = "getBucketMetadata", + carriers = Carrier.TEXT, javaType = "java.lang.String") }, + description = "The JSON of the result as text: the PutObjectResult of putObject, the array of" + + " the objects or the buckets for listObjects and listBuckets, the bucket for" + + " createBucket, the response headers for deleteBucket and the metadata for" + + " getBucketMetadata. getObject gives the content of the object as a byte array" + + " with its metadata in headers. Unchanged after checkBucketExists, which sets the" + + " CamelHwCloudObsBucketExists exchange property")) public class OBSEndpoint extends ScheduledPollEndpoint { @UriPath(description = "Operation to be performed", displayName = "Operation", label = "producer") diff --git a/components/camel-huawei/camel-huaweicloud-smn/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/smn/hwcloud-smn.json b/components/camel-huawei/camel-huaweicloud-smn/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/smn/hwcloud-smn.json index bc9d4331b5ba..9264f439019a 100644 --- a/components/camel-huawei/camel-huaweicloud-smn/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/smn/hwcloud-smn.json +++ b/components/camel-huawei/camel-huaweicloud-smn/src/generated/resources/META-INF/org/apache/camel/component/huaweicloud/smn/hwcloud-smn.json @@ -27,6 +27,10 @@ "lazyStartProducer": { "index": 0, "kind": "property", "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 [...] "autowiredEnabled": { "index": 1, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "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 t [...] }, + "bodyTypes": { + "producerIn": { "carriers": [ "text", "bytes", "stream", "file" ], "byOption": [ { "option": "operation", "value": "publishAsTemplatedMessage", "carriers": [ "text", "bytes", "stream", "file", "null" ] } ], "description": "The message to publish, as text: bytes, a stream or a file are read as text, and a Map or a POJO is sent as its toString(): marshal it first. No body fails for publishAsTextMessage, while publishAsTemplatedMessage can have no body, with the template from the CamelH [...] + "producerOut": { "carriers": [ "unchanged" ], "description": "Unchanged, with the ids of the message and of the request in the CamelHwCloudSmnMesssageId and CamelHwCloudSmnRequestId exchange properties" } + }, "properties": { "smnService": { "index": 0, "kind": "path", "displayName": "Service name", "group": "producer", "label": "producer", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "Name of SMN service to invoke" }, "accessKey": { "index": 1, "kind": "parameter", "displayName": "API access key (AK)", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": true, "security": "secret", "description": "Access key for the cloud user" }, 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 997d076bf8e7..ec7d2ee14572 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 @@ -22,6 +22,9 @@ 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.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -34,6 +37,19 @@ import org.apache.camel.support.DefaultEndpoint; @UriEndpoint(firstVersion = "3.8.0", scheme = "hwcloud-smn", title = "Huawei Simple Message Notification (SMN)", syntax = "hwcloud-smn:smnService", category = { Category.CLOUD, Category.MESSAGING }, producerOnly = true) +@BodyTypes(producerIn = @BodyType(value = { Carrier.TEXT, Carrier.BYTES, Carrier.STREAM, Carrier.FILE }, + byOption = @BodyType.When(option = "operation", value = "publishAsTemplatedMessage", + carriers = { + Carrier.TEXT, Carrier.BYTES, Carrier.STREAM, Carrier.FILE, + Carrier.NULL }), + description = "The message to publish, as text: bytes, a stream or a file are read as text," + + " and a Map or a POJO is sent as its toString(): marshal it first. No body fails" + + " for publishAsTextMessage, while publishAsTemplatedMessage can have no body," + + " with the template from the CamelHwCloudSmnTemplateName exchange property. The" + + " topic comes from the CamelHwCloudSmnTopic exchange property"), + producerOut = @BodyType(value = Carrier.UNCHANGED, + description = "Unchanged, with the ids of the message and of the request in the" + + " CamelHwCloudSmnMesssageId and CamelHwCloudSmnRequestId exchange properties")) public class SimpleNotificationEndpoint extends DefaultEndpoint { @UriPath(description = "Name of SMN service to invoke", displayName = "Service name", label = "producer") diff --git a/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/cinder/openstack-cinder.json b/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/cinder/openstack-cinder.json index d2cafdeab7fe..73d6bf76d429 100644 --- a/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/cinder/openstack-cinder.json +++ b/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/cinder/openstack-cinder.json @@ -40,6 +40,10 @@ "CamelOpenstackName": { "index": 9, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#NAME" }, "CamelOpenstackDescription": { "index": 10, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The description.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#DESCRIPTION" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "description": "Read by create and update only: a Volume or VolumeSnapshot of openstack4j, or else the fields from headers such as CamelOpenstackName. The other operations take the id from a header" }, + "producerOut": { "carriers": [ "pojo", "list", "null", "unchanged" ], "byOption": [ { "option": "operation", "value": "create", "carriers": [ "pojo" ] }, { "option": "operation", "value": "get", "carriers": [ "pojo", "null" ] }, { "option": "operation", "value": "getAll", "carriers": [ "list" ] }, { "option": "operation", "value": "getAllTypes", "carriers": [ "list" ] }, { "option": "operation", "value": "update", "carriers": [ "unchanged" ] }, { "option": "operation", "value": "dele [...] + }, "properties": { "host": { "index": 0, "kind": "path", "displayName": "Host", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "OpenStack host url" }, "apiVersion": { "index": 1, "kind": "parameter", "displayName": "Api Version", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "V2", "V3" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "V3", "description": "OpenStack API version" }, diff --git a/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/glance/openstack-glance.json b/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/glance/openstack-glance.json index 21882d5994c7..e3ec1c39a4d0 100644 --- a/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/glance/openstack-glance.json +++ b/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/glance/openstack-glance.json @@ -41,6 +41,10 @@ "CamelOpenstackName": { "index": 10, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#NAME" }, "CamelOpenstackProperties": { "index": 11, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "Map<String, String>", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The image properties.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#PROPERTIES" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "byOption": [ { "option": "operation", "value": "create", "carriers": [ "stream", "file", "pojo" ] }, { "option": "operation", "value": "upload", "carriers": [ "stream", "file", "pojo" ] } ], "description": "For create and upload the image data: an InputStream, a File, a URL or a Payload of openstack4j; text, bytes or the file of the file consumer fail: convert it to a File or an InputStream first. reserve and update take an Image of openstack4j [...] + "producerOut": { "carriers": [ "pojo", "list", "null", "unchanged" ], "byOption": [ { "option": "operation", "value": "reserve", "carriers": [ "pojo" ] }, { "option": "operation", "value": "create", "carriers": [ "pojo" ] }, { "option": "operation", "value": "upload", "carriers": [ "pojo" ] }, { "option": "operation", "value": "update", "carriers": [ "pojo" ] }, { "option": "operation", "value": "get", "carriers": [ "pojo", "null" ] }, { "option": "operation", "value": "getAll", "car [...] + }, "properties": { "host": { "index": 0, "kind": "path", "displayName": "Host", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "OpenStack host url" }, "apiVersion": { "index": 1, "kind": "parameter", "displayName": "Api Version", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "V2", "V3" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "V3", "description": "OpenStack API version" }, diff --git a/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/keystone/openstack-keystone.json b/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/keystone/openstack-keystone.json index 56ebed2fbd1f..593ce641b978 100644 --- a/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/keystone/openstack-keystone.json +++ b/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/keystone/openstack-keystone.json @@ -39,6 +39,10 @@ "CamelOpenstackId": { "index": 8, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The ID.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#ID" }, "CamelOpenstackName": { "index": 9, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#NAME" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "description": "Read by create and update only: a Region, Domain, Project, User or Group of openstack4j, or else the fields from headers such as CamelOpenstackName. The other operations take the ids from headers" }, + "producerOut": { "carriers": [ "pojo", "list", "value", "null", "unchanged" ], "byOption": [ { "option": "operation", "value": "create", "carriers": [ "pojo" ] }, { "option": "operation", "value": "get", "carriers": [ "pojo", "null" ] }, { "option": "operation", "value": "getAll", "carriers": [ "list" ] }, { "option": "operation", "value": "update", "carriers": [ "pojo" ] }, { "option": "operation", "value": "delete", "carriers": [ "unchanged" ] }, { "option": "operation", "value": " [...] + }, "properties": { "host": { "index": 0, "kind": "path", "displayName": "Host", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "OpenStack host url" }, "config": { "index": 1, "kind": "parameter", "displayName": "Config", "group": "producer", "label": "", "required": false, "type": "object", "javaType": "org.openstack4j.core.transport.Config", "deprecated": false, "autowired": false, "secret": false, "description": "OpenStack configuration" }, diff --git a/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/neutron/openstack-neutron.json b/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/neutron/openstack-neutron.json index e5c629100cd1..0a150984a242 100644 --- a/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/neutron/openstack-neutron.json +++ b/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/neutron/openstack-neutron.json @@ -51,6 +51,10 @@ "CamelOpenstackId": { "index": 20, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The ID.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#ID" }, "CamelOpenstackName": { "index": 21, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#NAME" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "description": "Read by create and update only: a Network, Subnet, Port or Router of openstack4j, or else the fields from headers such as CamelOpenstackName. The other operations take the ids from headers" }, + "producerOut": { "carriers": [ "pojo", "list", "null", "unchanged" ], "byOption": [ { "option": "operation", "value": "create", "carriers": [ "pojo" ] }, { "option": "operation", "value": "get", "carriers": [ "pojo", "null" ] }, { "option": "operation", "value": "getAll", "carriers": [ "list" ] }, { "option": "operation", "value": "update", "carriers": [ "pojo" ] }, { "option": "operation", "value": "delete", "carriers": [ "unchanged" ] }, { "option": "operation", "value": "attachInt [...] + }, "properties": { "host": { "index": 0, "kind": "path", "displayName": "Host", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "OpenStack host url" }, "apiVersion": { "index": 1, "kind": "parameter", "displayName": "Api Version", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "V2", "V3" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "V3", "description": "OpenStack API version" }, diff --git a/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/nova/openstack-nova.json b/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/nova/openstack-nova.json index aea1a77b347c..d8fcd3b87dcb 100644 --- a/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/nova/openstack-nova.json +++ b/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/nova/openstack-nova.json @@ -43,6 +43,10 @@ "CamelOpenstackId": { "index": 12, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The ID.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#ID" }, "CamelOpenstackName": { "index": 13, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#NAME" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "description": "Read by create only: a Flavor or ServerCreate of openstack4j, or else the fields from headers such as CamelOpenstackName; for keypairs the public key as text, or no body to have the key pair generated. The other operations take the id or name from headers" }, + "producerOut": { "carriers": [ "pojo", "list", "text", "null", "unchanged" ], "byOption": [ { "option": "operation", "value": "create", "carriers": [ "pojo" ] }, { "option": "operation", "value": "get", "carriers": [ "pojo", "null" ] }, { "option": "operation", "value": "getAll", "carriers": [ "list" ] }, { "option": "operation", "value": "createSnapshot", "carriers": [ "text" ], "javaType": "java.lang.String" }, { "option": "operation", "value": "delete", "carriers": [ "unchanged" ] [...] + }, "properties": { "host": { "index": 0, "kind": "path", "displayName": "Host", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "OpenStack host url" }, "apiVersion": { "index": 1, "kind": "parameter", "displayName": "Api Version", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "V2", "V3" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "V3", "description": "OpenStack API version" }, diff --git a/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/swift/openstack-swift.json b/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/swift/openstack-swift.json index 4563b934a010..f830823a94c3 100644 --- a/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/swift/openstack-swift.json +++ b/components/camel-openstack/src/generated/resources/META-INF/org/apache/camel/component/openstack/swift/openstack-swift.json @@ -43,6 +43,10 @@ "CamelOpenstackId": { "index": 12, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The ID.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#ID" }, "CamelOpenstackName": { "index": 13, "kind": "header", "displayName": "", "group": "producer", "label": "", "required": false, "javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The name.", "constantName": "org.apache.camel.component.openstack.common.OpenstackConstants#NAME" } }, + "bodyTypes": { + "producerIn": { "carriers": [ "any" ], "description": "For create of an object the content: an InputStream, a File, a URL or a Payload of openstack4j; text, bytes or the file of the file consumer fail: convert it to a File or an InputStream first. createUpdateMetadata and deleteMetadata take the metadata as a Map. The containers take a CreateUpdateContainerOptions or ContainerListOptions of openstack4j, or else headers" }, + "producerOut": { "carriers": [ "text", "pojo", "list", "map", "null", "unchanged" ], "byOption": [ { "option": "operation", "value": "getAll", "carriers": [ "list" ] }, { "option": "operation", "value": "getMetadata", "carriers": [ "map" ] }, { "option": "operation", "value": "delete", "carriers": [ "unchanged" ] }, { "option": "operation", "value": "createUpdateMetadata", "carriers": [ "unchanged" ] }, { "option": "operation", "value": "deleteMetadata", "carriers": [ "unchanged" ] } [...] + }, "properties": { "host": { "index": 0, "kind": "path", "displayName": "Host", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "OpenStack host url" }, "apiVersion": { "index": 1, "kind": "parameter", "displayName": "Api Version", "group": "producer", "label": "", "required": false, "type": "enum", "javaType": "java.lang.String", "enum": [ "V2", "V3" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "V3", "description": "OpenStack API version" }, diff --git a/components/camel-openstack/src/main/docs/openstack-swift-component.adoc b/components/camel-openstack/src/main/docs/openstack-swift-component.adoc index 23f05bbb7d4d..9ec139f27562 100644 --- a/components/camel-openstack/src/main/docs/openstack-swift-component.adoc +++ b/components/camel-openstack/src/main/docs/openstack-swift-component.adoc @@ -103,6 +103,7 @@ or `org.openstack4j.model.storage.object.options.ContainerListOptions` for listi === Example The following route stores each file of the `outbox` folder as an object of the `reports` container. +The body must be an `InputStream`, a `File`, a `URL` or a `Payload` of openstack4j, so the route converts the file of the file consumer to a `java.io.File` first. The endpoint is the address of the identity service (Keystone), and the credentials are property placeholders: [source,yaml] @@ -121,6 +122,8 @@ The endpoint is the address of the identity service (Keystone), and the credenti expression: simple: expression: "${header.CamelFileName}" + - convertBodyTo: + type: java.io.File - to: uri: openstack-swift:http://controller:5000/v3 parameters: diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/cinder/CinderEndpoint.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/cinder/CinderEndpoint.java index 8b955724cafd..aec1a3bbb490 100644 --- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/cinder/CinderEndpoint.java +++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/cinder/CinderEndpoint.java @@ -21,6 +21,9 @@ import org.apache.camel.Producer; import org.apache.camel.component.openstack.cinder.producer.SnapshotProducer; import org.apache.camel.component.openstack.cinder.producer.VolumeProducer; import org.apache.camel.component.openstack.common.AbstractOpenstackEndpoint; +import org.apache.camel.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -34,6 +37,18 @@ import static org.apache.camel.component.openstack.common.OpenstackConstants.SCH */ @UriEndpoint(firstVersion = "2.19.0", scheme = SCHEME_CINDER, title = "OpenStack Cinder", syntax = "openstack-cinder:host", category = { Category.CONTAINER }, producerOnly = true, headersClass = CinderConstants.class) +@BodyTypes(producerIn = @BodyType(value = Carrier.ANY, + description = "Read by create and update only: a Volume or VolumeSnapshot of openstack4j, or else the fields " + + "from headers such as CamelOpenstackName. The other operations take the id from a header"), + producerOut = @BodyType(value = { Carrier.POJO, Carrier.LIST, Carrier.NULL, Carrier.UNCHANGED }, byOption = { + @BodyType.When(option = "operation", value = "create", carriers = Carrier.POJO), + @BodyType.When(option = "operation", value = "get", carriers = { Carrier.POJO, Carrier.NULL }), + @BodyType.When(option = "operation", value = "getAll", carriers = Carrier.LIST), + @BodyType.When(option = "operation", value = "getAllTypes", carriers = Carrier.LIST), + @BodyType.When(option = "operation", value = "update", carriers = Carrier.UNCHANGED), + @BodyType.When(option = "operation", value = "delete", carriers = Carrier.UNCHANGED) }, + description = "The Volume or VolumeSnapshot of openstack4j created or read (null when get finds none), a List " + + "of them for getAll and of VolumeType for getAllTypes; update and delete keep the body")) public class CinderEndpoint extends AbstractOpenstackEndpoint { @UriParam(enums = "snapshots,volumes") diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/glance/GlanceEndpoint.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/glance/GlanceEndpoint.java index eaf5be0ecd9c..a0f0defb853d 100644 --- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/glance/GlanceEndpoint.java +++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/glance/GlanceEndpoint.java @@ -19,6 +19,9 @@ package org.apache.camel.component.openstack.glance; import org.apache.camel.Category; import org.apache.camel.Producer; import org.apache.camel.component.openstack.common.AbstractOpenstackEndpoint; +import org.apache.camel.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -32,6 +35,23 @@ import static org.apache.camel.component.openstack.common.OpenstackConstants.SCH */ @UriEndpoint(firstVersion = "2.19.0", scheme = SCHEME_GLANCE, title = "OpenStack Glance", syntax = "openstack-glance:host", category = { Category.CONTAINER }, producerOnly = true, headersClass = GlanceConstants.class) +@BodyTypes(producerIn = @BodyType(value = Carrier.ANY, byOption = { + @BodyType.When(option = "operation", value = "create", carriers = { Carrier.STREAM, Carrier.FILE, Carrier.POJO }), + @BodyType.When(option = "operation", value = "upload", carriers = { Carrier.STREAM, Carrier.FILE, Carrier.POJO }) }, + description = "For create and upload the image data: an InputStream, a File, a URL or a Payload of " + + "openstack4j; text, bytes or the file of the file consumer fail: convert it to a File or " + + "an InputStream first. reserve and update take an Image of openstack4j, or else the fields from " + + "headers such as CamelOpenstackName"), + producerOut = @BodyType(value = { Carrier.POJO, Carrier.LIST, Carrier.NULL, Carrier.UNCHANGED }, byOption = { + @BodyType.When(option = "operation", value = "reserve", carriers = Carrier.POJO), + @BodyType.When(option = "operation", value = "create", carriers = Carrier.POJO), + @BodyType.When(option = "operation", value = "upload", carriers = Carrier.POJO), + @BodyType.When(option = "operation", value = "update", carriers = Carrier.POJO), + @BodyType.When(option = "operation", value = "get", carriers = { Carrier.POJO, Carrier.NULL }), + @BodyType.When(option = "operation", value = "getAll", carriers = Carrier.LIST), + @BodyType.When(option = "operation", value = "delete", carriers = Carrier.UNCHANGED) }, + description = "The Image of openstack4j reserved, created, uploaded, updated or read (null when get finds " + + "none), a List of them for getAll; delete keeps the body")) public class GlanceEndpoint extends AbstractOpenstackEndpoint { @UriPath diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/KeystoneEndpoint.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/KeystoneEndpoint.java index 946a5b77c5c5..5b0f99f75ccb 100644 --- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/KeystoneEndpoint.java +++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/KeystoneEndpoint.java @@ -24,6 +24,9 @@ import org.apache.camel.component.openstack.keystone.producer.GroupProducer; import org.apache.camel.component.openstack.keystone.producer.ProjectProducer; import org.apache.camel.component.openstack.keystone.producer.RegionProducer; import org.apache.camel.component.openstack.keystone.producer.UserProducer; +import org.apache.camel.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -39,6 +42,27 @@ import static org.apache.camel.component.openstack.common.OpenstackConstants.SCH @UriEndpoint(firstVersion = "2.19.0", scheme = SCHEME_KEYSTONE, title = "OpenStack Keystone", syntax = "openstack-keystone:host", category = { Category.CONTAINER }, producerOnly = true, headersClass = KeystoneConstants.class) +@BodyTypes(producerIn = @BodyType(value = Carrier.ANY, + description = "Read by create and update only: a Region, Domain, Project, User or Group of openstack4j, or " + + "else the fields from headers such as CamelOpenstackName. The other operations take the ids from " + + "headers"), + producerOut = @BodyType(value = { Carrier.POJO, Carrier.LIST, Carrier.VALUE, Carrier.NULL, Carrier.UNCHANGED }, + byOption = { + @BodyType.When(option = "operation", value = "create", carriers = Carrier.POJO), + @BodyType.When(option = "operation", value = "get", + carriers = { Carrier.POJO, Carrier.NULL }), + @BodyType.When(option = "operation", value = "getAll", carriers = Carrier.LIST), + @BodyType.When(option = "operation", value = "update", carriers = Carrier.POJO), + @BodyType.When(option = "operation", value = "delete", carriers = Carrier.UNCHANGED), + @BodyType.When(option = "operation", value = "addUserToGroup", + carriers = Carrier.UNCHANGED), + @BodyType.When(option = "operation", value = "checkUserGroup", + carriers = Carrier.VALUE, javaType = "java.lang.Boolean"), + @BodyType.When(option = "operation", value = "removeUserFromGroup", + carriers = Carrier.UNCHANGED) }, + description = "The Region, Domain, Project, User or Group of openstack4j created, read or updated (null when " + + "get finds none), a List of them for getAll, true or false for checkUserGroup; delete, " + + "addUserToGroup and removeUserFromGroup keep the body")) public class KeystoneEndpoint extends AbstractOpenstackEndpoint { @UriParam(enums = "regions,domains,projects,users,groups") diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronEndpoint.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronEndpoint.java index e0184e9cdeb8..75c27d9a63a3 100644 --- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronEndpoint.java +++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronEndpoint.java @@ -23,6 +23,9 @@ import org.apache.camel.component.openstack.neutron.producer.NetworkProducer; import org.apache.camel.component.openstack.neutron.producer.PortProducer; import org.apache.camel.component.openstack.neutron.producer.RouterProducer; import org.apache.camel.component.openstack.neutron.producer.SubnetProducer; +import org.apache.camel.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -37,6 +40,22 @@ import static org.apache.camel.component.openstack.common.OpenstackConstants.SCH @UriEndpoint(firstVersion = "2.19.0", scheme = SCHEME_NEUTRON, title = "OpenStack Neutron", syntax = "openstack-neutron:host", category = { Category.CONTAINER }, producerOnly = true, headersClass = NeutronConstants.class) +@BodyTypes(producerIn = @BodyType(value = Carrier.ANY, + description = "Read by create and update only: a Network, Subnet, Port or Router of openstack4j, or else the " + + "fields from headers such as CamelOpenstackName. The other operations take the ids from headers"), + producerOut = @BodyType(value = { Carrier.POJO, Carrier.LIST, Carrier.NULL, Carrier.UNCHANGED }, byOption = { + @BodyType.When(option = "operation", value = "create", carriers = Carrier.POJO), + @BodyType.When(option = "operation", value = "get", carriers = { Carrier.POJO, Carrier.NULL }), + @BodyType.When(option = "operation", value = "getAll", carriers = Carrier.LIST), + @BodyType.When(option = "operation", value = "update", carriers = Carrier.POJO), + @BodyType.When(option = "operation", value = "delete", carriers = Carrier.UNCHANGED), + @BodyType.When(option = "operation", value = "attachInterface", carriers = Carrier.POJO, + javaType = "org.openstack4j.model.network.RouterInterface"), + @BodyType.When(option = "operation", value = "detachInterface", carriers = Carrier.POJO, + javaType = "org.openstack4j.model.network.RouterInterface") }, + description = "The Network, Subnet, Port or Router of openstack4j created, read or updated (null when get " + + "finds none), a List of them for getAll, the RouterInterface for attachInterface and " + + "detachInterface; delete keeps the body")) public class NeutronEndpoint extends AbstractOpenstackEndpoint { @UriParam(enums = "networks,subnets,ports,routers") diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/nova/NovaEndpoint.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/nova/NovaEndpoint.java index af3e5a042404..fdcb54a94ea3 100644 --- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/nova/NovaEndpoint.java +++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/nova/NovaEndpoint.java @@ -22,6 +22,9 @@ import org.apache.camel.component.openstack.common.AbstractOpenstackEndpoint; import org.apache.camel.component.openstack.nova.producer.FlavorsProducer; import org.apache.camel.component.openstack.nova.producer.KeypairProducer; import org.apache.camel.component.openstack.nova.producer.ServerProducer; +import org.apache.camel.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -35,6 +38,23 @@ import static org.apache.camel.component.openstack.common.OpenstackConstants.SCH */ @UriEndpoint(firstVersion = "2.19.0", scheme = SCHEME_NOVA, title = "OpenStack Nova", syntax = "openstack-nova:host", category = { Category.CONTAINER }, producerOnly = true, headersClass = NovaConstants.class) +@BodyTypes(producerIn = @BodyType(value = Carrier.ANY, + description = "Read by create only: a Flavor or ServerCreate of openstack4j, or else the fields from headers " + + "such as CamelOpenstackName; for keypairs the public key as text, or no body to have the key " + + "pair generated. The other operations take the id or name from headers"), + producerOut = @BodyType(value = { Carrier.POJO, Carrier.LIST, Carrier.TEXT, Carrier.NULL, Carrier.UNCHANGED }, + byOption = { + @BodyType.When(option = "operation", value = "create", carriers = Carrier.POJO), + @BodyType.When(option = "operation", value = "get", + carriers = { Carrier.POJO, Carrier.NULL }), + @BodyType.When(option = "operation", value = "getAll", carriers = Carrier.LIST), + @BodyType.When(option = "operation", value = "createSnapshot", + carriers = Carrier.TEXT, javaType = "java.lang.String"), + @BodyType.When(option = "operation", value = "delete", + carriers = Carrier.UNCHANGED) }, + description = "The Flavor, Server or Keypair of openstack4j created or read (null when get finds none), a List " + + "of them for getAll, the id of the image as text for createSnapshot; delete and a server action " + + "keep the body")) public class NovaEndpoint extends AbstractOpenstackEndpoint { @UriParam(enums = "flavors,servers,keypairs") diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/swift/SwiftEndpoint.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/swift/SwiftEndpoint.java index 6e59033cf208..c070f6d2a683 100644 --- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/swift/SwiftEndpoint.java +++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/swift/SwiftEndpoint.java @@ -21,6 +21,9 @@ import org.apache.camel.Producer; import org.apache.camel.component.openstack.common.AbstractOpenstackEndpoint; import org.apache.camel.component.openstack.swift.producer.ContainerProducer; import org.apache.camel.component.openstack.swift.producer.ObjectProducer; +import org.apache.camel.spi.BodyType; +import org.apache.camel.spi.BodyType.Carrier; +import org.apache.camel.spi.BodyTypes; import org.apache.camel.spi.Metadata; import org.apache.camel.spi.UriEndpoint; import org.apache.camel.spi.UriParam; @@ -34,6 +37,25 @@ import static org.apache.camel.component.openstack.common.OpenstackConstants.SCH */ @UriEndpoint(firstVersion = "2.19.0", scheme = SCHEME_SWIFT, title = "OpenStack Swift", syntax = "openstack-swift:host", category = { Category.CONTAINER }, producerOnly = true, headersClass = SwiftConstants.class) +@BodyTypes(producerIn = @BodyType(value = Carrier.ANY, + description = "For create of an object the content: an InputStream, a File, a URL or a Payload of openstack4j; " + + "text, bytes or the file of the file consumer fail: convert it to a File or an InputStream first. " + + "createUpdateMetadata and deleteMetadata take the metadata as a Map. The containers take a " + + "CreateUpdateContainerOptions or ContainerListOptions of openstack4j, or else headers"), + producerOut = @BodyType(value = { + Carrier.TEXT, Carrier.POJO, Carrier.LIST, Carrier.MAP, Carrier.NULL, Carrier.UNCHANGED }, + byOption = { + @BodyType.When(option = "operation", value = "getAll", carriers = Carrier.LIST), + @BodyType.When(option = "operation", value = "getMetadata", carriers = Carrier.MAP), + @BodyType.When(option = "operation", value = "delete", carriers = Carrier.UNCHANGED), + @BodyType.When(option = "operation", value = "createUpdateMetadata", + carriers = Carrier.UNCHANGED), + @BodyType.When(option = "operation", value = "deleteMetadata", + carriers = Carrier.UNCHANGED) }, + description = "For objects: the ETag as text after create, the SwiftObject of openstack4j for get (its " + + "download() gives the content), a List of them for getAll. For containers: a List of " + + "SwiftContainer for get and getAll; create and update keep the body. getMetadata gives a Map of " + + "the metadata; delete and the metadata updates keep the body")) public class SwiftEndpoint extends AbstractOpenstackEndpoint { @UriParam(enums = "objects,containers")
