Repository: camel Updated Branches: refs/heads/camel-2.13.x 57d8a765a -> 655ac47ff refs/heads/camel-2.14.x cc5fbbb77 -> a53781c80
CAMEL-8204 Polish the code 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/a53781c8 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/a53781c8 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/a53781c8 Branch: refs/heads/camel-2.14.x Commit: a53781c807fb848a1482599e459250d3b17146db Parents: cc5fbbb Author: Willem Jiang <[email protected]> Authored: Mon Jan 5 10:02:01 2015 +0800 Committer: Willem Jiang <[email protected]> Committed: Mon Jan 5 10:20:08 2015 +0800 ---------------------------------------------------------------------- camel-core/src/main/java/org/apache/camel/TimeoutMap.java | 4 +++- .../java/org/apache/camel/support/DefaultTimeoutMap.java | 5 +++-- .../camel/component/jms/reply/CorrelationTimeoutMap.java | 8 +++++--- .../apache/camel/component/jms/reply/QueueReplyManager.java | 6 +++--- .../component/jms/reply/TemporaryQueueReplyManager.java | 4 ++-- 5 files changed, 16 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/a53781c8/camel-core/src/main/java/org/apache/camel/TimeoutMap.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/TimeoutMap.java b/camel-core/src/main/java/org/apache/camel/TimeoutMap.java index e76ed37..ef5bda3 100644 --- a/camel-core/src/main/java/org/apache/camel/TimeoutMap.java +++ b/camel-core/src/main/java/org/apache/camel/TimeoutMap.java @@ -52,8 +52,10 @@ public interface TimeoutMap<K, V> extends Runnable { * @param key the key * @param value the value * @param timeoutMillis timeout in millis + * @return the previous value associated with <tt>key</tt>, or + * <tt>null</tt> if there was no mapping for <tt>key</tt>. */ - void put(K key, V value, long timeoutMillis); + V put(K key, V value, long timeoutMillis); /** * Callback when the value has been evicted http://git-wip-us.apache.org/repos/asf/camel/blob/a53781c8/camel-core/src/main/java/org/apache/camel/support/DefaultTimeoutMap.java ---------------------------------------------------------------------- diff --git a/camel-core/src/main/java/org/apache/camel/support/DefaultTimeoutMap.java b/camel-core/src/main/java/org/apache/camel/support/DefaultTimeoutMap.java index 94e4026..57462f1 100644 --- a/camel-core/src/main/java/org/apache/camel/support/DefaultTimeoutMap.java +++ b/camel-core/src/main/java/org/apache/camel/support/DefaultTimeoutMap.java @@ -94,14 +94,15 @@ public class DefaultTimeoutMap<K, V> extends ServiceSupport implements TimeoutMa return entry.getValue(); } - public void put(K key, V value, long timeoutMillis) { + public V put(K key, V value, long timeoutMillis) { TimeoutMapEntry<K, V> entry = new TimeoutMapEntry<K, V>(key, value, timeoutMillis); if (useLock) { lock.lock(); } try { - map.put(key, entry); updateExpireTime(entry); + TimeoutMapEntry<K, V> result = map.put(key, entry); + return result != null ? result.getValue() : null; } finally { if (useLock) { lock.unlock(); http://git-wip-us.apache.org/repos/asf/camel/blob/a53781c8/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 3d86be1..d72c8d0 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 @@ -70,7 +70,7 @@ public class CorrelationTimeoutMap extends DefaultTimeoutMap<String, ReplyHandle } @Override - public void put(String key, ReplyHandler value, long timeoutMillis) { + public ReplyHandler put(String key, ReplyHandler value, long timeoutMillis) { try { if (listener != null) { listener.onPut(key); @@ -79,13 +79,15 @@ public class CorrelationTimeoutMap extends DefaultTimeoutMap<String, ReplyHandle // ignore } + ReplyHandler result; if (timeoutMillis <= 0) { // no timeout (must use Integer.MAX_VALUE) - super.put(key, value, Integer.MAX_VALUE); + result = super.put(key, value, Integer.MAX_VALUE); } else { - super.put(key, value, timeoutMillis); + result = super.put(key, value, timeoutMillis); } log.trace("Added correlationID: {} to timeout after: {} millis", key, timeoutMillis); + return result; } @Override http://git-wip-us.apache.org/repos/asf/camel/blob/a53781c8/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/QueueReplyManager.java ---------------------------------------------------------------------- diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/QueueReplyManager.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/QueueReplyManager.java index 59513b2..e494b83 100644 --- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/QueueReplyManager.java +++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/QueueReplyManager.java @@ -51,10 +51,10 @@ public class QueueReplyManager extends ReplyManagerSupport { // add to correlation map QueueReplyHandler handler = new QueueReplyHandler(replyManager, exchange, callback, originalCorrelationId, correlationId, requestTimeout); - if (correlation.get(correlationId) != null) { - log.error("The correlationId [{}] is not unique, some reply message would be ignored and the request thread could be blocked.", correlationId); + ReplyHandler result = correlation.put(correlationId, handler, requestTimeout); + if (result != null) { + log.warn("The correlationId [{}] is not unique, some reply message would be ignored and the request thread could be blocked.", correlationId); } - correlation.put(correlationId, handler, requestTimeout); return correlationId; } http://git-wip-us.apache.org/repos/asf/camel/blob/a53781c8/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java ---------------------------------------------------------------------- diff --git a/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java b/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java index 269b8fe..788994b 100644 --- a/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java +++ b/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java @@ -61,10 +61,10 @@ public class TemporaryQueueReplyManager extends ReplyManagerSupport { String originalCorrelationId, String correlationId, long requestTimeout) { // add to correlation map TemporaryQueueReplyHandler handler = new TemporaryQueueReplyHandler(this, exchange, callback, originalCorrelationId, correlationId, requestTimeout); - if (correlation.get(correlationId) != null) { + ReplyHandler result = correlation.put(correlationId, handler, requestTimeout); + if (result != null) { log.error("The correlationId [{}] is not unique, some reply message would be ignored and the request thread could be blocked.", correlationId); } - correlation.put(correlationId, handler, requestTimeout); return correlationId; }
