You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2016/11/27 14:22:24 UTC
[1/7] cayenne git commit: CAY-2141 Skip repetitive query parameters
Repository: cayenne
Updated Branches:
refs/heads/master 0e3a07c1e -> 949e3831a
CAY-2141
Skip repetitive query parameters
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/a1176941
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/a1176941
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/a1176941
Branch: refs/heads/master
Commit: a11769410261056bc21d018b85a0176acf999974
Parents: b0d0faf
Author: Nikita Timofeev <st...@gmail.com>
Authored: Fri Nov 18 18:34:11 2016 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Fri Nov 18 18:34:11 2016 +0300
----------------------------------------------------------------------
.../access/HierarchicalObjectResolver.java | 35 +++++++++++++-------
1 file changed, 23 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/a1176941/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java b/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
index ec45d7c..9d1e5f6 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
@@ -176,34 +176,45 @@ class HierarchicalObjectResolver {
List<PrefetchSelectQuery> queries = new ArrayList<PrefetchSelectQuery>();
int qualifiersCount = 0;
PrefetchSelectQuery currentQuery = null;
+ List<DbJoin> joins = lastDbRelationship.getJoins();
+ Set<List<Object>> values = new HashSet<>();
for (Object dataRow : parentDataRows) {
Expression allJoinsQualifier = null;
- List<DbJoin> joins = lastDbRelationship.getJoins();
// handling too big qualifiers
if (currentQuery == null
|| (maxIdQualifierSize > 0 && qualifiersCount + joins.size() > maxIdQualifierSize)) {
+
+ if(currentQuery != null) {
+ for(List<Object> joinValues : values) {
+ for(int i=0; i<joins.size(); i++) {
+ Expression joinQualifier = ExpressionFactory.matchDbExp(pathPrefix
+ + joins.get(i).getTargetName(), joinValues.get(i));
+ if (allJoinsQualifier == null) {
+ allJoinsQualifier = joinQualifier;
+ } else {
+ allJoinsQualifier = allJoinsQualifier.andExp(joinQualifier);
+ }
+ }
+ currentQuery.orQualifier(allJoinsQualifier);
+ }
+ }
+
currentQuery = new PrefetchSelectQuery(node.getPath(), relationship);
queries.add(currentQuery);
qualifiersCount = 0;
}
+ List<Object> joinValues = new ArrayList<>();
for (DbJoin join : joins) {
-
Object targetValue = ((DataRow) dataRow).get(join.getSourceName());
- Expression joinQualifier = ExpressionFactory.matchDbExp(pathPrefix
- + join.getTargetName(), targetValue);
- if (allJoinsQualifier == null) {
- allJoinsQualifier = joinQualifier;
- }
- else {
- allJoinsQualifier = allJoinsQualifier.andExp(joinQualifier);
- }
+ joinValues.add(targetValue);
}
- currentQuery.orQualifier(allJoinsQualifier);
- qualifiersCount += joins.size();
+ if(values.add(joinValues)) {
+ qualifiersCount += joins.size();
+ }
}
PrefetchTreeNode jointSubtree = node.cloneJointSubtree();
[5/7] cayenne git commit: refreshing older API in tests
Posted by aa...@apache.org.
refreshing older API in tests
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/e73365ab
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/e73365ab
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/e73365ab
Branch: refs/heads/master
Commit: e73365ab581ed6afa6aec3e890179e24e8da7f56
Parents: 47887fb
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Sun Nov 27 17:11:13 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Sun Nov 27 17:11:16 2016 +0300
----------------------------------------------------------------------
.../access/DataContextDisjointByIdPrefetchIT.java | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/e73365ab/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
index 6e633fb..57831f5 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextDisjointByIdPrefetchIT.java
@@ -21,7 +21,6 @@ package org.apache.cayenne.access;
import org.apache.cayenne.PersistenceState;
import org.apache.cayenne.ValueHolder;
import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.query.PrefetchTreeNode;
import org.apache.cayenne.query.SelectQuery;
import org.apache.cayenne.query.SortOrder;
import org.apache.cayenne.test.jdbc.DBHelper;
@@ -117,8 +116,7 @@ public class DataContextDisjointByIdPrefetchIT extends ServerCase {
createArtistWithTwoPaintingsDataSet();
SelectQuery query = new SelectQuery(Artist.class);
- query.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY).setSemantics(
- PrefetchTreeNode.DISJOINT_BY_ID_PREFETCH_SEMANTICS);
+ query.addPrefetch(Artist.PAINTING_ARRAY.disjointById());
final List<Artist> result = context.performQuery(query);
queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
@@ -126,7 +124,7 @@ public class DataContextDisjointByIdPrefetchIT extends ServerCase {
public void execute() {
assertFalse(result.isEmpty());
Artist b1 = result.get(0);
- List<Painting> toMany = (List<Painting>) b1.readPropertyDirectly(Artist.PAINTING_ARRAY_PROPERTY);
+ List<Painting> toMany = (List<Painting>) b1.readPropertyDirectly(Artist.PAINTING_ARRAY.getName());
assertNotNull(toMany);
assertFalse(((ValueHolder) toMany).isFault());
assertEquals(2, toMany.size());
@@ -148,7 +146,7 @@ public class DataContextDisjointByIdPrefetchIT extends ServerCase {
createArtistWithTwoPaintingsDataSet();
SelectQuery query = new SelectQuery(Painting.class);
- query.addPrefetch(Painting.TO_ARTIST_PROPERTY).setSemantics(PrefetchTreeNode.DISJOINT_BY_ID_PREFETCH_SEMANTICS);
+ query.addPrefetch(Painting.TO_ARTIST.disjointById());
final List<Painting> result = context.performQuery(query);
queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
@@ -168,8 +166,7 @@ public class DataContextDisjointByIdPrefetchIT extends ServerCase {
createThreeArtistsWithPlentyOfPaintingsDataSet();
final SelectQuery query = new SelectQuery(Artist.class);
- query.addPrefetch(Artist.PAINTING_ARRAY_PROPERTY).setSemantics(
- PrefetchTreeNode.DISJOINT_BY_ID_PREFETCH_SEMANTICS);
+ query.addPrefetch(Artist.PAINTING_ARRAY.disjointById());
query.addOrdering("db:" + Artist.ARTIST_ID_PK_COLUMN, SortOrder.ASCENDING);
query.setFetchLimit(2);
@@ -203,8 +200,7 @@ public class DataContextDisjointByIdPrefetchIT extends ServerCase {
createTwoPaintingsWithInfosDataSet();
SelectQuery query = new SelectQuery(Painting.class);
- query.addPrefetch(Painting.TO_PAINTING_INFO_PROPERTY).setSemantics(
- PrefetchTreeNode.DISJOINT_BY_ID_PREFETCH_SEMANTICS);
+ query.addPrefetch(Painting.TO_PAINTING_INFO.disjointById());
final List<Painting> result = context.performQuery(query);
queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
@@ -212,7 +208,7 @@ public class DataContextDisjointByIdPrefetchIT extends ServerCase {
assertFalse(result.isEmpty());
List<String> boxColors = new ArrayList<String>();
for (Painting box : result) {
- PaintingInfo info = (PaintingInfo) box.readPropertyDirectly(Painting.TO_PAINTING_INFO_PROPERTY);
+ PaintingInfo info = (PaintingInfo) box.readPropertyDirectly(Painting.TO_PAINTING_INFO.getName());
assertNotNull(info);
boxColors.add(info.getTextReview());
assertEquals(PersistenceState.COMMITTED, info.getPersistenceState());
[7/7] cayenne git commit: CAY-2141 Disjoint-by-id prefetch generates
repeating ID conditions
Posted by aa...@apache.org.
CAY-2141 Disjoint-by-id prefetch generates repeating ID conditions
* micro-optimization
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/949e3831
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/949e3831
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/949e3831
Branch: refs/heads/master
Commit: 949e3831a534a33b576ba43ae1c4e44b8d6ac679
Parents: 2656dc8
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Sun Nov 27 17:22:15 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Sun Nov 27 17:22:15 2016 +0300
----------------------------------------------------------------------
.../java/org/apache/cayenne/access/HierarchicalObjectResolver.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/949e3831/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java b/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
index 104dd76..613c88d 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
@@ -194,7 +194,7 @@ class HierarchicalObjectResolver {
values = new HashSet<>();
}
- List<Object> joinValues = new ArrayList<>();
+ List<Object> joinValues = new ArrayList<>(joins.size());
for (DbJoin join : joins) {
Object targetValue = ((DataRow) dataRow).get(join.getSourceName());
joinValues.add(targetValue);
[3/7] cayenne git commit: Merge branch '136'
Posted by aa...@apache.org.
Merge branch '136'
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/8355d729
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/8355d729
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/8355d729
Branch: refs/heads/master
Commit: 8355d729ca1ef73208fea511c291d4b60ab548e2
Parents: 0e3a07c 6818800
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Sun Nov 27 16:49:40 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Sun Nov 27 16:49:40 2016 +0300
----------------------------------------------------------------------
.../access/HierarchicalObjectResolver.java | 49 ++++++++++++++------
1 file changed, 34 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
[4/7] cayenne git commit: CAY-2141 Disjoint-by-id prefetch generates
repeating ID conditions
Posted by aa...@apache.org.
CAY-2141 Disjoint-by-id prefetch generates repeating ID conditions
* release notes
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/47887fb8
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/47887fb8
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/47887fb8
Branch: refs/heads/master
Commit: 47887fb813c543a7d4777d4b4993e50cbe33ab2f
Parents: 8355d72
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Sun Nov 27 16:51:21 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Sun Nov 27 16:51:21 2016 +0300
----------------------------------------------------------------------
docs/doc/src/main/resources/RELEASE-NOTES.txt | 1 +
1 file changed, 1 insertion(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/47887fb8/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt b/docs/doc/src/main/resources/RELEASE-NOTES.txt
index 5cf1320..d472619 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -67,6 +67,7 @@ CAY-2126 Modeler cannot upgrade project from v7 to v9
CAY-2128 Modeler stored procedures are not imported
CAY-2131 Modeler NullPointerException in reverse engineering when importing different catalogs in one datamap
CAY-2138 NVARCHAR, LONGNVARCHAR and NCLOB types are missing from Firebird types.xml
+CAY-2141 Disjoint-by-id prefetch generates repeating ID conditions
CAY-2143 NPE in BaseSchemaUpdateStrategy
CAY-2144 cdbimport always fails for databases which don't support catalogs
CAY-2146 Vertical inheritance: record still inserted into parent db table when child validation fails
[2/7] cayenne git commit: CAY-2141 Skip repetitive query parameters
Posted by aa...@apache.org.
CAY-2141
Skip repetitive query parameters
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/6818800a
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/6818800a
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/6818800a
Branch: refs/heads/master
Commit: 6818800aa84fbd2857cc15ca9ccf032cbb177442
Parents: a117694
Author: Nikita Timofeev <nt...@objectstyle.com>
Authored: Mon Nov 21 11:12:58 2016 +0300
Committer: Nikita Timofeev <nt...@objectstyle.com>
Committed: Mon Nov 21 11:12:58 2016 +0300
----------------------------------------------------------------------
.../access/HierarchicalObjectResolver.java | 42 ++++++++++++--------
1 file changed, 25 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/6818800a/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java b/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
index 9d1e5f6..e220f9c 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
@@ -173,37 +173,23 @@ class HierarchicalObjectResolver {
.getParentDataDomain()
.getMaxIdQualifierSize();
- List<PrefetchSelectQuery> queries = new ArrayList<PrefetchSelectQuery>();
+ List<PrefetchSelectQuery> queries = new ArrayList<>();
int qualifiersCount = 0;
PrefetchSelectQuery currentQuery = null;
List<DbJoin> joins = lastDbRelationship.getJoins();
Set<List<Object>> values = new HashSet<>();
for (Object dataRow : parentDataRows) {
- Expression allJoinsQualifier = null;
-
// handling too big qualifiers
if (currentQuery == null
|| (maxIdQualifierSize > 0 && qualifiersCount + joins.size() > maxIdQualifierSize)) {
- if(currentQuery != null) {
- for(List<Object> joinValues : values) {
- for(int i=0; i<joins.size(); i++) {
- Expression joinQualifier = ExpressionFactory.matchDbExp(pathPrefix
- + joins.get(i).getTargetName(), joinValues.get(i));
- if (allJoinsQualifier == null) {
- allJoinsQualifier = joinQualifier;
- } else {
- allJoinsQualifier = allJoinsQualifier.andExp(joinQualifier);
- }
- }
- currentQuery.orQualifier(allJoinsQualifier);
- }
- }
+ createDisjointByIdPrefetchQualifier(pathPrefix, currentQuery, joins, values);
currentQuery = new PrefetchSelectQuery(node.getPath(), relationship);
queries.add(currentQuery);
qualifiersCount = 0;
+ values = new HashSet<>();
}
List<Object> joinValues = new ArrayList<>();
@@ -216,6 +202,8 @@ class HierarchicalObjectResolver {
qualifiersCount += joins.size();
}
}
+ // add final part of values
+ createDisjointByIdPrefetchQualifier(pathPrefix, currentQuery, joins, values);
PrefetchTreeNode jointSubtree = node.cloneJointSubtree();
@@ -240,6 +228,26 @@ class HierarchicalObjectResolver {
return startDisjointPrefetch(node);
}
+ private void createDisjointByIdPrefetchQualifier(String pathPrefix, PrefetchSelectQuery currentQuery,
+ List<DbJoin> joins, Set<List<Object>> values) {
+ Expression allJoinsQualifier;
+ if(currentQuery != null) {
+ for(List<Object> joinValues : values) {
+ allJoinsQualifier = null;
+ for(int i=0; i<joins.size(); i++) {
+ Expression joinQualifier = ExpressionFactory.matchDbExp(pathPrefix
+ + joins.get(i).getTargetName(), joinValues.get(i));
+ if (allJoinsQualifier == null) {
+ allJoinsQualifier = joinQualifier;
+ } else {
+ allJoinsQualifier = allJoinsQualifier.andExp(joinQualifier);
+ }
+ }
+ currentQuery.orQualifier(allJoinsQualifier);
+ }
+ }
+ }
+
public boolean startJointPrefetch(PrefetchTreeNode node) {
// delegate processing of the top level joint prefetch to a joint processor,
[6/7] cayenne git commit: adding missing @Override's
Posted by aa...@apache.org.
adding missing @Override's
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/2656dc80
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/2656dc80
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/2656dc80
Branch: refs/heads/master
Commit: 2656dc804c8c8e22ad7f63debffa3bf05c17d902
Parents: e73365a
Author: Andrus Adamchik <an...@objectstyle.com>
Authored: Sun Nov 27 17:15:27 2016 +0300
Committer: Andrus Adamchik <an...@objectstyle.com>
Committed: Sun Nov 27 17:15:27 2016 +0300
----------------------------------------------------------------------
.../access/HierarchicalObjectResolver.java | 32 +++++++++++++++-----
1 file changed, 25 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/2656dc80/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java b/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
index e220f9c..104dd76 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/access/HierarchicalObjectResolver.java
@@ -19,13 +19,6 @@
package org.apache.cayenne.access;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.DataRow;
import org.apache.cayenne.Persistent;
@@ -40,6 +33,13 @@ import org.apache.cayenne.query.PrefetchTreeNode;
import org.apache.cayenne.query.QueryMetadata;
import org.apache.cayenne.reflect.ClassDescriptor;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
/**
* Processes a number of DataRow sets corresponding to a given prefetch tree, resolving
* DataRows to an object tree. Can process any combination of joint and disjoint sets, per
@@ -103,6 +103,7 @@ class HierarchicalObjectResolver {
final class DisjointProcessor implements PrefetchProcessor {
+ @Override
public boolean startDisjointPrefetch(PrefetchTreeNode node) {
PrefetchProcessorNode processorNode = (PrefetchProcessorNode) node;
@@ -124,6 +125,7 @@ class HierarchicalObjectResolver {
return true;
}
+ @Override
public boolean startDisjointByIdPrefetch(PrefetchTreeNode node) {
PrefetchProcessorNode processorNode = (PrefetchProcessorNode) node;
@@ -248,6 +250,7 @@ class HierarchicalObjectResolver {
}
}
+ @Override
public boolean startJointPrefetch(PrefetchTreeNode node) {
// delegate processing of the top level joint prefetch to a joint processor,
@@ -297,14 +300,17 @@ class HierarchicalObjectResolver {
return true;
}
+ @Override
public boolean startPhantomPrefetch(PrefetchTreeNode node) {
return true;
}
+ @Override
public boolean startUnknownPrefetch(PrefetchTreeNode node) {
throw new CayenneRuntimeException("Unknown prefetch node: " + node);
}
+ @Override
public void finishPrefetch(PrefetchTreeNode node) {
// now that all the children are processed, we can clear the dupes
@@ -346,16 +352,19 @@ class HierarchicalObjectResolver {
this.currentFlatRow = currentFlatRow;
}
+ @Override
public boolean startDisjointPrefetch(PrefetchTreeNode node) {
// disjoint prefetch that is not the root terminates the walk...
// don't process the root node itself..
return node == rootNode;
}
+ @Override
public boolean startDisjointByIdPrefetch(PrefetchTreeNode node) {
return startDisjointPrefetch(node);
}
+ @Override
public boolean startJointPrefetch(PrefetchTreeNode node) {
PrefetchProcessorJointNode processorNode = (PrefetchProcessorJointNode) node;
@@ -388,14 +397,17 @@ class HierarchicalObjectResolver {
return processorNode.isJointChildren();
}
+ @Override
public boolean startPhantomPrefetch(PrefetchTreeNode node) {
return ((PrefetchProcessorNode) node).isJointChildren();
}
+ @Override
public boolean startUnknownPrefetch(PrefetchTreeNode node) {
throw new CayenneRuntimeException("Unknown prefetch node: " + node);
}
+ @Override
public void finishPrefetch(PrefetchTreeNode node) {
// noop
}
@@ -405,18 +417,22 @@ class HierarchicalObjectResolver {
// relationships and also fires snapshot update events
final class PostProcessor implements PrefetchProcessor {
+ @Override
public void finishPrefetch(PrefetchTreeNode node) {
}
+ @Override
public boolean startDisjointPrefetch(PrefetchTreeNode node) {
((PrefetchProcessorNode) node).connectToParents();
return true;
}
+ @Override
public boolean startDisjointByIdPrefetch(PrefetchTreeNode node) {
return startDisjointPrefetch(node);
}
+ @Override
public boolean startJointPrefetch(PrefetchTreeNode node) {
PrefetchProcessorJointNode processorNode = (PrefetchProcessorJointNode) node;
@@ -433,10 +449,12 @@ class HierarchicalObjectResolver {
return true;
}
+ @Override
public boolean startPhantomPrefetch(PrefetchTreeNode node) {
return true;
}
+ @Override
public boolean startUnknownPrefetch(PrefetchTreeNode node) {
throw new CayenneRuntimeException("Unknown prefetch node: " + node);
}