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

asf-gitbox-commits pushed a commit to branch CAY-2935
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 3893c3f08739258f69bba549f6333af8a342e10f
Author: Andrus Adamchik <[email protected]>
AuthorDate: Thu May 7 13:31:40 2026 -0400

    CAY-2935 Upgrade Cayenne 5.0 to Java 21
    
    syntax upgrade - instanceof
---
 .../src/main/java/org/apache/cayenne/Cayenne.java  | 15 ++++++--------
 .../apache/cayenne/GenericPersistentObject.java    |  4 ++--
 .../org/apache/cayenne/HybridPersistentObject.java |  4 ++--
 .../org/apache/cayenne/ObjectContextChangeLog.java | 12 +++++------
 .../org/apache/cayenne/ObjectContextStateLog.java  |  6 ++----
 .../src/main/java/org/apache/cayenne/ObjectId.java | 10 ++++-----
 .../java/org/apache/cayenne/ObjectIdCompound.java  |  8 ++++----
 .../java/org/apache/cayenne/PersistentObject.java  | 24 +++++++++++-----------
 .../org/apache/cayenne/access/DataContext.java     | 12 +++++------
 .../cayenne/access/DataContextMergeHandler.java    |  4 ++--
 .../cayenne/access/DataContextObjectCreator.java   | 13 ++++--------
 .../cayenne/access/DataContextQueryAction.java     |  9 +++-----
 .../cayenne/access/DataDomainQueryAction.java      | 21 ++++++++-----------
 .../java/org/apache/cayenne/access/DataNode.java   |  4 ++--
 .../access/MixedResultIncrementalFaultList.java    |  3 +--
 .../java/org/apache/cayenne/access/ObjectDiff.java | 20 ++++++++----------
 .../org/apache/cayenne/access/ObjectStore.java     | 12 +++++------
 .../cayenne/access/ObjectStoreGraphDiff.java       |  4 ++--
 .../access/ResultScanParentAttachmentStrategy.java |  4 ++--
 .../java/org/apache/cayenne/access/ToManyList.java |  3 +--
 .../java/org/apache/cayenne/access/ToManySet.java  |  3 +--
 .../access/flush/ArcValuesCreationHandler.java     |  3 +--
 .../access/flush/PermanentObjectIdVisitor.java     |  2 +-
 .../access/flush/ValuesCreationHandler.java        |  2 +-
 .../access/flush/operation/DbRowOpMerger.java      |  8 ++++----
 .../flush/operation/GraphBasedDbRowOpSorter.java   |  3 +--
 .../cayenne/access/sqlbuilder/SQLBuilder.java      |  8 ++++----
 .../sqlbuilder/sqltree/TrimmingColumnNode.java     |  4 ++--
 .../access/sqlbuilder/sqltree/ValueNode.java       | 16 +++++++--------
 .../translator/ejbql/EJBQLConditionTranslator.java | 18 ++++++++--------
 .../ejbql/EJBQLIdentifierColumnsTranslator.java    |  4 ++--
 .../access/translator/ejbql/EJBQLJoinAppender.java |  7 +++----
 .../translator/ejbql/EJBQLPathTranslator.java      |  4 ++--
 .../ejbql/EJBQLSelectColumnsTranslator.java        |  3 +--
 .../select/ExistsExpressionTranslator.java         | 17 ++++++++-------
 .../org/apache/cayenne/access/types/EnumType.java  |  4 ++--
 .../cayenne/access/types/ExtendedEnumType.java     |  7 +++----
 .../configuration/runtime/DataContextFactory.java  |  8 ++++----
 .../runtime/DelegatingDataSourceFactory.java       |  4 ++--
 .../xml/NamespaceAwareNestedTagHandler.java        |  4 ++--
 40 files changed, 144 insertions(+), 177 deletions(-)

diff --git a/cayenne/src/main/java/org/apache/cayenne/Cayenne.java 
b/cayenne/src/main/java/org/apache/cayenne/Cayenne.java
index 95e05f4c0..1e2808db0 100644
--- a/cayenne/src/main/java/org/apache/cayenne/Cayenne.java
+++ b/cayenne/src/main/java/org/apache/cayenne/Cayenne.java
@@ -163,18 +163,16 @@ public class Cayenne {
             return null;
         }
 
-        if (o instanceof Persistent) {
-            return ((Persistent) o).readNestedProperty(path);
+        if (o instanceof Persistent persistent) {
+            return persistent.readNestedProperty(path);
         }
 
         String firstSegment = path.first().value();
 
-        if (o instanceof Collection<?>) {
+        if (o instanceof Collection<?> collection) {
             // This allows people to put @size at the end of a property
             // path and be able to find out the size of a relationship.
 
-            Collection<?> collection = (Collection<?>) o;
-
             if (path.length() == 1 && 
PROPERTY_COLLECTION_SIZE.equals(firstSegment)) {
                 return collection.size();
             }
@@ -182,13 +180,12 @@ public class Cayenne {
             // Support for collection property in the middle of the path
             Collection<Object> result = o instanceof List<?> ? new 
ArrayList<>() : new HashSet<>();
             for (Object item : collection) {
-                if (item instanceof Persistent) {
-                    Persistent cdo = (Persistent) item;
+                if (item instanceof Persistent cdo) {
                     Object rest = cdo.readNestedProperty(path);
-                    if (rest instanceof Collection<?>) {
+                    if (rest instanceof Collection<?> restCollection) {
                         // We don't want nested collections.
                         // E.g. 
readNestedProperty("paintingArray.paintingTitle") should return List<String>
-                        result.addAll((Collection<?>) rest);
+                        result.addAll(restCollection);
                     } else {
                         result.add(rest);
                     }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/GenericPersistentObject.java 
b/cayenne/src/main/java/org/apache/cayenne/GenericPersistentObject.java
index 9bf65bdc2..abc330db1 100644
--- a/cayenne/src/main/java/org/apache/cayenne/GenericPersistentObject.java
+++ b/cayenne/src/main/java/org/apache/cayenne/GenericPersistentObject.java
@@ -95,8 +95,8 @@ public class GenericPersistentObject extends PersistentObject 
{
                        buffer.append(entry.getKey()).append("=>");
                        Object value = entry.getValue();
 
-                       if (value instanceof Persistent) {
-                               buffer.append('{').append(((Persistent) 
value).getObjectId()).append('}');
+                       if (value instanceof Persistent persistent) {
+                               
buffer.append('{').append(persistent.getObjectId()).append('}');
                        } else if (value instanceof Collection) {
                                buffer.append("(..)");
                        } else if (value instanceof Fault) {
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/HybridPersistentObject.java 
b/cayenne/src/main/java/org/apache/cayenne/HybridPersistentObject.java
index 82c739b57..0f7a99a02 100644
--- a/cayenne/src/main/java/org/apache/cayenne/HybridPersistentObject.java
+++ b/cayenne/src/main/java/org/apache/cayenne/HybridPersistentObject.java
@@ -98,8 +98,8 @@ public class HybridPersistentObject extends PersistentObject {
             buffer.append(entry.getKey()).append("=>");
             Object value = entry.getValue();
 
-            if (value instanceof Persistent) {
-                buffer.append('{').append(((Persistent) 
value).getObjectId()).append('}');
+            if (value instanceof Persistent persistent) {
+                
buffer.append('{').append(persistent.getObjectId()).append('}');
             } else if (value instanceof Collection) {
                 buffer.append("(..)");
             } else if (value instanceof Fault) {
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/ObjectContextChangeLog.java 
b/cayenne/src/main/java/org/apache/cayenne/ObjectContextChangeLog.java
index 2c0f328a1..87926d8f4 100644
--- a/cayenne/src/main/java/org/apache/cayenne/ObjectContextChangeLog.java
+++ b/cayenne/src/main/java/org/apache/cayenne/ObjectContextChangeLog.java
@@ -55,18 +55,18 @@ class ObjectContextChangeLog {
         while (it.hasNext()) {
             Object next = it.next();
 
-            if (next instanceof NodeDiff) {
+            if (next instanceof NodeDiff nodeDiff) {
 
-                if (nodeId.equals(((NodeDiff) next).getNodeId())) {
+                if (nodeId.equals(nodeDiff.getNodeId())) {
                     it.remove();
                 }
-                else if (next instanceof ArcCreateOperation) {
-                    if (nodeId.equals(((ArcCreateOperation) 
next).getTargetNodeId())) {
+                else if (next instanceof ArcCreateOperation arcCreate) {
+                    if (nodeId.equals(arcCreate.getTargetNodeId())) {
                         it.remove();
                     }
                 }
-                else if (next instanceof ArcDeleteOperation) {
-                    if (nodeId.equals(((ArcDeleteOperation) 
next).getTargetNodeId())) {
+                else if (next instanceof ArcDeleteOperation arcDelete) {
+                    if (nodeId.equals(arcDelete.getTargetNodeId())) {
                         it.remove();
                     }
                 }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/ObjectContextStateLog.java 
b/cayenne/src/main/java/org/apache/cayenne/ObjectContextStateLog.java
index de67c2541..4a501c657 100644
--- a/cayenne/src/main/java/org/apache/cayenne/ObjectContextStateLog.java
+++ b/cayenne/src/main/java/org/apache/cayenne/ObjectContextStateLog.java
@@ -60,8 +60,7 @@ class ObjectContextStateLog implements GraphChangeHandler {
         
         for (Object id : dirtyIds) {
             Object node = graphManager.getNode(id);
-            if (node instanceof Persistent) {
-                Persistent persistentNode = (Persistent) node;
+            if (node instanceof Persistent persistentNode) {
                 switch (persistentNode.getPersistenceState()) {
                     case PersistenceState.MODIFIED, PersistenceState.NEW ->
                             
persistentNode.setPersistenceState(PersistenceState.COMMITTED);
@@ -86,8 +85,7 @@ class ObjectContextStateLog implements GraphChangeHandler {
     void graphReverted() {
         for (Object id : dirtyIds) {
             Object node = graphManager.getNode(id);
-            if (node instanceof Persistent) {
-                Persistent persistentNode = (Persistent) node;
+            if (node instanceof Persistent persistentNode) {
                 switch (persistentNode.getPersistenceState()) {
                     case PersistenceState.MODIFIED, PersistenceState.DELETED ->
                             
persistentNode.setPersistenceState(PersistenceState.COMMITTED);
diff --git a/cayenne/src/main/java/org/apache/cayenne/ObjectId.java 
b/cayenne/src/main/java/org/apache/cayenne/ObjectId.java
index 37d5ba8a0..7dc03f0fe 100644
--- a/cayenne/src/main/java/org/apache/cayenne/ObjectId.java
+++ b/cayenne/src/main/java/org/apache/cayenne/ObjectId.java
@@ -56,8 +56,8 @@ public interface ObjectId extends Serializable {
      * @since 4.2
      */
     static ObjectId of(String entityName, String keyName, Object value) {
-        if (value instanceof Number) {
-            return new ObjectIdNumber(entityName, keyName, (Number) value);
+        if (value instanceof Number number) {
+            return new ObjectIdNumber(entityName, keyName, number);
         }
         return new ObjectIdSingle(entityName, keyName, value);
     }
@@ -69,13 +69,11 @@ public interface ObjectId extends Serializable {
      * @since 4.2
      */
     static ObjectId of(String entityName, ObjectId objectId) {
-        if (objectId instanceof ObjectIdNumber) {
-            ObjectIdNumber id = (ObjectIdNumber) objectId;
+        if (objectId instanceof ObjectIdNumber id) {
             return new ObjectIdNumber(entityName, id.getKeyName(), 
id.getValue());
         }
 
-        if (objectId instanceof ObjectIdSingle) {
-            ObjectIdSingle id = (ObjectIdSingle) objectId;
+        if (objectId instanceof ObjectIdSingle id) {
             return new ObjectIdSingle(entityName, id.getKeyName(), 
id.getValue());
         }
 
diff --git a/cayenne/src/main/java/org/apache/cayenne/ObjectIdCompound.java 
b/cayenne/src/main/java/org/apache/cayenne/ObjectIdCompound.java
index b0798a850..50db67120 100644
--- a/cayenne/src/main/java/org/apache/cayenne/ObjectIdCompound.java
+++ b/cayenne/src/main/java/org/apache/cayenne/ObjectIdCompound.java
@@ -159,8 +159,8 @@ class ObjectIdCompound implements ObjectId {
                        return false;
                }
 
-               if (o1 instanceof Number) {
-                       return o2 instanceof Number && ((Number) 
o1).longValue() == ((Number) o2).longValue();
+               if (o1 instanceof Number n1) {
+                       return o2 instanceof Number n2 && n1.longValue() == 
n2.longValue();
                }
 
                return Util.nullSafeEquals(o1, o2);
@@ -186,8 +186,8 @@ class ObjectIdCompound implements ObjectId {
 
                        Object value = objectIdKeys.get(keys[i]);
                        // must reconcile all possible numeric types
-                       if (value instanceof Number) {
-                               builder.append(((Number) value).longValue());
+                       if (value instanceof Number number) {
+                               builder.append(number.longValue());
                        } else {
                                builder.append(value);
                        }
diff --git a/cayenne/src/main/java/org/apache/cayenne/PersistentObject.java 
b/cayenne/src/main/java/org/apache/cayenne/PersistentObject.java
index f35b0e506..8370c687b 100644
--- a/cayenne/src/main/java/org/apache/cayenne/PersistentObject.java
+++ b/cayenne/src/main/java/org/apache/cayenne/PersistentObject.java
@@ -131,8 +131,8 @@ public abstract class PersistentObject implements 
Persistent, Validating {
         }
 
         PropertyDescriptor property = descriptor.getProperty(relationshipName);
-        if (property instanceof ToManyMapProperty) {
-            return ((ToManyMapProperty) property).getMapKey(value);
+        if (property instanceof ToManyMapProperty toManyMapProperty) {
+            return toManyMapProperty.getMapKey(value);
         }
 
         throw new IllegalArgumentException("Relationship '"
@@ -173,8 +173,8 @@ public abstract class PersistentObject implements 
Persistent, Validating {
 
         Object object = readPropertyDirectly(propertyName);
 
-        if (object instanceof Fault) {
-            object = ((Fault) object).resolveFault(this, propertyName);
+        if (object instanceof Fault fault) {
+            object = fault.resolveFault(this, propertyName);
             writePropertyDirectly(propertyName, object);
         }
 
@@ -249,8 +249,8 @@ public abstract class PersistentObject implements 
Persistent, Validating {
         }
 
         CayennePath pathRemainder = path.tail(1);
-        if (property instanceof Persistent) {
-            return ((Persistent) property).readNestedProperty(pathRemainder);
+        if (property instanceof Persistent persistent) {
+            return persistent.readNestedProperty(pathRemainder);
         } else {
             return Cayenne.readNestedProperty(property, pathRemainder);
         }
@@ -429,8 +429,8 @@ public abstract class PersistentObject implements 
Persistent, Validating {
 
         if (setReverse) {
             // unset old reverse relationship
-            if (oldTarget instanceof Persistent) {
-                unsetReverseRelationship(relationshipName, (Persistent) 
oldTarget);
+            if (oldTarget instanceof Persistent persistentOldTarget) {
+                unsetReverseRelationship(relationshipName, 
persistentOldTarget);
             }
 
             // set new reverse relationship
@@ -480,8 +480,8 @@ public abstract class PersistentObject implements 
Persistent, Validating {
         ObjRelationship revRel = rel.getReverseRelationship();
         if (revRel != null) {
             Object oldTarget = val.readProperty(revRel.getName());
-            if (oldTarget != this && oldTarget instanceof Persistent && val 
instanceof PersistentObject) {
-                
((PersistentObject)val).unsetReverseRelationship(revRel.getName(), (Persistent) 
oldTarget);
+            if (oldTarget != this && oldTarget instanceof Persistent 
persistentOldTarget && val instanceof PersistentObject persistentObjectVal) {
+                persistentObjectVal.unsetReverseRelationship(revRel.getName(), 
persistentOldTarget);
             }
             if (revRel.isToMany()) {
                 val.addToManyTarget(revRel.getName(), this, false);
@@ -597,8 +597,8 @@ public abstract class PersistentObject implements 
Persistent, Validating {
                                 + dbAttribute.getMaxLength() + " bytes): " + 
len;
                         validationResult.addFailure(new 
BeanValidationFailure(this, next.getName(), message));
                     }
-                } else if (value instanceof CharSequence) {
-                    int len = ((CharSequence) value).length();
+                } else if (value instanceof CharSequence charSequence) {
+                    int len = charSequence.length();
                     if (len > dbAttribute.getMaxLength()) {
                         String message = "\"" + next.getName() + "\" exceeds 
maximum allowed length ("
                                 + dbAttribute.getMaxLength() + " chars): " + 
len;
diff --git a/cayenne/src/main/java/org/apache/cayenne/access/DataContext.java 
b/cayenne/src/main/java/org/apache/cayenne/access/DataContext.java
index 47b98b497..f52368a28 100644
--- a/cayenne/src/main/java/org/apache/cayenne/access/DataContext.java
+++ b/cayenne/src/main/java/org/apache/cayenne/access/DataContext.java
@@ -307,14 +307,14 @@ public class DataContext implements ObjectContext {
             return null;
         }
 
-        if (channel instanceof DataDomain) {
-            return (DataDomain) channel;
+        if (channel instanceof DataDomain dataDomain) {
+            return dataDomain;
         }
 
         List<?> response = channel.onQuery(this, new 
DataDomainQuery()).firstList();
 
-        if (response != null && response.size() > 0 && response.get(0) 
instanceof DataDomain) {
-            return (DataDomain) response.get(0);
+        if (response != null && response.size() > 0 && response.get(0) 
instanceof DataDomain dataDomain) {
+            return dataDomain;
         }
 
         return null;
@@ -858,8 +858,8 @@ public class DataContext implements ObjectContext {
                 catch (CayenneRuntimeException ex) {
                     Throwable unwound = Util.unwindException(ex);
 
-                    if (unwound instanceof CayenneRuntimeException) {
-                        throw (CayenneRuntimeException) unwound;
+                    if (unwound instanceof CayenneRuntimeException 
cayenneRuntimeException) {
+                        throw cayenneRuntimeException;
                     } else {
                         throw new CayenneRuntimeException("Commit Exception", 
unwound);
                     }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/DataContextMergeHandler.java 
b/cayenne/src/main/java/org/apache/cayenne/access/DataContextMergeHandler.java
index 7d9db3ed5..8bed8e676 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/DataContextMergeHandler.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/DataContextMergeHandler.java
@@ -94,8 +94,8 @@ class DataContextMergeHandler implements GraphChangeHandler, 
DataChannelListener
 
             // temp kludge - see TODO in ObjectStore.snapshotsChanged(..)
             GraphDiff diff = event.getDiff();
-            if (diff instanceof SnapshotEventDecorator) {
-                SnapshotEvent decoratedEvent = ((SnapshotEventDecorator) 
diff).getEvent();
+            if (diff instanceof SnapshotEventDecorator snapshotEventDecorator) 
{
+                SnapshotEvent decoratedEvent = 
snapshotEventDecorator.getEvent();
                 context.getObjectStore().processSnapshotEvent(decoratedEvent);
             } else {
                 synchronized (context.getObjectStore()) {
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/DataContextObjectCreator.java 
b/cayenne/src/main/java/org/apache/cayenne/access/DataContextObjectCreator.java
index f7d9ec3cb..9b03889f1 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/DataContextObjectCreator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/DataContextObjectCreator.java
@@ -156,9 +156,7 @@ class DataContextObjectCreator {
                             : (Collection<Map.Entry<?, ?>>) value;
 
                     for (Object target : collection) {
-                        if (target instanceof Persistent) {
-                            Persistent targetDO = (Persistent) target;
-
+                        if (target instanceof Persistent targetDO) {
                             // make sure it is registered
                             registerNewObject(targetDO);
                             
context.getObjectStore().arcCreated(persistent.getObjectId(), 
targetDO.getObjectId(), new ArcId(property));
@@ -171,10 +169,7 @@ class DataContextObjectCreator {
             public boolean visitToOne(ToOneProperty property) {
                 Object target = property.readPropertyDirectly(persistent);
 
-                if (target instanceof Persistent) {
-
-                    Persistent targetDO = (Persistent) target;
-
+                if (target instanceof Persistent targetDO) {
                     // make sure it is registered
                     registerNewObject(targetDO);
                     
context.getObjectStore().arcCreated(persistent.getObjectId(), 
targetDO.getObjectId(), new ArcId(property));
@@ -216,8 +211,8 @@ class DataContextObjectCreator {
         }
 
         if (entity != null) {
-            if (entity.getDeclaredQualifier() instanceof ValueInjector) {
-                ((ValueInjector) 
entity.getDeclaredQualifier()).injectValue(object);
+            if (entity.getDeclaredQualifier() instanceof ValueInjector 
valueInjector) {
+                valueInjector.injectValue(object);
             }
         }
 
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/DataContextQueryAction.java 
b/cayenne/src/main/java/org/apache/cayenne/access/DataContextQueryAction.java
index bf276f22e..2aa45cc1d 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/DataContextQueryAction.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/DataContextQueryAction.java
@@ -58,8 +58,7 @@ class DataContextQueryAction extends ObjectContextQueryAction 
{
     }
 
     private boolean interceptObjectFromDataRowsQuery() {
-        if (query instanceof ObjectsFromDataRowsQuery) {
-            ObjectsFromDataRowsQuery objectsFromDataRowsQuery = 
(ObjectsFromDataRowsQuery) query;
+        if (query instanceof ObjectsFromDataRowsQuery 
objectsFromDataRowsQuery) {
             response = new ListResponse(actingDataContext.objectsFromDataRows(
                     objectsFromDataRowsQuery.getDescriptor(),
                     objectsFromDataRowsQuery.getDataRows()));
@@ -73,8 +72,7 @@ class DataContextQueryAction extends ObjectContextQueryAction 
{
      */
     @Override
     protected boolean interceptOIDQuery() {
-        if (query instanceof ObjectIdQuery) {
-            ObjectIdQuery oidQuery = (ObjectIdQuery) query;
+        if (query instanceof ObjectIdQuery oidQuery) {
 
             if (!oidQuery.isFetchMandatory()) {
                 Object object = 
polymorphicObjectFromCache(oidQuery.getObjectId());
@@ -151,8 +149,7 @@ class DataContextQueryAction extends 
ObjectContextQueryAction {
 
     @Override
     protected boolean interceptRefreshQuery() {
-        if (query instanceof RefreshQuery) {
-            RefreshQuery refreshQuery = (RefreshQuery) query;
+        if (query instanceof RefreshQuery refreshQuery) {
 
             DataContext context = (DataContext) actingContext;
 
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 7580e1157..7434da3d8 100644
--- a/cayenne/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java
+++ b/cayenne/src/main/java/org/apache/cayenne/access/DataDomainQueryAction.java
@@ -152,8 +152,8 @@ class DataDomainQueryAction implements QueryRouter, 
OperationObserver {
     }
 
     private boolean interceptIteratedQuery() {
-        if (query instanceof IteratedQueryDecorator) {
-            noObjectConversion = ((IteratedQueryDecorator) 
query).isFetchingDataRows();
+        if (query instanceof IteratedQueryDecorator iteratedQueryDecorator) {
+            noObjectConversion = iteratedQueryDecorator.isFetchingDataRows();
             validateIteratedQuery();
             performIteratedQuery();
             return DONE;
@@ -352,8 +352,7 @@ class DataDomainQueryAction implements QueryRouter, 
OperationObserver {
     @SuppressWarnings("deprecation")
     private boolean interceptRefreshQuery() {
 
-        if (query instanceof RefreshQuery) {
-            RefreshQuery refreshQuery = (RefreshQuery) query;
+        if (query instanceof RefreshQuery refreshQuery) {
 
             if (refreshQuery.isRefreshAll()) {
 
@@ -463,8 +462,8 @@ class DataDomainQueryAction implements QueryRouter, 
OperationObserver {
             // Mark as cached result - lists need copying whether hit or miss
             cachedResult = true;
 
-            if (cachedResults instanceof ListWithPrefetches) {
-                this.prefetchResultsByPath = ((ListWithPrefetches) 
cachedResults).getPrefetchResultsByPath();
+            if (cachedResults instanceof ListWithPrefetches 
listWithPrefetches) {
+                this.prefetchResultsByPath = 
listWithPrefetches.getPrefetchResultsByPath();
             }
         } else {
             // on cache-refresh request, fetch without blocking and fill the 
cache
@@ -714,8 +713,8 @@ class DataDomainQueryAction implements QueryRouter, 
OperationObserver {
     }
 
     protected <T, R> void updateResponse(List<T> sourceObjects, List<? extends 
R> targetObjects) {
-        if (response instanceof GenericResponse) {
-            ((GenericResponse) response).replaceResult(sourceObjects, 
targetObjects);
+        if (response instanceof GenericResponse genericResponse) {
+            genericResponse.replaceResult(sourceObjects, targetObjects);
         } else if (response instanceof ListResponse) {
             response = new ListResponse(targetObjects);
         } else {
@@ -958,8 +957,7 @@ class DataDomainQueryAction implements QueryRouter, 
OperationObserver {
             List<PrefetchProcessorNode> segmentNodes = new ArrayList<>(width);
             for (int i = 0; i < width; i++) {
                 Object mapping = resultSetMapping.get(i);
-                if (mapping instanceof EntityResultSegment) {
-                    EntityResultSegment entitySegment = (EntityResultSegment) 
mapping;
+                if (mapping instanceof EntityResultSegment entitySegment) {
                     PrefetchProcessorNode nextResult = 
toResultsTree(entitySegment.getClassDescriptor(),
                             metadata.getPrefetchTree(), result, i);
 
@@ -970,8 +968,7 @@ class DataDomainQueryAction implements QueryRouter, 
OperationObserver {
                         Object[] row = result.get(j);
                         row[i] = objects.get(j);
                     }
-                } else if (mapping instanceof EmbeddableResultSegment) {
-                    EmbeddableResultSegment resultSegment = 
(EmbeddableResultSegment) mapping;
+                } else if (mapping instanceof EmbeddableResultSegment 
resultSegment) {
                     Embeddable embeddable = resultSegment.getEmbeddable();
                     Class<? extends EmbeddableObject> embeddableClass = 
objectFactory
                             .getJavaClass(embeddable.getClassName());
diff --git a/cayenne/src/main/java/org/apache/cayenne/access/DataNode.java 
b/cayenne/src/main/java/org/apache/cayenne/access/DataNode.java
index 1b5b8c10e..1cfade84d 100644
--- a/cayenne/src/main/java/org/apache/cayenne/access/DataNode.java
+++ b/cayenne/src/main/java/org/apache/cayenne/access/DataNode.java
@@ -117,8 +117,8 @@ public class DataNode implements QueryEngine {
         * @since 3.1
         */
        public JdbcEventLogger getJdbcEventLogger() {
-               if (jdbcEventLogger == null && adapter instanceof JdbcAdapter) {
-                       jdbcEventLogger = ((JdbcAdapter) 
adapter).getJdbcEventLogger();
+               if (jdbcEventLogger == null && adapter instanceof JdbcAdapter 
jdbcAdapter) {
+                       jdbcEventLogger = jdbcAdapter.getJdbcEventLogger();
                }
 
                return jdbcEventLogger;
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/MixedResultIncrementalFaultList.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/MixedResultIncrementalFaultList.java
index 471259ca3..c2a0d2582 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/MixedResultIncrementalFaultList.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/MixedResultIncrementalFaultList.java
@@ -80,8 +80,7 @@ class MixedResultIncrementalFaultList<E> extends 
IncrementalFaultList<E> {
         indexToEntity = new HashMap<>();
         scalarResult = true;
         for(Object next : metadata.getResultSetMapping()) {
-            if(next instanceof EntityResultSegment) {
-                EntityResultSegment resultSegment = (EntityResultSegment)next;
+            if(next instanceof EntityResultSegment resultSegment) {
                 ObjEntity entity = 
resultSegment.getClassDescriptor().getEntity();
                 // store entity's PK position in result
                 indexToEntity.put(resultSegment.getColumnOffset(), entity);
diff --git a/cayenne/src/main/java/org/apache/cayenne/access/ObjectDiff.java 
b/cayenne/src/main/java/org/apache/cayenne/access/ObjectDiff.java
index 9b2b68de4..a2ba349e7 100644
--- a/cayenne/src/main/java/org/apache/cayenne/access/ObjectDiff.java
+++ b/cayenne/src/main/java/org/apache/cayenne/access/ObjectDiff.java
@@ -117,8 +117,8 @@ public class ObjectDiff extends NodeDiff {
                             ? property.readProperty(object)
                             : property.readPropertyDirectly(object);
 
-                    if (target instanceof Persistent) {
-                        target = ((Persistent) target).getObjectId();
+                    if (target instanceof Persistent persistentTarget) {
+                        target = persistentTarget.getObjectId();
                     }
                     // else - null || Fault
 
@@ -151,8 +151,8 @@ public class ObjectDiff extends NodeDiff {
     public ObjectId getArcSnapshotValue(String propertyName) {
         Object value = arcSnapshot != null ? arcSnapshot.get(propertyName) : 
null;
 
-        if (value instanceof Fault) {
-            Persistent target = (Persistent) ((Fault) 
value).resolveFault(object, propertyName);
+        if (value instanceof Fault fault) {
+            Persistent target = (Persistent) fault.resolveFault(object, 
propertyName);
 
             value = target != null ? target.getObjectId() : null;
             arcSnapshot.put(propertyName, value);
@@ -166,8 +166,8 @@ public class ObjectDiff extends NodeDiff {
      */
     public ObjectId getCurrentArcSnapshotValue(String propertyName) {
         Object value = currentArcSnapshot != null ? 
currentArcSnapshot.get(propertyName) : null;
-        if (value instanceof Fault) {
-            Persistent target = (Persistent) ((Fault) 
value).resolveFault(object, propertyName);
+        if (value instanceof Fault fault) {
+            Persistent target = (Persistent) fault.resolveFault(object, 
propertyName);
 
             value = target != null ? target.getObjectId() : null;
             currentArcSnapshot.put(propertyName, value);
@@ -206,9 +206,7 @@ public class ObjectDiff extends NodeDiff {
 
         boolean addDiff = true;
 
-        if (diff instanceof ArcOperation) {
-
-            ArcOperation arcDiff = (ArcOperation) diff;
+        if (diff instanceof ArcOperation arcDiff) {
             Object targetId = arcDiff.getTargetNodeId();
             ArcId arcId = arcDiff.getArcId();
 
@@ -490,11 +488,9 @@ public class ObjectDiff extends NodeDiff {
                 return false;
             }
 
-            if (!(object instanceof ArcOperation)) {
+            if (!(object instanceof ArcOperation other)) {
                 return false;
             }
-
-            ArcOperation other = (ArcOperation) object;
             return arcId.equals(other.arcId) && 
Util.nullSafeEquals(targetNodeId, other.targetNodeId);
         }
 
diff --git a/cayenne/src/main/java/org/apache/cayenne/access/ObjectStore.java 
b/cayenne/src/main/java/org/apache/cayenne/access/ObjectStore.java
index 82e1b3e25..e181f9ec7 100644
--- a/cayenne/src/main/java/org/apache/cayenne/access/ObjectStore.java
+++ b/cayenne/src/main/java/org/apache/cayenne/access/ObjectStore.java
@@ -122,10 +122,10 @@ public class ObjectStore implements Serializable, 
SnapshotEventListener, GraphMa
             throw new CayenneRuntimeException("Object map is null.");
         }
         this.objectMap = objectMap;
-        if(objectMap instanceof SoftValueMap) {
-            ((SoftValueMap<Object, Persistent>) 
objectMap).setKeyCleanupCallback(this::onObjectKeyCleanup);
-        } else if(objectMap instanceof WeakValueMap) {
-            ((WeakValueMap<Object, Persistent>) 
objectMap).setKeyCleanupCallback(this::onObjectKeyCleanup);
+        if(objectMap instanceof SoftValueMap<Object, Persistent> softValueMap) 
{
+            softValueMap.setKeyCleanupCallback(this::onObjectKeyCleanup);
+        } else if(objectMap instanceof WeakValueMap<Object, Persistent> 
weakValueMap) {
+            weakValueMap.setKeyCleanupCallback(this::onObjectKeyCleanup);
         }
     }
 
@@ -558,8 +558,8 @@ public class ObjectStore implements Serializable, 
SnapshotEventListener, GraphMa
         // SnapshotEvents are replaced with GraphEvents (in 2.0) we won't need 
it
         GraphDiff diff = new SnapshotEventDecorator(event);
 
-        ObjectContext originatingContext = (event.getPostedBy() instanceof 
ObjectContext)
-                ? (ObjectContext) event.getPostedBy()
+        ObjectContext originatingContext = (event.getPostedBy() instanceof 
ObjectContext objectContext)
+                ? objectContext
                 : null;
         context.fireDataChannelChanged(originatingContext, diff);
     }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/ObjectStoreGraphDiff.java 
b/cayenne/src/main/java/org/apache/cayenne/access/ObjectStoreGraphDiff.java
index 3043fa403..90842fbb9 100644
--- a/cayenne/src/main/java/org/apache/cayenne/access/ObjectStoreGraphDiff.java
+++ b/cayenne/src/main/java/org/apache/cayenne/access/ObjectStoreGraphDiff.java
@@ -81,12 +81,12 @@ public class ObjectStoreGraphDiff implements GraphDiff {
 
                 noop = false;
 
-                if (diff.getObject() instanceof Validating) {
+                if (diff.getObject() instanceof Validating validating) {
                     if (objectsToValidate == null) {
                         objectsToValidate = new ArrayList<>();
                     }
 
-                    objectsToValidate.add((Validating) diff.getObject());
+                    objectsToValidate.add(validating);
                 }
 
             }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/ResultScanParentAttachmentStrategy.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/ResultScanParentAttachmentStrategy.java
index 0c45bfeaa..f517ec7e1 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/ResultScanParentAttachmentStrategy.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/ResultScanParentAttachmentStrategy.java
@@ -101,8 +101,8 @@ class ResultScanParentAttachmentStrategy implements 
ParentAttachmentStrategy {
         
         List<DataRow> rows = parentNode.getDataRows();
         if(rows == null) {
-            if(parentNode instanceof PrefetchProcessorJointNode) {
-                rows = ((PrefetchProcessorJointNode) 
parentNode).getResolvedRows();
+            if(parentNode instanceof PrefetchProcessorJointNode 
prefetchProcessorJointNode) {
+                rows = prefetchProcessorJointNode.getResolvedRows();
             }
             if(rows == null) {
                 return;
diff --git a/cayenne/src/main/java/org/apache/cayenne/access/ToManyList.java 
b/cayenne/src/main/java/org/apache/cayenne/access/ToManyList.java
index f9de9bb95..b835597e5 100644
--- a/cayenne/src/main/java/org/apache/cayenne/access/ToManyList.java
+++ b/cayenne/src/main/java/org/apache/cayenne/access/ToManyList.java
@@ -66,8 +66,7 @@ public class ToManyList<E> extends PersistentObjectList<E> 
implements Serializab
     protected boolean shouldAddToRemovedFromUnresolvedList(Object object) {
         // No point in adding a new or transient object -- these will never be 
fetched
         // from the database.
-        if (object instanceof Persistent) {
-            Persistent persistent = (Persistent) object;
+        if (object instanceof Persistent persistent) {
             if ((persistent.getPersistenceState() == 
PersistenceState.TRANSIENT)
                     || (persistent.getPersistenceState() == 
PersistenceState.NEW)) {
                 return false;
diff --git a/cayenne/src/main/java/org/apache/cayenne/access/ToManySet.java 
b/cayenne/src/main/java/org/apache/cayenne/access/ToManySet.java
index ea77f09c1..243b09309 100644
--- a/cayenne/src/main/java/org/apache/cayenne/access/ToManySet.java
+++ b/cayenne/src/main/java/org/apache/cayenne/access/ToManySet.java
@@ -37,8 +37,7 @@ public class ToManySet<E> extends PersistentObjectSet<E> 
implements Serializable
     protected boolean shouldAddToRemovedFromUnresolvedSet(E object) {
         // No point in adding a new or transient object -- these will never be 
fetched
         // from the database.
-        if (object instanceof Persistent) {
-            Persistent persistent = (Persistent) object;
+        if (object instanceof Persistent persistent) {
             return (persistent.getPersistenceState() != 
PersistenceState.TRANSIENT)
                     && (persistent.getPersistenceState() != 
PersistenceState.NEW);
         }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/flush/ArcValuesCreationHandler.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/flush/ArcValuesCreationHandler.java
index 275f9188c..6da46d468 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/flush/ArcValuesCreationHandler.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/flush/ArcValuesCreationHandler.java
@@ -115,8 +115,7 @@ class ArcValuesCreationHandler implements 
GraphChangeHandler {
         while(dbPathIterator.hasNext()) {
             CayenneMapEntry entry = dbPathIterator.next();
             flattenedPath = flattenedPath.dot(entry.getName());
-            if(entry instanceof DbRelationship) {
-                DbRelationship relationship = (DbRelationship)entry;
+            if(entry instanceof DbRelationship relationship) {
                 // intermediate db entity to be inserted
                 DbEntity target = relationship.getTargetEntity();
                 // if ID is present, just use it, otherwise create new
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/flush/PermanentObjectIdVisitor.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/flush/PermanentObjectIdVisitor.java
index 1817febbd..d1412a6d9 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/flush/PermanentObjectIdVisitor.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/flush/PermanentObjectIdVisitor.java
@@ -118,7 +118,7 @@ class PermanentObjectIdVisitor implements 
DbRowOpVisitor<Void> {
                     if (value != null) {
                         // primitive 0 has to be treated as NULL, or otherwise 
we can't generate PK for POJO's
                         Class<?> javaClass = objAttr.getJavaClass();
-                        if (!javaClass.isPrimitive() || !(value instanceof 
Number) || ((Number) value).intValue() != 0) {
+                        if (!javaClass.isPrimitive() || !(value instanceof 
Number number) || number.intValue() != 0) {
                             idMap.put(dbAttrName, value);
                             continue;
                         }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/flush/ValuesCreationHandler.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/flush/ValuesCreationHandler.java
index 10a6d309a..5b498a30f 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/flush/ValuesCreationHandler.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/flush/ValuesCreationHandler.java
@@ -67,7 +67,7 @@ class ValuesCreationHandler extends ArcValuesCreationHandler {
 
         DbAttribute dbAttribute = attribute.getDbAttribute();
         if(dbAttribute.isPrimaryKey()) {
-            if(!(newValue instanceof Number) || ((Number) 
newValue).longValue() != 0) {
+            if(!(newValue instanceof Number number) || number.longValue() != 
0) {
                 id.getReplacementIdMap().put(dbAttribute.getName(), newValue);
             }
         }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/flush/operation/DbRowOpMerger.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/flush/operation/DbRowOpMerger.java
index 7a7dedf01..0d569f581 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/flush/operation/DbRowOpMerger.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/flush/operation/DbRowOpMerger.java
@@ -38,8 +38,8 @@ public class DbRowOpMerger implements 
DbRowOpVisitor<DbRowOp>, BiFunction<DbRowO
 
     @Override
     public DbRowOp visitInsert(InsertDbRowOp other) {
-        if(dbRow instanceof DeleteDbRowOp) {
-            return new DeleteInsertDbRowOp((DeleteDbRowOp)dbRow, other);
+        if(dbRow instanceof DeleteDbRowOp deleteDbRowOp) {
+            return new DeleteInsertDbRowOp(deleteDbRowOp, other);
         }
         return mergeValues((DbRowOpWithValues) dbRow, other);
     }
@@ -59,8 +59,8 @@ public class DbRowOpMerger implements 
DbRowOpVisitor<DbRowOp>, BiFunction<DbRowO
             return other;
         }
         // clash of Insert/Delete with equal ObjectId
-        if(dbRow instanceof InsertDbRowOp) {
-            return new DeleteInsertDbRowOp(other, (InsertDbRowOp)dbRow);
+        if(dbRow instanceof InsertDbRowOp insertDbRowOp) {
+            return new DeleteInsertDbRowOp(other, insertDbRowOp);
         }
         return other;
     }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/flush/operation/GraphBasedDbRowOpSorter.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/flush/operation/GraphBasedDbRowOpSorter.java
index 7818afd1e..19037bef7 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/flush/operation/GraphBasedDbRowOpSorter.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/flush/operation/GraphBasedDbRowOpSorter.java
@@ -294,8 +294,7 @@ public class GraphBasedDbRowOpSorter implements 
DbRowOpSorter {
 
             // check and merge flattened IDs snapshots
             GraphManager graphManager = 
object.getObjectContext().getGraphManager();
-            if(graphManager instanceof ObjectStore) {
-                ObjectStore store = (ObjectStore)graphManager;
+            if(graphManager instanceof ObjectStore store) {
                 
store.getFlattenedIds(object.getObjectId()).forEach(flattenedId -> {
                     // map values of flattened ids from target to source
                     Map<String, Object> idSnapshot = 
flattenedId.getIdSnapshot();
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/sqlbuilder/SQLBuilder.java 
b/cayenne/src/main/java/org/apache/cayenne/access/sqlbuilder/SQLBuilder.java
index 4ccd28464..c9be5a7be 100644
--- a/cayenne/src/main/java/org/apache/cayenne/access/sqlbuilder/SQLBuilder.java
+++ b/cayenne/src/main/java/org/apache/cayenne/access/sqlbuilder/SQLBuilder.java
@@ -122,13 +122,13 @@ public final class SQLBuilder {
             return node(node);
         }
 
-        if(node instanceof FunctionNode) {
-            ((FunctionNode) node).setAlias(alias);
+        if(node instanceof FunctionNode functionNode) {
+            functionNode.setAlias(alias);
             return node(node);
         }
 
-        if(node instanceof ColumnNode) {
-            ((ColumnNode) node).setAlias(alias);
+        if(node instanceof ColumnNode columnNode) {
+            columnNode.setAlias(alias);
             return node(node);
         }
 
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/sqlbuilder/sqltree/TrimmingColumnNode.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/sqlbuilder/sqltree/TrimmingColumnNode.java
index bf1f56997..e1d4a4f04 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/sqlbuilder/sqltree/TrimmingColumnNode.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/sqlbuilder/sqltree/TrimmingColumnNode.java
@@ -144,8 +144,8 @@ public class TrimmingColumnNode extends Node {
                 continue;
             }
             if(sibling.getType() == NodeType.VALUE) {
-                if(((ValueNode)sibling).getValue() instanceof CharSequence) {
-                    int valLen = ((CharSequence) 
((ValueNode)sibling).getValue()).length();
+                if(((ValueNode)sibling).getValue() instanceof CharSequence 
charSequence) {
+                    int valLen = charSequence.length();
                     return Math.max(1, valLen);
                 }
             }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/sqlbuilder/sqltree/ValueNode.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/sqlbuilder/sqltree/ValueNode.java
index a6c50792c..220aadcf8 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/sqlbuilder/sqltree/ValueNode.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/sqlbuilder/sqltree/ValueNode.java
@@ -102,14 +102,14 @@ public class ValueNode extends Node {
                 throw new CayenneRuntimeException("Unsupported array type %s", 
val.getClass().getName());
             }
         } else {
-            if(val instanceof Persistent) {
-                appendValue((Persistent) val, buffer);
-            } else if(val instanceof ObjectId) {
-                appendValue((ObjectId) val, buffer);
-            } else if(val instanceof Supplier) {
-                appendValue(((Supplier<?>) val).get(), buffer);
-            } else if(val instanceof CharSequence) {
-                appendStringValue(buffer, (CharSequence)val);
+            if(val instanceof Persistent persistent) {
+                appendValue(persistent, buffer);
+            } else if(val instanceof ObjectId objectId) {
+                appendValue(objectId, buffer);
+            } else if(val instanceof Supplier<?> supplier) {
+                appendValue(supplier.get(), buffer);
+            } else if(val instanceof CharSequence charSequence) {
+                appendStringValue(buffer, charSequence);
             } else {
                 appendObjectValue(buffer, val);
             }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLConditionTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLConditionTranslator.java
index 38d816d17..706b7080b 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLConditionTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLConditionTranslator.java
@@ -365,15 +365,13 @@ public class EJBQLConditionTranslator extends 
EJBQLBaseVisitor {
             // BUT in such as ":x = parameter" (where x=null) we don't do
             // anything
             // as a result it can be unsupported in some DB
-            if (expression.getChild(1) instanceof EJBQLNamedInputParameter) {
-                EJBQLNamedInputParameter par = (EJBQLNamedInputParameter) 
expression.getChild(1);
+            if (expression.getChild(1) instanceof EJBQLNamedInputParameter 
par) {
                 if (context.namedParameters.containsKey(par.getText())
                         && context.namedParameters.get(par.getText()) == null) 
{
                     context.append(toAppend);
                     return true;
                 }
-            } else if (expression.getChild(1) instanceof 
EJBQLPositionalInputParameter) {
-                EJBQLPositionalInputParameter par = 
(EJBQLPositionalInputParameter) expression.getChild(1);
+            } else if (expression.getChild(1) instanceof 
EJBQLPositionalInputParameter par) {
                 if (context.positionalParameters.containsKey(par.getPosition())
                         && context.positionalParameters.get(par.getPosition()) 
== null) {
                     context.append(toAppend);
@@ -817,12 +815,12 @@ public class EJBQLConditionTranslator extends 
EJBQLBaseVisitor {
         Object object = context.getBoundParameter(boundName);
 
         Map<?, ?> map = null;
-        if (object instanceof Persistent) {
-            map = ((Persistent) object).getObjectId().getIdSnapshot();
-        } else if (object instanceof ObjectId) {
-            map = ((ObjectId) object).getIdSnapshot();
-        } else if (object instanceof Map) {
-            map = (Map<?, ?>) object;
+        if (object instanceof Persistent persistent) {
+            map = persistent.getObjectId().getIdSnapshot();
+        } else if (object instanceof ObjectId objectId) {
+            map = objectId.getIdSnapshot();
+        } else if (object instanceof Map<?, ?> objectAsMap) {
+            map = objectAsMap;
         }
 
         if (map != null) {
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLIdentifierColumnsTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLIdentifierColumnsTranslator.java
index b0f98d14d..654cc841f 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLIdentifierColumnsTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLIdentifierColumnsTranslator.java
@@ -108,8 +108,8 @@ class EJBQLIdentifierColumnsTranslator extends 
EJBQLBaseVisitor {
                         EJBQLTableId rhsId = new EJBQLTableId(lhsId, 
dr.getName());
                         joinAppender.appendOuterJoin(marker, lhsId, rhsId);
                         lhsId = rhsId;
-                    } else if (pathPart instanceof DbAttribute) {
-                        appendColumn(idVar, oa, (DbAttribute) pathPart, 
fields, oa.getType());
+                    } else if (pathPart instanceof DbAttribute dbAttribute) {
+                        appendColumn(idVar, oa, dbAttribute, fields, 
oa.getType());
                     }
                 }
                 return true;
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLJoinAppender.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLJoinAppender.java
index 046c349c8..a6a3e1f7a 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLJoinAppender.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLJoinAppender.java
@@ -283,8 +283,8 @@ public class EJBQLJoinAppender {
 
         List<Object> resultSetMapping = 
context.getMetadata().getResultSetMapping();
         for (Object mapping : resultSetMapping) {
-            if (mapping instanceof EntityResultSegment) {
-                if (entityName.equals(((EntityResultSegment) mapping)
+            if (mapping instanceof EntityResultSegment entityResultSegment) {
+                if (entityName.equals(entityResultSegment
                         .getClassDescriptor()
                         .getEntity()
                         .getName())) {
@@ -308,8 +308,7 @@ public class EJBQLJoinAppender {
                     Iterator<CayenneMapEntry> dbPathIterator = 
objAttribute.getDbPathIterator();
                     while (dbPathIterator.hasNext()) {
                         CayenneMapEntry next = dbPathIterator.next();
-                        if (next instanceof DbRelationship) {
-                            DbRelationship rel = (DbRelationship) next;
+                        if (next instanceof DbRelationship rel) {
                             context.append(" LEFT OUTER JOIN ");
                             String targetEntityName = 
quoter.quotedFullyQualifiedName(rel.getTargetEntity());
                             String subqueryTargetAlias = 
context.getTableAlias(id.getEntityId(), targetEntityName);
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLPathTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLPathTranslator.java
index 032c90b96..b2e997ce1 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLPathTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLPathTranslator.java
@@ -199,8 +199,8 @@ public abstract class EJBQLPathTranslator extends 
EJBQLBaseVisitor {
                Iterator<?> it = attribute.getDbPathIterator();
                while (it.hasNext()) {
                        Object pathComponent = it.next();
-                       if (pathComponent instanceof DbAttribute) {
-                               table = ((DbAttribute) 
pathComponent).getEntity();
+                       if (pathComponent instanceof DbAttribute dbAttribute) {
+                               table = dbAttribute.getEntity();
                        }
                }
 
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectColumnsTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectColumnsTranslator.java
index 7f9448c7f..0e356d91d 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectColumnsTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/ejbql/EJBQLSelectColumnsTranslator.java
@@ -179,8 +179,7 @@ public class EJBQLSelectColumnsTranslator extends 
EJBQLBaseVisitor {
                         // DbRelationships not processed, because they will be 
processed later when appending table
                         if (pathPart == null) {
                             throw new CayenneRuntimeException("ObjAttribute 
has no component: %s", attribute.getName());
-                        } else if (pathPart instanceof DbAttribute) {
-                            DbAttribute dbAttribute = (DbAttribute) pathPart;
+                        } else if (pathPart instanceof DbAttribute 
dbAttribute) {
                             appendColumn(attribute.getType(),
                                     context.getTableAlias(lhsId.getEntityId(), 
context.getQuotingStrategy()
                                             
.quotedFullyQualifiedName(dbAttribute.getEntity())),
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/select/ExistsExpressionTranslator.java
 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/select/ExistsExpressionTranslator.java
index ac2f294f4..69f82b588 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/translator/select/ExistsExpressionTranslator.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/translator/select/ExistsExpressionTranslator.java
@@ -64,8 +64,8 @@ class ExistsExpressionTranslator {
         }
 
         Expression translatedExpression;
-        if(child instanceof Expression) {
-            translatedExpression = (Expression) child;
+        if(child instanceof Expression expression) {
+            translatedExpression = expression;
         } else {
             throw new IllegalArgumentException("Expected expression as a 
child, got " + child);
         }
@@ -79,8 +79,8 @@ class ExistsExpressionTranslator {
 
         // 0. quick path for a simple case - exists query for a single path 
expression
         // maybe we should support path as a condition in a general translator 
too, not only here
-        if (translatedExpression instanceof ASTDbPath) {
-            DbPathMarker marker = createPathMarker(entity, (ASTDbPath) 
translatedExpression);
+        if (translatedExpression instanceof ASTDbPath astDbPathExpression) {
+            DbPathMarker marker = createPathMarker(entity, 
astDbPathExpression);
             Expression pathExistExp = markerToExpression(marker);
             if(marker.relationship == null) {
                 return pathExistExp;
@@ -90,7 +90,7 @@ class ExistsExpressionTranslator {
 
         // 1. transform all paths
         translatedExpression = translatedExpression.transform(
-                o -> o instanceof ASTDbPath ? createPathMarker(entity, 
(ASTDbPath) o) : o
+                o -> o instanceof ASTDbPath astDbPath ? 
createPathMarker(entity, astDbPath) : o
         );
 
         // 2. group paths with db relationship by their parent conditions and 
relationships
@@ -155,8 +155,8 @@ class ExistsExpressionTranslator {
         if (node instanceof ParentMarker) {
             return null;
         }
-        if (node instanceof DbPathMarker) {
-            return markerToExpression((DbPathMarker) node);
+        if (node instanceof DbPathMarker dbPathMarker) {
+            return markerToExpression(dbPathMarker);
         }
         return node.deepCopy();
     }
@@ -191,8 +191,7 @@ class ExistsExpressionTranslator {
             Expression expressionToTranslate) {
         Map<SimpleNode, Map<DbRelationship, List<DbPathMarker>>> parents = new 
HashMap<>(4);
         expressionToTranslate.traverse((SimpleTraversalHandler) (node, 
parentNode) -> {
-            if (node instanceof DbPathMarker) {
-                DbPathMarker marker = (DbPathMarker) node;
+            if (node instanceof DbPathMarker marker) {
                 if (marker.root()) {
                     return;
                 }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/types/EnumType.java 
b/cayenne/src/main/java/org/apache/cayenne/access/types/EnumType.java
index 2476e7646..eee1ce600 100644
--- a/cayenne/src/main/java/org/apache/cayenne/access/types/EnumType.java
+++ b/cayenne/src/main/java/org/apache/cayenne/access/types/EnumType.java
@@ -110,9 +110,9 @@ public class EnumType<T extends Enum<T>> implements 
ExtendedType<T> {
 
         StringBuilder buffer = new StringBuilder();
         buffer.append(value.name());
-        if (value instanceof ExtendedEnumeration) {
+        if (value instanceof ExtendedEnumeration extendedEnumeration) {
             buffer.append("=");
-            Object dbValue = ((ExtendedEnumeration) value).getDatabaseValue();
+            Object dbValue = extendedEnumeration.getDatabaseValue();
             if (dbValue instanceof String) {
                 buffer.append("'");
             }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/access/types/ExtendedEnumType.java 
b/cayenne/src/main/java/org/apache/cayenne/access/types/ExtendedEnumType.java
index d061ca6b1..5d0651478 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/access/types/ExtendedEnumType.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/access/types/ExtendedEnumType.java
@@ -100,8 +100,7 @@ public class ExtendedEnumType<T extends Enum<T>> implements 
ExtendedType<T> {
             int pos,
             int type,
             int precision) throws Exception {
-        if (value instanceof ExtendedEnumeration) {
-            ExtendedEnumeration e = (ExtendedEnumeration) value;
+        if (value instanceof ExtendedEnumeration e) {
             if (TypesMapping.isNumeric(type)) {
                 statement.setInt(pos, (Integer) e.getDatabaseValue());
             } else {
@@ -153,8 +152,8 @@ public class ExtendedEnumType<T extends Enum<T>> implements 
ExtendedType<T> {
         StringBuilder buffer = new StringBuilder();
         // buffer.append(object.getClass().getName()).append(".");
         buffer.append(value.name()).append("=");
-        if (value instanceof ExtendedEnumeration) {
-            Object dbValue = ((ExtendedEnumeration) value).getDatabaseValue();
+        if (value instanceof ExtendedEnumeration extendedEnumeration) {
+            Object dbValue = extendedEnumeration.getDatabaseValue();
             if (dbValue instanceof String) {
                 buffer.append("'");
             }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/DataContextFactory.java
 
b/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/DataContextFactory.java
index 8b601a5fa..305f8baa2 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/DataContextFactory.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/DataContextFactory.java
@@ -65,11 +65,11 @@ public class DataContextFactory implements 
ObjectContextFactory {
     public ObjectContext createContext(DataChannel parent) {
 
         // this switch may go away once we figure out clean property 
configuration...
-        if (parent instanceof DataDomain) {
-            return createdFromDataDomain((DataDomain) parent);
+        if (parent instanceof DataDomain dataDomain) {
+            return createdFromDataDomain(dataDomain);
         }
-        else if (parent instanceof DataContext) {
-            return createFromDataContext((DataContext) parent);
+        else if (parent instanceof DataContext dataContext) {
+            return createFromDataContext(dataContext);
         }
         else {
             return createFromGenericChannel(parent);
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/DelegatingDataSourceFactory.java
 
b/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/DelegatingDataSourceFactory.java
index afbf4498f..848a7a105 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/DelegatingDataSourceFactory.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/configuration/runtime/DelegatingDataSourceFactory.java
@@ -87,8 +87,8 @@ public class DelegatingDataSourceFactory implements 
DataSourceFactory {
     protected void attachToScope(DataSource dataSource) {
 
         if (!managedDataSources.containsKey(dataSource)) {
-            if (dataSource instanceof ScopeEventListener) {
-                managedDataSources.put(dataSource, (ScopeEventListener) 
dataSource);
+            if (dataSource instanceof ScopeEventListener scopeEventListener) {
+                managedDataSources.put(dataSource, scopeEventListener);
             }
         }
     }
diff --git 
a/cayenne/src/main/java/org/apache/cayenne/configuration/xml/NamespaceAwareNestedTagHandler.java
 
b/cayenne/src/main/java/org/apache/cayenne/configuration/xml/NamespaceAwareNestedTagHandler.java
index 98c6660db..d59a190c5 100644
--- 
a/cayenne/src/main/java/org/apache/cayenne/configuration/xml/NamespaceAwareNestedTagHandler.java
+++ 
b/cayenne/src/main/java/org/apache/cayenne/configuration/xml/NamespaceAwareNestedTagHandler.java
@@ -85,8 +85,8 @@ abstract public class NamespaceAwareNestedTagHandler extends 
SAXNestedTagHandler
         super.endElement(namespaceURI, localName, qName);
         String data = charactersBuffer.toString();
         if(!processCharData(localName, data)) {
-            if(namespaceURI.equals(targetNamespace) && parentHandler 
instanceof NamespaceAwareNestedTagHandler) {
-                
((NamespaceAwareNestedTagHandler)parentHandler).processCharData(localName, 
data);
+            if(namespaceURI.equals(targetNamespace) && parentHandler 
instanceof NamespaceAwareNestedTagHandler namespaceAwareNestedTagHandler) {
+                namespaceAwareNestedTagHandler.processCharData(localName, 
data);
             }
         }
     }

Reply via email to