From 837f27851fa1074292ebb85cc6f01953ef8a2f56 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Fri, 4 Jul 2014 16:09:06 +0200 Subject: [PATCH] Jms2MessageProducerInvocationHandler specifically delegates all CompletionListener-based send methods Issue: SPR-11950 (cherry picked from commit b6a7957) --- .../jms/connection/CachedMessageProducer.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/spring-jms/src/main/java/org/springframework/jms/connection/CachedMessageProducer.java b/spring-jms/src/main/java/org/springframework/jms/connection/CachedMessageProducer.java index 63ebe126212..6d234c2a8a4 100644 --- a/spring-jms/src/main/java/org/springframework/jms/connection/CachedMessageProducer.java +++ b/spring-jms/src/main/java/org/springframework/jms/connection/CachedMessageProducer.java @@ -275,13 +275,17 @@ class CachedMessageProducer implements MessageProducer, QueueSender, TopicPublis try { if (method.getName().equals("send") && args != null && completionListenerClass.equals(method.getParameterTypes()[args.length - 1])) { - if (args.length == 2) { - return sendWithCompletionListenerMethod.invoke( - target, args[0], deliveryMode, priority, timeToLive, args[1]); - } - else if (args.length == 3) { - return sendWithDestinationAndCompletionListenerMethod.invoke( - target, args[0], args[1], deliveryMode, priority, timeToLive, args[2]); + switch (args.length) { + case 2: // send(message, completionListener) + return sendWithCompletionListenerMethod.invoke( + target, args[0], deliveryMode, priority, timeToLive, args[1]); + case 3: // send(destination, message, completionListener) + return sendWithDestinationAndCompletionListenerMethod.invoke( + target, args[0], args[1], deliveryMode, priority, timeToLive, args[2]); + case 5: // send(message, deliveryMode, priority, timeToLive, completionListener) + return sendWithCompletionListenerMethod.invoke(target, args); + case 6: // send(destination, message, deliveryMode, priority, timeToLive, completionListener) + return sendWithDestinationAndCompletionListenerMethod.invoke(target, args); } } return method.invoke(CachedMessageProducer.this, args);