From f3b0e34b673c15feb5ca0c83ea5d665f5c5e3ca1 Mon Sep 17 00:00:00 2001 From: rbygrave Date: Mon, 16 Aug 2021 09:16:31 +1200 Subject: [PATCH] #2315 - Refactor internals - make more classes final in transaction packages --- .../properties/BeanPropertiesReader.java | 3 +- .../server/transaction/BeanPersistIds.java | 4 +- .../transaction/BulkEventListenerMap.java | 6 +- .../transaction/DefaultProfileHandler.java | 2 +- .../transaction/DefaultProfileStream.java | 2 +- .../DefaultTransactionScopeManager.java | 11 +- .../transaction/DocStoreOnlyTransaction.java | 2 +- .../DocStoreTransactionManager.java | 2 +- .../ExternalTransactionScopeManager.java | 2 +- .../ImplicitReadOnlyTransaction.java | 2 +- .../server/transaction/JdbcTransaction.java | 169 +++++++++--------- .../server/transaction/JtaTransaction.java | 2 +- .../transaction/JtaTransactionManager.java | 2 +- .../server/transaction/NoTransaction.java | 4 +- .../transaction/NoopProfileHandler.java | 2 +- .../server/transaction/RemoteTableMod.java | 2 +- .../transaction/RemoteTransactionEvent.java | 2 +- .../transaction/SavepointTransaction.java | 2 +- .../server/transaction/TChangeLogHolder.java | 2 +- .../server/transaction/TableModState.java | 2 +- .../transaction/TransactionFactory.java | 5 +- .../transaction/TransactionFactoryBasic.java | 3 +- .../TransactionFactoryBasicWithRead.java | 5 +- .../TransactionFactoryBuilder.java | 2 +- .../transaction/TransactionFactoryTenant.java | 3 +- .../TransactionFactoryTenantWithRead.java | 5 +- .../transaction/TransactionManager.java | 90 +++++----- .../TransactionManagerOptions.java | 2 +- .../transaction/TransactionProfile.java | 2 +- 29 files changed, 161 insertions(+), 181 deletions(-) diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/properties/BeanPropertiesReader.java b/ebean-core/src/main/java/io/ebeaninternal/server/properties/BeanPropertiesReader.java index e00fdf497..a283a42ea 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/properties/BeanPropertiesReader.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/properties/BeanPropertiesReader.java @@ -8,10 +8,9 @@ import java.util.Map; /** * Determines the properties on a given bean. */ -public class BeanPropertiesReader { +public final class BeanPropertiesReader { private final Map propertyIndexMap = new HashMap<>(); - private final String[] props; public BeanPropertiesReader(Class clazz) { diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/BeanPersistIds.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/BeanPersistIds.java index bb1690bfe..280f3c28f 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/BeanPersistIds.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/BeanPersistIds.java @@ -28,12 +28,10 @@ import java.util.List; * size of data sent around the network. *

*/ -public class BeanPersistIds implements BinaryWritable { +public final class BeanPersistIds implements BinaryWritable { private final BeanDescriptor beanDescriptor; - private final String descriptorId; - /** * The ids to invalidate from the cache (updates and deletes). */ diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/BulkEventListenerMap.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/BulkEventListenerMap.java index 86a6428b7..bcc91909f 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/BulkEventListenerMap.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/BulkEventListenerMap.java @@ -8,12 +8,11 @@ import java.util.HashMap; import java.util.List; import java.util.Set; -public class BulkEventListenerMap { +public final class BulkEventListenerMap { private final HashMap map = new HashMap<>(); public BulkEventListenerMap(List listeners) { - if (listeners != null) { for (BulkTableEventListener l : listeners) { Set tables = l.registeredTables(); @@ -29,7 +28,6 @@ public class BulkEventListenerMap { } public void process(BulkTableEvent event) { - Entry entry = map.get(event.getTableName()); if (entry != null) { entry.process(event); @@ -42,7 +40,7 @@ public class BulkEventListenerMap { entry.add(l); } - private static class Entry { + private static final class Entry { final List listeners = new ArrayList<>(); diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DefaultProfileHandler.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DefaultProfileHandler.java index 38f5446d2..177e4bc15 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DefaultProfileHandler.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DefaultProfileHandler.java @@ -38,7 +38,7 @@ import static java.time.temporal.ChronoField.YEAR; *

* Uses a sleep backoff on the single threaded consumer that reads the profiles and writes them to files. */ -public class DefaultProfileHandler implements SpiProfileHandler, Plugin { +public final class DefaultProfileHandler implements SpiProfileHandler, Plugin { private static final Logger log = LoggerFactory.getLogger(DefaultProfileHandler.class); diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DefaultProfileStream.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DefaultProfileStream.java index bc2913137..38c38e3d5 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DefaultProfileStream.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DefaultProfileStream.java @@ -5,7 +5,7 @@ import io.ebean.ProfileLocation; /** * Default transaction profiling event collection. */ -public class DefaultProfileStream implements ProfileStream { +public final class DefaultProfileStream implements ProfileStream { private final long startNanos; private final StringBuilder buffer; diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DefaultTransactionScopeManager.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DefaultTransactionScopeManager.java index 0cabba365..2ad93d490 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DefaultTransactionScopeManager.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DefaultTransactionScopeManager.java @@ -9,7 +9,6 @@ import javax.persistence.PersistenceException; */ public class DefaultTransactionScopeManager extends TransactionScopeManager { - private final ThreadLocal local = new ThreadLocal<>(); @Override @@ -18,7 +17,7 @@ public class DefaultTransactionScopeManager extends TransactionScopeManager { } @Override - public SpiTransaction getInScope() { + public final SpiTransaction getInScope() { return local.get(); } @@ -33,7 +32,7 @@ public class DefaultTransactionScopeManager extends TransactionScopeManager { } @Override - public void replace(SpiTransaction trans) { + public final void replace(SpiTransaction trans) { if (trans == null) { throw new IllegalStateException("Setting a null transaction?"); } @@ -41,7 +40,7 @@ public class DefaultTransactionScopeManager extends TransactionScopeManager { } @Override - public void set(SpiTransaction trans) { + public final void set(SpiTransaction trans) { if (trans == null) { throw new IllegalStateException("Setting a null transaction?"); } @@ -50,13 +49,13 @@ public class DefaultTransactionScopeManager extends TransactionScopeManager { } @Override - public void clear() { + public final void clear() { checkForActiveTransaction(); local.remove(); } @Override - public void clearExternal() { + public final void clearExternal() { local.remove(); } diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DocStoreOnlyTransaction.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DocStoreOnlyTransaction.java index 43fb216a5..0165fb1e8 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DocStoreOnlyTransaction.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DocStoreOnlyTransaction.java @@ -5,7 +5,7 @@ import java.sql.Connection; /** * Document store only transaction. */ -public class DocStoreOnlyTransaction extends JdbcTransaction { +public final class DocStoreOnlyTransaction extends JdbcTransaction { /** * Create a new DocStore only Transaction. diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DocStoreTransactionManager.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DocStoreTransactionManager.java index 364e46841..d23476c25 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DocStoreTransactionManager.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/DocStoreTransactionManager.java @@ -9,7 +9,7 @@ import java.sql.Connection; *

* There is no underlying JDBC DataSource etc */ -public class DocStoreTransactionManager extends TransactionManager { +public final class DocStoreTransactionManager extends TransactionManager { /** * Create the TransactionManager diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/ExternalTransactionScopeManager.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/ExternalTransactionScopeManager.java index b033e277b..6922e2129 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/ExternalTransactionScopeManager.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/ExternalTransactionScopeManager.java @@ -6,7 +6,7 @@ import io.ebeaninternal.api.SpiTransaction; /** * A TransactionScopeManager aware of external transaction managers. */ -public class ExternalTransactionScopeManager extends DefaultTransactionScopeManager { +public final class ExternalTransactionScopeManager extends DefaultTransactionScopeManager { private final ExternalTransactionManager externalManager; diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/ImplicitReadOnlyTransaction.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/ImplicitReadOnlyTransaction.java index e4e36e337..cbb4f7618 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/ImplicitReadOnlyTransaction.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/ImplicitReadOnlyTransaction.java @@ -27,7 +27,7 @@ import java.util.Map; * persisting features are attempted to be used - which is not expected). *

*/ -class ImplicitReadOnlyTransaction implements SpiTransaction, TxnProfileEventCodes { +final class ImplicitReadOnlyTransaction implements SpiTransaction, TxnProfileEventCodes { private static final Logger logger = LoggerFactory.getLogger(ImplicitReadOnlyTransaction.class); diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/JdbcTransaction.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/JdbcTransaction.java index f61f03699..d271d1c04 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/JdbcTransaction.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/JdbcTransaction.java @@ -219,56 +219,56 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void setLabel(String label) { + public final void setLabel(String label) { this.label = label; } @Override - public String getLabel() { + public final String getLabel() { return label; } @Override - public long getStartNanoTime() { + public final long getStartNanoTime() { return startNanos; } @Override - public long profileOffset() { + public final long profileOffset() { return (profileStream == null) ? 0 : profileStream.offset(); } @Override - public void profileEvent(SpiProfileTransactionEvent event) { + public final void profileEvent(SpiProfileTransactionEvent event) { if (profileStream != null) { event.profile(); } } @Override - public void setProfileStream(ProfileStream profileStream) { + public final void setProfileStream(ProfileStream profileStream) { this.profileStream = profileStream; } @Override - public ProfileStream profileStream() { + public final ProfileStream profileStream() { return profileStream; } @Override - public void setProfileLocation(ProfileLocation profileLocation) { + public final void setProfileLocation(ProfileLocation profileLocation) { this.profileLocation = profileLocation; } @Override - public ProfileLocation getProfileLocation() { + public final ProfileLocation getProfileLocation() { return profileLocation; } /** * Overridden in AutoCommitJdbcTransaction as that expects to run/operate with autocommit true. */ - void checkAutoCommit(Connection connection) throws SQLException { + final void checkAutoCommit(Connection connection) throws SQLException { if (connection != null) { this.autoCommit = connection.getAutoCommit(); if (this.autoCommit) { @@ -289,34 +289,34 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void setAutoPersistUpdates(boolean autoPersistUpdates) { + public final void setAutoPersistUpdates(boolean autoPersistUpdates) { this.autoPersistUpdates = autoPersistUpdates; this.batchMode = true; } @Override - public boolean isAutoPersistUpdates() { + public final boolean isAutoPersistUpdates() { return autoPersistUpdates; } @Override - public boolean isSkipCacheExplicit() { + public final boolean isSkipCacheExplicit() { return (skipCache != null && !skipCache); } @Override - public boolean isSkipCache() { + public final boolean isSkipCache() { if (skipCache != null) return skipCache; return skipCacheAfterWrite && !queryOnly; } @Override - public void setSkipCache(boolean skipCache) { + public final void setSkipCache(boolean skipCache) { this.skipCache = skipCache; } @Override - public String getLogPrefix() { + public final String getLogPrefix() { return logPrefix; } @@ -330,7 +330,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void addBeanChange(BeanChange beanChange) { + public final void addBeanChange(BeanChange beanChange) { if (changeLogHolder == null) { changeLogHolder = new TChangeLogHolder(this, 100); } @@ -338,14 +338,14 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void sendChangeLog(ChangeSet changesRequest) { + public final void sendChangeLog(ChangeSet changesRequest) { if (manager != null) { manager.sendChangeLog(changesRequest); } } @Override - public void register(TransactionCallback callback) { + public final void register(TransactionCallback callback) { if (callbackList == null) { callbackList = new ArrayList<>(4); } @@ -391,27 +391,27 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public int getDocStoreBatchSize() { + public final int getDocStoreBatchSize() { return docStoreBatchSize; } @Override - public void setDocStoreBatchSize(int docStoreBatchSize) { + public final void setDocStoreBatchSize(int docStoreBatchSize) { this.docStoreBatchSize = docStoreBatchSize; } @Override - public DocStoreMode getDocStoreMode() { + public final DocStoreMode getDocStoreMode() { return docStoreMode; } @Override - public void setDocStoreMode(DocStoreMode docStoreMode) { + public final void setDocStoreMode(DocStoreMode docStoreMode) { this.docStoreMode = docStoreMode; } @Override - public void registerDeferred(PersistDeferredRelationship derived) { + public final void registerDeferred(PersistDeferredRelationship derived) { if (deferredList == null) { deferredList = new ArrayList<>(); } @@ -425,7 +425,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { *

*/ @Override - public void registerDeleteBean(Integer persistingBean) { + public final void registerDeleteBean(Integer persistingBean) { if (deletingBeansHash == null) { deletingBeansHash = new HashSet<>(); } @@ -436,7 +436,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { * Return true if this is a bean that has already been saved/deleted. */ @Override - public boolean isRegisteredDeleteBean(Integer persistingBean) { + public final boolean isRegisteredDeleteBean(Integer persistingBean) { return deletingBeansHash != null && deletingBeansHash.contains(persistingBean); } @@ -444,7 +444,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { * Unregister the persisted beans (when persisting at the top level). */ @Override - public void unregisterBeans() { + public final void unregisterBeans() { persistingBeans.clear(); } @@ -453,7 +453,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { * register the bean if it is not already. */ @Override - public boolean isRegisteredBean(Object bean) { + public final boolean isRegisteredBean(Object bean) { if (persistingBeans == null) { persistingBeans = new IdentityHashMap<>(); } @@ -465,7 +465,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { * This is to stop m2m intersection management via both directions of a m2m. */ @Override - public boolean isSaveAssocManyIntersection(String intersectionTable, String beanName) { + public final boolean isSaveAssocManyIntersection(String intersectionTable, String beanName) { if (m2mIntersectionSave == null) { // first attempt so yes allow this m2m intersection direction m2mIntersectionSave = new HashMap<>(); @@ -500,7 +500,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { * @param diff the amount to add or subtract from the depth. */ @Override - public void depth(int diff) { + public final void depth(int diff) { depth += diff; } @@ -508,12 +508,12 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { * Return the current depth. */ @Override - public int depth() { + public final int depth() { return depth; } @Override - public void markNotQueryOnly() { + public final void markNotQueryOnly() { this.queryOnly = false; } @@ -543,17 +543,17 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void setUpdateAllLoadedProperties(boolean updateAllLoadedProperties) { + public final void setUpdateAllLoadedProperties(boolean updateAllLoadedProperties) { this.updateAllLoadedProperties = updateAllLoadedProperties; } @Override - public Boolean isUpdateAllLoadedProperties() { + public final Boolean isUpdateAllLoadedProperties() { return updateAllLoadedProperties; } @Override - public void setBatchMode(boolean batchMode) { + public final void setBatchMode(boolean batchMode) { if (!isActive()) { throw new IllegalStateException(illegalStateMessage); } @@ -561,12 +561,12 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public boolean isBatchMode() { + public final boolean isBatchMode() { return batchMode; } @Override - public void setBatchOnCascade(boolean batchMode) { + public final void setBatchOnCascade(boolean batchMode) { if (!isActive()) { throw new IllegalStateException(illegalStateMessage); } @@ -574,17 +574,17 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public boolean isBatchOnCascade() { + public final boolean isBatchOnCascade() { return batchOnCascadeMode; } @Override - public Boolean getBatchGetGeneratedKeys() { + public final Boolean getBatchGetGeneratedKeys() { return batchGetGeneratedKeys; } @Override - public void setGetGeneratedKeys(boolean getGeneratedKeys) { + public final void setGetGeneratedKeys(boolean getGeneratedKeys) { this.batchGetGeneratedKeys = getGeneratedKeys; if (batchControl != null) { batchControl.setGetGeneratedKeys(getGeneratedKeys); @@ -592,7 +592,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void setFlushOnMixed(boolean batchFlushOnMixed) { + public final void setFlushOnMixed(boolean batchFlushOnMixed) { this.batchFlushOnMixed = batchFlushOnMixed; if (batchControl != null) { batchControl.setBatchFlushOnMixed(batchFlushOnMixed); @@ -606,12 +606,12 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { *

*/ @Override - public int getBatchSize() { + public final int getBatchSize() { return batchSize; } @Override - public void setBatchSize(int batchSize) { + public final void setBatchSize(int batchSize) { this.batchSize = batchSize; if (batchControl != null) { batchControl.setBatchSize(batchSize); @@ -619,12 +619,12 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public boolean isFlushOnQuery() { + public final boolean isFlushOnQuery() { return batchFlushOnQuery; } @Override - public void setFlushOnQuery(boolean batchFlushOnQuery) { + public final void setFlushOnQuery(boolean batchFlushOnQuery) { this.batchFlushOnQuery = batchFlushOnQuery; } @@ -633,12 +633,12 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { * this request should be executed immediately. */ @Override - public boolean isBatchThisRequest() { + public final boolean isBatchThisRequest() { return batchMode; } @Override - public void checkBatchEscalationOnCollection() { + public final void checkBatchEscalationOnCollection() { if (!batchMode && batchOnCascadeMode) { batchMode = true; batchOnCascadeSet = true; @@ -646,7 +646,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void flushBatchOnCollection() { + public final void flushBatchOnCollection() { if (batchOnCascadeSet) { batchFlushReset(); // restore the previous batch mode of NONE @@ -675,7 +675,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public PersistenceException translate(String message, SQLException cause) { + public final PersistenceException translate(String message, SQLException cause) { if (manager != null) { return manager.translate(message, cause); } @@ -686,14 +686,14 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { * Flush after completing persist cascade. */ @Override - public void flushBatchOnCascade() { + public final void flushBatchOnCascade() { batchFlushReset(); // restore the previous batch mode batchMode = oldBatchMode; } @Override - public void flushBatchOnRollback() { + public final void flushBatchOnRollback() { internalBatchClear(); // restore the previous batch mode batchMode = oldBatchMode; @@ -709,13 +709,11 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public boolean checkBatchEscalationOnCascade(PersistRequestBean request) { - + public final boolean checkBatchEscalationOnCascade(PersistRequestBean request) { if (batchMode) { // already batching (at top level) return false; } - if (batchOnCascadeMode) { // escalate up to batch mode for this request (and cascade) oldBatchMode = false; @@ -725,13 +723,12 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { request.setSkipBatchForTopLevel(); return true; } - batchFlushReset(); return false; } @Override - public BatchControl getBatchControl() { + public final BatchControl getBatchControl() { return batchControl; } @@ -740,7 +737,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { * on the first persist request. */ @Override - public void setBatchControl(BatchControl batchControl) { + public final void setBatchControl(BatchControl batchControl) { queryOnly = false; this.batchControl = batchControl; // in case these parameters have already been set @@ -763,7 +760,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { *

*/ @Override - public void flush() { + public final void flush() { if (!isActive()) { throw new IllegalStateException(illegalStateMessage); } @@ -771,7 +768,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void flushBatch() { + public final void flushBatch() { flush(); } @@ -797,7 +794,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { * Return the persistence context associated with this transaction. */ @Override - public SpiPersistenceContext getPersistenceContext() { + public final SpiPersistenceContext getPersistenceContext() { return persistenceContext; } @@ -809,7 +806,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { * then set it back later to a second transaction. */ @Override - public void setPersistenceContext(SpiPersistenceContext context) { + public final void setPersistenceContext(SpiPersistenceContext context) { if (!isActive()) { throw new IllegalStateException(illegalStateMessage); } @@ -820,7 +817,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { * Return the underlying TransactionEvent. */ @Override - public TransactionEvent getEvent() { + public final TransactionEvent getEvent() { queryOnly = false; if (event == null) { event = new TransactionEvent(); @@ -832,27 +829,27 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { * Return true if this was an explicitly created transaction. */ @Override - public boolean isExplicit() { + public final boolean isExplicit() { return explicit; } @Override - public boolean isLogSql() { + public final boolean isLogSql() { return logSql; } @Override - public boolean isLogSummary() { + public final boolean isLogSummary() { return logSummary; } @Override - public void logSql(String msg) { + public final void logSql(String msg) { manager.log().sql().debug(Str.add(logPrefix, msg)); } @Override - public void logSummary(String msg) { + public final void logSummary(String msg) { manager.log().sum().debug(Str.add(logPrefix, msg)); } @@ -860,17 +857,17 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { * Return the transaction id. */ @Override - public String getId() { + public final String getId() { return id; } @Override - public void setTenantId(Object tenantId) { + public final void setTenantId(Object tenantId) { this.tenantId = tenantId; } @Override - public Object getTenantId() { + public final Object getTenantId() { return tenantId; } @@ -926,7 +923,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { /** * Notify the transaction manager. */ - void notifyCommit() { + final void notifyCommit() { if (manager != null) { if (queryOnly) { manager.notifyOfQueryOnly(this); @@ -1000,13 +997,13 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void postCommit() { + public final void postCommit() { firePostCommit(); notifyCommit(); } @Override - public void preCommit() { + public final void preCommit() { internalBatchFlush(); firePreCommit(); } @@ -1081,7 +1078,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { /** * Notify the transaction manager. */ - void notifyRollback(Throwable cause) { + final void notifyRollback(Throwable cause) { if (manager != null) { if (queryOnly) { manager.notifyOfQueryOnly(this); @@ -1095,7 +1092,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { * Return true if the transaction is marked as rollback only. */ @Override - public boolean isRollbackOnly() { + public final boolean isRollbackOnly() { return rollbackOnly; } @@ -1103,17 +1100,17 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { * Mark the transaction as rollback only. */ @Override - public void setRollbackOnly() { + public final void setRollbackOnly() { this.rollbackOnly = true; } @Override - public boolean isNestedUseSavepoint() { + public final boolean isNestedUseSavepoint() { return nestedUseSavepoint; } @Override - public void setNestedUseSavepoint() { + public final void setNestedUseSavepoint() { this.nestedUseSavepoint = true; } @@ -1159,7 +1156,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void postRollback(Throwable cause) { + public final void postRollback(Throwable cause) { firePostRollback(); notifyRollback(cause); } @@ -1183,22 +1180,22 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public boolean isPersistCascade() { + public final boolean isPersistCascade() { return persistCascade; } @Override - public void setPersistCascade(boolean persistCascade) { + public final void setPersistCascade(boolean persistCascade) { this.persistCascade = persistCascade; } @Override - public void addModification(String tableName, boolean inserts, boolean updates, boolean deletes) { + public final void addModification(String tableName, boolean inserts, boolean updates, boolean deletes) { getEvent().add(tableName, inserts, updates, deletes); } @Override - public DocStoreTransaction getDocStoreTransaction() { + public final DocStoreTransaction getDocStoreTransaction() { if (docStoreTxn == null) { queryOnly = false; docStoreTxn = manager.createDocStoreTransaction(docStoreBatchSize); @@ -1207,7 +1204,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public void putUserObject(String name, Object value) { + public final void putUserObject(String name, Object value) { if (userObjects == null) { userObjects = new HashMap<>(); } @@ -1215,7 +1212,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { } @Override - public Object getUserObject(String name) { + public final Object getUserObject(String name) { if (userObjects == null) { return null; } @@ -1226,7 +1223,7 @@ class JdbcTransaction implements SpiTransaction, TxnProfileEventCodes { * Alias for end(), which enables this class to be used in try-with-resources. */ @Override - public void close() { + public final void close() { end(); } } diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/JtaTransaction.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/JtaTransaction.java index e0c33a193..cfd76c581 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/JtaTransaction.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/JtaTransaction.java @@ -9,7 +9,7 @@ import java.sql.SQLException; /** * Jta based transaction. */ -public class JtaTransaction extends JdbcTransaction { +public final class JtaTransaction extends JdbcTransaction { private final UserTransaction userTransaction; diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/JtaTransactionManager.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/JtaTransactionManager.java index cc9e8cdc8..2168a287b 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/JtaTransactionManager.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/JtaTransactionManager.java @@ -18,7 +18,7 @@ import javax.transaction.UserTransaction; /** * Hook into external JTA transaction manager. */ -public class JtaTransactionManager implements ExternalTransactionManager { +public final class JtaTransactionManager implements ExternalTransactionManager { private static final Logger logger = LoggerFactory.getLogger(JtaTransactionManager.class); diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/NoTransaction.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/NoTransaction.java index d435e93fd..0ed17e94f 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/NoTransaction.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/NoTransaction.java @@ -19,9 +19,9 @@ import java.sql.Connection; import java.sql.SQLException; /** - * Place holder for use with SUPPORTS and NEVER transactional when there really isn't a transaction. + * Placeholder for use with SUPPORTS and NEVER transactional when there really isn't a transaction. */ -class NoTransaction implements SpiTransaction { +final class NoTransaction implements SpiTransaction { static final NoTransaction INSTANCE = new NoTransaction(); diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/NoopProfileHandler.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/NoopProfileHandler.java index 636ad7c6a..a994987c5 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/NoopProfileHandler.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/NoopProfileHandler.java @@ -6,7 +6,7 @@ import io.ebeaninternal.api.SpiProfileHandler; /** * A do nothing SpiProfileHandler. */ -public class NoopProfileHandler implements SpiProfileHandler { +public final class NoopProfileHandler implements SpiProfileHandler { @Override public void collectTransactionProfile(TransactionProfile transactionProfile) { diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/RemoteTableMod.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/RemoteTableMod.java index f963aad71..a3b97ec2a 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/RemoteTableMod.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/RemoteTableMod.java @@ -9,7 +9,7 @@ import java.io.IOException; import java.util.LinkedHashSet; import java.util.Set; -public class RemoteTableMod implements BinaryWritable { +public final class RemoteTableMod implements BinaryWritable { private final long timestamp; diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/RemoteTransactionEvent.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/RemoteTransactionEvent.java index 50480c043..8a9041eef 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/RemoteTransactionEvent.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/RemoteTransactionEvent.java @@ -14,7 +14,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; -public class RemoteTransactionEvent implements Runnable, BinaryWritable { +public final class RemoteTransactionEvent implements Runnable, BinaryWritable { private final List beanPersistList = new ArrayList<>(); diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/SavepointTransaction.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/SavepointTransaction.java index dafaa05b5..aa4bc978e 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/SavepointTransaction.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/SavepointTransaction.java @@ -12,7 +12,7 @@ import java.sql.Savepoint; /** * A nested transaction that represents a Savepoint. */ -class SavepointTransaction extends SpiTransactionProxy { +final class SavepointTransaction extends SpiTransactionProxy { private static final int STATE_COMMITTED = 1; private static final int STATE_ROLLED_BACK = 2; diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TChangeLogHolder.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TChangeLogHolder.java index 961247bd9..b2a7269d0 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TChangeLogHolder.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TChangeLogHolder.java @@ -11,7 +11,7 @@ import java.util.UUID; * Holder of the changes handling the case when we send the changes * prior to commit or rollback as we hit the allowed 'batch size'. */ -public class TChangeLogHolder { +public final class TChangeLogHolder { /** * The owning transaction. diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TableModState.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TableModState.java index e16fa6d81..d3793a8e4 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TableModState.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TableModState.java @@ -17,7 +17,7 @@ import java.util.concurrent.ConcurrentHashMap; * This information is used to validate entries in the L2 query caches. *

*/ -public class TableModState implements QueryCacheEntryValidate, ServerCacheNotify { +public final class TableModState implements QueryCacheEntryValidate, ServerCacheNotify { private static final Logger log = LoggerFactory.getLogger("io.ebean.cache.TABLEMOD"); diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactory.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactory.java index 9a8684982..687741654 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactory.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactory.java @@ -33,8 +33,7 @@ abstract class TransactionFactory { /** * Set the Transaction Isolation level if required. */ - SpiTransaction setIsolationLevel(SpiTransaction t, boolean explicit, int isolationLevel) { - + final SpiTransaction setIsolationLevel(SpiTransaction t, boolean explicit, int isolationLevel) { if (isolationLevel > -1) { Connection connection = t.getConnection(); try { @@ -44,11 +43,9 @@ abstract class TransactionFactory { throw new PersistenceException(e); } } - if (explicit && manager.log().txn().isTrace()) { manager.log().txn().trace(t.getLogPrefix() + "Begin"); } - return t; } } diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactoryBasic.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactoryBasic.java index 1fd2f9e69..a190cf64e 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactoryBasic.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactoryBasic.java @@ -22,7 +22,6 @@ class TransactionFactoryBasic extends TransactionFactory { @Override public SpiTransaction createReadOnlyTransaction(Object tenantId) { - Connection connection = null; try { connection = dataSource.getConnection(); @@ -37,7 +36,7 @@ class TransactionFactoryBasic extends TransactionFactory { } @Override - public SpiTransaction createTransaction(boolean explicit, int isolationLevel) { + public final SpiTransaction createTransaction(boolean explicit, int isolationLevel) { Connection connection = null; try { connection = dataSource.getConnection(); diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactoryBasicWithRead.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactoryBasicWithRead.java index c942ed31e..d84361480 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactoryBasicWithRead.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactoryBasicWithRead.java @@ -16,7 +16,7 @@ import java.sql.SQLException; * - Skip explicit commit (as we use AutoCommit instead) *

*/ -class TransactionFactoryBasicWithRead extends TransactionFactoryBasic { +final class TransactionFactoryBasicWithRead extends TransactionFactoryBasic { private final DataSource readOnlyDataSource; @@ -27,16 +27,13 @@ class TransactionFactoryBasicWithRead extends TransactionFactoryBasic { @Override public SpiTransaction createReadOnlyTransaction(Object tenantId) { - Connection connection = null; try { connection = readOnlyDataSource.getConnection(); return new ImplicitReadOnlyTransaction(manager, connection); - } catch (PersistenceException ex) { JdbcClose.close(connection); throw ex; - } catch (SQLException ex) { throw new PersistenceException(ex); } diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactoryBuilder.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactoryBuilder.java index 590fcec63..b2b7e875f 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactoryBuilder.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactoryBuilder.java @@ -5,7 +5,7 @@ import io.ebean.config.CurrentTenantProvider; /** * Helper to build and return the appropriate TransactionFactory. */ -class TransactionFactoryBuilder { +final class TransactionFactoryBuilder { /** * Build and return based on multi-tenancy and read only DataSource. diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactoryTenant.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactoryTenant.java index fd70cd47a..64c9c9511 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactoryTenant.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactoryTenant.java @@ -29,8 +29,7 @@ class TransactionFactoryTenant extends TransactionFactory { } @Override - public SpiTransaction createTransaction(boolean explicit, int isolationLevel) { - + public final SpiTransaction createTransaction(boolean explicit, int isolationLevel) { SpiTransaction t = create(explicit, null); return setIsolationLevel(t, explicit, isolationLevel); } diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactoryTenantWithRead.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactoryTenantWithRead.java index 1aa190770..cb9f8c9c4 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactoryTenantWithRead.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionFactoryTenantWithRead.java @@ -16,7 +16,7 @@ import java.sql.SQLException; * - Skip explicit commit (as we use AutoCommit instead) *

*/ -class TransactionFactoryTenantWithRead extends TransactionFactoryTenant { +final class TransactionFactoryTenantWithRead extends TransactionFactoryTenant { TransactionFactoryTenantWithRead(TransactionManager manager, DataSourceSupplier dataSourceSupplier, CurrentTenantProvider tenantProvider) { super(manager, dataSourceSupplier, tenantProvider); @@ -24,7 +24,6 @@ class TransactionFactoryTenantWithRead extends TransactionFactoryTenant { @Override public SpiTransaction createReadOnlyTransaction(Object tenantId) { - Connection connection = null; try { if (tenantId == null) { @@ -33,11 +32,9 @@ class TransactionFactoryTenantWithRead extends TransactionFactoryTenant { } connection = dataSourceSupplier.getReadOnlyConnection(tenantId); return new ImplicitReadOnlyTransaction(manager, connection, tenantId); - } catch (PersistenceException ex) { JdbcClose.close(connection); throw ex; - } catch (SQLException ex) { throw new PersistenceException(ex); } diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionManager.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionManager.java index e3fbdd425..37a53f680 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionManager.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionManager.java @@ -201,14 +201,14 @@ public class TransactionManager implements SpiTransactionManager { /** * Return the scope manager. */ - public TransactionScopeManager scope() { + public final TransactionScopeManager scope() { return scopeManager; } /** * Set the transaction onto the scope. */ - public void set(SpiTransaction txn) { + public final void set(SpiTransaction txn) { scopeManager.set(txn); } @@ -216,7 +216,7 @@ public class TransactionManager implements SpiTransactionManager { * Return the current active transaction. */ @Override - public SpiTransaction getActive() { + public final SpiTransaction getActive() { return scopeManager.getActive(); } @@ -230,18 +230,18 @@ public class TransactionManager implements SpiTransactionManager { /** * Return the current transaction from thread local scope. Note that it may be inactive. */ - public SpiTransaction getInScope() { + public final SpiTransaction getInScope() { return scopeManager.getInScope(); } /** * Translate the SQLException into a specific exception if possible based on the DB platform. */ - public PersistenceException translate(String message, SQLException cause) { + public final PersistenceException translate(String message, SQLException cause) { return databasePlatform.translate(message, cause); } - public void shutdown(boolean shutdownDataSource, boolean deregisterDriver) { + public final void shutdown(boolean shutdownDataSource, boolean deregisterDriver) { if (shutdownDataSource) { dataSourceSupplier.shutdown(deregisterDriver); } @@ -250,39 +250,39 @@ public class TransactionManager implements SpiTransactionManager { /** * Return true if the DB platform supports SavepointId(). */ - boolean isSupportsSavepointId() { + final boolean isSupportsSavepointId() { return supportsSavepointId; } - boolean isDocStoreActive() { + final boolean isDocStoreActive() { return docStoreActive; } - DocStoreTransaction createDocStoreTransaction(int docStoreBatchSize) { + final DocStoreTransaction createDocStoreTransaction(int docStoreBatchSize) { return docStoreUpdateProcessor.createTransaction(docStoreBatchSize); } - boolean isSkipCacheAfterWrite() { + final boolean isSkipCacheAfterWrite() { return skipCacheAfterWrite; } - public BeanDescriptorManager getBeanDescriptorManager() { + public final BeanDescriptorManager getBeanDescriptorManager() { return beanDescriptorManager; } - BulkEventListenerMap getBulkEventListenerMap() { + final BulkEventListenerMap getBulkEventListenerMap() { return bulkEventListenerMap; } - boolean isAutoPersistUpdates() { + final boolean isAutoPersistUpdates() { return autoPersistUpdates; } - boolean isPersistBatch() { + final boolean isPersistBatch() { return persistBatch; } - boolean isPersistBatchOnCascade() { + final boolean isPersistBatchOnCascade() { return persistBatchOnCascade; } @@ -296,7 +296,7 @@ public class TransactionManager implements SpiTransactionManager { * If the Isolation level is higher (say SERIALIZABLE) then Connections used * just for queries do need to be committed or rollback after the query. */ - OnQueryOnly initOnQueryOnly(OnQueryOnly dbPlatformOnQueryOnly) { + final OnQueryOnly initOnQueryOnly(OnQueryOnly dbPlatformOnQueryOnly) { // first check for a system property 'override' String systemPropertyValue = System.getProperty("ebean.transaction.onqueryonly"); if (systemPropertyValue != null) { @@ -306,29 +306,29 @@ public class TransactionManager implements SpiTransactionManager { return dbPlatformOnQueryOnly == null ? OnQueryOnly.COMMIT : dbPlatformOnQueryOnly; } - public String getServerName() { + public final String getServerName() { return serverName; } @Override - public Connection getQueryPlanConnection() throws SQLException { + public final Connection getQueryPlanConnection() throws SQLException { return dataSourceSupplier.getConnection(null); } @Override - public DataSource getDataSource() { + public final DataSource getDataSource() { return dataSourceSupplier.getDataSource(); } @Override - public DataSource getReadOnlyDataSource() { + public final DataSource getReadOnlyDataSource() { return dataSourceSupplier.getReadOnlyDataSource(); } /** * Defines the type of behavior to use when closing a transaction that was used to query data only. */ - OnQueryOnly getOnQueryOnly() { + final OnQueryOnly getOnQueryOnly() { return onQueryOnly; } @@ -390,7 +390,7 @@ public class TransactionManager implements SpiTransactionManager { * Process a local rolled back transaction. */ @Override - public void notifyOfRollback(SpiTransaction transaction, Throwable cause) { + public final void notifyOfRollback(SpiTransaction transaction, Throwable cause) { try { if (txnLogger.isDebug()) { String msg = transaction.getLogPrefix() + "Rollback"; @@ -408,7 +408,7 @@ public class TransactionManager implements SpiTransactionManager { * Query only transaction in read committed isolation. */ @Override - public void notifyOfQueryOnly(SpiTransaction transaction) { + public final void notifyOfQueryOnly(SpiTransaction transaction) { // Nothing that interesting here if (txnLogger.isTrace()) { txnLogger.trace(transaction.getLogPrefix() + "Commit - query only"); @@ -442,7 +442,7 @@ public class TransactionManager implements SpiTransactionManager { * Process a local committed transaction. */ @Override - public void notifyOfCommit(SpiTransaction transaction) { + public final void notifyOfCommit(SpiTransaction transaction) { try { if (txnLogger.isDebug()) { txnLogger.debug(transaction.getLogPrefix() + "Commit"); @@ -455,7 +455,7 @@ public class TransactionManager implements SpiTransactionManager { } } - public void externalModification(TransactionEventTable tableEvent) { + public final void externalModification(TransactionEventTable tableEvent) { SpiTransaction t = getActive(); if (t != null) { t.getEvent().add(tableEvent); @@ -476,7 +476,7 @@ public class TransactionManager implements SpiTransactionManager { /** * Notify local BeanPersistListeners etc of events from another server in the cluster. */ - public void remoteTransactionEvent(RemoteTransactionEvent remoteEvent) { + public final void remoteTransactionEvent(RemoteTransactionEvent remoteEvent) { if (clusterLogger.isDebugEnabled()) { clusterLogger.debug("processing {}", remoteEvent); } @@ -506,14 +506,14 @@ public class TransactionManager implements SpiTransactionManager { /** * Process the docstore / ElasticSearch updates. */ - void processDocStoreUpdates(DocStoreUpdates docStoreUpdates, int bulkBatchSize) { + final void processDocStoreUpdates(DocStoreUpdates docStoreUpdates, int bulkBatchSize) { docStoreUpdateProcessor.process(docStoreUpdates, bulkBatchSize); } /** * Prepare and then send/log the changeSet. */ - void sendChangeLog(final ChangeSet changeSet) { + final void sendChangeLog(final ChangeSet changeSet) { // can set userId, userIpAddress & userContext if desired if (changeLogPrepare.prepare(changeSet)) { if (changeLogAsync) { @@ -528,7 +528,7 @@ public class TransactionManager implements SpiTransactionManager { /** * Invalidate the query caches for entities based on views. */ - void processTouchedTables(Set touchedTables) { + final void processTouchedTables(Set touchedTables) { tableModState.touch(touchedTables); if (viewInvalidation) { beanDescriptorManager.processViewInvalidation(touchedTables); @@ -539,32 +539,32 @@ public class TransactionManager implements SpiTransactionManager { /** * Process the collected transaction profiling information. */ - void profileCollect(TransactionProfile transactionProfile) { + final void profileCollect(TransactionProfile transactionProfile) { profileHandler.collectTransactionProfile(transactionProfile); } /** * Collect execution time for an explicit transaction. */ - void collectMetric(long exeMicros) { + final void collectMetric(long exeMicros) { txnMain.add(exeMicros); } /** * Collect execution time for implicit read only transaction. */ - void collectMetricReadOnly(long exeMicros) { + final void collectMetricReadOnly(long exeMicros) { txnReadOnly.add(exeMicros); } /** * Collect execution time for a named transaction. */ - void collectMetricNamed(long exeMicros, String label) { + final void collectMetricNamed(long exeMicros, String label) { txnNamed.add(label, exeMicros); } - public void visitMetrics(MetricVisitor visitor) { + public final void visitMetrics(MetricVisitor visitor) { txnMain.visit(visitor); txnReadOnly.visit(visitor); txnNamed.visit(visitor); @@ -576,14 +576,14 @@ public class TransactionManager implements SpiTransactionManager { /** * Clear an implicit transaction from thread local scope. */ - public void clearServerTransaction() { + public final void clearServerTransaction() { scopeManager.clear(); } /** * Begin an implicit transaction. */ - public SpiTransaction beginServerTransaction() { + public final SpiTransaction beginServerTransaction() { SpiTransaction t = createTransaction(false, -1); scopeManager.set(t); return t; @@ -592,7 +592,7 @@ public class TransactionManager implements SpiTransactionManager { /** * Exit a scoped transaction (that can be inactive - already committed etc). */ - public void exitScopedTransaction(Object returnOrThrowable, int opCode) { + public final void exitScopedTransaction(Object returnOrThrowable, int opCode) { SpiTransaction st = getInScope(); if (st instanceof ScopedTransaction) { // can be null for Supports as that can start as a 'No Transaction' and then @@ -602,7 +602,7 @@ public class TransactionManager implements SpiTransactionManager { } @Override - public void externalRemoveTransaction() { + public final void externalRemoveTransaction() { scopeManager.clearExternal(); } @@ -611,7 +611,7 @@ public class TransactionManager implements SpiTransactionManager { * (e.g. Spring managed transaction). */ @Override - public ScopedTransaction externalBeginTransaction(SpiTransaction transaction, TxScope txScope) { + public final ScopedTransaction externalBeginTransaction(SpiTransaction transaction, TxScope txScope) { ScopedTransaction scopedTxn = new ScopedTransaction(scopeManager); scopedTxn.push(new ScopeTrans(rollbackOnChecked, false, transaction, txScope)); scopeManager.replace(scopedTxn); @@ -621,7 +621,7 @@ public class TransactionManager implements SpiTransactionManager { /** * Begin a scoped transaction. */ - public ScopedTransaction beginScopedTransaction(TxScope txScope) { + public final ScopedTransaction beginScopedTransaction(TxScope txScope) { txScope = initTxScope(txScope); ScopedTransaction txnContainer = getActiveScoped(); @@ -742,26 +742,26 @@ public class TransactionManager implements SpiTransactionManager { /** * Return true if Transaction debug is on. */ - public boolean isTxnDebug() { + public final boolean isTxnDebug() { return txnDebug; } - public SpiLogManager log() { + public final SpiLogManager log() { return logManager; } - public boolean isLogSql() { + public final boolean isLogSql() { return logManager.sql().isDebug(); } - public boolean isLogSummary() { + public final boolean isLogSummary() { return logManager.sum().isDebug(); } /** * Experimental - find dirty beans in the persistence context and persist them. */ - public void flushTransparent(SpiPersistenceContext persistenceContext, SpiTransaction transaction) { + public final void flushTransparent(SpiPersistenceContext persistenceContext, SpiTransaction transaction) { List dirtyBeans = persistenceContext.dirtyBeans(beanDescriptorManager); if (!dirtyBeans.isEmpty()) { server.updateAll(dirtyBeans, transaction); diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionManagerOptions.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionManagerOptions.java index 5d0c87794..b7d54b37e 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionManagerOptions.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionManagerOptions.java @@ -14,7 +14,7 @@ import io.ebeanservice.docstore.api.DocStoreUpdateProcessor; /** * Objects supplied for constructing the TransactionManager. */ -public class TransactionManagerOptions { +public final class TransactionManagerOptions { final SpiServer server; final boolean notifyL2CacheInForeground; diff --git a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionProfile.java b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionProfile.java index 2c7006eba..cb749cd54 100644 --- a/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionProfile.java +++ b/ebean-core/src/main/java/io/ebeaninternal/server/transaction/TransactionProfile.java @@ -5,7 +5,7 @@ import io.ebean.ProfileLocation; /** * Profiling information for a single transaction that has completed. */ -public class TransactionProfile { +public final class TransactionProfile { private final ProfileLocation location; private final String label;