use of org.apache.cayenne.testdo.testmap.Artist in project cayenne by apache.
the class NestedDataContextWriteIT method testCAY1194.
@Test
public void testCAY1194() throws Exception {
DataContext context = createDataContext();
Artist artist = context.newObject(Artist.class);
artist.setArtistName("111");
ObjectContext child = runtime.newContext(context);
Painting painting = child.newObject(Painting.class);
painting.setPaintingTitle("222");
Artist localParentMt = child.localObject(artist);
assertEquals(0, artist.getPaintingArray().size());
assertEquals(0, localParentMt.getPaintingArray().size());
painting.setToArtist(localParentMt);
assertEquals(0, artist.getPaintingArray().size());
assertEquals(1, localParentMt.getPaintingArray().size());
assertEquals(localParentMt.getPaintingArray().get(0).getObjectContext(), child);
child.commitChangesToParent();
assertEquals(1, artist.getPaintingArray().size());
assertEquals(artist.getPaintingArray().get(0).getObjectContext(), context);
}
use of org.apache.cayenne.testdo.testmap.Artist in project cayenne by apache.
the class NestedDataContextWriteIT method testDeleteNew.
@Test
public void testDeleteNew() throws Exception {
createSingleArtistDataSet();
DataContext context = createDataContext();
ObjectContext childContext = runtime.newContext(context);
Artist a = Cayenne.objectForPK(childContext, Artist.class, 33001);
Painting p = childContext.newObject(Painting.class);
p.setPaintingTitle("X");
a.addToPaintingArray(p);
childContext.commitChangesToParent();
childContext.deleteObjects(p);
a.removeFromPaintingArray(p);
childContext.commitChangesToParent();
}
use of org.apache.cayenne.testdo.testmap.Artist in project cayenne by apache.
the class NestedDataContextWriteIT method testCommitChanges.
@Test
public void testCommitChanges() throws Exception {
createArtistsDataSet();
DataContext context = createDataContext();
ObjectContext childContext = runtime.newContext(context);
// make sure we fetch in predictable order
SelectQuery query = new SelectQuery(Artist.class);
query.addOrdering(Artist.ARTIST_NAME.asc());
List<?> objects = childContext.performQuery(query);
assertEquals(4, objects.size());
Artist childNew = childContext.newObject(Artist.class);
childNew.setArtistName("NNN");
Artist childModified = (Artist) objects.get(0);
childModified.setArtistName("MMM");
Artist childCommitted = (Artist) objects.get(1);
// delete AND modify
Artist childDeleted = (Artist) objects.get(2);
childContext.deleteObjects(childDeleted);
childDeleted.setArtistName("DDD");
Artist childHollow = (Artist) objects.get(3);
childContext.invalidateObjects(childHollow);
childContext.commitChanges();
assertEquals(PersistenceState.COMMITTED, childNew.getPersistenceState());
assertEquals(PersistenceState.COMMITTED, childModified.getPersistenceState());
assertEquals(PersistenceState.COMMITTED, childCommitted.getPersistenceState());
assertEquals(PersistenceState.TRANSIENT, childDeleted.getPersistenceState());
assertEquals(PersistenceState.HOLLOW, childHollow.getPersistenceState());
Artist parentNew = (Artist) context.getGraphManager().getNode(childNew.getObjectId());
Artist parentModified = (Artist) context.getGraphManager().getNode(childModified.getObjectId());
Artist parentCommitted = (Artist) context.getGraphManager().getNode(childCommitted.getObjectId());
Artist parentDeleted = (Artist) context.getGraphManager().getNode(childDeleted.getObjectId());
Artist parentHollow = (Artist) context.getGraphManager().getNode(childHollow.getObjectId());
assertNotNull(parentNew);
assertEquals(PersistenceState.COMMITTED, parentNew.getPersistenceState());
assertEquals("NNN", parentNew.getArtistName());
assertNotNull(parentModified);
assertEquals(PersistenceState.COMMITTED, parentModified.getPersistenceState());
assertEquals("MMM", parentModified.getArtistName());
assertNull(context.getObjectStore().getChangesByObjectId().get(parentModified.getObjectId()));
assertNull("Deleted object should not be registered.", parentDeleted);
assertNotNull(parentCommitted);
assertEquals(PersistenceState.COMMITTED, parentCommitted.getPersistenceState());
assertNotNull(parentHollow);
}
use of org.apache.cayenne.testdo.testmap.Artist in project cayenne by apache.
the class NestedDataContextWriteIT method testAddRemove.
@Test
public void testAddRemove() {
DataContext context = createDataContext();
ObjectContext child = runtime.newContext(context);
Artist a = child.newObject(Artist.class);
a.setArtistName("X");
child.commitChanges();
Painting p1 = child.newObject(Painting.class);
p1.setPaintingTitle("P1");
a.addToPaintingArray(p1);
Painting p2 = child.newObject(Painting.class);
p2.setPaintingTitle("P2");
a.addToPaintingArray(p2);
a.removeFromPaintingArray(p2);
// this causes an error on commit
child.deleteObjects(p2);
child.commitChangesToParent();
}
use of org.apache.cayenne.testdo.testmap.Artist in project cayenne by apache.
the class NestedDataContextWriteIT method testCommitChangesToParentFlattened.
@Test
public void testCommitChangesToParentFlattened() throws Exception {
final DataContext context = createDataContext();
final ObjectContext childContext = runtime.newContext(context);
final Artist childO1 = childContext.newObject(Artist.class);
childO1.setArtistName("Master");
final ArtGroup childO2 = childContext.newObject(ArtGroup.class);
childO2.setName("Detail1");
childO2.addToArtistArray(childO1);
ObjEntity ent = childContext.getEntityResolver().getObjEntity("ArtGroup");
Collection<ObjRelationship> rels = ent.getDeclaredRelationships();
for (ObjRelationship rel : rels) {
System.out.println(rel.getName());
}
assertEquals(1, childO1.getGroupArray().size());
assertEquals(1, childO2.getArtistArray().size());
queryInterceptor.runWithQueriesBlocked(new UnitTestClosure() {
public void execute() {
childContext.commitChangesToParent();
assertEquals(PersistenceState.COMMITTED, childO1.getPersistenceState());
assertEquals(PersistenceState.COMMITTED, childO2.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());
assertEquals(1, parentO1.getGroupArray().size());
assertEquals(1, parentO2.getArtistArray().size());
assertTrue(parentO2.getArtistArray().contains(parentO1));
assertTrue(parentO1.getGroupArray().contains(parentO2));
}
});
}
Aggregations