CAMEL-6681: Allow to configure lock mode on jpa consumer. Thanks to Bart De Neuter for the patch.
Conflicts: components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/fc199ac7 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/fc199ac7 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/fc199ac7 Branch: refs/heads/camel-2.11.x Commit: fc199ac7464e95e878e74dff7ee36009d96782c5 Parents: b8c8500 Author: Claus Ibsen <davscl...@apache.org> Authored: Thu Aug 29 12:00:11 2013 +0200 Committer: Claus Ibsen <davscl...@apache.org> Committed: Thu Aug 29 12:03:05 2013 +0200 ---------------------------------------------------------------------- .../apache/camel/component/jpa/JpaConsumer.java | 11 ++++++++++- .../camel/component/jpa/JpaComponentTest.java | 18 ++++++++++++++++-- 2 files changed, 26 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/fc199ac7/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java ---------------------------------------------------------------------- diff --git a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java index 88baa8d..8a20f9e 100644 --- a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java +++ b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaConsumer.java @@ -49,6 +49,7 @@ public class JpaConsumer extends ScheduledBatchPollingConsumer { private String query; private String namedQuery; private String nativeQuery; + private LockModeType lockModeType = LockModeType.WRITE; private Class<?> resultClass; private boolean transacted; @@ -203,6 +204,14 @@ public class JpaConsumer extends ScheduledBatchPollingConsumer { this.namedQuery = namedQuery; } + public LockModeType getLockModeType() { + return lockModeType; + } + + public void setLockModeType(LockModeType lockModeType) { + this.lockModeType = lockModeType; + } + public String getNativeQuery() { return nativeQuery; } @@ -259,7 +268,7 @@ public class JpaConsumer extends ScheduledBatchPollingConsumer { } try { LOG.debug("Acquiring exclusive lock on entity: {}", entity); - entityManager.lock(entity, LockModeType.WRITE); + entityManager.lock(entity, lockModeType); return true; } catch (Exception e) { if (LOG.isDebugEnabled()) { http://git-wip-us.apache.org/repos/asf/camel/blob/fc199ac7/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaComponentTest.java ---------------------------------------------------------------------- diff --git a/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaComponentTest.java b/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaComponentTest.java index d487539..614c29a 100644 --- a/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaComponentTest.java +++ b/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaComponentTest.java @@ -17,6 +17,7 @@ package org.apache.camel.component.jpa; import javax.persistence.EntityManagerFactory; +import javax.persistence.LockModeType; import javax.persistence.Persistence; import org.apache.camel.examples.SendEmail; @@ -25,11 +26,24 @@ import org.junit.Test; import org.springframework.orm.jpa.JpaTransactionManager; /** - * @version + * @version */ public class JpaComponentTest extends CamelTestSupport { @Test + public void testJpaComponentConsumerHasLockModeType() throws Exception { + JpaComponent comp = new JpaComponent(); + comp.setCamelContext(context); + assertNull(comp.getEntityManagerFactory()); + assertNull(comp.getTransactionManager()); + + JpaEndpoint jpa = (JpaEndpoint) comp.createEndpoint("jpa://" + SendEmail.class.getName() + "?consumer.lockModeType=PESSIMISTIC_WRITE"); + JpaConsumer consumer = (JpaConsumer) jpa.createConsumer(null); + + assertEquals(consumer.getLockModeType(), LockModeType.PESSIMISTIC_WRITE); + } + + @Test public void testJpaComponentCtr() throws Exception { JpaComponent comp = new JpaComponent(); comp.setCamelContext(context); @@ -62,7 +76,7 @@ public class JpaComponentTest extends CamelTestSupport { assertNotNull(jpa); assertNotNull(jpa.getEntityType()); } - + @Test public void testJpaComponentWithPath() throws Exception { JpaComponent comp = new JpaComponent();