This is an automated email from the ASF dual-hosted git repository.
oscerd 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 991d8d972405 CAMEL-24277: camel-aws2-msk - throw when pojoRequest=true
and the body is the wrong type (#25170)
991d8d972405 is described below
commit 991d8d97240592576144d24cad268b443ecee80e
Author: Andrea Cosentino <[email protected]>
AuthorDate: Tue Jul 28 09:17:12 2026 +0200
CAMEL-24277: camel-aws2-msk - throw when pojoRequest=true and the body is
the wrong type (#25170)
Child of CAMEL-24261. MSK2Producer's listClusters, createCluster,
deleteCluster
and describeCluster branches only acted when the body was the matching
request
type under pojoRequest=true; any other body silently fell through with no
AWS
call and no error. Add the missing else that throws IllegalArgumentException
naming the required type, consistent with CAMEL-23462.
Tests send a wrong-typed body to pojoRequest=true routes and assert the
message;
each was verified to fail (silent no-op) before the fix. The shared 4.22
upgrade-guide entry was added with CAMEL-24263.
Signed-off-by: Andrea Cosentino <[email protected]>
Co-authored-by: Claude Opus 4.8 <[email protected]>
---
.../camel/component/aws2/msk/MSK2Producer.java | 12 ++++++++
.../camel/component/aws2/msk/MSKProducerTest.java | 34 ++++++++++++++++++++++
2 files changed, 46 insertions(+)
diff --git
a/components/camel-aws/camel-aws2-msk/src/main/java/org/apache/camel/component/aws2/msk/MSK2Producer.java
b/components/camel-aws/camel-aws2-msk/src/main/java/org/apache/camel/component/aws2/msk/MSK2Producer.java
index c100cbe5184d..4d87c38854c8 100644
---
a/components/camel-aws/camel-aws2-msk/src/main/java/org/apache/camel/component/aws2/msk/MSK2Producer.java
+++
b/components/camel-aws/camel-aws2-msk/src/main/java/org/apache/camel/component/aws2/msk/MSK2Producer.java
@@ -115,6 +115,9 @@ public class MSK2Producer extends DefaultProducer {
message.setBody(result);
message.setHeader(MSK2Constants.NEXT_TOKEN,
result.nextToken());
message.setHeader(MSK2Constants.IS_TRUNCATED,
ObjectHelper.isNotEmpty(result.nextToken()));
+ } else {
+ throw new IllegalArgumentException(
+ "listClusters operation requires ListClustersRequest
in POJO mode");
}
} else {
ListClustersRequest.Builder builder =
ListClustersRequest.builder();
@@ -157,6 +160,9 @@ public class MSK2Producer extends DefaultProducer {
}
Message message = getMessageForResponse(exchange);
message.setBody(response);
+ } else {
+ throw new IllegalArgumentException(
+ "createCluster operation requires CreateClusterRequest
in POJO mode");
}
} else {
CreateClusterRequest.Builder builder =
CreateClusterRequest.builder();
@@ -212,6 +218,9 @@ public class MSK2Producer extends DefaultProducer {
}
Message message = getMessageForResponse(exchange);
message.setBody(result);
+ } else {
+ throw new IllegalArgumentException(
+ "deleteCluster operation requires DeleteClusterRequest
in POJO mode");
}
} else {
DeleteClusterRequest.Builder builder =
DeleteClusterRequest.builder();
@@ -246,6 +255,9 @@ public class MSK2Producer extends DefaultProducer {
}
Message message = getMessageForResponse(exchange);
message.setBody(result);
+ } else {
+ throw new IllegalArgumentException(
+ "describeCluster operation requires
DescribeClusterRequest in POJO mode");
}
} else {
DescribeClusterRequest.Builder builder =
DescribeClusterRequest.builder();
diff --git
a/components/camel-aws/camel-aws2-msk/src/test/java/org/apache/camel/component/aws2/msk/MSKProducerTest.java
b/components/camel-aws/camel-aws2-msk/src/test/java/org/apache/camel/component/aws2/msk/MSKProducerTest.java
index 7c1e1b1b437f..676a16f9fa61 100644
---
a/components/camel-aws/camel-aws2-msk/src/test/java/org/apache/camel/component/aws2/msk/MSKProducerTest.java
+++
b/components/camel-aws/camel-aws2-msk/src/test/java/org/apache/camel/component/aws2/msk/MSKProducerTest.java
@@ -149,6 +149,34 @@ public class MSKProducerTest extends CamelTestSupport {
assertEquals(ClusterState.ACTIVE.name(),
resultGet.clusterInfo().state().toString());
}
+ @Test
+ void listClustersWithPojoRequestAndWrongBodyTypeThrows() {
+ assertThatThrownBy(() ->
template.requestBody("direct:listClustersPojo", "not a ListClustersRequest"))
+ .hasRootCauseInstanceOf(IllegalArgumentException.class)
+ .hasRootCauseMessage("listClusters operation requires
ListClustersRequest in POJO mode");
+ }
+
+ @Test
+ void createClusterWithPojoRequestAndWrongBodyTypeThrows() {
+ assertThatThrownBy(() ->
template.requestBody("direct:createClusterPojo", "not a CreateClusterRequest"))
+ .hasRootCauseInstanceOf(IllegalArgumentException.class)
+ .hasRootCauseMessage("createCluster operation requires
CreateClusterRequest in POJO mode");
+ }
+
+ @Test
+ void deleteClusterWithPojoRequestAndWrongBodyTypeThrows() {
+ assertThatThrownBy(() ->
template.requestBody("direct:deleteClusterPojo", "not a DeleteClusterRequest"))
+ .hasRootCauseInstanceOf(IllegalArgumentException.class)
+ .hasRootCauseMessage("deleteCluster operation requires
DeleteClusterRequest in POJO mode");
+ }
+
+ @Test
+ void describeClusterWithPojoRequestAndWrongBodyTypeThrows() {
+ assertThatThrownBy(() ->
template.requestBody("direct:describeClusterPojo", "not a
DescribeClusterRequest"))
+ .hasRootCauseInstanceOf(IllegalArgumentException.class)
+ .hasRootCauseMessage("describeCluster operation requires
DescribeClusterRequest in POJO mode");
+ }
+
@Override
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
@@ -165,6 +193,12 @@ public class MSKProducerTest extends CamelTestSupport {
.to("mock:result");
from("direct:describeCluster").to("aws2-msk://test?mskClient=#amazonMskClient&operation=describeCluster")
.to("mock:result");
+ from("direct:createClusterPojo")
+
.to("aws2-msk://test?mskClient=#amazonMskClient&operation=createCluster&pojoRequest=true");
+ from("direct:deleteClusterPojo")
+
.to("aws2-msk://test?mskClient=#amazonMskClient&operation=deleteCluster&pojoRequest=true");
+ from("direct:describeClusterPojo")
+
.to("aws2-msk://test?mskClient=#amazonMskClient&operation=describeCluster&pojoRequest=true");
}
};
}