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 }