This is an automated email from the ASF dual-hosted git repository.

zhfeng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new ee010eddbfb CAMEL-18323: camel-jpa - Replace to use 
TransactionStrategy in JpaConsumer (#8082)
ee010eddbfb is described below

commit ee010eddbfb1fedcebc96f330a1f86c8b6bee4e0
Author: Amos Feng <zh.f...@gmail.com>
AuthorDate: Mon Aug 1 13:35:51 2022 +0800

    CAMEL-18323: camel-jpa - Replace to use TransactionStrategy in JpaConsumer 
(#8082)
---
 .../org/apache/camel/component/jpa/JpaConsumer.java  | 20 ++++++++------------
 1 file changed, 8 insertions(+), 12 deletions(-)

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 3197383bb69..da4acb0a84d 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
@@ -42,9 +42,6 @@ import org.apache.camel.util.CastUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.orm.jpa.SharedEntityManagerCreator;
-import org.springframework.transaction.TransactionStatus;
-import org.springframework.transaction.support.TransactionCallback;
-import org.springframework.transaction.support.TransactionTemplate;
 
 public class JpaConsumer extends ScheduledBatchPollingConsumer {
 
@@ -52,7 +49,7 @@ public class JpaConsumer extends 
ScheduledBatchPollingConsumer {
 
     private static final Map<String, Object> NOWAIT;
     private final EntityManagerFactory entityManagerFactory;
-    private final TransactionTemplate transactionTemplate;
+    private final TransactionStrategy transactionStrategy;
     private EntityManager entityManager;
     private QueryFactory queryFactory;
     private DeleteHandler<Object> deleteHandler;
@@ -83,7 +80,7 @@ public class JpaConsumer extends 
ScheduledBatchPollingConsumer {
     public JpaConsumer(JpaEndpoint endpoint, Processor processor) {
         super(endpoint, processor);
         this.entityManagerFactory = endpoint.getEntityManagerFactory();
-        this.transactionTemplate = endpoint.createTransactionTemplate();
+        this.transactionStrategy = endpoint.getTransactionStrategy();
     }
 
     @Override
@@ -102,10 +99,11 @@ public class JpaConsumer extends 
ScheduledBatchPollingConsumer {
             LOG.trace("Recreated EntityManager {} on {}", entityManager, this);
         }
 
-        Object messagePolled = null;
+        final int[] messagePolled = { 0 };
         try {
-            messagePolled = transactionTemplate.execute(new 
TransactionCallback<Object>() {
-                public Object doInTransaction(TransactionStatus status) {
+            transactionStrategy.executeInTransaction(new Runnable() {
+                @Override
+                public void run() {
                     if (getEndpoint().isJoinTransaction()) {
                         entityManager.joinTransaction();
                     }
@@ -128,9 +126,8 @@ public class JpaConsumer extends 
ScheduledBatchPollingConsumer {
                     }
 
                     PersistenceException cause = null;
-                    int messagePolled = 0;
                     try {
-                        messagePolled = processBatch(CastUtils.cast(answer));
+                        messagePolled[0] = 
processBatch(CastUtils.cast(answer));
                     } catch (Exception e) {
                         if (e instanceof PersistenceException) {
                             cause = (PersistenceException) e;
@@ -155,7 +152,6 @@ public class JpaConsumer extends 
ScheduledBatchPollingConsumer {
                     entityManager.flush();
                     // must clear after flush
                     entityManager.clear();
-                    return messagePolled;
                 }
             });
         } catch (Exception e) {
@@ -167,7 +163,7 @@ public class JpaConsumer extends 
ScheduledBatchPollingConsumer {
             throw new PersistenceException(e);
         }
 
-        return 
getEndpoint().getCamelContext().getTypeConverter().convertTo(int.class, 
messagePolled);
+        return 
getEndpoint().getCamelContext().getTypeConverter().convertTo(int.class, 
messagePolled[0]);
     }
 
     @Override

Reply via email to