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 b8fc2d58df8f CAMEL-23627: Fix response error check in SlackProducer
b8fc2d58df8f is described below

commit b8fc2d58df8fa0cdfed8623f8b08dfaa0be84712
Author: Xadhoodin <[email protected]>
AuthorDate: Wed May 27 20:45:33 2026 +0200

    CAMEL-23627: Fix response error check in SlackProducer
    
    Move the Slack API error response check inside the try block so the 
exception is set
    on the exchange before callback.done(true) fires. Previously the check 
happened after
    the callback, causing onException policies to miss the error. Also fix both 
methods
    to return true since SlackProducer is fully synchronous.
    
    Closes #23567
---
 .../apache/camel/component/slack/SlackProducer.java  | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git 
a/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackProducer.java
 
b/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackProducer.java
index 1768f82bb2f7..30112e14f614 100644
--- 
a/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackProducer.java
+++ 
b/components/camel-slack/src/main/java/org/apache/camel/component/slack/SlackProducer.java
@@ -84,6 +84,10 @@ public class SlackProducer extends DefaultAsyncProducer {
                 slackMessage.setText(exchange.getIn().getBody(String.class));
                 response = sendLegacySlackMessage(slackMessage);
             }
+            if (!response.isOk()) {
+                exchange.setException(
+                        new CamelExchangeException("Error POSTing to Slack 
API: " + response, exchange));
+            }
         } catch (Exception e) {
             exchange.setException(e);
             return true;
@@ -91,11 +95,7 @@ public class SlackProducer extends DefaultAsyncProducer {
             callback.done(true);
         }
 
-        if (!response.isOk()) {
-            exchange.setException(new CamelExchangeException("Error POSTing to 
Slack API: " + response.toString(), exchange));
-        }
-
-        return false;
+        return true;
     }
 
     private ChatPostMessageResponse sendLegacySlackMessage(SlackMessage 
slackMessage) throws IOException, SlackApiException {
@@ -134,6 +134,10 @@ public class SlackProducer extends DefaultAsyncProducer {
         WebhookResponse response;
         try {
             response = slack.send(slackEndpoint.getWebhookUrl(), json);
+            if (response.getCode() < 200 || response.getCode() > 299) {
+                exchange.setException(
+                        new CamelExchangeException("Error POSTing to Slack 
API: " + response, exchange));
+            }
         } catch (IOException e) {
             exchange.setException(e);
             return true;
@@ -141,11 +145,7 @@ public class SlackProducer extends DefaultAsyncProducer {
             callback.done(true);
         }
 
-        if (response.getCode() < 200 || response.getCode() > 299) {
-            exchange.setException(new CamelExchangeException("Error POSTing to 
Slack API: " + response.toString(), exchange));
-        }
-
-        return false;
+        return true;
     }
 
     private Message addEndPointOptions(Message slackMessage) {

Reply via email to