From e9bcd418b1e5ffd7848f1624465fa01add48d2f7 Mon Sep 17 00:00:00 2001 From: Tim Gage Date: Tue, 9 Jun 2020 18:12:20 +0100 Subject: [PATCH 1/6] Remove dependency on Hibernate and use Spring's utilities to integrate with spring transactions. --- transactionoutbox-spring/pom.xml | 10 +++++----- .../SpringTransactionManager.java | 19 +++++++++++++------ 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/transactionoutbox-spring/pom.xml b/transactionoutbox-spring/pom.xml index bfc9dc2a..0f0c339e 100644 --- a/transactionoutbox-spring/pom.xml +++ b/transactionoutbox-spring/pom.xml @@ -33,6 +33,11 @@ spring-tx ${spring.version} + + org.springframework + spring-jdbc + ${spring.version} + javax.inject javax.inject @@ -43,11 +48,6 @@ spring-context ${spring.version} - - org.hibernate - hibernate-core - 5.4.17.Final - diff --git a/transactionoutbox-spring/src/main/java/com/gruelbox/transactionoutbox/SpringTransactionManager.java b/transactionoutbox-spring/src/main/java/com/gruelbox/transactionoutbox/SpringTransactionManager.java index 86568ab4..cebec440 100644 --- a/transactionoutbox-spring/src/main/java/com/gruelbox/transactionoutbox/SpringTransactionManager.java +++ b/transactionoutbox-spring/src/main/java/com/gruelbox/transactionoutbox/SpringTransactionManager.java @@ -5,10 +5,10 @@ import java.lang.reflect.Proxy; import java.sql.Connection; import java.sql.PreparedStatement; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; +import javax.sql.DataSource; import lombok.extern.slf4j.Slf4j; -import org.hibernate.internal.SessionImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.datasource.DataSourceUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; @@ -22,8 +22,12 @@ public class SpringTransactionManager implements ThreadLocalContextTransactionManager { private final SpringTransaction transactionInstance = new SpringTransaction(); + private final DataSource dataSource; - @PersistenceContext private EntityManager entityManager; + @Autowired + SpringTransactionManager(DataSource dataSource) { + this.dataSource = dataSource; + } @Override @Transactional(propagation = Propagation.REQUIRES_NEW) @@ -43,8 +47,11 @@ private final class SpringTransaction implements Transaction { @Override public Connection connection() { try { - SessionImpl delegate = (SessionImpl) entityManager.getDelegate(); - return delegate.connection(); + if (!TransactionSynchronizationManager.isActualTransactionActive()) { + throw new RuntimeException("No spring transaction is active."); + } + + return DataSourceUtils.getConnection(dataSource); } catch (RuntimeException e) { throw new NoTransactionActiveException(e); } From 3f9d2abdf2dc04b68c2424cd6b48087bbae80dd1 Mon Sep 17 00:00:00 2001 From: Tim Gage Date: Wed, 10 Jun 2020 09:25:58 +0100 Subject: [PATCH 2/6] Move the check for an active transaction. Remove an unnecessary try-catch. --- .../SpringTransactionManager.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/transactionoutbox-spring/src/main/java/com/gruelbox/transactionoutbox/SpringTransactionManager.java b/transactionoutbox-spring/src/main/java/com/gruelbox/transactionoutbox/SpringTransactionManager.java index cebec440..93293867 100644 --- a/transactionoutbox-spring/src/main/java/com/gruelbox/transactionoutbox/SpringTransactionManager.java +++ b/transactionoutbox-spring/src/main/java/com/gruelbox/transactionoutbox/SpringTransactionManager.java @@ -39,6 +39,11 @@ public T inTransactionReturnsThrows( @Override public T requireTransactionReturns( ThrowingTransactionalSupplier work) throws E, NoTransactionActiveException { + + if (!TransactionSynchronizationManager.isActualTransactionActive()) { + throw new NoTransactionActiveException(); + } + return work.doWork(transactionInstance); } @@ -46,15 +51,7 @@ private final class SpringTransaction implements Transaction { @Override public Connection connection() { - try { - if (!TransactionSynchronizationManager.isActualTransactionActive()) { - throw new RuntimeException("No spring transaction is active."); - } - - return DataSourceUtils.getConnection(dataSource); - } catch (RuntimeException e) { - throw new NoTransactionActiveException(e); - } + return DataSourceUtils.getConnection(dataSource); } @Override From ef6dd8dae52bc059962d6761fd3bb6da22cdd119 Mon Sep 17 00:00:00 2001 From: Tim Gage Date: Sat, 20 Jun 2020 16:33:32 +0100 Subject: [PATCH 3/6] Switch spring dependencies to "provided" scope and test dependencies to "test" scope. --- transactionoutbox-spring/pom.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/transactionoutbox-spring/pom.xml b/transactionoutbox-spring/pom.xml index 0f0c339e..2fdf390f 100644 --- a/transactionoutbox-spring/pom.xml +++ b/transactionoutbox-spring/pom.xml @@ -32,11 +32,13 @@ org.springframework spring-tx ${spring.version} + provided org.springframework spring-jdbc ${spring.version} + provided javax.inject @@ -47,6 +49,7 @@ org.springframework spring-context ${spring.version} + provided @@ -59,18 +62,22 @@ ch.qos.logback logback-classic + test ch.qos.logback logback-core + test com.h2database h2 + test com.zaxxer HikariCP + test org.springframework.boot @@ -93,14 +100,17 @@ org.junit.jupiter junit-jupiter-engine + test org.junit.jupiter junit-jupiter-api + test org.junit.jupiter junit-jupiter-params + test From 3c79e30ece35ccaaea517c78d9d4bfafd8315ec9 Mon Sep 17 00:00:00 2001 From: Tim Gage Date: Sat, 20 Jun 2020 16:45:06 +0100 Subject: [PATCH 4/6] Remove duplicate jdbc dependency. --- transactionoutbox-spring/pom.xml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/transactionoutbox-spring/pom.xml b/transactionoutbox-spring/pom.xml index 25a2961f..4c8f8e0a 100644 --- a/transactionoutbox-spring/pom.xml +++ b/transactionoutbox-spring/pom.xml @@ -40,11 +40,6 @@ ${spring.version} provided - - org.springframework - spring-jdbc - ${spring.version} - javax.inject javax.inject From d856351559dbb4e8a3d4a4d6e1ce918adc3fd021 Mon Sep 17 00:00:00 2001 From: Graham Crockford <6483013+badgerwithagun@users.noreply.github.com> Date: Tue, 2 Mar 2021 11:26:37 +0000 Subject: [PATCH 5/6] Remove duplicated test scope directives --- transactionoutbox-spring/pom.xml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/transactionoutbox-spring/pom.xml b/transactionoutbox-spring/pom.xml index 4c8f8e0a..0f4fe1de 100644 --- a/transactionoutbox-spring/pom.xml +++ b/transactionoutbox-spring/pom.xml @@ -62,22 +62,18 @@ ch.qos.logback logback-classic - test ch.qos.logback logback-core - test com.h2database h2 - test com.zaxxer HikariCP - test org.springframework.boot @@ -100,17 +96,14 @@ org.junit.jupiter junit-jupiter-engine - test org.junit.jupiter junit-jupiter-api - test org.junit.jupiter junit-jupiter-params - test From 77d13b0a1e1ff19000eefdd710a92f54aa0c68a7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 13 Jan 2022 15:56:28 +0000 Subject: [PATCH 6/6] Bump maven-jar-plugin from 3.2.1 to 3.2.2 Bumps [maven-jar-plugin](https://github.com/apache/maven-jar-plugin) from 3.2.1 to 3.2.2. - [Release notes](https://github.com/apache/maven-jar-plugin/releases) - [Commits](https://github.com/apache/maven-jar-plugin/compare/maven-jar-plugin-3.2.1...maven-jar-plugin-3.2.2) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-jar-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1ae93a6c..acf59a96 100644 --- a/pom.xml +++ b/pom.xml @@ -199,7 +199,7 @@ org.apache.maven.plugins maven-jar-plugin - 3.2.1 + 3.2.2 org.apache.maven.plugins