This is an automated email from the ASF dual-hosted git repository. asf-gitbox-commits pushed a commit to branch past-M2 in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit 003e23cb2e8fcecfe95bb247ed3d5ad289a14ddd Author: Andrus Adamchik <[email protected]> AuthorDate: Sun Jun 7 11:47:27 2026 -0400 general cleanup --- .../cayenne/access/DataDomainQueryAction.java | 17 +++++++--------- .../org/apache/cayenne/query/RefreshQuery.java | 22 +++++---------------- .../cayenne/tx/DefaultTransactionFactory.java | 6 +++--- .../cayenne/tx/DefaultTransactionManager.java | 23 +++++++++------------- 4 files changed, 24 insertions(+), 44 deletions(-) diff --git a/cayenne/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java b/cayenne/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java index a9a0826b2..0d0719f5b 100644 --- a/cayenne/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java +++ b/cayenne/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java @@ -87,17 +87,18 @@ class DataDomainQueryAction implements QueryRouter, OperationObserver { private static final boolean DONE = true; private final DataContext context; - final DataDomain domain; - final Query query; + private final DataDomain domain; + private final Query query; private final QueryMetadata metadata; private final AdhocObjectFactory objectFactory; + private final DataRowStore cache; - private DataRowStore cache; private QueryResponse response; private GenericResponse fullResponse; private Map<CayennePath, List<?>> prefetchResultsByPath; private Map<DataNode, Collection<Query>> queriesByNode; private boolean noObjectConversion; + // True when using a caching strategy (shared or local cache), indicating lists are immutable and need copying private boolean cachedResult; // True when results were found in cache (cache hit), false when fetched from database (cache miss or explicit refresh) @@ -120,13 +121,9 @@ class DataDomainQueryAction implements QueryRouter, OperationObserver { this.objectFactory = domain.getObjectFactory(); // cache may be shared or unique for the ObjectContext - if (context != null) { - this.cache = this.context.getObjectStore().getDataRowCache(); - } - - if (this.cache == null) { - this.cache = domain.getSharedSnapshotCache(); - } + this.cache = this.context != null && this.context.getObjectStore().getDataRowCache() != null + ? this.context.getObjectStore().getDataRowCache() + : domain.getSharedSnapshotCache(); } QueryResponse execute() { diff --git a/cayenne/src/main/java/org/apache/cayenne/query/RefreshQuery.java b/cayenne/src/main/java/org/apache/cayenne/query/RefreshQuery.java index be5b8d33a..32ff343c7 100644 --- a/cayenne/src/main/java/org/apache/cayenne/query/RefreshQuery.java +++ b/cayenne/src/main/java/org/apache/cayenne/query/RefreshQuery.java @@ -18,17 +18,17 @@ ****************************************************************/ package org.apache.cayenne.query; -import java.util.Collection; -import java.util.Collections; - import org.apache.cayenne.CayenneRuntimeException; import org.apache.cayenne.Persistent; import org.apache.cayenne.map.EntityResolver; +import java.util.Collection; +import java.util.Collections; + /** * A query that allows to explicitly clear both object and list caches either via refetch * (eager refresh) or invalidate (lazy refresh). - * + * * @since 3.0 */ public class RefreshQuery implements Query { @@ -37,18 +37,6 @@ public class RefreshQuery implements Query { protected Query query; protected String[] groupKeys; - /** - * Creates a RefreshQuery that does full refresh of all registered objects, cascading - * refresh all the way to the shared cache. - * - * @deprecated "refresh all" query will drop all cache contents - * @see org.apache.cayenne.cache.QueryCache#clear() - */ - @Deprecated - public RefreshQuery() { - - } - /** * Creates a RefreshQuery that refreshes a collection of objects, including * invalidation of their relationships. @@ -77,7 +65,7 @@ public class RefreshQuery implements Query { * Creates a RefreshQuery that refreshes query results identified by group keys. */ public RefreshQuery(String... groupKeys) { - this.groupKeys = groupKeys; + this.groupKeys = groupKeys != null && groupKeys.length == 0 ? null : groupKeys; } public QueryMetadata getMetaData(EntityResolver resolver) { diff --git a/cayenne/src/main/java/org/apache/cayenne/tx/DefaultTransactionFactory.java b/cayenne/src/main/java/org/apache/cayenne/tx/DefaultTransactionFactory.java index 9f9052f82..88fbd3acd 100644 --- a/cayenne/src/main/java/org/apache/cayenne/tx/DefaultTransactionFactory.java +++ b/cayenne/src/main/java/org/apache/cayenne/tx/DefaultTransactionFactory.java @@ -29,7 +29,6 @@ import org.apache.cayenne.log.JdbcEventLogger; public class DefaultTransactionFactory implements TransactionFactory { protected boolean externalTransactions; - protected JdbcEventLogger jdbcEventLogger; public DefaultTransactionFactory(@Inject RuntimeProperties properties, @Inject JdbcEventLogger jdbcEventLogger) { @@ -47,8 +46,9 @@ public class DefaultTransactionFactory implements TransactionFactory { */ @Override public Transaction createTransaction(TransactionDescriptor descriptor) { - return externalTransactions ? new ExternalTransaction(jdbcEventLogger, descriptor) : new CayenneTransaction( - jdbcEventLogger, descriptor); + return externalTransactions + ? new ExternalTransaction(jdbcEventLogger, descriptor) + : new CayenneTransaction(jdbcEventLogger, descriptor); } } diff --git a/cayenne/src/main/java/org/apache/cayenne/tx/DefaultTransactionManager.java b/cayenne/src/main/java/org/apache/cayenne/tx/DefaultTransactionManager.java index e906a3c05..3545ab815 100644 --- a/cayenne/src/main/java/org/apache/cayenne/tx/DefaultTransactionManager.java +++ b/cayenne/src/main/java/org/apache/cayenne/tx/DefaultTransactionManager.java @@ -27,8 +27,8 @@ import org.apache.cayenne.log.JdbcEventLogger; */ public class DefaultTransactionManager implements TransactionManager { - private TransactionFactory txFactory; - private JdbcEventLogger jdbcEventLogger; + private final TransactionFactory txFactory; + private final JdbcEventLogger jdbcEventLogger; public DefaultTransactionManager(@Inject TransactionFactory txFactory, @Inject JdbcEventLogger jdbcEventLogger) { this.txFactory = txFactory; @@ -63,21 +63,16 @@ public class DefaultTransactionManager implements TransactionManager { } protected BaseTransactionHandler getHandler(TransactionDescriptor descriptor) { - switch (descriptor.getPropagation()) { + return switch (descriptor.getPropagation()) { // MANDATORY requires transaction to exists - case MANDATORY: - return new MandatoryTransactionHandler(txFactory, jdbcEventLogger); + case MANDATORY -> new MandatoryTransactionHandler(txFactory, jdbcEventLogger); // NESTED can join existing or create new - case NESTED: - return new NestedTransactionHandler(txFactory, jdbcEventLogger); + case NESTED -> new NestedTransactionHandler(txFactory, jdbcEventLogger); // REQUIRES_NEW should always create new transaction - case REQUIRES_NEW: - return new RequiresNewTransactionHandler(txFactory, jdbcEventLogger); - } - - throw new CayenneRuntimeException("Unsupported transaction propagation: " + descriptor.getPropagation()); + case REQUIRES_NEW -> new RequiresNewTransactionHandler(txFactory, jdbcEventLogger); + }; } private static class NestedTransactionHandler extends BaseTransactionHandler { @@ -135,8 +130,8 @@ public class DefaultTransactionManager implements TransactionManager { protected static abstract class BaseTransactionHandler { - private TransactionFactory txFactory; - private JdbcEventLogger jdbcEventLogger; + private final TransactionFactory txFactory; + private final JdbcEventLogger jdbcEventLogger; private BaseTransactionHandler(TransactionFactory txFactory, JdbcEventLogger jdbcEventLogger) { this.txFactory = txFactory;
