You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2021/02/04 10:18:57 UTC

[cayenne] branch master updated: Fix failures on JDK 17

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 <st...@gmail.com>
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);
+		}
+	}
 }