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

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git


The following commit(s) were added to refs/heads/master by this push:
     new 68901e4  Fix failures on JDK 17
68901e4 is described below

commit 68901e4c908e59f02c64115b5042f76ca71171e1
Author: Nikita Timofeev <[email protected]>
AuthorDate: Thu Feb 4 13:18:47 2021 +0300

    Fix failures on JDK 17
---
 .../java/org/apache/cayenne/query/SelectById.java  | 52 ++++++++++++++++------
 1 file changed, 39 insertions(+), 13 deletions(-)

diff --git 
a/cayenne-server/src/main/java/org/apache/cayenne/query/SelectById.java 
b/cayenne-server/src/main/java/org/apache/cayenne/query/SelectById.java
index 3f507ca..0fe1e4d 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/SelectById.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/SelectById.java
@@ -56,20 +56,20 @@ public class SelectById<T> extends IndirectQuery implements 
Select<T> {
        PrefetchTreeNode prefetches;
 
        public static <T> SelectById<T> query(Class<T> entityType, Object id) {
-               QueryRoot root = resolver -> resolver.getObjEntity(entityType, 
true);
+               QueryRoot root = new ByEntityTypeResolver(entityType);
                IdSpec idSpec = new SingleScalarIdSpec(id);
                return new SelectById<>(root, idSpec);
        }
 
        public static <T> SelectById<T> query(Class<T> entityType, Map<String, 
?> id) {
-               QueryRoot root = resolver -> resolver.getObjEntity(entityType, 
true);
+               QueryRoot root = new ByEntityTypeResolver(entityType);
                IdSpec idSpec = new SingleMapIdSpec(id);
                return new SelectById<>(root, idSpec);
        }
 
        public static <T> SelectById<T> query(Class<T> entityType, ObjectId id) 
{
                checkObjectId(id);
-               QueryRoot root = resolver -> 
resolver.getObjEntity(id.getEntityName());
+               QueryRoot root = new ByEntityNameResolver(id.getEntityName());
                IdSpec idSpec = new SingleMapIdSpec(id.getIdSnapshot());
                return new SelectById<>(root, idSpec);
        }
@@ -78,7 +78,7 @@ public class SelectById<T> extends IndirectQuery implements 
Select<T> {
         * @since 4.2
         */
        public static <T> SelectById<T> query(Class<T> entityType, Object 
firstId, Object... otherIds) {
-               QueryRoot root = resolver -> resolver.getObjEntity(entityType, 
true);
+               QueryRoot root = new ByEntityTypeResolver(entityType);
                IdSpec idSpec = new MultiScalarIdSpec(firstId, otherIds);
                return new SelectById<>(root, idSpec);
        }
@@ -87,7 +87,7 @@ public class SelectById<T> extends IndirectQuery implements 
Select<T> {
         * @since 4.2
         */
        public static <T> SelectById<T> query(Class<T> entityType, 
Collection<Object> ids) {
-               QueryRoot root = resolver -> resolver.getObjEntity(entityType, 
true);
+               QueryRoot root = new ByEntityTypeResolver(entityType);
                IdSpec idSpec = new MultiScalarIdSpec(ids);
                return new SelectById<>(root, idSpec);
        }
@@ -97,7 +97,7 @@ public class SelectById<T> extends IndirectQuery implements 
Select<T> {
         */
        @SafeVarargs
        public static <T> SelectById<T> query(Class<T> entityType, Map<String, 
?> firstId, Map<String, ?>... otherIds) {
-               QueryRoot root = resolver -> resolver.getObjEntity(entityType, 
true);
+               QueryRoot root = new ByEntityTypeResolver(entityType);
                IdSpec idSpec = new MultiMapIdSpec(firstId, otherIds);
                return new SelectById<>(root, idSpec);
        }
@@ -111,26 +111,26 @@ public class SelectById<T> extends IndirectQuery 
implements Select<T> {
                        checkObjectId(id, firstId.getEntityName());
                }
 
-               QueryRoot root = resolver -> 
resolver.getObjEntity(firstId.getEntityName());
+               QueryRoot root = new 
ByEntityNameResolver(firstId.getEntityName());
                IdSpec idSpec = new MultiMapIdSpec(firstId, otherIds);
                return new SelectById<>(root, idSpec);
        }
 
        public static SelectById<DataRow> dataRowQuery(Class<?> entityType, 
Object id) {
-               QueryRoot root = resolver -> resolver.getObjEntity(entityType, 
true);
+               QueryRoot root = new ByEntityTypeResolver(entityType);
                IdSpec idSpec = new SingleScalarIdSpec(id);
                return new SelectById<>(root, idSpec, true);
        }
 
        public static SelectById<DataRow> dataRowQuery(Class<?> entityType, 
Map<String, ?> id) {
-               QueryRoot root = resolver -> resolver.getObjEntity(entityType, 
true);
+               QueryRoot root = new ByEntityTypeResolver(entityType);
                IdSpec idSpec = new SingleMapIdSpec(id);
                return new SelectById<>(root, idSpec, true);
        }
 
        public static SelectById<DataRow> dataRowQuery(ObjectId id) {
                checkObjectId(id);
-               QueryRoot root = resolver -> 
resolver.getObjEntity(id.getEntityName());
+               QueryRoot root = new ByEntityNameResolver(id.getEntityName());
                IdSpec idSpec = new SingleMapIdSpec(id.getIdSnapshot());
                return new SelectById<>(root, idSpec, true);
        }
@@ -139,7 +139,7 @@ public class SelectById<T> extends IndirectQuery implements 
Select<T> {
         * @since 4.2
         */
        public static SelectById<DataRow> dataRowQuery(Class<?> entityType, 
Object firstId, Object... otherIds) {
-               QueryRoot root = resolver -> resolver.getObjEntity(entityType, 
true);
+               QueryRoot root = new ByEntityTypeResolver(entityType);
                IdSpec idSpec = new MultiScalarIdSpec(firstId, otherIds);
                return new SelectById<>(root, idSpec, true);
        }
@@ -149,7 +149,7 @@ public class SelectById<T> extends IndirectQuery implements 
Select<T> {
         */
        @SafeVarargs
        public static SelectById<DataRow> dataRowQuery(Class<?> entityType, 
Map<String, ?> firstId, Map<String, ?>... otherIds) {
-               QueryRoot root = resolver -> resolver.getObjEntity(entityType, 
true);
+               QueryRoot root = new ByEntityTypeResolver(entityType);
                IdSpec idSpec = new MultiMapIdSpec(firstId, otherIds);
                return new SelectById<>(root, idSpec, true);
        }
@@ -163,7 +163,7 @@ public class SelectById<T> extends IndirectQuery implements 
Select<T> {
                        checkObjectId(id, firstId.getEntityName());
                }
 
-               QueryRoot root = resolver -> 
resolver.getObjEntity(firstId.getEntityName());
+               QueryRoot root = new 
ByEntityNameResolver(firstId.getEntityName());
                IdSpec idSpec = new MultiMapIdSpec(firstId, otherIds);
                return new SelectById<>(root, idSpec, true);
        }
@@ -455,4 +455,30 @@ public class SelectById<T> extends IndirectQuery 
implements Select<T> {
                        return or(expressions);
                }
        }
+
+       private static class ByEntityTypeResolver implements QueryRoot {
+               private final Class<?> entityType;
+
+               public ByEntityTypeResolver(Class<?> entityType) {
+                       this.entityType = entityType;
+               }
+
+               @Override
+               public ObjEntity resolve(EntityResolver resolver) {
+                       return resolver.getObjEntity(entityType, true);
+               }
+       }
+
+       private static class ByEntityNameResolver implements QueryRoot {
+               private final String entityName;
+
+               public ByEntityNameResolver(String entityName) {
+                       this.entityName = entityName;
+               }
+
+               @Override
+               public ObjEntity resolve(EntityResolver resolver) {
+                       return resolver.getObjEntity(entityName);
+               }
+       }
 }

Reply via email to