Author: cmueller
Date: Sun May 15 14:22:14 2011
New Revision: 1103388

URL: http://svn.apache.org/viewvc?rev=1103388&view=rev
Log:
CAMEL-3975: Extend the JDBC and JPA based idempotent repository with a 
timestamp column

Modified:
    
camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/processor/idempotent/jpa/JpaMessageIdRepository.java
    
camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/processor/idempotent/jpa/MessageProcessed.java
    
camel/trunk/components/camel-sql/src/main/java/org/apache/camel/processor/idempotent/jdbc/JdbcMessageIdRepository.java
    
camel/trunk/components/camel-sql/src/test/java/org/apache/camel/processor/idempotent/jdbc/JdbcMessageIdRepositoryTest.java

Modified: 
camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/processor/idempotent/jpa/JpaMessageIdRepository.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/processor/idempotent/jpa/JpaMessageIdRepository.java?rev=1103388&r1=1103387&r2=1103388&view=diff
==============================================================================
--- 
camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/processor/idempotent/jpa/JpaMessageIdRepository.java
 (original)
+++ 
camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/processor/idempotent/jpa/JpaMessageIdRepository.java
 Sun May 15 14:22:14 2011
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.processor.idempotent.jpa;
 
+import java.util.Date;
 import java.util.List;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.Persistence;
@@ -79,6 +80,7 @@ public class JpaMessageIdRepository exte
                     MessageProcessed processed = new MessageProcessed();
                     processed.setProcessorName(processorName);
                     processed.setMessageId(messageId);
+                    processed.setCreatedAt(new Date());
                     jpaTemplate.persist(processed);
                     jpaTemplate.flush();
                     return Boolean.TRUE;

Modified: 
camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/processor/idempotent/jpa/MessageProcessed.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/processor/idempotent/jpa/MessageProcessed.java?rev=1103388&r1=1103387&r2=1103388&view=diff
==============================================================================
--- 
camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/processor/idempotent/jpa/MessageProcessed.java
 (original)
+++ 
camel/trunk/components/camel-jpa/src/main/java/org/apache/camel/processor/idempotent/jpa/MessageProcessed.java
 Sun May 15 14:22:14 2011
@@ -17,10 +17,14 @@
 package org.apache.camel.processor.idempotent.jpa;
 
 import java.io.Serializable;
+import java.util.Date;
+
 import javax.persistence.Entity;
 import javax.persistence.GeneratedValue;
 import javax.persistence.Id;
 import javax.persistence.Table;
+import javax.persistence.Temporal;
+import javax.persistence.TemporalType;
 import javax.persistence.UniqueConstraint;
 
 /**
@@ -32,13 +36,14 @@ import javax.persistence.UniqueConstrain
     uniqueConstraints = @UniqueConstraint(columnNames = {"processorName", 
"messageId"})
 )
 public class MessageProcessed implements Serializable {
+    protected Date createdAt;
     private Long id;
     private String messageId;
     private String processorName;
 
     @Override
     public String toString() {
-        return "MessageProcessed[processorName: " + getProcessorName() + " 
messageId: " + getMessageId() + "]";
+        return "MessageProcessed[processorName: " + getProcessorName() + " 
messageId: " + getMessageId() + " createdAt: " + getCreatedAt() + "]";
     }
 
     @Id
@@ -66,4 +71,13 @@ public class MessageProcessed implements
     public void setProcessorName(String processorName) {
         this.processorName = processorName;
     }
+
+    @Temporal(TemporalType.TIMESTAMP)
+    public Date getCreatedAt() {
+        return createdAt;
+    }
+
+    public void setCreatedAt(Date createdAt) {
+        this.createdAt = createdAt;
+    }
 }

Modified: 
camel/trunk/components/camel-sql/src/main/java/org/apache/camel/processor/idempotent/jdbc/JdbcMessageIdRepository.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-sql/src/main/java/org/apache/camel/processor/idempotent/jdbc/JdbcMessageIdRepository.java?rev=1103388&r1=1103387&r2=1103388&view=diff
==============================================================================
--- 
camel/trunk/components/camel-sql/src/main/java/org/apache/camel/processor/idempotent/jdbc/JdbcMessageIdRepository.java
 (original)
+++ 
camel/trunk/components/camel-sql/src/main/java/org/apache/camel/processor/idempotent/jdbc/JdbcMessageIdRepository.java
 Sun May 15 14:22:14 2011
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.processor.idempotent.jdbc;
 
+import java.sql.Timestamp;
+
 import javax.sql.DataSource;
 
 import org.apache.camel.impl.ServiceSupport;
@@ -37,7 +39,7 @@ import org.springframework.transaction.s
 public class JdbcMessageIdRepository extends ServiceSupport implements 
IdempotentRepository<String> {
     
     protected static final String QUERY_STRING = "SELECT COUNT(*) FROM 
CAMEL_MESSAGEPROCESSED WHERE processorName = ? AND messageId = ?";
-    protected static final String INSERT_STRING = "INSERT INTO 
CAMEL_MESSAGEPROCESSED (processorName, messageId) VALUES (?, ?)";
+    protected static final String INSERT_STRING = "INSERT INTO 
CAMEL_MESSAGEPROCESSED (processorName, messageId, createdAt) VALUES (?, ?, ?)";
     protected static final String DELETE_STRING = "DELETE FROM 
CAMEL_MESSAGEPROCESSED WHERE processorName = ? AND messageId = ?";
     
     private final JdbcTemplate jdbcTemplate;
@@ -74,7 +76,7 @@ public class JdbcMessageIdRepository ext
             public Object doInTransaction(TransactionStatus status) {
                 int count = jdbcTemplate.queryForInt(QUERY_STRING, 
processorName, messageId);
                 if (count == 0) {
-                    jdbcTemplate.update(INSERT_STRING, processorName, 
messageId);
+                    jdbcTemplate.update(INSERT_STRING, processorName, 
messageId, new Timestamp(System.currentTimeMillis()));
                     return Boolean.TRUE;
                 } else {
                     return Boolean.FALSE;

Modified: 
camel/trunk/components/camel-sql/src/test/java/org/apache/camel/processor/idempotent/jdbc/JdbcMessageIdRepositoryTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-sql/src/test/java/org/apache/camel/processor/idempotent/jdbc/JdbcMessageIdRepositoryTest.java?rev=1103388&r1=1103387&r2=1103388&view=diff
==============================================================================
--- 
camel/trunk/components/camel-sql/src/test/java/org/apache/camel/processor/idempotent/jdbc/JdbcMessageIdRepositoryTest.java
 (original)
+++ 
camel/trunk/components/camel-sql/src/test/java/org/apache/camel/processor/idempotent/jdbc/JdbcMessageIdRepositoryTest.java
 Sun May 15 14:22:14 2011
@@ -82,7 +82,7 @@ public class JdbcMessageIdRepositoryTest
         transactionTemplate.execute(new TransactionCallback() {
             public Object doInTransaction(TransactionStatus status) {
                 try {
-                    jdbcTemplate.execute("CREATE TABLE CAMEL_MESSAGEPROCESSED 
(processorName VARCHAR(20), messageId VARCHAR(10))");
+                    jdbcTemplate.execute("CREATE TABLE CAMEL_MESSAGEPROCESSED 
(processorName VARCHAR(20), messageId VARCHAR(10), createdAt timestamp)");
                 } catch (DataAccessException e) {
                     // noop if table already exists 
                 }


Reply via email to