Repository: camel
Updated Branches:
  refs/heads/camel-2.13.x 1e7118362 -> 415604c05
  refs/heads/camel-2.14.x abaaa9e3e -> 9fae35f4b


CAMEL-8204 Added the putIfAbsent method to avoid overriding the old key value 
as Claus suggested


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/9fae35f4
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/9fae35f4
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/9fae35f4

Branch: refs/heads/camel-2.14.x
Commit: 9fae35f4b812f3fb7fe7bc1063630205d3cc1cf9
Parents: abaaa9e
Author: Claus Ibsen <davscl...@apache.org>
Authored: Sun Jan 11 14:04:24 2015 +0100
Committer: Willem Jiang <willem.ji...@gmail.com>
Committed: Mon Jan 12 10:17:47 2015 +0800

----------------------------------------------------------------------
 .../jms/reply/CorrelationTimeoutMap.java        | 25 ++++++++++++++++++++
 .../jms/reply/ReplyManagerSupport.java          |  6 ++---
 2 files changed, 28 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/9fae35f4/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/CorrelationTimeoutMap.java
----------------------------------------------------------------------
diff --git 
a/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/CorrelationTimeoutMap.java
 
b/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/CorrelationTimeoutMap.java
index d72c8d0..e0e6731 100644
--- 
a/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/CorrelationTimeoutMap.java
+++ 
b/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/CorrelationTimeoutMap.java
@@ -91,6 +91,31 @@ public class CorrelationTimeoutMap extends 
DefaultTimeoutMap<String, ReplyHandle
     }
 
     @Override
+    public ReplyHandler putIfAbsent(String key, ReplyHandler value, long 
timeoutMillis) {
+        try {
+            if (listener != null) {
+                listener.onPut(key);
+            }
+        } catch (Throwable e) {
+            // ignore
+        }
+
+        ReplyHandler result;
+        if (timeoutMillis <= 0) {
+            // no timeout (must use Integer.MAX_VALUE)
+            result = super.putIfAbsent(key, value, Integer.MAX_VALUE);
+        } else {
+            result = super.putIfAbsent(key, value, timeoutMillis);
+        }
+        if (result == null) {
+            log.trace("Added correlationID: {} to timeout after: {} millis", 
key, timeoutMillis);
+        } else {
+            log.trace("Duplicate correlationID: {} detected", key);
+        }
+        return result;
+    }
+
+    @Override
     public ReplyHandler remove(String key) {
         try {
             if (listener != null) {

http://git-wip-us.apache.org/repos/asf/camel/blob/9fae35f4/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyManagerSupport.java
----------------------------------------------------------------------
diff --git 
a/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyManagerSupport.java
 
b/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyManagerSupport.java
index 30e5919..83a7729 100644
--- 
a/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyManagerSupport.java
+++ 
b/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/ReplyManagerSupport.java
@@ -142,13 +142,13 @@ public abstract class ReplyManagerSupport extends 
ServiceSupport implements Repl
                 if (timeout) {
                     // timeout occurred do a WARN log so its easier to spot in 
the logs
                     if (log.isWarnEnabled()) {
-                        log.warn("Timeout occurred after {} millis waiting for 
reply message with correlationID [{}]."
+                        log.warn("Timeout occurred after {} millis waiting for 
reply message with correlationID [{}] on destination {}."
                                 + " Setting ExchangeTimedOutException on {} 
and continue routing.",
-                                new Object[]{holder.getRequestTimeout(), 
holder.getCorrelationId(), ExchangeHelper.logIds(exchange)});
+                                new Object[]{holder.getRequestTimeout(), 
holder.getCorrelationId(), replyTo, ExchangeHelper.logIds(exchange)});
                     }
 
                     // no response, so lets set a timed out exception
-                    String msg = "reply message with correlationID: " + 
holder.getCorrelationId() + " not received";
+                    String msg = "reply message with correlationID: " + 
holder.getCorrelationId() + " not received on destination: " + replyTo;
                     exchange.setException(new 
ExchangeTimedOutException(exchange, holder.getRequestTimeout(), msg));
                 } else {
                     JmsMessage response = new JmsMessage(message, 
endpoint.getBinding());

Reply via email to