Repository: camel
Updated Branches:
  refs/heads/master 4a5d8297e -> 7f7ce39d2


CAMEL-10291: support java.util.date for timestamps in rabbitmq messages


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

Branch: refs/heads/master
Commit: 65d372f587aa79479753068533fd8b4aa52671ec
Parents: 4a5d829
Author: Florian Gessner <flo.gess...@gmail.com>
Authored: Mon Sep 5 21:38:08 2016 +0200
Committer: Florian Gessner <flo.gess...@gmail.com>
Committed: Mon Sep 5 21:38:08 2016 +0200

----------------------------------------------------------------------
 .../rabbitmq/RabbitMQMessageConverter.java      |  9 +++++-
 .../rabbitmq/RabbitMQConsumerIntTest.java       | 32 ++++++++++++++++++++
 2 files changed, 40 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/65d372f5/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQMessageConverter.java
----------------------------------------------------------------------
diff --git 
a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQMessageConverter.java
 
b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQMessageConverter.java
index 1873674..b29b3cf 100644
--- 
a/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQMessageConverter.java
+++ 
b/components/camel-rabbitmq/src/main/java/org/apache/camel/component/rabbitmq/RabbitMQMessageConverter.java
@@ -152,7 +152,7 @@ public class RabbitMQMessageConverter {
 
         final Object timestamp = msg.removeHeader(RabbitMQConstants.TIMESTAMP);
         if (timestamp != null) {
-            properties.timestamp(new 
Date(Long.parseLong(timestamp.toString())));
+            properties.timestamp(convertTimestamp(timestamp));
         }
 
         final Map<String, Object> headers = msg.getHeaders();
@@ -179,6 +179,13 @@ public class RabbitMQMessageConverter {
         return properties;
     }
 
+    private Date convertTimestamp(Object timestamp) {
+        if(timestamp instanceof Date){
+            return (Date)timestamp;
+        }
+        return new Date(Long.parseLong(timestamp.toString()));
+    }
+
     /**
      * Strategy to test if the given header is valid. Without this, the
      * com.rabbitmq.client.impl.Frame.java class will throw an

http://git-wip-us.apache.org/repos/asf/camel/blob/65d372f5/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQConsumerIntTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQConsumerIntTest.java
 
b/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQConsumerIntTest.java
index 2066380..91cefb2 100644
--- 
a/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQConsumerIntTest.java
+++ 
b/components/camel-rabbitmq/src/test/java/org/apache/camel/component/rabbitmq/RabbitMQConsumerIntTest.java
@@ -17,6 +17,8 @@
 package org.apache.camel.component.rabbitmq;
 
 import java.io.IOException;
+import java.util.Calendar;
+import java.util.Date;
 import java.util.concurrent.TimeoutException;
 
 import com.rabbitmq.client.AMQP;
@@ -74,5 +76,35 @@ public class RabbitMQConsumerIntTest extends 
CamelTestSupport {
 
         to.assertIsSatisfied();
     }
+
+    @Test
+    public void sentMessageWithTimestampIsReceived() throws 
InterruptedException, IOException, TimeoutException {
+        Date timestamp = currentTimestampWithoutMillis();
+
+        to.expectedMessageCount(1);
+        to.expectedHeaderReceived(RabbitMQConstants.TIMESTAMP, timestamp);
+
+        ConnectionFactory factory = new ConnectionFactory();
+        factory.setHost("localhost");
+        factory.setPort(5672);
+        factory.setUsername("cameltest");
+        factory.setPassword("cameltest");
+        factory.setVirtualHost("/");
+        Connection conn = factory.newConnection();
+
+        AMQP.BasicProperties.Builder properties = new 
AMQP.BasicProperties.Builder();
+        properties.timestamp(timestamp);
+
+        Channel channel = conn.createChannel();
+        channel.basicPublish(EXCHANGE, "", properties.build(), "hello 
world".getBytes());
+
+        to.assertIsSatisfied();
+    }
+
+    private Date currentTimestampWithoutMillis() {
+        Calendar calendar = Calendar.getInstance();
+        calendar.set(Calendar.MILLISECOND, 0);
+        return calendar.getTime();
+    }
 }
 

Reply via email to