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 3662cab1970f CAMEL-24280: camel-aws2-mq - throw when pojoRequest=true 
and the body is the wrong type (#25184)
3662cab1970f is described below

commit 3662cab1970fa88c9390810eae9d0cc82a37125b
Author: Andrea Cosentino <[email protected]>
AuthorDate: Tue Jul 28 14:27:23 2026 +0200

    CAMEL-24280: camel-aws2-mq - throw when pojoRequest=true and the body is 
the wrong type (#25184)
    
    Child of CAMEL-24261. MQ2Producer's listBrokers, createBroker, deleteBroker,
    rebootBroker, updateBroker and describeBroker 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.
    
    Six 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/mq/MQ2Producer.java       | 18 ++++++++
 .../camel/component/aws2/mq/MQProducerTest.java    | 52 ++++++++++++++++++++++
 2 files changed, 70 insertions(+)

diff --git 
a/components/camel-aws/camel-aws2-mq/src/main/java/org/apache/camel/component/aws2/mq/MQ2Producer.java
 
b/components/camel-aws/camel-aws2-mq/src/main/java/org/apache/camel/component/aws2/mq/MQ2Producer.java
index 539616e6f77b..6cf8be3f5689 100644
--- 
a/components/camel-aws/camel-aws2-mq/src/main/java/org/apache/camel/component/aws2/mq/MQ2Producer.java
+++ 
b/components/camel-aws/camel-aws2-mq/src/main/java/org/apache/camel/component/aws2/mq/MQ2Producer.java
@@ -133,6 +133,9 @@ public class MQ2Producer extends DefaultProducer {
                 message.setBody(result);
                 message.setHeader(MQ2Constants.NEXT_TOKEN, result.nextToken());
                 message.setHeader(MQ2Constants.IS_TRUNCATED, 
ObjectHelper.isNotEmpty(result.nextToken()));
+            } else {
+                throw new IllegalArgumentException(
+                        "listBrokers operation requires ListBrokersRequest in 
POJO mode");
             }
         } else {
             ListBrokersRequest.Builder builder = ListBrokersRequest.builder();
@@ -179,6 +182,9 @@ public class MQ2Producer extends DefaultProducer {
                 }
                 Message message = getMessageForResponse(exchange);
                 message.setBody(result);
+            } else {
+                throw new IllegalArgumentException(
+                        "createBroker operation requires CreateBrokerRequest 
in POJO mode");
             }
         } else {
             CreateBrokerRequest.Builder builder = 
CreateBrokerRequest.builder();
@@ -252,6 +258,9 @@ public class MQ2Producer extends DefaultProducer {
                 }
                 Message message = getMessageForResponse(exchange);
                 message.setBody(result);
+            } else {
+                throw new IllegalArgumentException(
+                        "deleteBroker operation requires DeleteBrokerRequest 
in POJO mode");
             }
         } else {
             DeleteBrokerRequest.Builder builder = 
DeleteBrokerRequest.builder();
@@ -287,6 +296,9 @@ public class MQ2Producer extends DefaultProducer {
                 }
                 Message message = getMessageForResponse(exchange);
                 message.setBody(result);
+            } else {
+                throw new IllegalArgumentException(
+                        "rebootBroker operation requires RebootBrokerRequest 
in POJO mode");
             }
         } else {
             RebootBrokerRequest.Builder builder = 
RebootBrokerRequest.builder();
@@ -323,6 +335,9 @@ public class MQ2Producer extends DefaultProducer {
                 }
                 Message message = getMessageForResponse(exchange);
                 message.setBody(result);
+            } else {
+                throw new IllegalArgumentException(
+                        "updateBroker operation requires UpdateBrokerRequest 
in POJO mode");
             }
         } else {
             UpdateBrokerRequest.Builder builder = 
UpdateBrokerRequest.builder();
@@ -364,6 +379,9 @@ public class MQ2Producer extends DefaultProducer {
                 }
                 Message message = getMessageForResponse(exchange);
                 message.setBody(result);
+            } else {
+                throw new IllegalArgumentException(
+                        "describeBroker operation requires 
DescribeBrokerRequest in POJO mode");
             }
         } else {
             DescribeBrokerRequest.Builder builder = 
DescribeBrokerRequest.builder();
diff --git 
a/components/camel-aws/camel-aws2-mq/src/test/java/org/apache/camel/component/aws2/mq/MQProducerTest.java
 
b/components/camel-aws/camel-aws2-mq/src/test/java/org/apache/camel/component/aws2/mq/MQProducerTest.java
index 35bc41f86f5b..6b7ac15d9be5 100644
--- 
a/components/camel-aws/camel-aws2-mq/src/test/java/org/apache/camel/component/aws2/mq/MQProducerTest.java
+++ 
b/components/camel-aws/camel-aws2-mq/src/test/java/org/apache/camel/component/aws2/mq/MQProducerTest.java
@@ -210,6 +210,48 @@ public class MQProducerTest extends CamelTestSupport {
         assertEquals("1", resultGet.brokerId());
     }
 
+    @Test
+    void listBrokersWithPojoRequestAndWrongBodyTypeThrows() {
+        assertThatThrownBy(() -> 
template.requestBody("direct:listBrokersPojo", "not a ListBrokersRequest"))
+                .hasRootCauseInstanceOf(IllegalArgumentException.class)
+                .hasRootCauseMessage("listBrokers operation requires 
ListBrokersRequest in POJO mode");
+    }
+
+    @Test
+    void createBrokerWithPojoRequestAndWrongBodyTypeThrows() {
+        assertThatThrownBy(() -> 
template.requestBody("direct:createBrokerPojo", "not a CreateBrokerRequest"))
+                .hasRootCauseInstanceOf(IllegalArgumentException.class)
+                .hasRootCauseMessage("createBroker operation requires 
CreateBrokerRequest in POJO mode");
+    }
+
+    @Test
+    void deleteBrokerWithPojoRequestAndWrongBodyTypeThrows() {
+        assertThatThrownBy(() -> 
template.requestBody("direct:deleteBrokerPojo", "not a DeleteBrokerRequest"))
+                .hasRootCauseInstanceOf(IllegalArgumentException.class)
+                .hasRootCauseMessage("deleteBroker operation requires 
DeleteBrokerRequest in POJO mode");
+    }
+
+    @Test
+    void rebootBrokerWithPojoRequestAndWrongBodyTypeThrows() {
+        assertThatThrownBy(() -> 
template.requestBody("direct:rebootBrokerPojo", "not a RebootBrokerRequest"))
+                .hasRootCauseInstanceOf(IllegalArgumentException.class)
+                .hasRootCauseMessage("rebootBroker operation requires 
RebootBrokerRequest in POJO mode");
+    }
+
+    @Test
+    void updateBrokerWithPojoRequestAndWrongBodyTypeThrows() {
+        assertThatThrownBy(() -> 
template.requestBody("direct:updateBrokerPojo", "not an UpdateBrokerRequest"))
+                .hasRootCauseInstanceOf(IllegalArgumentException.class)
+                .hasRootCauseMessage("updateBroker operation requires 
UpdateBrokerRequest in POJO mode");
+    }
+
+    @Test
+    void describeBrokerWithPojoRequestAndWrongBodyTypeThrows() {
+        assertThatThrownBy(() -> 
template.requestBody("direct:describeBrokerPojo", "not a 
DescribeBrokerRequest"))
+                .hasRootCauseInstanceOf(IllegalArgumentException.class)
+                .hasRootCauseMessage("describeBroker operation requires 
DescribeBrokerRequest in POJO mode");
+    }
+
     @Override
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
@@ -230,6 +272,16 @@ public class MQProducerTest extends CamelTestSupport {
                         .to("mock:result");
                 
from("direct:describeBroker").to("aws2-mq://test?amazonMqClient=#amazonMqClient&operation=describeBroker")
                         .to("mock:result");
+                from("direct:createBrokerPojo")
+                        
.to("aws2-mq://test?amazonMqClient=#amazonMqClient&operation=createBroker&pojoRequest=true");
+                from("direct:deleteBrokerPojo")
+                        
.to("aws2-mq://test?amazonMqClient=#amazonMqClient&operation=deleteBroker&pojoRequest=true");
+                from("direct:rebootBrokerPojo")
+                        
.to("aws2-mq://test?amazonMqClient=#amazonMqClient&operation=rebootBroker&pojoRequest=true");
+                from("direct:updateBrokerPojo")
+                        
.to("aws2-mq://test?amazonMqClient=#amazonMqClient&operation=updateBroker&pojoRequest=true");
+                from("direct:describeBrokerPojo")
+                        
.to("aws2-mq://test?amazonMqClient=#amazonMqClient&operation=describeBroker&pojoRequest=true");
             }
         };
     }

Reply via email to