Updated Branches:
  refs/heads/master 708c4cd87 -> f93b1fa59

CAMEL-5932 share an EntityManager in the entire endpoint and corrected a
few test failures


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

Branch: refs/heads/master
Commit: a27d5e9bccd1acb95873af9fa815e05a790d3c86
Parents: e696c60
Author: Brett Meyer <br...@3riverdev.com>
Authored: Thu Aug 8 15:34:56 2013 -0400
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Wed Aug 21 15:06:32 2013 +0200

----------------------------------------------------------------------
 .../apache/camel/component/jpa/JpaConsumer.java | 10 +----
 .../apache/camel/component/jpa/JpaEndpoint.java | 14 ++++++-
 .../apache/camel/component/jpa/JpaProducer.java |  8 +---
 .../component/jpa/AbstractJpaMethodTest.java    |  3 +-
 .../org/apache/camel/component/jpa/JpaTest.java |  3 +-
 .../component/jpa/JpaWithNamedQueryTest.java    |  3 +-
 .../interceptor/JpaTraceEventMessageTest.java   | 41 +++++++++++---------
 7 files changed, 39 insertions(+), 43 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/a27d5e9b/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 10cdd2d..a4a73e4 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
@@ -69,7 +69,7 @@ public class JpaConsumer extends 
ScheduledBatchPollingConsumer {
     public JpaConsumer(JpaEndpoint endpoint, Processor processor) {
         super(endpoint, processor);
         this.endpoint = endpoint;
-        this.entityManager = endpoint.createEntityManager();
+        this.entityManager = endpoint.getEntityManager();
         this.transactionTemplate = endpoint.createTransactionTemplate();
     }
 
@@ -383,12 +383,4 @@ public class JpaConsumer extends 
ScheduledBatchPollingConsumer {
         exchange.getIn().setHeader(JpaConstants.ENTITYMANAGER, entityManager);
         return exchange;
     }
-
-    @Override
-    protected void doStop() throws Exception {
-        super.doStop();
-        // TODO: This should probably happen, but hitting an open transaction 
or flush in progress.
-        // Is there a thread holding onto it?
-//        entityManager.close();
-    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/a27d5e9b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java
 
b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java
index cee83f2..e99c405 100644
--- 
a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java
+++ 
b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaEndpoint.java
@@ -43,6 +43,7 @@ public class JpaEndpoint extends ScheduledPollEndpoint {
 
     private EntityManagerFactory entityManagerFactory;
     private PlatformTransactionManager transactionManager;
+    private EntityManager entityManager;
     private String persistenceUnit = "camel";
     private Expression producerExpression;
     private int maximumResults = -1;
@@ -262,8 +263,11 @@ public class JpaEndpoint extends ScheduledPollEndpoint {
         return tm;
     }
 
-    protected EntityManager createEntityManager() {
-        return getEntityManagerFactory().createEntityManager();
+    protected EntityManager getEntityManager() {
+        if (entityManager == null) {
+               entityManager = getEntityManagerFactory().createEntityManager();
+        }
+        return entityManager;
     }
 
     protected TransactionTemplate createTransactionTemplate() {
@@ -297,4 +301,10 @@ public class JpaEndpoint extends ScheduledPollEndpoint {
             }
         };
     }
+
+    @Override
+    protected void doStop() throws Exception {
+        super.doStop();
+        entityManager.close();
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/a27d5e9b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaProducer.java
----------------------------------------------------------------------
diff --git 
a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaProducer.java
 
b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaProducer.java
index c06a1b8..c83f0a6 100644
--- 
a/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaProducer.java
+++ 
b/components/camel-jpa/src/main/java/org/apache/camel/component/jpa/JpaProducer.java
@@ -42,7 +42,7 @@ public class JpaProducer extends DefaultProducer {
         super(endpoint);
         this.endpoint = endpoint;
         this.expression = expression;
-        this.entityManager = endpoint.createEntityManager();
+        this.entityManager = endpoint.getEntityManager();
         this.transactionTemplate = endpoint.createTransactionTemplate();
     }
 
@@ -107,10 +107,4 @@ public class JpaProducer extends DefaultProducer {
         }
         exchange.getIn().removeHeader(JpaConstants.ENTITYMANAGER);
     }
-
-    @Override
-    protected void doStop() throws Exception {
-        super.doStop();
-        entityManager.close();
-    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/a27d5e9b/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/AbstractJpaMethodTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/AbstractJpaMethodTest.java
 
b/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/AbstractJpaMethodTest.java
index aaa350b..eaa7659 100644
--- 
a/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/AbstractJpaMethodTest.java
+++ 
b/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/AbstractJpaMethodTest.java
@@ -60,7 +60,6 @@ public abstract class AbstractJpaMethodTest extends Assert {
     @After
     public void tearDown() throws Exception {
         stopServices(consumer, template, camelContext);
-        entityManager.close();
     }
     
     @Test
@@ -165,7 +164,7 @@ public abstract class AbstractJpaMethodTest extends Assert {
         endpoint = camelContext.getEndpoint(endpointUri, JpaEndpoint.class);
 
         transactionTemplate = endpoint.createTransactionTemplate();
-        entityManager = endpoint.createEntityManager();
+        entityManager = endpoint.getEntityManager();
         
         transactionTemplate.execute(new TransactionCallback<Object>() {
             public Object doInTransaction(TransactionStatus status) {

http://git-wip-us.apache.org/repos/asf/camel/blob/a27d5e9b/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaTest.java
 
b/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaTest.java
index b0a5615..4f50f6f 100644
--- 
a/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaTest.java
+++ 
b/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaTest.java
@@ -117,7 +117,7 @@ public class JpaTest extends Assert {
         endpoint = (JpaEndpoint) value;
 
         transactionTemplate = endpoint.createTransactionTemplate();
-        entityManager = endpoint.createEntityManager();
+        entityManager = endpoint.getEntityManager();
     }
 
     protected String getEndpointUri() {
@@ -127,6 +127,5 @@ public class JpaTest extends Assert {
     @After
     public void tearDown() throws Exception {
         stopServices(consumer, template, camelContext);
-        entityManager.close();
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/a27d5e9b/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaWithNamedQueryTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaWithNamedQueryTest.java
 
b/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaWithNamedQueryTest.java
index 561748e..947949e 100644
--- 
a/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaWithNamedQueryTest.java
+++ 
b/components/camel-jpa/src/test/java/org/apache/camel/component/jpa/JpaWithNamedQueryTest.java
@@ -166,7 +166,7 @@ public class JpaWithNamedQueryTest extends Assert {
         endpoint = (JpaEndpoint)value;
 
         transactionTemplate = endpoint.createTransactionTemplate();
-        entityManager = endpoint.createEntityManager();
+        entityManager = endpoint.getEntityManager();
     }
 
     protected String getEndpointUri() {
@@ -176,6 +176,5 @@ public class JpaWithNamedQueryTest extends Assert {
     @After
     public void tearDown() throws Exception {
         ServiceHelper.stopServices(consumer, template, camelContext);
-        entityManager.close();
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/a27d5e9b/components/camel-jpa/src/test/java/org/apache/camel/processor/interceptor/JpaTraceEventMessageTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-jpa/src/test/java/org/apache/camel/processor/interceptor/JpaTraceEventMessageTest.java
 
b/components/camel-jpa/src/test/java/org/apache/camel/processor/interceptor/JpaTraceEventMessageTest.java
index ec8b46a..13bc233 100644
--- 
a/components/camel-jpa/src/test/java/org/apache/camel/processor/interceptor/JpaTraceEventMessageTest.java
+++ 
b/components/camel-jpa/src/test/java/org/apache/camel/processor/interceptor/JpaTraceEventMessageTest.java
@@ -28,11 +28,11 @@ import 
org.apache.camel.processor.interceptor.jpa.JpaTraceEventMessage;
 import org.apache.camel.spring.SpringCamelContext;
 import org.apache.camel.spring.SpringRouteBuilder;
 import org.apache.camel.test.junit4.CamelTestSupport;
+import org.junit.After;
+import org.junit.Before;
 import org.junit.Test;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
-import org.springframework.orm.jpa.JpaTransactionManager;
-import org.springframework.transaction.TransactionDefinition;
 import org.springframework.transaction.TransactionStatus;
 import org.springframework.transaction.support.TransactionCallback;
 import org.springframework.transaction.support.TransactionTemplate;
@@ -44,7 +44,23 @@ public class JpaTraceEventMessageTest extends 
CamelTestSupport {
     protected static final String SELECT_ALL_STRING = "select x from " + 
JpaTraceEventMessage.class.getName() + " x";
 
     protected ApplicationContext applicationContext;
-    protected EntityManagerFactory entityManagerFactory;
+    protected TransactionTemplate transactionTemplate;
+    protected EntityManager entityManager;
+
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+       EntityManagerFactory entityManagerFactory = 
applicationContext.getBean("entityManagerFactory", EntityManagerFactory.class);
+       transactionTemplate = applicationContext.getBean("transactionTemplate", 
TransactionTemplate.class);
+        entityManager = entityManagerFactory.createEntityManager();
+        cleanupRepository();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        super.tearDown();
+        entityManager.close();
+    }
 
     @Test
     public void testSendTraceMessage() throws Exception {
@@ -60,7 +76,6 @@ public class JpaTraceEventMessageTest extends 
CamelTestSupport {
     @Override
     protected CamelContext createCamelContext() throws Exception {
         applicationContext = new 
ClassPathXmlApplicationContext("org/apache/camel/processor/interceptor/springJpaTraveEvent.xml");
-        cleanupRepository();
         return SpringCamelContext.springCamelContext(applicationContext);
     }
 
@@ -79,10 +94,7 @@ public class JpaTraceEventMessageTest extends 
CamelTestSupport {
     }
 
     private void assertEntityInDB() throws Exception {
-       entityManagerFactory = 
applicationContext.getBean("entityManagerFactory", EntityManagerFactory.class);
-       EntityManager entityManager = 
entityManagerFactory.createEntityManager();
-       
-        List<?> list = 
entityManager.createQuery(SELECT_ALL_STRING).getResultList();
+       List<?> list = 
entityManager.createQuery(SELECT_ALL_STRING).getResultList();
         assertEquals(1, list.size());
         
         JpaTraceEventMessage db = (JpaTraceEventMessage) list.get(0);
@@ -90,19 +102,12 @@ public class JpaTraceEventMessageTest extends 
CamelTestSupport {
         assertEquals("direct://start", db.getFromEndpointUri());
         assertEquals("mock://result", db.getToNode());
         assertEquals("foo", db.getRouteId());
-        
-        entityManager.close();
     }
 
     protected void cleanupRepository() {
-       entityManagerFactory = 
applicationContext.getBean("entityManagerFactory", EntityManagerFactory.class);
-       final EntityManager entityManager = 
entityManagerFactory.createEntityManager();
-        TransactionTemplate transactionTemplate = new TransactionTemplate();
-        transactionTemplate.setTransactionManager(new 
JpaTransactionManager(entityManagerFactory));
-        
transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
-
-        transactionTemplate.execute(new TransactionCallback<Object>() {
+       transactionTemplate.execute(new TransactionCallback<Object>() {
             public Object doInTransaction(TransactionStatus arg0) {
+               entityManager.joinTransaction();
                 List<?> list = 
entityManager.createQuery(SELECT_ALL_STRING).getResultList();
                 for (Object item : list) {
                        entityManager.remove(item);
@@ -111,7 +116,5 @@ public class JpaTraceEventMessageTest extends 
CamelTestSupport {
                 return Boolean.TRUE;
             }
         });
-        
-        entityManager.close();
     }
 }
\ No newline at end of file

Reply via email to