use of org.apache.cayenne.testdo.things.Bag in project cayenne by apache.
the class DataContextDisjointByIdPrefetch_ExtrasIT method testJointPrefetchInChild.
@Test
public void testJointPrefetchInChild() throws Exception {
createBagWithTwoBoxesAndPlentyOfBallsDataSet();
SelectQuery<Bag> query = new SelectQuery<Bag>(Bag.class);
query.addPrefetch(Bag.BOXES.disjointById());
query.addPrefetch(Bag.BOXES.dot(Box.BALLS).joint());
final List<Bag> result = context.select(query);
queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
@Override
public void execute() {
assertFalse(result.isEmpty());
Bag bag = result.get(0);
List<Box> boxes = (List<Box>) bag.readPropertyDirectly(Bag.BOXES.getName());
assertNotNull(boxes);
assertFalse(((ValueHolder) boxes).isFault());
assertEquals(2, boxes.size());
Box big = null;
List<String> names = new ArrayList<String>();
for (Box box : boxes) {
assertEquals(PersistenceState.COMMITTED, box.getPersistenceState());
names.add(box.getName());
if (box.getName().equals("big")) {
big = box;
}
}
assertTrue(names.contains("big"));
assertTrue(names.contains("small"));
List<Ball> balls = (List<Ball>) big.readPropertyDirectly(Box.BALLS.getName());
assertNotNull(balls);
assertFalse(((ValueHolder) balls).isFault());
assertEquals(2, balls.size());
List<Integer> volumes = new ArrayList<Integer>();
for (Ball ball : balls) {
assertEquals(PersistenceState.COMMITTED, ball.getPersistenceState());
volumes.add(ball.getThingVolume());
}
assertTrue(volumes.containsAll(Arrays.asList(10, 20)));
}
});
}
use of org.apache.cayenne.testdo.things.Bag in project cayenne by apache.
the class DataContextDisjointByIdPrefetch_ExtrasIT method testFlattenedRelationship.
@Test
public void testFlattenedRelationship() throws Exception {
createBagWithTwoBoxesAndPlentyOfBallsDataSet();
SelectQuery query = new SelectQuery(Bag.class);
query.addPrefetch(Bag.BALLS.disjointById());
final List<Bag> result = context.performQuery(query);
queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
public void execute() {
assertFalse(result.isEmpty());
Bag b1 = result.get(0);
List<Ball> balls = (List<Ball>) b1.readPropertyDirectly(Bag.BALLS.getName());
assertNotNull(balls);
assertFalse(((ValueHolder) balls).isFault());
assertEquals(6, balls.size());
List<Integer> volumes = new ArrayList<Integer>();
for (Ball b : balls) {
assertEquals(PersistenceState.COMMITTED, b.getPersistenceState());
volumes.add(b.getThingVolume());
}
assertTrue(volumes.containsAll(Arrays.asList(10, 20, 30, 40, 20, 40)));
}
});
}
use of org.apache.cayenne.testdo.things.Bag in project cayenne by apache.
the class DataContextDisjointByIdPrefetch_ExtrasIT method testLongFlattenedRelationship.
@Test
public void testLongFlattenedRelationship() throws Exception {
createBagWithTwoBoxesAndPlentyOfBallsDataSet();
SelectQuery query = new SelectQuery(Bag.class);
query.addPrefetch(Bag.THINGS.disjointById());
final List<Bag> result = context.performQuery(query);
queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
public void execute() {
assertFalse(result.isEmpty());
Bag b1 = result.get(0);
List<Thing> things = (List<Thing>) b1.readPropertyDirectly(Bag.THINGS.getName());
assertNotNull(things);
assertFalse(((ValueHolder) things).isFault());
assertEquals(6, things.size());
List<Integer> volumes = new ArrayList<Integer>();
for (Thing t : things) {
assertEquals(PersistenceState.COMMITTED, t.getPersistenceState());
volumes.add(t.getVolume());
}
assertTrue(volumes.containsAll(Arrays.asList(10, 20, 20, 30, 40, 40)));
}
});
}
Aggregations