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();

Reply via email to