This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new ffe0255463d5 CAMEL-24961: Catalog body types for Athena, S3 Vectors,
Step Functions and eight more AWS components (#28343)
ffe0255463d5 is described below
commit ffe0255463d59c90e4f7d279a4fcbee93b0cb097
Author: Claus Ibsen <[email protected]>
AuthorDate: Sat Oct 24 10:21:33 2026 +0200
CAMEL-24961: Catalog body types for Athena, S3 Vectors, Step Functions and
eight more AWS components (#28343)
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
---
.../camel/catalog/components/aws-config.json | 4 ++
.../camel/catalog/components/aws-security-hub.json | 4 ++
.../camel/catalog/components/aws2-athena.json | 4 ++
.../apache/camel/catalog/components/aws2-ecs.json | 4 ++
.../apache/camel/catalog/components/aws2-eks.json | 4 ++
.../apache/camel/catalog/components/aws2-mq.json | 4 ++
.../apache/camel/catalog/components/aws2-msk.json | 4 ++
.../catalog/components/aws2-redshift-data.json | 4 ++
.../camel/catalog/components/aws2-s3-vectors.json | 5 ++
.../catalog/components/aws2-step-functions.json | 4 ++
.../camel/catalog/docs/aws2-athena-component.adoc | 30 ++++++-----
.../camel/component/aws/config/aws-config.json | 4 ++
.../component/aws/config/AWSConfigEndpoint.java | 16 ++++++
.../aws/parameterstore/aws-parameter-store.json | 4 ++
.../aws/parameterstore/ParameterStoreEndpoint.java | 21 ++++++++
.../aws/securityhub/aws-security-hub.json | 4 ++
.../aws/securityhub/SecurityHubEndpoint.java | 19 +++++++
.../camel/component/aws2/athena/aws2-athena.json | 4 ++
.../src/main/docs/aws2-athena-component.adoc | 30 ++++++-----
.../component/aws2/athena/Athena2Endpoint.java | 27 ++++++++++
.../apache/camel/component/aws2/ecs/aws2-ecs.json | 4 ++
.../camel/component/aws2/ecs/ECS2Endpoint.java | 14 +++++
.../apache/camel/component/aws2/eks/aws2-eks.json | 4 ++
.../camel/component/aws2/eks/EKS2Endpoint.java | 13 +++++
.../apache/camel/component/aws2/mq/aws2-mq.json | 4 ++
.../camel/component/aws2/mq/MQ2Endpoint.java | 13 +++++
.../apache/camel/component/aws2/msk/aws2-msk.json | 4 ++
.../camel/component/aws2/msk/MSK2Endpoint.java | 13 +++++
.../aws2/redshift/data/aws2-redshift-data.json | 4 ++
.../aws2/redshift/data/RedshiftData2Endpoint.java | 14 +++++
.../component/aws2/s3vectors/aws2-s3-vectors.json | 5 ++
.../aws2/s3vectors/AWS2S3VectorsEndpoint.java | 34 ++++++++++++
.../aws2/stepfunctions/aws2-step-functions.json | 4 ++
.../aws2/stepfunctions/StepFunctions2Endpoint.java | 16 ++++++
.../camel/dsl/yaml/validator/TextBodyFlowTest.java | 62 ++++++++++++++++++++++
35 files changed, 384 insertions(+), 24 deletions(-)
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-config.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-config.json
index c9b79f9de9fd..7ed9e9726c47 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-config.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-config.json
@@ -56,6 +56,10 @@
"CamelAwsConfigConformacePackS3TemplateURI": { "index": 5, "kind":
"header", "displayName": "", "group": "producer", "label": "", "required":
false, "javaType": "String", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "The location of the file
containing the template body in S3", "constantName":
"org.apache.camel.component.aws.config.AWSConfigConstants#CONFORMACE_PACK_S3_TEMPLATE_URI"
},
"CamelAwsConfigConformacePackTemplateBody": { "index": 6, "kind":
"header", "displayName": "", "group": "producer", "label": "", "required":
false, "javaType": "String", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "A string containing the
full conformance pack template body", "constantName":
"org.apache.camel.component.aws.config.AWSConfigConstants#CONFORMACE_PACK_TEMPLATE_BODY"
}
},
+ "bodyTypes": {
+ "producerIn": { "carriers": [ "any" ], "byOption": [ { "option":
"pojoRequest", "value": "true", "carriers": [ "pojo" ] } ], "description": "Not
used: the operations take their input from headers, such as the rule of
putConfigRule in CamelAwsConfigRuleName, CamelAwsConfigRuleSource and
CamelAwsConfigRuleSourceIdentifier, and the template of putConformancePack in
CamelAwsConfigConformacePackTemplateBody. With pojoRequest=true the request of
the AWS SDK for the operation, such as a Put [...]
+ "producerOut": { "carriers": [ "pojo" ], "description": "The response of
the AWS SDK for the operation, such as the
DescribeComplianceByConfigRuleResponse of describeRuleCompliance, or the
PutConformancePackResponse with the ARN of the pack. putConfigRule,
removeConfigRule and removeConformancePack give an empty response" }
+ },
"properties": {
"label": { "index": 0, "kind": "path", "displayName": "Label", "group":
"producer", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.aws.config.AWSConfigConfiguration",
"configurationField": "configuration", "description": "Logical name" },
"operation": { "index": 1, "kind": "parameter", "displayName":
"Operation", "group": "producer", "label": "", "required": true, "type":
"enum", "javaType":
"org.apache.camel.component.aws.config.AWSConfigOperations", "enum": [
"putConfigRule", "removeConfigRule", "describeRuleCompliance",
"putConformancePack", "removeConformancePack" ], "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.aws.config.AWSConf [...]
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-security-hub.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-security-hub.json
index c550f5a64599..46894fe3a2ce 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-security-hub.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-security-hub.json
@@ -71,6 +71,10 @@
"CamelAwsSecurityHubProductArn": { "index": 20, "kind": "header",
"displayName": "", "group": "getFindingHistory", "label": "getFindingHistory",
"required": false, "javaType": "String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "description": "The
product ARN for the finding", "constantName":
"org.apache.camel.component.aws.securityhub.SecurityHubConstants#PRODUCT_ARN" },
"CamelAwsSecurityHubFindingAggregatorArn": { "index": 21, "kind":
"header", "displayName": "", "group": "getFindingAggregator", "label":
"getFindingAggregator", "required": false, "javaType": "String", "deprecated":
false, "deprecationNote": "", "autowired": false, "secret": false,
"description": "The ARN of the finding aggregator to retrieve", "constantName":
"org.apache.camel.component.aws.securityhub.SecurityHubConstants#FINDING_AGGREGATOR_ARN"
}
},
+ "bodyTypes": {
+ "producerIn": { "carriers": [ "any" ], "byOption": [ { "option":
"pojoRequest", "value": "true", "carriers": [ "pojo" ] } ], "description":
"batchImportFindings, the default, imports the findings of the
CamelAwsSecurityHubFindings header, or else of the body: a List of the
AwsSecurityFinding of the AWS SDK, or one AwsSecurityFinding. JSON text, a Map,
an array or a List of anything else fails. The other operations take their
input from headers, such as CamelAwsSecurityHubFilters. Wit [...]
+ "producerOut": { "carriers": [ "pojo" ], "description": "The response of
the AWS SDK for the operation, such as the BatchImportFindingsResponse of
batchImportFindings, with the counts in the CamelAwsSecurityHubSuccessCount and
CamelAwsSecurityHubFailedCount headers: a finding that is not imported does not
fail the exchange. getFindings gives a GetFindingsResponse, with the token of
the next page in the CamelAwsSecurityHubNextToken header" }
+ },
"properties": {
"label": { "index": 0, "kind": "path", "displayName": "Label", "group":
"producer", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Logical name" },
"operation": { "index": 1, "kind": "parameter", "displayName":
"Operation", "group": "producer", "label": "", "required": true, "type":
"enum", "javaType":
"org.apache.camel.component.aws.securityhub.SecurityHubOperations", "enum": [
"batchImportFindings", "getFindings", "batchUpdateFindings",
"getFindingHistory", "describeHub", "listEnabledProductsForImport",
"getFindingAggregator" ], "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "defaultValue": "b [...]
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-athena.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-athena.json
index a2d10fcebfdd..38431d346851 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-athena.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-athena.json
@@ -90,6 +90,10 @@
"CamelAwsAthenaStartQueryExecutionAttempts": { "index": 21, "kind":
"header", "displayName": "", "group": "startQueryExecution", "label":
"startQueryExecution", "required": false, "javaType": "int", "deprecated":
false, "deprecationNote": "", "autowired": false, "secret": false,
"description": "Total number of attempts made to run the query. Will be greater
than 1 if the query is retried.", "constantName":
"org.apache.camel.component.aws2.athena.Athena2Constants#START_QUERY_EXECUTION
[...]
"CamelAwsAthenaStartQueryExecutionElapsedMillis": { "index": 22, "kind":
"header", "displayName": "", "group": "startQueryExecution", "label":
"startQueryExecution", "required": false, "javaType": "long", "deprecated":
false, "deprecationNote": "", "autowired": false, "secret": false,
"description": "Total time in millis taken in startQueryExecution (mostly
relevant when waiting for query completion within startQueryExecution).",
"constantName": "org.apache.camel.component.aws2.athen [...]
},
+ "bodyTypes": {
+ "producerIn": { "carriers": [ "any" ], "byOption": [ { "option":
"operation", "value": "startQueryExecution", "carriers": [ "text", "bytes",
"stream", "file", "null" ] } ], "description": "The SQL of startQueryExecution,
the default, as text: bytes, a stream or a file are read as text, a Map or a
POJO is sent as its toString(). With no body the SQL comes from the
CamelAwsAthenaQueryString header or the queryString option. The other
operations do not use the body: they take the id of [...]
+ "producerOut": { "carriers": [ "pojo" ], "byOption": [ { "option":
"operation", "value": "startQueryExecution", "carriers": [ "null", "pojo" ] },
{ "option": "operation", "value": "getQueryResults", "carriers": [ "iterator",
"pojo", "text" ] } ], "description": "startQueryExecution, the default, leaves
no body, with the id of the query in the CamelAwsAthenaQueryExecutionId header;
with waitTimeout, the GetQueryExecutionResponse of the AWS SDK of the last
check, whatever the state of [...]
+ },
"properties": {
"label": { "index": 0, "kind": "path", "displayName": "Label", "group":
"producer", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.aws2.athena.Athena2Configuration",
"configurationField": "configuration", "description": "Logical name" },
"database": { "index": 1, "kind": "parameter", "displayName": "Database",
"group": "producer", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.aws2.athena.Athena2Configuration",
"configurationField": "configuration", "description": "The Athena database to
use." },
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-ecs.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-ecs.json
index 1078e8b06d89..a0bffdbfb326 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-ecs.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-ecs.json
@@ -55,6 +55,10 @@
"CamelAwsECSIsTruncated": { "index": 4, "kind": "header", "displayName":
"", "group": "listClusters", "label": "listClusters", "required": false,
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Whether the response has more results
(is truncated).", "constantName":
"org.apache.camel.component.aws2.ecs.ECS2Constants#IS_TRUNCATED" },
"CamelAwsECSClusterArn": { "index": 5, "kind": "header", "displayName":
"", "group": "createCluster describeCluster deleteCluster", "label":
"createCluster describeCluster deleteCluster", "required": false, "javaType":
"String", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "description": "The ARN of the cluster.", "constantName":
"org.apache.camel.component.aws2.ecs.ECS2Constants#CLUSTER_ARN" }
},
+ "bodyTypes": {
+ "producerIn": { "carriers": [ "any" ], "byOption": [ { "option":
"pojoRequest", "value": "true", "carriers": [ "pojo" ] } ], "description": "Not
used: the operations take their input from headers, such as the name of the
cluster in CamelAwsECSClusterName. With pojoRequest=true the request of the AWS
SDK for the operation, such as a ListClustersRequest: another body fails" },
+ "producerOut": { "carriers": [ "pojo" ], "description": "The response of
the AWS SDK for the operation, such as the ListClustersResponse of
listClusters, with the token of the next page in a header. describeCluster of a
cluster that does not exist does not fail: the response lists it in its
failures" }
+ },
"properties": {
"label": { "index": 0, "kind": "path", "displayName": "Label", "group":
"producer", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.aws2.ecs.ECS2Configuration", "configurationField":
"configuration", "description": "Logical name" },
"operation": { "index": 1, "kind": "parameter", "displayName":
"Operation", "group": "producer", "label": "", "required": true, "type":
"enum", "javaType": "org.apache.camel.component.aws2.ecs.ECS2Operations",
"enum": [ "listClusters", "describeCluster", "createCluster", "deleteCluster"
], "deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "configurationClass":
"org.apache.camel.component.aws2.ecs.ECS2Configuration", "configurationField":
"configuration" [...]
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-eks.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-eks.json
index b43403c1ba00..3cca2693328d 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-eks.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-eks.json
@@ -58,6 +58,10 @@
"CamelAwsEKSIsTruncated": { "index": 7, "kind": "header", "displayName":
"", "group": "listClusters", "label": "listClusters", "required": false,
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Whether the response has more results
(is truncated).", "constantName":
"org.apache.camel.component.aws2.eks.EKS2Constants#IS_TRUNCATED" },
"CamelAwsEKSClusterArn": { "index": 8, "kind": "header", "displayName":
"", "group": "createCluster describeCluster deleteCluster", "label":
"createCluster describeCluster deleteCluster", "required": false, "javaType":
"String", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "description": "The ARN of the cluster.", "constantName":
"org.apache.camel.component.aws2.eks.EKS2Constants#CLUSTER_ARN" }
},
+ "bodyTypes": {
+ "producerIn": { "carriers": [ "any" ], "byOption": [ { "option":
"pojoRequest", "value": "true", "carriers": [ "pojo" ] } ], "description": "Not
used: the operations take their input from headers, such as the name of the
cluster in CamelAwsEKSClusterName. With pojoRequest=true the request of the AWS
SDK for the operation, such as a ListClustersRequest: another body fails" },
+ "producerOut": { "carriers": [ "pojo" ], "description": "The response of
the AWS SDK for the operation, such as the ListClustersResponse of
listClusters, with the token of the next page in a header" }
+ },
"properties": {
"label": { "index": 0, "kind": "path", "displayName": "Label", "group":
"producer", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.aws2.eks.EKS2Configuration", "configurationField":
"configuration", "description": "Logical name" },
"operation": { "index": 1, "kind": "parameter", "displayName":
"Operation", "group": "producer", "label": "", "required": true, "type":
"enum", "javaType": "org.apache.camel.component.aws2.eks.EKS2Operations",
"enum": [ "listClusters", "describeCluster", "createCluster", "deleteCluster"
], "deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "configurationClass":
"org.apache.camel.component.aws2.eks.EKS2Configuration", "configurationField":
"configuration" [...]
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-mq.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-mq.json
index a100694868ff..fe992fd16870 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-mq.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-mq.json
@@ -64,6 +64,10 @@
"CamelAwsMQBrokerArn": { "index": 13, "kind": "header", "displayName": "",
"group": "createBroker", "label": "createBroker", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The Amazon Resource Name (ARN) of the
broker.", "constantName":
"org.apache.camel.component.aws2.mq.MQ2Constants#BROKER_ARN" },
"CamelAwsMQBrokerState": { "index": 14, "kind": "header", "displayName":
"", "group": "describeBroker", "label": "describeBroker", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The state of the broker.",
"constantName": "org.apache.camel.component.aws2.mq.MQ2Constants#BROKER_STATE" }
},
+ "bodyTypes": {
+ "producerIn": { "carriers": [ "any" ], "byOption": [ { "option":
"pojoRequest", "value": "true", "carriers": [ "pojo" ] } ], "description": "Not
used: the operations take their input from headers, such as the id of the
broker in CamelAwsMQBrokerID, and the users of createBroker as a List of the
User of the AWS SDK. With pojoRequest=true the request of the AWS SDK for the
operation, such as a ListBrokersRequest: another body fails" },
+ "producerOut": { "carriers": [ "pojo" ], "description": "The response of
the AWS SDK for the operation, such as the ListBrokersResponse of listBrokers,
with the token of the next page in a header" }
+ },
"properties": {
"label": { "index": 0, "kind": "path", "displayName": "Label", "group":
"producer", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.aws2.mq.MQ2Configuration", "configurationField":
"configuration", "description": "Logical name" },
"operation": { "index": 1, "kind": "parameter", "displayName":
"Operation", "group": "producer", "label": "", "required": true, "type":
"enum", "javaType": "org.apache.camel.component.aws2.mq.MQ2Operations", "enum":
[ "listBrokers", "createBroker", "deleteBroker", "rebootBroker",
"updateBroker", "describeBroker" ], "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.aws2.mq.MQ2Configuration", "configuratio [...]
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-msk.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-msk.json
index 42f2250df7fa..12ece07f27ef 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-msk.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-msk.json
@@ -60,6 +60,10 @@
"CamelAwsMSKIsTruncated": { "index": 9, "kind": "header", "displayName":
"", "group": "listClusters", "label": "listClusters", "required": false,
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Whether the response has more results
(is truncated).", "constantName":
"org.apache.camel.component.aws2.msk.MSK2Constants#IS_TRUNCATED" },
"CamelAwsMSKClusterState": { "index": 10, "kind": "header", "displayName":
"", "group": "createCluster describeCluster", "label": "createCluster
describeCluster", "required": false, "javaType": "String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "description": "The
state of the cluster.", "constantName":
"org.apache.camel.component.aws2.msk.MSK2Constants#CLUSTER_STATE" }
},
+ "bodyTypes": {
+ "producerIn": { "carriers": [ "any" ], "byOption": [ { "option":
"pojoRequest", "value": "true", "carriers": [ "pojo" ] } ], "description": "Not
used: the operations take their input from headers, such as the ARN of the
cluster in CamelAwsMSKClusterArn. With pojoRequest=true the request of the AWS
SDK for the operation, such as a ListClustersRequest: another body fails" },
+ "producerOut": { "carriers": [ "pojo" ], "description": "The response of
the AWS SDK for the operation, such as the ListClustersResponse of
listClusters, with the token of the next page in a header" }
+ },
"properties": {
"label": { "index": 0, "kind": "path", "displayName": "Label", "group":
"producer", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.aws2.msk.MSK2Configuration", "configurationField":
"configuration", "description": "Logical name" },
"operation": { "index": 1, "kind": "parameter", "displayName":
"Operation", "group": "producer", "label": "", "required": true, "type":
"enum", "javaType": "org.apache.camel.component.aws2.msk.MSK2Operations",
"enum": [ "listClusters", "createCluster", "deleteCluster", "describeCluster"
], "deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "configurationClass":
"org.apache.camel.component.aws2.msk.MSK2Configuration", "configurationField":
"configuration" [...]
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-redshift-data.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-redshift-data.json
index 7db6bb872123..7175a5841d2f 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-redshift-data.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-redshift-data.json
@@ -74,6 +74,10 @@
"CamelAwsRedshiftDataSqlParameterList": { "index": 23, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "List<SqlParameterList>", "deprecated": false, "deprecationNote":
"", "autowired": false, "secret": false, "description": "The parameters for the
SQL statement.", "constantName":
"org.apache.camel.component.aws2.redshift.data.RedshiftData2Constants#SQL_PARAMETER_LIST"
},
"CamelAwsRedshiftDataSqlStatementList": { "index": 24, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "List", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The List of SQL statements text to
run.", "constantName":
"org.apache.camel.component.aws2.redshift.data.RedshiftData2Constants#SQL_STATEMENT_LIST"
}
},
+ "bodyTypes": {
+ "producerIn": { "carriers": [ "any" ], "byOption": [ { "option":
"pojoRequest", "value": "true", "carriers": [ "pojo" ] } ], "description": "Not
used: the operations take their input from headers, such as the SQL of
executeStatement in CamelAwsRedshiftDataSqlStatement; SQL in the body is not
run. With pojoRequest=true the request of the AWS SDK for the operation, such
as an ExecuteStatementRequest: another body fails" },
+ "producerOut": { "carriers": [ "pojo" ], "description": "The response of
the AWS SDK for the operation, such as the ExecuteStatementResponse of
executeStatement, which does not wait for the statement, or the
GetStatementResultResponse of getStatementResult with one page of records" }
+ },
"properties": {
"label": { "index": 0, "kind": "path", "displayName": "Label", "group":
"producer", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration",
"configurationField": "configuration", "description": "Logical name" },
"operation": { "index": 1, "kind": "parameter", "displayName":
"Operation", "group": "producer", "label": "", "required": true, "type":
"enum", "javaType":
"org.apache.camel.component.aws2.redshift.data.RedshiftData2Operations",
"enum": [ "listDatabases", "listSchemas", "listStatements", "listTables",
"describeTable", "executeStatement", "batchExecuteStatement",
"cancelStatement", "describeStatement", "getStatementResult" ], "deprecated":
false, "deprecationNote": "", "autowired": fa [...]
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-s3-vectors.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-s3-vectors.json
index 58da8dc70451..bb56e4dada37 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-s3-vectors.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-s3-vectors.json
@@ -77,6 +77,11 @@
"CamelAwsS3VectorsIndexStatus": { "index": 15, "kind": "header",
"displayName": "", "group": "consumer", "label": "consumer", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The status of the vector index",
"constantName":
"org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#INDEX_STATUS"
},
"CamelAwsS3VectorsVectorBucketArn": { "index": 16, "kind": "header",
"displayName": "", "group": "consumer", "label": "consumer", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The ARN of the vector bucket",
"constantName":
"org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#VECTOR_BUCKET_ARN"
}
},
+ "bodyTypes": {
+ "consumerOut": { "carriers": [ "pojo" ], "javaType":
"software.amazon.awssdk.services.s3vectors.model.QueryOutputVector",
"description": "One message per vector that the similarity search of
consumerQueryVector finds and that was not sent before, as a QueryOutputVector
of the AWS SDK with its key only, also in the CamelAwsS3VectorsVectorId header"
},
+ "producerIn": { "carriers": [ "any" ], "description": "The vector of
putVectors and queryVectors, unless the CamelAwsS3VectorsVectorData or
CamelAwsS3VectorsQueryVector header has it: one vector as a List of numbers, a
float[] or a double[]. Text such as a JSON array fails, so unmarshal it first.
The keys of getVectors and deleteVectors, unless the CamelAwsS3VectorsVectorId
header has them: a String, a String[] or a List of Strings. The other
operations do not use the body" },
+ "producerOut": { "carriers": [ "pojo" ], "byOption": [ { "option":
"operation", "value": "queryVectors", "carriers": [ "list" ], "javaType":
"java.util.List<software.amazon.awssdk.services.s3vectors.model.QueryOutputVector>"
}, { "option": "operation", "value": "getVectors", "carriers": [ "list" ],
"javaType":
"java.util.List<software.amazon.awssdk.services.s3vectors.model.GetOutputVector>"
}, { "option": "operation", "value": "listVectorBuckets", "carriers": [ "list"
], "javaType": [...]
+ },
"properties": {
"vectorBucketName": { "index": 0, "kind": "path", "displayName": "Vector
Bucket Name", "group": "common", "label": "", "required": true, "type":
"string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "description":
"Vector bucket name or ARN" },
"dataType": { "index": 1, "kind": "parameter", "displayName": "Data Type",
"group": "common", "label": "", "required": false, "type": "enum", "javaType":
"java.lang.String", "enum": [ "float32", "float16" ], "deprecated": false,
"autowired": false, "secret": false, "defaultValue": "float32",
"configurationClass":
"org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration",
"configurationField": "configuration", "description": "The data type of the
vector. Options: float32, [...]
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-step-functions.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-step-functions.json
index 41c36bc55272..f85eca311ff1 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-step-functions.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws2-step-functions.json
@@ -67,6 +67,10 @@
"CamelAwsStepFunctionsExecutionHistoryReverseOrder": { "index": 16,
"kind": "header", "displayName": "", "group": "producer", "label": "",
"required": false, "javaType": "Boolean", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "description":
"Lists events in descending order of their timeStamp.", "constantName":
"org.apache.camel.component.aws2.stepfunctions.StepFunctions2Constants#EXECUTION_HISTORY_REVERSE_ORDER"
},
"CamelAwsStepFunctionsExecutionMaxResults": { "index": 17, "kind":
"header", "displayName": "", "group": "producer", "label": "", "required":
false, "javaType": "Integer", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "The limit number of
results while listing executions", "constantName":
"org.apache.camel.component.aws2.stepfunctions.StepFunctions2Constants#EXECUTIONS_MAX_RESULTS"
}
},
+ "bodyTypes": {
+ "producerIn": { "carriers": [ "any" ], "byOption": [ { "option":
"pojoRequest", "value": "true", "carriers": [ "pojo" ] } ], "description": "Not
used: the operations take their input from headers, such as the input of
startExecution and startSyncExecution in the
CamelAwsStepFunctionsExecutionInput header as JSON text: marshal a Map or a
POJO first. With pojoRequest=true the request of the AWS SDK for the operation,
such as a StartExecutionRequest: another body fails" },
+ "producerOut": { "carriers": [ "pojo" ], "description": "The response of
the AWS SDK for the operation, such as the StartExecutionResponse of
startExecution with the ARN of the execution. startSyncExecution gives a
StartSyncExecutionResponse whose output is the JSON that the execution returns,
as text: a failed execution does not fail the exchange, so check its status" }
+ },
"properties": {
"label": { "index": 0, "kind": "path", "displayName": "Label", "group":
"producer", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.aws2.stepfunctions.StepFunctions2Configuration",
"configurationField": "configuration", "description": "Logical name" },
"operation": { "index": 1, "kind": "parameter", "displayName":
"Operation", "group": "producer", "label": "", "required": true, "type":
"enum", "javaType":
"org.apache.camel.component.aws2.stepfunctions.StepFunctions2Operations",
"enum": [ "createStateMachine", "deleteStateMachine", "updateStateMachine",
"describeStateMachine", "listStateMachines", "createActivity",
"deleteActivity", "describeActivity", "getActivityTask", "listActivities",
"startExecution", "startSyncExecution", "sto [...]
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws2-athena-component.adoc
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws2-athena-component.adoc
index db0c1ab3e52b..4e2973b34b4d 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws2-athena-component.adoc
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/docs/aws2-athena-component.adoc
@@ -406,8 +406,10 @@ YAML::
----
====
-The preceding example will yield an
-https://docs.aws.amazon.com/athena/latest/APIReference/API_QueryExecution.html[Athena
QueryExecution] in the body.
+The preceding example will yield a
+https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/athena/model/GetQueryExecutionResponse.html[GetQueryExecutionResponse]
+in the body, whose `queryExecution()` is the
+https://docs.aws.amazon.com/athena/latest/APIReference/API_QueryExecution.html[Athena
QueryExecution].
The getQueryExecution operation also supports retrieving the query execution
ID from a header
(`CamelAwsAthenaQueryExecutionId`), and since startQueryExecution sets the
same header, upon starting a query,
@@ -466,7 +468,7 @@ YAML::
----
====
-The preceding example will yield an Athena QueryExecution in the body for the
query that was just started.
+The preceding example will yield a GetQueryExecutionResponse in the body for
the query that was just started.
- getQueryResults: this operation returns the results of a query that has
succeeded. The results are returned in the
body in one of three formats.
@@ -556,7 +558,7 @@ from("direct:start")
The preceding example will print the results of the query as CSV to the
console.
`SelectList` - returns a
-https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/athena/model/GetQueryResultsResponse.html[GetQueryResponse]
+https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/athena/model/GetQueryResultsResponse.html[GetQueryResultsResponse]
in the body containing at most 1,000 rows, plus the NextToken value as a
header (`CamelAwsAthenaNextToken`),
which can be used for manual pagination of results:
@@ -616,11 +618,11 @@ YAML::
====
The preceding example will return a
-https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/athena/model/GetQueryResultsResponse.html[GetQueryResponse]
+https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/athena/model/GetQueryResultsResponse.html[GetQueryResultsResponse]
in the body plus the NextToken value as a header (`CamelAwsAthenaNextToken`),
which can be used to manually page
through the results 1,000 rows at a time.
-`S3Pointer` - return an S3 path (e.g. `s3://bucket/path/`) pointing to the
results:
+`S3Pointer` - returns the S3 location of the results of the query as text:
[tabs]
====
@@ -677,9 +679,8 @@ YAML::
----
====
-The preceding example will return an
-S3 path (e.g. `s3://bucket/path/`) in the body pointing to the results. The
path will also be set in a header
-(`CamelAwsAthenaOutputLocation`).
+The preceding example will return the S3 location of the results of the query
as text in the body.
+The location will also be set in a header (`CamelAwsAthenaOutputLocation`).
- listQueryExecutions: this operation returns a list of query execution IDs
@@ -722,8 +723,9 @@ YAML::
----
====
-The preceding example will return a list of query executions in the body, plus
the NextToken value as a
-header (`CamelAwsAthenaNextToken`) than can be used for manual pagination of
results.
+The preceding example will return a ListQueryExecutionsResponse in the body,
whose `queryExecutionIds()` lists the
+ids of the query executions, plus the NextToken value as a header
(`CamelAwsAthenaNextToken`) that can be used for
+manual pagination of results.
- startQueryExecution: this operation starts the execution of a query. It
supports waiting for the query to
complete before proceeding, and retrying the query based on a set of
configurable failure conditions:
@@ -777,7 +779,8 @@ YAML::
The preceding example will start the query `SELECT 1` and configure the
results to be saved to `s3://bucket/path/`, but will not wait for the query
-to complete.
+to complete. The body is then empty, and the id of the query is in the
+`CamelAwsAthenaQueryExecutionId` header.
[tabs]
====
@@ -830,6 +833,9 @@ YAML::
The preceding example will start a query and wait up to 60 seconds for it to
reach a status that indicates it is complete (one of SUCCEEDED, FAILED,
CANCELLED,
or UNKNOWN_TO_SDK_VERSION). Upon failure, the query would not be retried.
+The body is then the GetQueryExecutionResponse of the last check: a query that
fails, or
+still runs after the wait, does not fail the exchange, so check the state of
the query in the
+`CamelAwsAthenaQueryExecutionState` header.
[tabs]
====
diff --git
a/components/camel-aws/camel-aws-config/src/generated/resources/META-INF/org/apache/camel/component/aws/config/aws-config.json
b/components/camel-aws/camel-aws-config/src/generated/resources/META-INF/org/apache/camel/component/aws/config/aws-config.json
index c9b79f9de9fd..7ed9e9726c47 100644
---
a/components/camel-aws/camel-aws-config/src/generated/resources/META-INF/org/apache/camel/component/aws/config/aws-config.json
+++
b/components/camel-aws/camel-aws-config/src/generated/resources/META-INF/org/apache/camel/component/aws/config/aws-config.json
@@ -56,6 +56,10 @@
"CamelAwsConfigConformacePackS3TemplateURI": { "index": 5, "kind":
"header", "displayName": "", "group": "producer", "label": "", "required":
false, "javaType": "String", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "The location of the file
containing the template body in S3", "constantName":
"org.apache.camel.component.aws.config.AWSConfigConstants#CONFORMACE_PACK_S3_TEMPLATE_URI"
},
"CamelAwsConfigConformacePackTemplateBody": { "index": 6, "kind":
"header", "displayName": "", "group": "producer", "label": "", "required":
false, "javaType": "String", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "A string containing the
full conformance pack template body", "constantName":
"org.apache.camel.component.aws.config.AWSConfigConstants#CONFORMACE_PACK_TEMPLATE_BODY"
}
},
+ "bodyTypes": {
+ "producerIn": { "carriers": [ "any" ], "byOption": [ { "option":
"pojoRequest", "value": "true", "carriers": [ "pojo" ] } ], "description": "Not
used: the operations take their input from headers, such as the rule of
putConfigRule in CamelAwsConfigRuleName, CamelAwsConfigRuleSource and
CamelAwsConfigRuleSourceIdentifier, and the template of putConformancePack in
CamelAwsConfigConformacePackTemplateBody. With pojoRequest=true the request of
the AWS SDK for the operation, such as a Put [...]
+ "producerOut": { "carriers": [ "pojo" ], "description": "The response of
the AWS SDK for the operation, such as the
DescribeComplianceByConfigRuleResponse of describeRuleCompliance, or the
PutConformancePackResponse with the ARN of the pack. putConfigRule,
removeConfigRule and removeConformancePack give an empty response" }
+ },
"properties": {
"label": { "index": 0, "kind": "path", "displayName": "Label", "group":
"producer", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.aws.config.AWSConfigConfiguration",
"configurationField": "configuration", "description": "Logical name" },
"operation": { "index": 1, "kind": "parameter", "displayName":
"Operation", "group": "producer", "label": "", "required": true, "type":
"enum", "javaType":
"org.apache.camel.component.aws.config.AWSConfigOperations", "enum": [
"putConfigRule", "removeConfigRule", "describeRuleCompliance",
"putConformancePack", "removeConformancePack" ], "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false,
"configurationClass": "org.apache.camel.component.aws.config.AWSConf [...]
diff --git
a/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/AWSConfigEndpoint.java
b/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/AWSConfigEndpoint.java
index 4bbb097c7c42..8ff6a102b545 100644
---
a/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/AWSConfigEndpoint.java
+++
b/components/camel-aws/camel-aws-config/src/main/java/org/apache/camel/component/aws/config/AWSConfigEndpoint.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.aws.config.client.AWSConfigClientFactory;
+import org.apache.camel.spi.BodyType;
+import org.apache.camel.spi.BodyType.Carrier;
+import org.apache.camel.spi.BodyTypes;
import org.apache.camel.spi.EndpointServiceLocation;
import org.apache.camel.spi.UriEndpoint;
import org.apache.camel.spi.UriParam;
@@ -35,6 +38,19 @@ import software.amazon.awssdk.services.config.ConfigClient;
@UriEndpoint(firstVersion = "4.3.0", scheme = "aws-config", title = "AWS
Config Service",
syntax = "aws-config:label", producerOnly = true, category = {
Category.CLOUD, Category.MANAGEMENT },
headersClass = AWSConfigConstants.class)
+@BodyTypes(producerIn = @BodyType(value = Carrier.ANY,
+ byOption = @BodyType.When(option =
"pojoRequest", value = "true", carriers = Carrier.POJO),
+ description = "Not used: the operations take
their input from headers, such as the rule of"
+ + " putConfigRule in
CamelAwsConfigRuleName, CamelAwsConfigRuleSource and"
+ + "
CamelAwsConfigRuleSourceIdentifier, and the template of putConformancePack"
+ + " in
CamelAwsConfigConformacePackTemplateBody. With pojoRequest=true the"
+ + " request of the AWS SDK for
the operation, such as a PutConfigRuleRequest:"
+ + " another body fails"),
+ producerOut = @BodyType(value = Carrier.POJO,
+ description = "The response of the AWS SDK
for the operation, such as the"
+ + "
DescribeComplianceByConfigRuleResponse of describeRuleCompliance, or the"
+ + "
PutConformancePackResponse with the ARN of the pack. putConfigRule,"
+ + " removeConfigRule and
removeConformancePack give an empty response"))
public class AWSConfigEndpoint extends DefaultEndpoint implements
EndpointServiceLocation {
private ConfigClient configClient;
diff --git
a/components/camel-aws/camel-aws-parameter-store/src/generated/resources/META-INF/org/apache/camel/component/aws/parameterstore/aws-parameter-store.json
b/components/camel-aws/camel-aws-parameter-store/src/generated/resources/META-INF/org/apache/camel/component/aws/parameterstore/aws-parameter-store.json
index ca3e6283d7c9..05ef7282d4e9 100644
---
a/components/camel-aws/camel-aws-parameter-store/src/generated/resources/META-INF/org/apache/camel/component/aws/parameterstore/aws-parameter-store.json
+++
b/components/camel-aws/camel-aws-parameter-store/src/generated/resources/META-INF/org/apache/camel/component/aws/parameterstore/aws-parameter-store.json
@@ -63,6 +63,10 @@
"CamelAwsParameterStoreKmsKeyId": { "index": 12, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The KMS Key ID to use for SecureString
encryption.", "constantName":
"org.apache.camel.component.aws.parameterstore.ParameterStoreConstants#KMS_KEY_ID"
},
"CamelAwsParameterStoreTier": { "index": 13, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The tier for the parameter (Standard,
Advanced, Intelligent-Tiering).", "constantName":
"org.apache.camel.component.aws.parameterstore.ParameterStoreConstants#PARAMETER_TIER"
}
},
+ "bodyTypes": {
+ "producerIn": { "carriers": [ "any" ], "byOption": [ { "option":
"pojoRequest", "value": "true", "carriers": [ "pojo" ] } ], "description": "Not
used, except by putParameter when the CamelAwsParameterStoreValue header is not
set: the value of the parameter as text. Bytes, a stream or a file are read as
text, a Map or a POJO is stored as its toString(), so marshal it first, and no
body fails. The other operations take their input from headers, such as
CamelAwsParameterStoreName. With [...]
+ "producerOut": { "carriers": [ "pojo" ], "byOption": [ { "option":
"operation", "value": "getParameter", "carriers": [ "text" ], "javaType":
"java.lang.String" } ], "description": "The value of the parameter as text for
getParameter, with its version in the CamelAwsParameterStoreVersion header: a
SecureString is decrypted only when the CamelAwsParameterStoreWithDecryption
header is true. The response of the AWS SDK for the other operations, such as
the GetParametersResponse of getPar [...]
+ },
"properties": {
"label": { "index": 0, "kind": "path", "displayName": "Label", "group":
"producer", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.aws.parameterstore.ParameterStoreConfiguration",
"configurationField": "configuration", "description": "Logical name" },
"operation": { "index": 1, "kind": "parameter", "displayName":
"Operation", "group": "producer", "label": "", "required": true, "type":
"enum", "javaType":
"org.apache.camel.component.aws.parameterstore.ParameterStoreOperations",
"enum": [ "getParameter", "getParameters", "getParametersByPath",
"putParameter", "deleteParameter", "deleteParameters", "describeParameters",
"getParameterHistory" ], "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "configur [...]
diff --git
a/components/camel-aws/camel-aws-parameter-store/src/main/java/org/apache/camel/component/aws/parameterstore/ParameterStoreEndpoint.java
b/components/camel-aws/camel-aws-parameter-store/src/main/java/org/apache/camel/component/aws/parameterstore/ParameterStoreEndpoint.java
index 7f87915a4c85..63a63e4029e5 100644
---
a/components/camel-aws/camel-aws-parameter-store/src/main/java/org/apache/camel/component/aws/parameterstore/ParameterStoreEndpoint.java
+++
b/components/camel-aws/camel-aws-parameter-store/src/main/java/org/apache/camel/component/aws/parameterstore/ParameterStoreEndpoint.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.aws.parameterstore.client.ParameterStoreClientFactory;
+import org.apache.camel.spi.BodyType;
+import org.apache.camel.spi.BodyType.Carrier;
+import org.apache.camel.spi.BodyTypes;
import org.apache.camel.spi.EndpointServiceLocation;
import org.apache.camel.spi.UriEndpoint;
import org.apache.camel.spi.UriParam;
@@ -35,6 +38,24 @@ import software.amazon.awssdk.services.ssm.SsmClient;
@UriEndpoint(firstVersion = "4.17.0", scheme = "aws-parameter-store", title =
"AWS Parameter Store",
syntax = "aws-parameter-store:label", producerOnly = true,
category = { Category.CLOUD, Category.MANAGEMENT },
headersClass = ParameterStoreConstants.class)
+@BodyTypes(producerIn = @BodyType(value = Carrier.ANY,
+ byOption = @BodyType.When(option =
"pojoRequest", value = "true", carriers = Carrier.POJO),
+ description = "Not used, except by
putParameter when the CamelAwsParameterStoreValue header"
+ + " is not set: the value of
the parameter as text. Bytes, a stream or a file"
+ + " are read as text, a Map or
a POJO is stored as its toString(), so marshal"
+ + " it first, and no body
fails. The other operations take their input from"
+ + " headers, such as
CamelAwsParameterStoreName. With pojoRequest=true the"
+ + " request of the AWS SDK for
the operation, such as a GetParameterRequest:"
+ + " another body fails"),
+ producerOut = @BodyType(value = Carrier.POJO,
+ byOption = @BodyType.When(option =
"operation", value = "getParameter",
+ carriers =
Carrier.TEXT,
+ javaType =
"java.lang.String"),
+ description = "The value of the parameter
as text for getParameter, with its version in the"
+ + "
CamelAwsParameterStoreVersion header: a SecureString is decrypted only"
+ + " when the
CamelAwsParameterStoreWithDecryption header is true. The response"
+ + " of the AWS SDK for the
other operations, such as the GetParametersResponse"
+ + " of getParameters, whose
invalidParameters() lists the names not found"))
public class ParameterStoreEndpoint extends ScheduledPollEndpoint implements
EndpointServiceLocation {
private SsmClient ssmClient;
diff --git
a/components/camel-aws/camel-aws-security-hub/src/generated/resources/META-INF/org/apache/camel/component/aws/securityhub/aws-security-hub.json
b/components/camel-aws/camel-aws-security-hub/src/generated/resources/META-INF/org/apache/camel/component/aws/securityhub/aws-security-hub.json
index c550f5a64599..46894fe3a2ce 100644
---
a/components/camel-aws/camel-aws-security-hub/src/generated/resources/META-INF/org/apache/camel/component/aws/securityhub/aws-security-hub.json
+++
b/components/camel-aws/camel-aws-security-hub/src/generated/resources/META-INF/org/apache/camel/component/aws/securityhub/aws-security-hub.json
@@ -71,6 +71,10 @@
"CamelAwsSecurityHubProductArn": { "index": 20, "kind": "header",
"displayName": "", "group": "getFindingHistory", "label": "getFindingHistory",
"required": false, "javaType": "String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "description": "The
product ARN for the finding", "constantName":
"org.apache.camel.component.aws.securityhub.SecurityHubConstants#PRODUCT_ARN" },
"CamelAwsSecurityHubFindingAggregatorArn": { "index": 21, "kind":
"header", "displayName": "", "group": "getFindingAggregator", "label":
"getFindingAggregator", "required": false, "javaType": "String", "deprecated":
false, "deprecationNote": "", "autowired": false, "secret": false,
"description": "The ARN of the finding aggregator to retrieve", "constantName":
"org.apache.camel.component.aws.securityhub.SecurityHubConstants#FINDING_AGGREGATOR_ARN"
}
},
+ "bodyTypes": {
+ "producerIn": { "carriers": [ "any" ], "byOption": [ { "option":
"pojoRequest", "value": "true", "carriers": [ "pojo" ] } ], "description":
"batchImportFindings, the default, imports the findings of the
CamelAwsSecurityHubFindings header, or else of the body: a List of the
AwsSecurityFinding of the AWS SDK, or one AwsSecurityFinding. JSON text, a Map,
an array or a List of anything else fails. The other operations take their
input from headers, such as CamelAwsSecurityHubFilters. Wit [...]
+ "producerOut": { "carriers": [ "pojo" ], "description": "The response of
the AWS SDK for the operation, such as the BatchImportFindingsResponse of
batchImportFindings, with the counts in the CamelAwsSecurityHubSuccessCount and
CamelAwsSecurityHubFailedCount headers: a finding that is not imported does not
fail the exchange. getFindings gives a GetFindingsResponse, with the token of
the next page in the CamelAwsSecurityHubNextToken header" }
+ },
"properties": {
"label": { "index": 0, "kind": "path", "displayName": "Label", "group":
"producer", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Logical name" },
"operation": { "index": 1, "kind": "parameter", "displayName":
"Operation", "group": "producer", "label": "", "required": true, "type":
"enum", "javaType":
"org.apache.camel.component.aws.securityhub.SecurityHubOperations", "enum": [
"batchImportFindings", "getFindings", "batchUpdateFindings",
"getFindingHistory", "describeHub", "listEnabledProductsForImport",
"getFindingAggregator" ], "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "defaultValue": "b [...]
diff --git
a/components/camel-aws/camel-aws-security-hub/src/main/java/org/apache/camel/component/aws/securityhub/SecurityHubEndpoint.java
b/components/camel-aws/camel-aws-security-hub/src/main/java/org/apache/camel/component/aws/securityhub/SecurityHubEndpoint.java
index 679a76f0378d..24e57b222aea 100644
---
a/components/camel-aws/camel-aws-security-hub/src/main/java/org/apache/camel/component/aws/securityhub/SecurityHubEndpoint.java
+++
b/components/camel-aws/camel-aws-security-hub/src/main/java/org/apache/camel/component/aws/securityhub/SecurityHubEndpoint.java
@@ -24,6 +24,9 @@ import org.apache.camel.Consumer;
import org.apache.camel.Processor;
import org.apache.camel.Producer;
import
org.apache.camel.component.aws.securityhub.client.SecurityHubClientFactory;
+import org.apache.camel.spi.BodyType;
+import org.apache.camel.spi.BodyType.Carrier;
+import org.apache.camel.spi.BodyTypes;
import org.apache.camel.spi.EndpointServiceLocation;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriEndpoint;
@@ -41,6 +44,22 @@ import
software.amazon.awssdk.services.securityhub.SecurityHubClient;
Category.CLOUD,
Category.SECURITY },
headersClass = SecurityHubConstants.class)
+@BodyTypes(producerIn = @BodyType(value = Carrier.ANY,
+ byOption = @BodyType.When(option =
"pojoRequest", value = "true", carriers = Carrier.POJO),
+ description = "batchImportFindings, the
default, imports the findings of the"
+ + "
CamelAwsSecurityHubFindings header, or else of the body: a List of the"
+ + " AwsSecurityFinding of the
AWS SDK, or one AwsSecurityFinding. JSON text, a"
+ + " Map, an array or a List of
anything else fails. The other operations take"
+ + " their input from headers,
such as CamelAwsSecurityHubFilters. With"
+ + " pojoRequest=true the
request of the AWS SDK for the operation, such as a"
+ + " GetFindingsRequest:
another body fails"),
+ producerOut = @BodyType(value = Carrier.POJO,
+ description = "The response of the AWS SDK
for the operation, such as the"
+ + "
BatchImportFindingsResponse of batchImportFindings, with the counts in the"
+ + "
CamelAwsSecurityHubSuccessCount and CamelAwsSecurityHubFailedCount"
+ + " headers: a finding that
is not imported does not fail the exchange."
+ + " getFindings gives a
GetFindingsResponse, with the token of the next page"
+ + " in the
CamelAwsSecurityHubNextToken header"))
public class SecurityHubEndpoint extends DefaultEndpoint implements
EndpointServiceLocation {
private SecurityHubClient securityHubClient;
diff --git
a/components/camel-aws/camel-aws2-athena/src/generated/resources/META-INF/org/apache/camel/component/aws2/athena/aws2-athena.json
b/components/camel-aws/camel-aws2-athena/src/generated/resources/META-INF/org/apache/camel/component/aws2/athena/aws2-athena.json
index a2d10fcebfdd..38431d346851 100644
---
a/components/camel-aws/camel-aws2-athena/src/generated/resources/META-INF/org/apache/camel/component/aws2/athena/aws2-athena.json
+++
b/components/camel-aws/camel-aws2-athena/src/generated/resources/META-INF/org/apache/camel/component/aws2/athena/aws2-athena.json
@@ -90,6 +90,10 @@
"CamelAwsAthenaStartQueryExecutionAttempts": { "index": 21, "kind":
"header", "displayName": "", "group": "startQueryExecution", "label":
"startQueryExecution", "required": false, "javaType": "int", "deprecated":
false, "deprecationNote": "", "autowired": false, "secret": false,
"description": "Total number of attempts made to run the query. Will be greater
than 1 if the query is retried.", "constantName":
"org.apache.camel.component.aws2.athena.Athena2Constants#START_QUERY_EXECUTION
[...]
"CamelAwsAthenaStartQueryExecutionElapsedMillis": { "index": 22, "kind":
"header", "displayName": "", "group": "startQueryExecution", "label":
"startQueryExecution", "required": false, "javaType": "long", "deprecated":
false, "deprecationNote": "", "autowired": false, "secret": false,
"description": "Total time in millis taken in startQueryExecution (mostly
relevant when waiting for query completion within startQueryExecution).",
"constantName": "org.apache.camel.component.aws2.athen [...]
},
+ "bodyTypes": {
+ "producerIn": { "carriers": [ "any" ], "byOption": [ { "option":
"operation", "value": "startQueryExecution", "carriers": [ "text", "bytes",
"stream", "file", "null" ] } ], "description": "The SQL of startQueryExecution,
the default, as text: bytes, a stream or a file are read as text, a Map or a
POJO is sent as its toString(). With no body the SQL comes from the
CamelAwsAthenaQueryString header or the queryString option. The other
operations do not use the body: they take the id of [...]
+ "producerOut": { "carriers": [ "pojo" ], "byOption": [ { "option":
"operation", "value": "startQueryExecution", "carriers": [ "null", "pojo" ] },
{ "option": "operation", "value": "getQueryResults", "carriers": [ "iterator",
"pojo", "text" ] } ], "description": "startQueryExecution, the default, leaves
no body, with the id of the query in the CamelAwsAthenaQueryExecutionId header;
with waitTimeout, the GetQueryExecutionResponse of the AWS SDK of the last
check, whatever the state of [...]
+ },
"properties": {
"label": { "index": 0, "kind": "path", "displayName": "Label", "group":
"producer", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.aws2.athena.Athena2Configuration",
"configurationField": "configuration", "description": "Logical name" },
"database": { "index": 1, "kind": "parameter", "displayName": "Database",
"group": "producer", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "configurationClass":
"org.apache.camel.component.aws2.athena.Athena2Configuration",
"configurationField": "configuration", "description": "The Athena database to
use." },
diff --git
a/components/camel-aws/camel-aws2-athena/src/main/docs/aws2-athena-component.adoc
b/components/camel-aws/camel-aws2-athena/src/main/docs/aws2-athena-component.adoc
index db0c1ab3e52b..4e2973b34b4d 100644
---
a/components/camel-aws/camel-aws2-athena/src/main/docs/aws2-athena-component.adoc
+++
b/components/camel-aws/camel-aws2-athena/src/main/docs/aws2-athena-component.adoc
@@ -406,8 +406,10 @@ YAML::
----
====
-The preceding example will yield an
-https://docs.aws.amazon.com/athena/latest/APIReference/API_QueryExecution.html[Athena
QueryExecution] in the body.
+The preceding example will yield a
+https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/athena/model/GetQueryExecutionResponse.html[GetQueryExecutionResponse]
+in the body, whose `queryExecution()` is the
+https://docs.aws.amazon.com/athena/latest/APIReference/API_QueryExecution.html[Athena
QueryExecution].
The getQueryExecution operation also supports retrieving the query execution
ID from a header
(`CamelAwsAthenaQueryExecutionId`), and since startQueryExecution sets the
same header, upon starting a query,
@@ -466,7 +468,7 @@ YAML::
----
====
-The preceding example will yield an Athena QueryExecution in the body for the
query that was just started.
+The preceding example will yield a GetQueryExecutionResponse in the body for
the query that was just started.
- getQueryResults: this operation returns the results of a query that has
succeeded. The results are returned in the
body in one of three formats.
@@ -556,7 +558,7 @@ from("direct:start")
The preceding example will print the results of the query as CSV to the
console.
`SelectList` - returns a
-https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/athena/model/GetQueryResultsResponse.html[GetQueryResponse]
+https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/athena/model/GetQueryResultsResponse.html[GetQueryResultsResponse]
in the body containing at most 1,000 rows, plus the NextToken value as a
header (`CamelAwsAthenaNextToken`),
which can be used for manual pagination of results:
@@ -616,11 +618,11 @@ YAML::
====
The preceding example will return a
-https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/athena/model/GetQueryResultsResponse.html[GetQueryResponse]
+https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/athena/model/GetQueryResultsResponse.html[GetQueryResultsResponse]
in the body plus the NextToken value as a header (`CamelAwsAthenaNextToken`),
which can be used to manually page
through the results 1,000 rows at a time.
-`S3Pointer` - return an S3 path (e.g. `s3://bucket/path/`) pointing to the
results:
+`S3Pointer` - returns the S3 location of the results of the query as text:
[tabs]
====
@@ -677,9 +679,8 @@ YAML::
----
====
-The preceding example will return an
-S3 path (e.g. `s3://bucket/path/`) in the body pointing to the results. The
path will also be set in a header
-(`CamelAwsAthenaOutputLocation`).
+The preceding example will return the S3 location of the results of the query
as text in the body.
+The location will also be set in a header (`CamelAwsAthenaOutputLocation`).
- listQueryExecutions: this operation returns a list of query execution IDs
@@ -722,8 +723,9 @@ YAML::
----
====
-The preceding example will return a list of query executions in the body, plus
the NextToken value as a
-header (`CamelAwsAthenaNextToken`) than can be used for manual pagination of
results.
+The preceding example will return a ListQueryExecutionsResponse in the body,
whose `queryExecutionIds()` lists the
+ids of the query executions, plus the NextToken value as a header
(`CamelAwsAthenaNextToken`) that can be used for
+manual pagination of results.
- startQueryExecution: this operation starts the execution of a query. It
supports waiting for the query to
complete before proceeding, and retrying the query based on a set of
configurable failure conditions:
@@ -777,7 +779,8 @@ YAML::
The preceding example will start the query `SELECT 1` and configure the
results to be saved to `s3://bucket/path/`, but will not wait for the query
-to complete.
+to complete. The body is then empty, and the id of the query is in the
+`CamelAwsAthenaQueryExecutionId` header.
[tabs]
====
@@ -830,6 +833,9 @@ YAML::
The preceding example will start a query and wait up to 60 seconds for it to
reach a status that indicates it is complete (one of SUCCEEDED, FAILED,
CANCELLED,
or UNKNOWN_TO_SDK_VERSION). Upon failure, the query would not be retried.
+The body is then the GetQueryExecutionResponse of the last check: a query that
fails, or
+still runs after the wait, does not fail the exchange, so check the state of
the query in the
+`CamelAwsAthenaQueryExecutionState` header.
[tabs]
====
diff --git
a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/Athena2Endpoint.java
b/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/Athena2Endpoint.java
index 86e00791af64..e7fff36bac8a 100644
---
a/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/Athena2Endpoint.java
+++
b/components/camel-aws/camel-aws2-athena/src/main/java/org/apache/camel/component/aws2/athena/Athena2Endpoint.java
@@ -24,6 +24,9 @@ import org.apache.camel.Consumer;
import org.apache.camel.Processor;
import org.apache.camel.Producer;
import org.apache.camel.component.aws2.athena.client.Athena2ClientFactory;
+import org.apache.camel.spi.BodyType;
+import org.apache.camel.spi.BodyType.Carrier;
+import org.apache.camel.spi.BodyTypes;
import org.apache.camel.spi.EndpointServiceLocation;
import org.apache.camel.spi.UriEndpoint;
import org.apache.camel.spi.UriParam;
@@ -36,6 +39,30 @@ import software.amazon.awssdk.services.athena.AthenaClient;
*/
@UriEndpoint(firstVersion = "3.4.0", scheme = "aws2-athena", title = "AWS
Athena", syntax = "aws2-athena:label",
producerOnly = true, category = { Category.CLOUD,
Category.DATABASE }, headersClass = Athena2Constants.class)
+@BodyTypes(producerIn = @BodyType(value = Carrier.ANY,
+ byOption = @BodyType.When(option =
"operation", value = "startQueryExecution", carriers = {
+ Carrier.TEXT, Carrier.BYTES,
Carrier.STREAM, Carrier.FILE, Carrier.NULL }),
+ description = "The SQL of
startQueryExecution, the default, as text: bytes, a stream or a"
+ + " file are read as text, a
Map or a POJO is sent as its toString(). With no"
+ + " body the SQL comes from
the CamelAwsAthenaQueryString header or the"
+ + " queryString option. The
other operations do not use the body: they take the"
+ + " id of the query from the
CamelAwsAthenaQueryExecutionId header, which"
+ + " startQueryExecution sets"),
+ producerOut = @BodyType(value = Carrier.POJO,
+ byOption = {
+ @BodyType.When(option =
"operation", value = "startQueryExecution",
+ carriers = {
Carrier.NULL, Carrier.POJO }),
+ @BodyType.When(option =
"operation", value = "getQueryResults",
+ carriers = {
Carrier.ITERATOR, Carrier.POJO, Carrier.TEXT }) },
+ description = "startQueryExecution, the
default, leaves no body, with the id of the query in"
+ + " the
CamelAwsAthenaQueryExecutionId header; with waitTimeout, the"
+ + " GetQueryExecutionResponse
of the AWS SDK of the last check, whatever the"
+ + " state of the query.
getQueryResults gives by outputType: for StreamList,"
+ + " the default, a
GetQueryResultsIterable of the pages of rows, which calls"
+ + " Athena when it is read,
such as by a split; for SelectList one page as a"
+ + " GetQueryResultsResponse;
for S3Pointer the S3 location of the results as"
+ + " text. getQueryExecution
and listQueryExecutions give the response of the"
+ + " AWS SDK"))
public class Athena2Endpoint extends DefaultEndpoint implements
EndpointServiceLocation {
private AthenaClient athenaClient;
diff --git
a/components/camel-aws/camel-aws2-ecs/src/generated/resources/META-INF/org/apache/camel/component/aws2/ecs/aws2-ecs.json
b/components/camel-aws/camel-aws2-ecs/src/generated/resources/META-INF/org/apache/camel/component/aws2/ecs/aws2-ecs.json
index 1078e8b06d89..a0bffdbfb326 100644
---
a/components/camel-aws/camel-aws2-ecs/src/generated/resources/META-INF/org/apache/camel/component/aws2/ecs/aws2-ecs.json
+++
b/components/camel-aws/camel-aws2-ecs/src/generated/resources/META-INF/org/apache/camel/component/aws2/ecs/aws2-ecs.json
@@ -55,6 +55,10 @@
"CamelAwsECSIsTruncated": { "index": 4, "kind": "header", "displayName":
"", "group": "listClusters", "label": "listClusters", "required": false,
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Whether the response has more results
(is truncated).", "constantName":
"org.apache.camel.component.aws2.ecs.ECS2Constants#IS_TRUNCATED" },
"CamelAwsECSClusterArn": { "index": 5, "kind": "header", "displayName":
"", "group": "createCluster describeCluster deleteCluster", "label":
"createCluster describeCluster deleteCluster", "required": false, "javaType":
"String", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "description": "The ARN of the cluster.", "constantName":
"org.apache.camel.component.aws2.ecs.ECS2Constants#CLUSTER_ARN" }
},
+ "bodyTypes": {
+ "producerIn": { "carriers": [ "any" ], "byOption": [ { "option":
"pojoRequest", "value": "true", "carriers": [ "pojo" ] } ], "description": "Not
used: the operations take their input from headers, such as the name of the
cluster in CamelAwsECSClusterName. With pojoRequest=true the request of the AWS
SDK for the operation, such as a ListClustersRequest: another body fails" },
+ "producerOut": { "carriers": [ "pojo" ], "description": "The response of
the AWS SDK for the operation, such as the ListClustersResponse of
listClusters, with the token of the next page in a header. describeCluster of a
cluster that does not exist does not fail: the response lists it in its
failures" }
+ },
"properties": {
"label": { "index": 0, "kind": "path", "displayName": "Label", "group":
"producer", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.aws2.ecs.ECS2Configuration", "configurationField":
"configuration", "description": "Logical name" },
"operation": { "index": 1, "kind": "parameter", "displayName":
"Operation", "group": "producer", "label": "", "required": true, "type":
"enum", "javaType": "org.apache.camel.component.aws2.ecs.ECS2Operations",
"enum": [ "listClusters", "describeCluster", "createCluster", "deleteCluster"
], "deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "configurationClass":
"org.apache.camel.component.aws2.ecs.ECS2Configuration", "configurationField":
"configuration" [...]
diff --git
a/components/camel-aws/camel-aws2-ecs/src/main/java/org/apache/camel/component/aws2/ecs/ECS2Endpoint.java
b/components/camel-aws/camel-aws2-ecs/src/main/java/org/apache/camel/component/aws2/ecs/ECS2Endpoint.java
index 285f629d1a41..23f15686e661 100644
---
a/components/camel-aws/camel-aws2-ecs/src/main/java/org/apache/camel/component/aws2/ecs/ECS2Endpoint.java
+++
b/components/camel-aws/camel-aws2-ecs/src/main/java/org/apache/camel/component/aws2/ecs/ECS2Endpoint.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.aws2.ecs.client.ECS2ClientFactory;
+import org.apache.camel.spi.BodyType;
+import org.apache.camel.spi.BodyType.Carrier;
+import org.apache.camel.spi.BodyTypes;
import org.apache.camel.spi.EndpointServiceLocation;
import org.apache.camel.spi.UriEndpoint;
import org.apache.camel.spi.UriParam;
@@ -35,6 +38,17 @@ import software.amazon.awssdk.services.ecs.EcsClient;
@UriEndpoint(firstVersion = "3.1.0", scheme = "aws2-ecs", title = "AWS Elastic
Container Service (ECS)",
syntax = "aws2-ecs:label", producerOnly = true, category = {
Category.CLOUD, Category.MANAGEMENT },
headersClass = ECS2Constants.class)
+@BodyTypes(producerIn = @BodyType(value = Carrier.ANY,
+ byOption = @BodyType.When(option =
"pojoRequest", value = "true", carriers = Carrier.POJO),
+ description = "Not used: the operations take
their input from headers, such as the name of"
+ + " the cluster in
CamelAwsECSClusterName. With pojoRequest=true the request of"
+ + " the AWS SDK for the
operation, such as a ListClustersRequest: another body"
+ + " fails"),
+ producerOut = @BodyType(value = Carrier.POJO,
+ description = "The response of the AWS SDK
for the operation, such as the"
+ + " ListClustersResponse of
listClusters, with the token of the next page in a"
+ + " header. describeCluster
of a cluster that does not exist does not fail:"
+ + " the response lists it in
its failures"))
public class ECS2Endpoint extends ScheduledPollEndpoint implements
EndpointServiceLocation {
private EcsClient ecsClient;
diff --git
a/components/camel-aws/camel-aws2-eks/src/generated/resources/META-INF/org/apache/camel/component/aws2/eks/aws2-eks.json
b/components/camel-aws/camel-aws2-eks/src/generated/resources/META-INF/org/apache/camel/component/aws2/eks/aws2-eks.json
index b43403c1ba00..3cca2693328d 100644
---
a/components/camel-aws/camel-aws2-eks/src/generated/resources/META-INF/org/apache/camel/component/aws2/eks/aws2-eks.json
+++
b/components/camel-aws/camel-aws2-eks/src/generated/resources/META-INF/org/apache/camel/component/aws2/eks/aws2-eks.json
@@ -58,6 +58,10 @@
"CamelAwsEKSIsTruncated": { "index": 7, "kind": "header", "displayName":
"", "group": "listClusters", "label": "listClusters", "required": false,
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Whether the response has more results
(is truncated).", "constantName":
"org.apache.camel.component.aws2.eks.EKS2Constants#IS_TRUNCATED" },
"CamelAwsEKSClusterArn": { "index": 8, "kind": "header", "displayName":
"", "group": "createCluster describeCluster deleteCluster", "label":
"createCluster describeCluster deleteCluster", "required": false, "javaType":
"String", "deprecated": false, "deprecationNote": "", "autowired": false,
"secret": false, "description": "The ARN of the cluster.", "constantName":
"org.apache.camel.component.aws2.eks.EKS2Constants#CLUSTER_ARN" }
},
+ "bodyTypes": {
+ "producerIn": { "carriers": [ "any" ], "byOption": [ { "option":
"pojoRequest", "value": "true", "carriers": [ "pojo" ] } ], "description": "Not
used: the operations take their input from headers, such as the name of the
cluster in CamelAwsEKSClusterName. With pojoRequest=true the request of the AWS
SDK for the operation, such as a ListClustersRequest: another body fails" },
+ "producerOut": { "carriers": [ "pojo" ], "description": "The response of
the AWS SDK for the operation, such as the ListClustersResponse of
listClusters, with the token of the next page in a header" }
+ },
"properties": {
"label": { "index": 0, "kind": "path", "displayName": "Label", "group":
"producer", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.aws2.eks.EKS2Configuration", "configurationField":
"configuration", "description": "Logical name" },
"operation": { "index": 1, "kind": "parameter", "displayName":
"Operation", "group": "producer", "label": "", "required": true, "type":
"enum", "javaType": "org.apache.camel.component.aws2.eks.EKS2Operations",
"enum": [ "listClusters", "describeCluster", "createCluster", "deleteCluster"
], "deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "configurationClass":
"org.apache.camel.component.aws2.eks.EKS2Configuration", "configurationField":
"configuration" [...]
diff --git
a/components/camel-aws/camel-aws2-eks/src/main/java/org/apache/camel/component/aws2/eks/EKS2Endpoint.java
b/components/camel-aws/camel-aws2-eks/src/main/java/org/apache/camel/component/aws2/eks/EKS2Endpoint.java
index 184c7290f94f..8dec2adb6a20 100644
---
a/components/camel-aws/camel-aws2-eks/src/main/java/org/apache/camel/component/aws2/eks/EKS2Endpoint.java
+++
b/components/camel-aws/camel-aws2-eks/src/main/java/org/apache/camel/component/aws2/eks/EKS2Endpoint.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.aws2.eks.client.EKS2ClientFactory;
+import org.apache.camel.spi.BodyType;
+import org.apache.camel.spi.BodyType.Carrier;
+import org.apache.camel.spi.BodyTypes;
import org.apache.camel.spi.EndpointServiceLocation;
import org.apache.camel.spi.UriEndpoint;
import org.apache.camel.spi.UriParam;
@@ -35,6 +38,16 @@ import software.amazon.awssdk.services.eks.EksClient;
@UriEndpoint(firstVersion = "3.1.0", scheme = "aws2-eks", title = "AWS Elastic
Kubernetes Service (EKS)",
syntax = "aws2-eks:label", producerOnly = true, category = {
Category.CLOUD, Category.MANAGEMENT },
headersClass = EKS2Constants.class)
+@BodyTypes(producerIn = @BodyType(value = Carrier.ANY,
+ byOption = @BodyType.When(option =
"pojoRequest", value = "true", carriers = Carrier.POJO),
+ description = "Not used: the operations take
their input from headers, such as the name of"
+ + " the cluster in
CamelAwsEKSClusterName. With pojoRequest=true the request of"
+ + " the AWS SDK for the
operation, such as a ListClustersRequest: another body"
+ + " fails"),
+ producerOut = @BodyType(value = Carrier.POJO,
+ description = "The response of the AWS SDK
for the operation, such as the"
+ + " ListClustersResponse of
listClusters, with the token of the next page in a"
+ + " header"))
public class EKS2Endpoint extends ScheduledPollEndpoint implements
EndpointServiceLocation {
private EksClient eksClient;
diff --git
a/components/camel-aws/camel-aws2-mq/src/generated/resources/META-INF/org/apache/camel/component/aws2/mq/aws2-mq.json
b/components/camel-aws/camel-aws2-mq/src/generated/resources/META-INF/org/apache/camel/component/aws2/mq/aws2-mq.json
index a100694868ff..fe992fd16870 100644
---
a/components/camel-aws/camel-aws2-mq/src/generated/resources/META-INF/org/apache/camel/component/aws2/mq/aws2-mq.json
+++
b/components/camel-aws/camel-aws2-mq/src/generated/resources/META-INF/org/apache/camel/component/aws2/mq/aws2-mq.json
@@ -64,6 +64,10 @@
"CamelAwsMQBrokerArn": { "index": 13, "kind": "header", "displayName": "",
"group": "createBroker", "label": "createBroker", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The Amazon Resource Name (ARN) of the
broker.", "constantName":
"org.apache.camel.component.aws2.mq.MQ2Constants#BROKER_ARN" },
"CamelAwsMQBrokerState": { "index": 14, "kind": "header", "displayName":
"", "group": "describeBroker", "label": "describeBroker", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The state of the broker.",
"constantName": "org.apache.camel.component.aws2.mq.MQ2Constants#BROKER_STATE" }
},
+ "bodyTypes": {
+ "producerIn": { "carriers": [ "any" ], "byOption": [ { "option":
"pojoRequest", "value": "true", "carriers": [ "pojo" ] } ], "description": "Not
used: the operations take their input from headers, such as the id of the
broker in CamelAwsMQBrokerID, and the users of createBroker as a List of the
User of the AWS SDK. With pojoRequest=true the request of the AWS SDK for the
operation, such as a ListBrokersRequest: another body fails" },
+ "producerOut": { "carriers": [ "pojo" ], "description": "The response of
the AWS SDK for the operation, such as the ListBrokersResponse of listBrokers,
with the token of the next page in a header" }
+ },
"properties": {
"label": { "index": 0, "kind": "path", "displayName": "Label", "group":
"producer", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.aws2.mq.MQ2Configuration", "configurationField":
"configuration", "description": "Logical name" },
"operation": { "index": 1, "kind": "parameter", "displayName":
"Operation", "group": "producer", "label": "", "required": true, "type":
"enum", "javaType": "org.apache.camel.component.aws2.mq.MQ2Operations", "enum":
[ "listBrokers", "createBroker", "deleteBroker", "rebootBroker",
"updateBroker", "describeBroker" ], "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "configurationClass":
"org.apache.camel.component.aws2.mq.MQ2Configuration", "configuratio [...]
diff --git
a/components/camel-aws/camel-aws2-mq/src/main/java/org/apache/camel/component/aws2/mq/MQ2Endpoint.java
b/components/camel-aws/camel-aws2-mq/src/main/java/org/apache/camel/component/aws2/mq/MQ2Endpoint.java
index 76267f10158d..26961e13d129 100644
---
a/components/camel-aws/camel-aws2-mq/src/main/java/org/apache/camel/component/aws2/mq/MQ2Endpoint.java
+++
b/components/camel-aws/camel-aws2-mq/src/main/java/org/apache/camel/component/aws2/mq/MQ2Endpoint.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.aws2.mq.client.MQ2ClientFactory;
+import org.apache.camel.spi.BodyType;
+import org.apache.camel.spi.BodyType.Carrier;
+import org.apache.camel.spi.BodyTypes;
import org.apache.camel.spi.EndpointServiceLocation;
import org.apache.camel.spi.UriEndpoint;
import org.apache.camel.spi.UriParam;
@@ -34,6 +37,16 @@ import software.amazon.awssdk.services.mq.MqClient;
*/
@UriEndpoint(firstVersion = "3.1.0", scheme = "aws2-mq", title = "AWS MQ",
syntax = "aws2-mq:label", producerOnly = true,
category = { Category.CLOUD, Category.MESSAGING }, headersClass =
MQ2Constants.class)
+@BodyTypes(producerIn = @BodyType(value = Carrier.ANY,
+ byOption = @BodyType.When(option =
"pojoRequest", value = "true", carriers = Carrier.POJO),
+ description = "Not used: the operations take
their input from headers, such as the id of the"
+ + " broker in
CamelAwsMQBrokerID, and the users of createBroker as a List of"
+ + " the User of the AWS SDK.
With pojoRequest=true the request of the AWS SDK"
+ + " for the operation, such as
a ListBrokersRequest: another body fails"),
+ producerOut = @BodyType(value = Carrier.POJO,
+ description = "The response of the AWS SDK
for the operation, such as the"
+ + " ListBrokersResponse of
listBrokers, with the token of the next page in a"
+ + " header"))
public class MQ2Endpoint extends ScheduledPollEndpoint implements
EndpointServiceLocation {
private MqClient mqClient;
diff --git
a/components/camel-aws/camel-aws2-msk/src/generated/resources/META-INF/org/apache/camel/component/aws2/msk/aws2-msk.json
b/components/camel-aws/camel-aws2-msk/src/generated/resources/META-INF/org/apache/camel/component/aws2/msk/aws2-msk.json
index 42f2250df7fa..12ece07f27ef 100644
---
a/components/camel-aws/camel-aws2-msk/src/generated/resources/META-INF/org/apache/camel/component/aws2/msk/aws2-msk.json
+++
b/components/camel-aws/camel-aws2-msk/src/generated/resources/META-INF/org/apache/camel/component/aws2/msk/aws2-msk.json
@@ -60,6 +60,10 @@
"CamelAwsMSKIsTruncated": { "index": 9, "kind": "header", "displayName":
"", "group": "listClusters", "label": "listClusters", "required": false,
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Whether the response has more results
(is truncated).", "constantName":
"org.apache.camel.component.aws2.msk.MSK2Constants#IS_TRUNCATED" },
"CamelAwsMSKClusterState": { "index": 10, "kind": "header", "displayName":
"", "group": "createCluster describeCluster", "label": "createCluster
describeCluster", "required": false, "javaType": "String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "description": "The
state of the cluster.", "constantName":
"org.apache.camel.component.aws2.msk.MSK2Constants#CLUSTER_STATE" }
},
+ "bodyTypes": {
+ "producerIn": { "carriers": [ "any" ], "byOption": [ { "option":
"pojoRequest", "value": "true", "carriers": [ "pojo" ] } ], "description": "Not
used: the operations take their input from headers, such as the ARN of the
cluster in CamelAwsMSKClusterArn. With pojoRequest=true the request of the AWS
SDK for the operation, such as a ListClustersRequest: another body fails" },
+ "producerOut": { "carriers": [ "pojo" ], "description": "The response of
the AWS SDK for the operation, such as the ListClustersResponse of
listClusters, with the token of the next page in a header" }
+ },
"properties": {
"label": { "index": 0, "kind": "path", "displayName": "Label", "group":
"producer", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.aws2.msk.MSK2Configuration", "configurationField":
"configuration", "description": "Logical name" },
"operation": { "index": 1, "kind": "parameter", "displayName":
"Operation", "group": "producer", "label": "", "required": true, "type":
"enum", "javaType": "org.apache.camel.component.aws2.msk.MSK2Operations",
"enum": [ "listClusters", "createCluster", "deleteCluster", "describeCluster"
], "deprecated": false, "deprecationNote": "", "autowired": false, "secret":
false, "configurationClass":
"org.apache.camel.component.aws2.msk.MSK2Configuration", "configurationField":
"configuration" [...]
diff --git
a/components/camel-aws/camel-aws2-msk/src/main/java/org/apache/camel/component/aws2/msk/MSK2Endpoint.java
b/components/camel-aws/camel-aws2-msk/src/main/java/org/apache/camel/component/aws2/msk/MSK2Endpoint.java
index 2eaff93e3b84..686a15e16aee 100644
---
a/components/camel-aws/camel-aws2-msk/src/main/java/org/apache/camel/component/aws2/msk/MSK2Endpoint.java
+++
b/components/camel-aws/camel-aws2-msk/src/main/java/org/apache/camel/component/aws2/msk/MSK2Endpoint.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.aws2.msk.client.MSK2ClientFactory;
+import org.apache.camel.spi.BodyType;
+import org.apache.camel.spi.BodyType.Carrier;
+import org.apache.camel.spi.BodyTypes;
import org.apache.camel.spi.EndpointServiceLocation;
import org.apache.camel.spi.UriEndpoint;
import org.apache.camel.spi.UriParam;
@@ -35,6 +38,16 @@ import software.amazon.awssdk.services.kafka.KafkaClient;
@UriEndpoint(firstVersion = "3.1.0", scheme = "aws2-msk", title = "AWS Managed
Streaming for Apache Kafka (MSK)",
syntax = "aws2-msk:label", producerOnly = true, category = {
Category.CLOUD, Category.MANAGEMENT },
headersClass = MSK2Constants.class)
+@BodyTypes(producerIn = @BodyType(value = Carrier.ANY,
+ byOption = @BodyType.When(option =
"pojoRequest", value = "true", carriers = Carrier.POJO),
+ description = "Not used: the operations take
their input from headers, such as the ARN of the"
+ + " cluster in
CamelAwsMSKClusterArn. With pojoRequest=true the request of the"
+ + " AWS SDK for the operation,
such as a ListClustersRequest: another body"
+ + " fails"),
+ producerOut = @BodyType(value = Carrier.POJO,
+ description = "The response of the AWS SDK
for the operation, such as the"
+ + " ListClustersResponse of
listClusters, with the token of the next page in a"
+ + " header"))
public class MSK2Endpoint extends ScheduledPollEndpoint implements
EndpointServiceLocation {
private KafkaClient mskClient;
diff --git
a/components/camel-aws/camel-aws2-redshift/src/generated/resources/META-INF/org/apache/camel/component/aws2/redshift/data/aws2-redshift-data.json
b/components/camel-aws/camel-aws2-redshift/src/generated/resources/META-INF/org/apache/camel/component/aws2/redshift/data/aws2-redshift-data.json
index 7db6bb872123..7175a5841d2f 100644
---
a/components/camel-aws/camel-aws2-redshift/src/generated/resources/META-INF/org/apache/camel/component/aws2/redshift/data/aws2-redshift-data.json
+++
b/components/camel-aws/camel-aws2-redshift/src/generated/resources/META-INF/org/apache/camel/component/aws2/redshift/data/aws2-redshift-data.json
@@ -74,6 +74,10 @@
"CamelAwsRedshiftDataSqlParameterList": { "index": 23, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "List<SqlParameterList>", "deprecated": false, "deprecationNote":
"", "autowired": false, "secret": false, "description": "The parameters for the
SQL statement.", "constantName":
"org.apache.camel.component.aws2.redshift.data.RedshiftData2Constants#SQL_PARAMETER_LIST"
},
"CamelAwsRedshiftDataSqlStatementList": { "index": 24, "kind": "header",
"displayName": "", "group": "producer", "label": "", "required": false,
"javaType": "List", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The List of SQL statements text to
run.", "constantName":
"org.apache.camel.component.aws2.redshift.data.RedshiftData2Constants#SQL_STATEMENT_LIST"
}
},
+ "bodyTypes": {
+ "producerIn": { "carriers": [ "any" ], "byOption": [ { "option":
"pojoRequest", "value": "true", "carriers": [ "pojo" ] } ], "description": "Not
used: the operations take their input from headers, such as the SQL of
executeStatement in CamelAwsRedshiftDataSqlStatement; SQL in the body is not
run. With pojoRequest=true the request of the AWS SDK for the operation, such
as an ExecuteStatementRequest: another body fails" },
+ "producerOut": { "carriers": [ "pojo" ], "description": "The response of
the AWS SDK for the operation, such as the ExecuteStatementResponse of
executeStatement, which does not wait for the statement, or the
GetStatementResultResponse of getStatementResult with one page of records" }
+ },
"properties": {
"label": { "index": 0, "kind": "path", "displayName": "Label", "group":
"producer", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.aws2.redshift.data.RedshiftData2Configuration",
"configurationField": "configuration", "description": "Logical name" },
"operation": { "index": 1, "kind": "parameter", "displayName":
"Operation", "group": "producer", "label": "", "required": true, "type":
"enum", "javaType":
"org.apache.camel.component.aws2.redshift.data.RedshiftData2Operations",
"enum": [ "listDatabases", "listSchemas", "listStatements", "listTables",
"describeTable", "executeStatement", "batchExecuteStatement",
"cancelStatement", "describeStatement", "getStatementResult" ], "deprecated":
false, "deprecationNote": "", "autowired": fa [...]
diff --git
a/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2Endpoint.java
b/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2Endpoint.java
index 3ba18b0fc3aa..d1079c4bd61f 100644
---
a/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2Endpoint.java
+++
b/components/camel-aws/camel-aws2-redshift/src/main/java/org/apache/camel/component/aws2/redshift/data/RedshiftData2Endpoint.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.aws2.redshift.data.client.RedshiftData2ClientFactory;
+import org.apache.camel.spi.BodyType;
+import org.apache.camel.spi.BodyType.Carrier;
+import org.apache.camel.spi.BodyTypes;
import org.apache.camel.spi.EndpointServiceLocation;
import org.apache.camel.spi.UriEndpoint;
import org.apache.camel.spi.UriParam;
@@ -38,6 +41,17 @@ import
software.amazon.awssdk.services.redshiftdata.RedshiftDataClient;
Category.CLOUD, Category.SERVERLESS,
Category.DATABASE, Category.BIGDATA },
headersClass = RedshiftData2Constants.class)
+@BodyTypes(producerIn = @BodyType(value = Carrier.ANY,
+ byOption = @BodyType.When(option =
"pojoRequest", value = "true", carriers = Carrier.POJO),
+ description = "Not used: the operations take
their input from headers, such as the SQL of"
+ + " executeStatement in
CamelAwsRedshiftDataSqlStatement; SQL in the body is"
+ + " not run. With
pojoRequest=true the request of the AWS SDK for the"
+ + " operation, such as an
ExecuteStatementRequest: another body fails"),
+ producerOut = @BodyType(value = Carrier.POJO,
+ description = "The response of the AWS SDK
for the operation, such as the"
+ + " ExecuteStatementResponse
of executeStatement, which does not wait for the"
+ + " statement, or the
GetStatementResultResponse of getStatementResult with"
+ + " one page of records"))
public class RedshiftData2Endpoint extends DefaultEndpoint implements
EndpointServiceLocation {
private RedshiftDataClient awsRedshiftDataClient;
diff --git
a/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/org/apache/camel/component/aws2/s3vectors/aws2-s3-vectors.json
b/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/org/apache/camel/component/aws2/s3vectors/aws2-s3-vectors.json
index 58da8dc70451..bb56e4dada37 100644
---
a/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/org/apache/camel/component/aws2/s3vectors/aws2-s3-vectors.json
+++
b/components/camel-aws/camel-aws2-s3-vectors/src/generated/resources/META-INF/org/apache/camel/component/aws2/s3vectors/aws2-s3-vectors.json
@@ -77,6 +77,11 @@
"CamelAwsS3VectorsIndexStatus": { "index": 15, "kind": "header",
"displayName": "", "group": "consumer", "label": "consumer", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The status of the vector index",
"constantName":
"org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#INDEX_STATUS"
},
"CamelAwsS3VectorsVectorBucketArn": { "index": 16, "kind": "header",
"displayName": "", "group": "consumer", "label": "consumer", "required": false,
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "The ARN of the vector bucket",
"constantName":
"org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConstants#VECTOR_BUCKET_ARN"
}
},
+ "bodyTypes": {
+ "consumerOut": { "carriers": [ "pojo" ], "javaType":
"software.amazon.awssdk.services.s3vectors.model.QueryOutputVector",
"description": "One message per vector that the similarity search of
consumerQueryVector finds and that was not sent before, as a QueryOutputVector
of the AWS SDK with its key only, also in the CamelAwsS3VectorsVectorId header"
},
+ "producerIn": { "carriers": [ "any" ], "description": "The vector of
putVectors and queryVectors, unless the CamelAwsS3VectorsVectorData or
CamelAwsS3VectorsQueryVector header has it: one vector as a List of numbers, a
float[] or a double[]. Text such as a JSON array fails, so unmarshal it first.
The keys of getVectors and deleteVectors, unless the CamelAwsS3VectorsVectorId
header has them: a String, a String[] or a List of Strings. The other
operations do not use the body" },
+ "producerOut": { "carriers": [ "pojo" ], "byOption": [ { "option":
"operation", "value": "queryVectors", "carriers": [ "list" ], "javaType":
"java.util.List<software.amazon.awssdk.services.s3vectors.model.QueryOutputVector>"
}, { "option": "operation", "value": "getVectors", "carriers": [ "list" ],
"javaType":
"java.util.List<software.amazon.awssdk.services.s3vectors.model.GetOutputVector>"
}, { "option": "operation", "value": "listVectorBuckets", "carriers": [ "list"
], "javaType": [...]
+ },
"properties": {
"vectorBucketName": { "index": 0, "kind": "path", "displayName": "Vector
Bucket Name", "group": "common", "label": "", "required": true, "type":
"string", "javaType": "java.lang.String", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "description":
"Vector bucket name or ARN" },
"dataType": { "index": 1, "kind": "parameter", "displayName": "Data Type",
"group": "common", "label": "", "required": false, "type": "enum", "javaType":
"java.lang.String", "enum": [ "float32", "float16" ], "deprecated": false,
"autowired": false, "secret": false, "defaultValue": "float32",
"configurationClass":
"org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsConfiguration",
"configurationField": "configuration", "description": "The data type of the
vector. Options: float32, [...]
diff --git
a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsEndpoint.java
b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsEndpoint.java
index 23dea141b1fd..9075c038b513 100644
---
a/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsEndpoint.java
+++
b/components/camel-aws/camel-aws2-s3-vectors/src/main/java/org/apache/camel/component/aws2/s3vectors/AWS2S3VectorsEndpoint.java
@@ -24,6 +24,9 @@ import org.apache.camel.Consumer;
import org.apache.camel.Processor;
import org.apache.camel.Producer;
import
org.apache.camel.component.aws2.s3vectors.client.AWS2S3VectorsClientFactory;
+import org.apache.camel.spi.BodyType;
+import org.apache.camel.spi.BodyType.Carrier;
+import org.apache.camel.spi.BodyTypes;
import org.apache.camel.spi.EndpointServiceLocation;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.UriEndpoint;
@@ -41,6 +44,37 @@ import
software.amazon.awssdk.services.s3vectors.S3VectorsClient;
@UriEndpoint(firstVersion = "4.17.0", scheme = "aws2-s3-vectors", title = "AWS
S3 Vectors",
syntax = "aws2-s3-vectors://vectorBucketName", category = {
Category.CLOUD, Category.AI },
headersClass = AWS2S3VectorsConstants.class)
+@BodyTypes(consumerOut = @BodyType(value = Carrier.POJO,
+ javaType =
"software.amazon.awssdk.services.s3vectors.model.QueryOutputVector",
+ description = "One message per vector that
the similarity search of consumerQueryVector"
+ + " finds and that was not
sent before, as a QueryOutputVector of the AWS SDK"
+ + " with its key only, also
in the CamelAwsS3VectorsVectorId header"),
+ producerIn = @BodyType(value = Carrier.ANY,
+ description = "The vector of putVectors and
queryVectors, unless the"
+ + "
CamelAwsS3VectorsVectorData or CamelAwsS3VectorsQueryVector header has it:"
+ + " one vector as a List of
numbers, a float[] or a double[]. Text such as a"
+ + " JSON array fails, so
unmarshal it first. The keys of getVectors and"
+ + " deleteVectors, unless the
CamelAwsS3VectorsVectorId header has them: a"
+ + " String, a String[] or a
List of Strings. The other operations do not use"
+ + " the body"),
+ producerOut = @BodyType(value = Carrier.POJO,
+ byOption = {
+ @BodyType.When(option =
"operation", value = "queryVectors", carriers = Carrier.LIST,
+ javaType =
"java.util.List<software.amazon.awssdk.services.s3vectors.model.QueryOutputVector>"),
+ @BodyType.When(option =
"operation", value = "getVectors", carriers = Carrier.LIST,
+ javaType =
"java.util.List<software.amazon.awssdk.services.s3vectors.model.GetOutputVector>"),
+ @BodyType.When(option =
"operation", value = "listVectorBuckets",
+ carriers =
Carrier.LIST,
+ javaType =
"java.util.List<software.amazon.awssdk.services.s3vectors.model.VectorBucketSummary>"),
+ @BodyType.When(option =
"operation", value = "listVectorIndexes",
+ carriers =
Carrier.LIST,
+ javaType =
"java.util.List<software.amazon.awssdk.services.s3vectors.model.IndexSummary>")
},
+ description = "The response of the AWS SDK
for the operation, such as the PutVectorsResponse"
+ + " of putVectors, with the
key of the vector in the CamelAwsS3VectorsVectorId"
+ + " header. A List for
queryVectors, getVectors, listVectorBuckets and"
+ + " listVectorIndexes, the
last two the first page only. The vectors of"
+ + " queryVectors and
getVectors hold their keys only: the distance, the data"
+ + " and the metadata are not
asked for"))
public class AWS2S3VectorsEndpoint extends ScheduledPollEndpoint implements
EndpointServiceLocation {
private static final Logger LOG =
LoggerFactory.getLogger(AWS2S3VectorsEndpoint.class);
diff --git
a/components/camel-aws/camel-aws2-step-functions/src/generated/resources/META-INF/org/apache/camel/component/aws2/stepfunctions/aws2-step-functions.json
b/components/camel-aws/camel-aws2-step-functions/src/generated/resources/META-INF/org/apache/camel/component/aws2/stepfunctions/aws2-step-functions.json
index 41c36bc55272..f85eca311ff1 100644
---
a/components/camel-aws/camel-aws2-step-functions/src/generated/resources/META-INF/org/apache/camel/component/aws2/stepfunctions/aws2-step-functions.json
+++
b/components/camel-aws/camel-aws2-step-functions/src/generated/resources/META-INF/org/apache/camel/component/aws2/stepfunctions/aws2-step-functions.json
@@ -67,6 +67,10 @@
"CamelAwsStepFunctionsExecutionHistoryReverseOrder": { "index": 16,
"kind": "header", "displayName": "", "group": "producer", "label": "",
"required": false, "javaType": "Boolean", "deprecated": false,
"deprecationNote": "", "autowired": false, "secret": false, "description":
"Lists events in descending order of their timeStamp.", "constantName":
"org.apache.camel.component.aws2.stepfunctions.StepFunctions2Constants#EXECUTION_HISTORY_REVERSE_ORDER"
},
"CamelAwsStepFunctionsExecutionMaxResults": { "index": 17, "kind":
"header", "displayName": "", "group": "producer", "label": "", "required":
false, "javaType": "Integer", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "The limit number of
results while listing executions", "constantName":
"org.apache.camel.component.aws2.stepfunctions.StepFunctions2Constants#EXECUTIONS_MAX_RESULTS"
}
},
+ "bodyTypes": {
+ "producerIn": { "carriers": [ "any" ], "byOption": [ { "option":
"pojoRequest", "value": "true", "carriers": [ "pojo" ] } ], "description": "Not
used: the operations take their input from headers, such as the input of
startExecution and startSyncExecution in the
CamelAwsStepFunctionsExecutionInput header as JSON text: marshal a Map or a
POJO first. With pojoRequest=true the request of the AWS SDK for the operation,
such as a StartExecutionRequest: another body fails" },
+ "producerOut": { "carriers": [ "pojo" ], "description": "The response of
the AWS SDK for the operation, such as the StartExecutionResponse of
startExecution with the ARN of the execution. startSyncExecution gives a
StartSyncExecutionResponse whose output is the JSON that the execution returns,
as text: a failed execution does not fail the exchange, so check its status" }
+ },
"properties": {
"label": { "index": 0, "kind": "path", "displayName": "Label", "group":
"producer", "label": "", "required": true, "type": "string", "javaType":
"java.lang.String", "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "configurationClass":
"org.apache.camel.component.aws2.stepfunctions.StepFunctions2Configuration",
"configurationField": "configuration", "description": "Logical name" },
"operation": { "index": 1, "kind": "parameter", "displayName":
"Operation", "group": "producer", "label": "", "required": true, "type":
"enum", "javaType":
"org.apache.camel.component.aws2.stepfunctions.StepFunctions2Operations",
"enum": [ "createStateMachine", "deleteStateMachine", "updateStateMachine",
"describeStateMachine", "listStateMachines", "createActivity",
"deleteActivity", "describeActivity", "getActivityTask", "listActivities",
"startExecution", "startSyncExecution", "sto [...]
diff --git
a/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2Endpoint.java
b/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2Endpoint.java
index 03738f5b78e3..9e0d09d30890 100644
---
a/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2Endpoint.java
+++
b/components/camel-aws/camel-aws2-step-functions/src/main/java/org/apache/camel/component/aws2/stepfunctions/StepFunctions2Endpoint.java
@@ -18,6 +18,9 @@ package org.apache.camel.component.aws2.stepfunctions;
import org.apache.camel.*;
import
org.apache.camel.component.aws2.stepfunctions.client.StepFunctions2ClientFactory;
+import org.apache.camel.spi.BodyType;
+import org.apache.camel.spi.BodyType.Carrier;
+import org.apache.camel.spi.BodyTypes;
import org.apache.camel.spi.EndpointServiceLocation;
import org.apache.camel.spi.UriEndpoint;
import org.apache.camel.spi.UriParam;
@@ -32,6 +35,19 @@ import software.amazon.awssdk.services.sfn.SfnClient;
syntax = "aws2-step-functions:label",
producerOnly = true, category = { Category.CLOUD,
Category.SERVERLESS },
headersClass = StepFunctions2Constants.class)
+@BodyTypes(producerIn = @BodyType(value = Carrier.ANY,
+ byOption = @BodyType.When(option =
"pojoRequest", value = "true", carriers = Carrier.POJO),
+ description = "Not used: the operations take
their input from headers, such as the input of"
+ + " startExecution and
startSyncExecution in the"
+ + "
CamelAwsStepFunctionsExecutionInput header as JSON text: marshal a Map or a"
+ + " POJO first. With
pojoRequest=true the request of the AWS SDK for the"
+ + " operation, such as a
StartExecutionRequest: another body fails"),
+ producerOut = @BodyType(value = Carrier.POJO,
+ description = "The response of the AWS SDK
for the operation, such as the"
+ + " StartExecutionResponse of
startExecution with the ARN of the execution."
+ + " startSyncExecution gives
a StartSyncExecutionResponse whose output is the"
+ + " JSON that the execution
returns, as text: a failed execution does not fail"
+ + " the exchange, so check
its status"))
public class StepFunctions2Endpoint extends DefaultEndpoint implements
EndpointServiceLocation {
private SfnClient awsSfnClient;
diff --git
a/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/test/java/org/apache/camel/dsl/yaml/validator/TextBodyFlowTest.java
b/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/test/java/org/apache/camel/dsl/yaml/validator/TextBodyFlowTest.java
index 4fed1d1142d2..4a41b41e1d63 100644
---
a/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/test/java/org/apache/camel/dsl/yaml/validator/TextBodyFlowTest.java
+++
b/dsl/camel-yaml-dsl/camel-yaml-dsl-validator/src/test/java/org/apache/camel/dsl/yaml/validator/TextBodyFlowTest.java
@@ -2018,6 +2018,68 @@ public class TextBodyFlowTest {
.anySatisfy(m -> assertThat(m).contains("route trail: simple
reads a field of the body (${body[eventName]})"));
}
+ @Test
+ public void testTheBodyOfAwsDataAndAdminServices() {
+ // the SQL of startQueryExecution of aws2-athena is text, so a Map is
sent as its toString(), and queryVectors
+ // of aws2-s3-vectors gives a List of the vectors found, not text.
ecs, eks, mq, msk, config, security-hub,
+ // step-functions and redshift-data take their input from headers, the
vector of putVectors can be in a header,
+ // and athena without an operation is not known, as the component may
set it
+ String yaml = """
+ - route:
+ id: query
+ from:
+ uri: timer:tick
+ steps:
+ - setBody:
+ constant: '{"sql": "SELECT 1"}'
+ - unmarshal:
+ json: {}
+ - to:
aws2-athena:a?operation=startQueryExecution&outputLocation=s3://bucket/path/
+ - route:
+ id: similar
+ from:
+ uri: timer:tick
+ steps:
+ - setBody:
+ constant: '[0.1, 0.2, 0.3]'
+ - unmarshal:
+ json: {}
+ - to:
aws2-s3-vectors:v?operation=queryVectors&vectorIndexName=i
+ - to:
aws2-translate:t?sourceLanguage=en&targetLanguage=de
+ - route:
+ id: admin
+ from:
+ uri: timer:tick
+ steps:
+ - setBody:
+ constant: '{"id": 1}'
+ - unmarshal:
+ json: {}
+ - to: aws2-ecs:e?operation=listClusters
+ - to: aws2-eks:k?operation=listClusters
+ - to: aws2-mq:m?operation=listBrokers
+ - to: aws2-msk:k?operation=listClusters
+ - to: aws-config:c?operation=describeRuleCompliance
+ - to: aws-security-hub:s?operation=getFindings
+ - to: aws2-step-functions:f?operation=startExecution
+ - to: aws2-redshift-data:r?operation=executeStatement
+ - route:
+ id: vectors
+ from:
+ uri: timer:tick
+ steps:
+ - setBody:
+ constant: '{"id": 1}'
+ - unmarshal:
+ json: {}
+ - to:
aws2-s3-vectors:v?operation=putVectors&vectorIndexName=i
+ - to: aws2-athena:a?outputLocation=s3://bucket/path/
+ """;
+ assertThat(lines(yaml)).hasSize(2)
+ .anySatisfy(m -> assertThat(m).contains("route query: to:
aws2-athena needs the body as text"))
+ .anySatisfy(m -> assertThat(m).contains("route similar: to:
aws2-translate needs the body as text"));
+ }
+
@Test
public void testAnOptionValueInAnotherStyleOfTheEnum() {
// the catalog and the enum type converter take convert-to-json and
convertToJson as CONVERT_TO_JSON, so after