This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch camel-3.0.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit dfef008777d5917d9dd98dc52cfe269e9eefa333
Author: James Netherton <[email protected]>
AuthorDate: Mon Jan 13 09:09:58 2020 +0000

    CAMEL-14390: Ensure websocket-jsr356 producer invokes AsyncCallback.done
---
 .../org/apache/camel/websocket/jsr356/JSR356Producer.java     | 11 ++++++-----
 .../org/apache/camel/websocket/jsr356/JSR356ProducerTest.java |  2 --
 2 files changed, 6 insertions(+), 7 deletions(-)

diff --git 
a/components/camel-websocket-jsr356/src/main/java/org/apache/camel/websocket/jsr356/JSR356Producer.java
 
b/components/camel-websocket-jsr356/src/main/java/org/apache/camel/websocket/jsr356/JSR356Producer.java
index 566c3f3..1a8b1d0 100644
--- 
a/components/camel-websocket-jsr356/src/main/java/org/apache/camel/websocket/jsr356/JSR356Producer.java
+++ 
b/components/camel-websocket-jsr356/src/main/java/org/apache/camel/websocket/jsr356/JSR356Producer.java
@@ -49,7 +49,7 @@ public class JSR356Producer extends DefaultAsyncProducer {
         final Session session = 
exchange.getIn().getHeader(JSR356Constants.SESSION, Session.class);
         if (session != null && 
exchange.getIn().getHeader(JSR356Constants.USE_INCOMING_SESSION, false, 
Boolean.class)) {
             synchronized (session) {
-                doSend(exchange, session);
+                doSend(exchange, callback, session);
             }
         } else {
             onExchange.accept(exchange, callback);
@@ -68,14 +68,15 @@ public class JSR356Producer extends DefaultAsyncProducer {
         final ClientEndpointConfig.Builder clientConfig = 
ClientEndpointConfig.Builder.create();
         manager = new ClientSessions(sessionCount, URI.create(endpointKey), 
clientConfig.build(), null);
         manager.prepare();
-        onExchange = (ex, cb) -> manager.execute(session -> doSend(ex, 
session));
+        onExchange = (exchange, callback) -> manager.execute(session -> 
doSend(exchange, callback, session));
     }
 
-    private void doSend(final Exchange ex, final Session session) {
+    private void doSend(final Exchange exchange, final AsyncCallback callback, 
final Session session) {
         try {
-            JSR356WebSocketComponent.sendMessage(session, 
ex.getIn().getBody());
+            JSR356WebSocketComponent.sendMessage(session, 
exchange.getIn().getBody());
+            callback.done(true);
         } catch (final IOException e) {
-            ex.setException(e);
+            exchange.setException(e);
         }
     }
 
diff --git 
a/components/camel-websocket-jsr356/src/test/java/org/apache/camel/websocket/jsr356/JSR356ProducerTest.java
 
b/components/camel-websocket-jsr356/src/test/java/org/apache/camel/websocket/jsr356/JSR356ProducerTest.java
index 8c2769a..aebcbfd 100644
--- 
a/components/camel-websocket-jsr356/src/test/java/org/apache/camel/websocket/jsr356/JSR356ProducerTest.java
+++ 
b/components/camel-websocket-jsr356/src/test/java/org/apache/camel/websocket/jsr356/JSR356ProducerTest.java
@@ -32,7 +32,6 @@ import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.junit4.CamelTestSupport;
 import org.apache.meecrowave.Meecrowave;
 import org.apache.meecrowave.junit.MeecrowaveRule;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TestName;
@@ -54,7 +53,6 @@ public class JSR356ProducerTest extends CamelTestSupport {
     @Produce("direct:ensureServerModeSendsProperly")
     private ProducerTemplate serverProducer;
 
-    @Ignore
     @Test
     public void ensureServerModeSendsProperly() throws Exception {
         final String body = getClass().getName() + "#" + 
testName.getMethodName();

Reply via email to