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");
             }
         };
     }

Reply via email to