From 6b730729828593f5bc50fca443746d2a434a44b8 Mon Sep 17 00:00:00 2001 From: Rob Bygrave Date: Wed, 7 Sep 2022 12:48:45 +1200 Subject: [PATCH] Make SpringJdbcTransactionManager final, SpringJdbcTransaction not public --- .../spring/txn/SpringJdbcTransaction.java | 12 ++--- .../txn/SpringJdbcTransactionManager.java | 48 ++++++------------- 2 files changed, 17 insertions(+), 43 deletions(-) diff --git a/src/main/java/io/ebean/spring/txn/SpringJdbcTransaction.java b/src/main/java/io/ebean/spring/txn/SpringJdbcTransaction.java index f86433b53..7ef394b45 100644 --- a/src/main/java/io/ebean/spring/txn/SpringJdbcTransaction.java +++ b/src/main/java/io/ebean/spring/txn/SpringJdbcTransaction.java @@ -17,19 +17,17 @@ * along with Ebean; if not, write to the Free Software Foundation, Inc., * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ - package io.ebean.spring.txn; -import org.springframework.jdbc.datasource.ConnectionHolder; - import io.ebeaninternal.server.transaction.ExternalJdbcTransaction; import io.ebeaninternal.server.transaction.TransactionManager; +import org.springframework.jdbc.datasource.ConnectionHolder; -public class SpringJdbcTransaction extends ExternalJdbcTransaction { +final class SpringJdbcTransaction extends ExternalJdbcTransaction { private final ConnectionHolder holder; - public SpringJdbcTransaction(ConnectionHolder holder, TransactionManager manager) { + SpringJdbcTransaction(ConnectionHolder holder, TransactionManager manager) { super("s" + holder.hashCode(), true, holder.getConnection(), manager); this.holder = holder; } @@ -38,8 +36,4 @@ public class SpringJdbcTransaction extends ExternalJdbcTransaction { public boolean isActive() { return holder.isSynchronizedWithTransaction(); } - - public ConnectionHolder getConnectionHolder() { - return holder; - } } diff --git a/src/main/java/io/ebean/spring/txn/SpringJdbcTransactionManager.java b/src/main/java/io/ebean/spring/txn/SpringJdbcTransactionManager.java index cb478ce16..3dc6f0377 100644 --- a/src/main/java/io/ebean/spring/txn/SpringJdbcTransactionManager.java +++ b/src/main/java/io/ebean/spring/txn/SpringJdbcTransactionManager.java @@ -20,23 +20,15 @@ import static java.lang.System.Logger.Level.DEBUG; * A Spring-aware {@link ExternalTransactionManager}. *

* Will look for Spring transactions and use them if they exist. - *

* * @since 18.05.2009 * @author E Mc Greal */ -public class SpringJdbcTransactionManager implements ExternalTransactionManager { +public final class SpringJdbcTransactionManager implements ExternalTransactionManager { private static final System.Logger log = AppLog.getLogger(SpringJdbcTransactionManager.class); - /** - * The data source. - */ private DataSource dataSource; - - /** - * The Ebean transaction manager. - */ private TransactionManager transactionManager; /** @@ -59,8 +51,7 @@ public class SpringJdbcTransactionManager implements ExternalTransactionManager /** * Looks for a current Spring managed transaction and wraps/returns that as a Ebean transaction. *

- * Returns null if there is no current spring transaction (lazy loading outside a spring txn etc). - *

+ * Returns null if there is no current spring transaction (lazy loading outside a spring txn). */ @Override public Object getCurrentTransaction() { @@ -76,17 +67,17 @@ public class SpringJdbcTransactionManager implements ExternalTransactionManager } } - SpringTxnListener springTxnLister = getSpringTxnListener(); + SpringTxnListener springTxnLister = listener(); if (springTxnLister != null) { // we have already seen this transaction - return springTxnLister.getTransaction(); + return springTxnLister.transaction(); } else { // This is a new spring transaction that we have not seen before. // "wrap" it in a SpringJdbcTransaction for use with Ebean SpringJdbcTransaction newTrans = new SpringJdbcTransaction(holder, transactionManager); // Create and register a Spring TransactionSynchronization for this transaction - springTxnLister = createSpringTxnListener(newTrans); + springTxnLister = createListener(newTrans); TransactionSynchronizationManager.registerSynchronization(springTxnLister); return transactionManager.externalBeginTransaction(newTrans, TxScope.required()); } @@ -96,9 +87,8 @@ public class SpringJdbcTransactionManager implements ExternalTransactionManager * Search for our specific transaction listener. *

* If it exists then we have already seen and "wrapped" this transaction. - *

*/ - private SpringTxnListener getSpringTxnListener() { + private SpringTxnListener listener() { if (TransactionSynchronizationManager.isSynchronizationActive()) { List synchronizations = TransactionSynchronizationManager.getSynchronizations(); if (synchronizations != null) { @@ -114,25 +104,18 @@ public class SpringJdbcTransactionManager implements ExternalTransactionManager } /** - * Create a listener to register with Spring to enable Ebean to be - * notified when transactions commit and rollback. - *

- * This is used by Ebean to notify it's appropriate listeners and maintain it's server - * cache etc. - *

+ * Create a listener to enable Ebean to be notified when transactions commit and rollback. */ - private SpringTxnListener createSpringTxnListener(SpringJdbcTransaction t) { - return new SpringTxnListener(transactionManager, t); + private SpringTxnListener createListener(SpringJdbcTransaction transaction) { + return new SpringTxnListener(transactionManager, transaction); } /** - * A Spring TransactionSynchronization that we register with Spring to get - * notified when a Spring managed transaction has been committed or rolled - * back. + * A Spring TransactionSynchronization that we register with Spring to get notified when + * a Spring managed transaction has been committed or rolled back. *

- * When Ebean is notified (of the commit/rollback) it can then manage its - * cache, notify BeanPersistListeners etc. - *

+ * When Ebean is notified (of the commit/rollback) it can then manage its cache, notify + * BeanPersistListeners etc. */ private static class SpringTxnListener extends TransactionSynchronizationAdapter { @@ -145,10 +128,7 @@ public class SpringJdbcTransactionManager implements ExternalTransactionManager this.transaction = t; } - /** - * Return the associated Ebean wrapped transaction. - */ - SpringJdbcTransaction getTransaction() { + private SpringJdbcTransaction transaction() { return transaction; }