Repository: camel
Updated Branches:
  refs/heads/master 73ad5d4d8 -> 68387853c


CAMEL-11447: Optimise - MessageHistoryFactory should use long instead of Date


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

Branch: refs/heads/master
Commit: 68387853cf3a3bfbdb6057e8868fc95c50c03294
Parents: 73ad5d4
Author: Claus Ibsen <davscl...@apache.org>
Authored: Sat Jun 24 21:44:33 2017 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Sat Jun 24 21:44:33 2017 +0200

----------------------------------------------------------------------
 .../src/main/java/org/apache/camel/MessageHistory.java |  8 ++++++++
 .../org/apache/camel/impl/DefaultMessageHistory.java   | 13 +++++++++----
 .../camel/impl/DefaultMessageHistoryFactory.java       |  5 +++++
 .../apache/camel/processor/CamelInternalProcessor.java |  2 +-
 .../org/apache/camel/spi/MessageHistoryFactory.java    | 12 ++++++++++++
 .../impl/DefaultAsyncProcessorAwaitManagerTest.java    |  4 ++--
 .../metrics/messagehistory/MetricsMessageHistory.java  |  6 ++----
 .../messagehistory/MetricsMessageHistoryFactory.java   |  8 +++++++-
 8 files changed, 46 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/68387853/camel-core/src/main/java/org/apache/camel/MessageHistory.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/MessageHistory.java 
b/camel-core/src/main/java/org/apache/camel/MessageHistory.java
index e7e33f5..217b9d2 100644
--- a/camel-core/src/main/java/org/apache/camel/MessageHistory.java
+++ b/camel-core/src/main/java/org/apache/camel/MessageHistory.java
@@ -35,10 +35,18 @@ public interface MessageHistory {
 
     /**
      * Gets the timestamp at the point of this history.
+     *
+     * @deprecated use {@link #getTime()}
      */
+    @Deprecated
     Date getTimestamp();
 
     /**
+     * Gets the timestamp at the point of this history.
+     */
+    long getTime();
+
+    /**
      * Gets the elapsed time in millis processing the node took
      */
     long getElapsed();

http://git-wip-us.apache.org/repos/asf/camel/blob/68387853/camel-core/src/main/java/org/apache/camel/impl/DefaultMessageHistory.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/impl/DefaultMessageHistory.java 
b/camel-core/src/main/java/org/apache/camel/impl/DefaultMessageHistory.java
index ac3b93c..5083794 100644
--- a/camel-core/src/main/java/org/apache/camel/impl/DefaultMessageHistory.java
+++ b/camel-core/src/main/java/org/apache/camel/impl/DefaultMessageHistory.java
@@ -29,10 +29,10 @@ public class DefaultMessageHistory implements 
MessageHistory {
     private final String routeId;
     private final NamedNode node;
     private final String nodeId;
-    private final Date timestamp;
+    private final long timestamp;
     private long elapsed;
 
-    public DefaultMessageHistory(String routeId, NamedNode node, Date 
timestamp) {
+    public DefaultMessageHistory(String routeId, NamedNode node, long 
timestamp) {
         this.routeId = routeId;
         this.node = node;
         this.nodeId = node.getId();
@@ -48,6 +48,11 @@ public class DefaultMessageHistory implements MessageHistory 
{
     }
 
     public Date getTimestamp() {
+        return new Date(timestamp);
+    }
+
+    @Override
+    public long getTime() {
         return timestamp;
     }
 
@@ -56,8 +61,8 @@ public class DefaultMessageHistory implements MessageHistory {
     }
 
     public void nodeProcessingDone() {
-        if (timestamp != null) {
-            elapsed = System.currentTimeMillis() - timestamp.getTime();
+        if (timestamp > 0) {
+            elapsed = System.currentTimeMillis() - timestamp;
         }
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/68387853/camel-core/src/main/java/org/apache/camel/impl/DefaultMessageHistoryFactory.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/impl/DefaultMessageHistoryFactory.java
 
b/camel-core/src/main/java/org/apache/camel/impl/DefaultMessageHistoryFactory.java
index 89c2f40..aa97e3c 100644
--- 
a/camel-core/src/main/java/org/apache/camel/impl/DefaultMessageHistoryFactory.java
+++ 
b/camel-core/src/main/java/org/apache/camel/impl/DefaultMessageHistoryFactory.java
@@ -26,6 +26,11 @@ public class DefaultMessageHistoryFactory implements 
MessageHistoryFactory {
 
     @Override
     public MessageHistory newMessageHistory(String routeId, NamedNode node, 
Date timestamp) {
+        return new DefaultMessageHistory(routeId, node, timestamp.getTime());
+    }
+
+    @Override
+    public MessageHistory newMessageHistory(String routeId, NamedNode node, 
long timestamp) {
         return new DefaultMessageHistory(routeId, node, timestamp);
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/68387853/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
 
b/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
index d315ecc..eb59fc1 100644
--- 
a/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
+++ 
b/camel-core/src/main/java/org/apache/camel/processor/CamelInternalProcessor.java
@@ -770,7 +770,7 @@ public class CamelInternalProcessor extends 
DelegateAsyncProcessor {
                 }
             }
 
-            MessageHistory history = factory.newMessageHistory(targetRouteId, 
definition, new Date());
+            MessageHistory history = factory.newMessageHistory(targetRouteId, 
definition, System.currentTimeMillis());
             list.add(history);
             return history;
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/68387853/camel-core/src/main/java/org/apache/camel/spi/MessageHistoryFactory.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/main/java/org/apache/camel/spi/MessageHistoryFactory.java 
b/camel-core/src/main/java/org/apache/camel/spi/MessageHistoryFactory.java
index 977ff56..10cf2f8 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/MessageHistoryFactory.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/MessageHistoryFactory.java
@@ -33,6 +33,18 @@ public interface MessageHistoryFactory {
      * @param node      the node in the route
      * @param timestamp the time the message processed at this node.
      * @return a new {@link MessageHistory}
+     * @deprecated use {@link #newMessageHistory(String, NamedNode, long)}
      */
+    @Deprecated
     MessageHistory newMessageHistory(String routeId, NamedNode node, Date 
timestamp);
+
+    /**
+     * Creates a new {@link MessageHistory}
+     *
+     * @param routeId   the route id
+     * @param node      the node in the route
+     * @param timestamp the time the message processed at this node.
+     * @return a new {@link MessageHistory}
+     */
+    MessageHistory newMessageHistory(String routeId, NamedNode node, long 
timestamp);
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/68387853/camel-core/src/test/java/org/apache/camel/impl/DefaultAsyncProcessorAwaitManagerTest.java
----------------------------------------------------------------------
diff --git 
a/camel-core/src/test/java/org/apache/camel/impl/DefaultAsyncProcessorAwaitManagerTest.java
 
b/camel-core/src/test/java/org/apache/camel/impl/DefaultAsyncProcessorAwaitManagerTest.java
index b91354e..ed4de4c 100644
--- 
a/camel-core/src/test/java/org/apache/camel/impl/DefaultAsyncProcessorAwaitManagerTest.java
+++ 
b/camel-core/src/test/java/org/apache/camel/impl/DefaultAsyncProcessorAwaitManagerTest.java
@@ -75,7 +75,7 @@ public class DefaultAsyncProcessorAwaitManagerTest {
         LinkedList<MessageHistory> messageHistories = new LinkedList<>();
         messageHistories.add(MESSAGE_HISTORY_FACTORY.newMessageHistory(null,
                 new MockNamedNode().withId(null),
-                null));
+                0));
         exchange.setProperty(Exchange.MESSAGE_HISTORY, messageHistories);
         AsyncProcessorAwaitManager.AwaitThread awaitThread = 
defaultAsyncProcessorAwaitManager.browse().iterator().next();
         assertThat(awaitThread.getRouteId(), is(nullValue()));
@@ -89,7 +89,7 @@ public class DefaultAsyncProcessorAwaitManagerTest {
         LinkedList<MessageHistory> messageHistories = new LinkedList<>();
         
messageHistories.add(MESSAGE_HISTORY_FACTORY.newMessageHistory("routeId",
                 new MockNamedNode().withId("nodeId"),
-                null));
+                0));
         exchange.setProperty(Exchange.MESSAGE_HISTORY, messageHistories);
         AsyncProcessorAwaitManager.AwaitThread awaitThread = 
defaultAsyncProcessorAwaitManager.browse().iterator().next();
         assertThat(awaitThread.getRouteId(), is("routeId"));

http://git-wip-us.apache.org/repos/asf/camel/blob/68387853/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistory.java
----------------------------------------------------------------------
diff --git 
a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistory.java
 
b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistory.java
index 33e1c2a..6cd6526 100644
--- 
a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistory.java
+++ 
b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistory.java
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.component.metrics.messagehistory;
 
-import java.util.Date;
-
 import com.codahale.metrics.Timer;
 import org.apache.camel.MessageHistory;
 import org.apache.camel.NamedNode;
@@ -30,8 +28,8 @@ public class MetricsMessageHistory extends 
DefaultMessageHistory {
 
     private final Timer.Context context;
 
-    public MetricsMessageHistory(String routeId, NamedNode namedNode, Timer 
timer) {
-        super(routeId, namedNode, new Date());
+    public MetricsMessageHistory(String routeId, NamedNode namedNode, Timer 
timer, long timestamp) {
+        super(routeId, namedNode, timestamp);
         this.context = timer.time();
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/68387853/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistoryFactory.java
----------------------------------------------------------------------
diff --git 
a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistoryFactory.java
 
b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistoryFactory.java
index c738af5..f279dba 100644
--- 
a/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistoryFactory.java
+++ 
b/components/camel-metrics/src/main/java/org/apache/camel/component/metrics/messagehistory/MetricsMessageHistoryFactory.java
@@ -125,9 +125,15 @@ public class MetricsMessageHistoryFactory extends 
ServiceSupport implements Came
     }
 
     @Override
+    @Deprecated
     public MessageHistory newMessageHistory(String routeId, NamedNode 
namedNode, Date date) {
+        return newMessageHistory(routeId, namedNode, date.getTime());
+    }
+
+    @Override
+    public MessageHistory newMessageHistory(String routeId, NamedNode 
namedNode, long timestamp) {
         Timer timer = metricsRegistry.timer(createName("history", routeId, 
namedNode.getId()));
-        return new MetricsMessageHistory(routeId, namedNode, timer);
+        return new MetricsMessageHistory(routeId, namedNode, timer, timestamp);
     }
 
     private String createName(String type, String routeId, String id) {

Reply via email to