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 2019/09/12 12:43:20 UTC

[cayenne] 01/02: CAY-2617 NPE in processing hierarchical prefetch node - process null case

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

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

commit 51b9f4f72e68f167f45d7997d8aa685d3464ff79
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Thu Sep 12 15:32:13 2019 +0300

    CAY-2617 NPE in processing hierarchical prefetch node
     - process null case
---
 .../src/main/java/org/apache/cayenne/access/ObjectResolver.java    | 7 +++----
 .../java/org/apache/cayenne/access/PrefetchProcessorJointNode.java | 6 ++----
 2 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectResolver.java b/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectResolver.java
index d658abf..6b54c59 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectResolver.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/ObjectResolver.java
@@ -290,12 +290,11 @@ class ObjectResolver {
 
 			// null either means a bug in Cayenne (e.g. CAY-2101) or the inheritance qualifiers are messed up
 			if(entityName == null) {
-
 				if(LOGGER.isWarnEnabled()) {
-					LOGGER.warn("** Null entity name for DataRow, can't resolve sub descriptor for "
-							+ descriptor.getEntity().getName());
-					return descriptor;
+					LOGGER.warn("** Null entity name for DataRow, can't resolve sub descriptor for {}",
+							descriptor.getEntity().getName());
 				}
+				return descriptor;
 			}
 
 			return context.getEntityResolver().getClassDescriptor(entityName);
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java b/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java
index dc7003a..7b8cd03 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/PrefetchProcessorJointNode.java
@@ -139,12 +139,10 @@ class PrefetchProcessorJointNode extends PrefetchProcessorNode {
             row.put(column.getName(), flatRow.get(column.getDataRowKey()));
         }
 
-        // since JDBC row reader won't inject JOINED entity name, we have to
-        // detect it here...
-
+        // since JDBC row reader won't inject JOINED entity name, we have to detect it here...
         ClassDescriptor descriptor = resolver.getDescriptor();
         ObjEntity entity = descriptor.getEntityInheritanceTree().entityMatchingRow(row);
-        row.setEntityName(entity.getName());
+        row.setEntityName(entity == null ? null : entity.getName());
         return row;
     }