ObjectContext childContext = context.createChildContext();
Artist childO1 = childContext.newObject(Artist.class);
childO1.setArtistName("o1");
ArtGroup childO2 = childContext.newObject(ArtGroup.class);
childO2.setName("o2");
childO2.addToArtistArray(childO1);
childContext.commitChangesToParent();
ArtGroup childO3 = childContext.newObject(ArtGroup.class);
childO3.setName("o3");
childO1.addToGroupArray(childO3);
assertEquals(2, childO1.getGroupArray().size());
assertEquals(1, childO2.getArtistArray().size());
assertEquals(1, childO3.getArtistArray().size());
try {
childContext.commitChangesToParent();
assertEquals(PersistenceState.COMMITTED, childO1.getPersistenceState());
assertEquals(PersistenceState.COMMITTED, childO2.getPersistenceState());
assertEquals(PersistenceState.COMMITTED, childO3.getPersistenceState());
Artist parentO1 = (Artist) context.getGraphManager().getNode(
childO1.getObjectId());
assertNotNull(parentO1);
assertEquals(PersistenceState.NEW, parentO1.getPersistenceState());
ArtGroup parentO2 = (ArtGroup) context.getGraphManager().getNode(
childO2.getObjectId());
assertNotNull(parentO2);
assertEquals(PersistenceState.NEW, parentO2.getPersistenceState());
ArtGroup parentO3 = (ArtGroup) context.getGraphManager().getNode(
childO3.getObjectId());
assertNotNull(parentO3);
assertEquals(PersistenceState.NEW, parentO3.getPersistenceState());
assertEquals(2, parentO1.getGroupArray().size());
assertEquals(1, parentO2.getArtistArray().size());
assertEquals(1, parentO3.getArtistArray().size());
assertTrue(parentO2.getArtistArray().contains(parentO1));
assertTrue(parentO3.getArtistArray().contains(parentO1));
assertTrue(parentO1.getGroupArray().contains(parentO2));
assertTrue(parentO1.getGroupArray().contains(parentO3));
}
finally {
unblockQueries();
}
childO1.removeFromGroupArray(childO2);
try {
childContext.commitChangesToParent();
assertEquals(PersistenceState.COMMITTED, childO1.getPersistenceState());
assertEquals(PersistenceState.COMMITTED, childO2.getPersistenceState());
assertEquals(PersistenceState.COMMITTED, childO3.getPersistenceState());
Artist parentO1 = (Artist) context.getGraphManager().getNode(
childO1.getObjectId());
assertNotNull(parentO1);
assertEquals(PersistenceState.NEW, parentO1.getPersistenceState());
ArtGroup parentO2 = (ArtGroup) context.getGraphManager().getNode(
childO2.getObjectId());
assertNotNull(parentO2);
assertEquals(PersistenceState.NEW, parentO2.getPersistenceState());
ArtGroup parentO3 = (ArtGroup) context.getGraphManager().getNode(
childO3.getObjectId());
assertNotNull(parentO3);
assertEquals(PersistenceState.NEW, parentO3.getPersistenceState());
assertEquals(1, parentO1.getGroupArray().size());
assertEquals(0, parentO2.getArtistArray().size());
assertEquals(1, parentO3.getArtistArray().size());
assertTrue(parentO3.getArtistArray().contains(parentO1));
assertTrue(parentO1.getGroupArray().contains(parentO3));
}
finally {
unblockQueries();
}