Search in sources :

Example 31 with Artist

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);
}
Also used : Artist(org.apache.cayenne.testdo.testmap.Artist) ObjectContext(org.apache.cayenne.ObjectContext) Painting(org.apache.cayenne.testdo.testmap.Painting) Test(org.junit.Test)

Example 32 with Artist

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();
}
Also used : Artist(org.apache.cayenne.testdo.testmap.Artist) ObjectContext(org.apache.cayenne.ObjectContext) Painting(org.apache.cayenne.testdo.testmap.Painting) Test(org.junit.Test)

Example 33 with Artist

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);
}
Also used : SelectQuery(org.apache.cayenne.query.SelectQuery) Artist(org.apache.cayenne.testdo.testmap.Artist) ObjectContext(org.apache.cayenne.ObjectContext) Test(org.junit.Test)

Example 34 with Artist

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();
}
Also used : Artist(org.apache.cayenne.testdo.testmap.Artist) ObjectContext(org.apache.cayenne.ObjectContext) Painting(org.apache.cayenne.testdo.testmap.Painting) Test(org.junit.Test)

Example 35 with Artist

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));
        }
    });
}
Also used : Artist(org.apache.cayenne.testdo.testmap.Artist) ObjEntity(org.apache.cayenne.map.ObjEntity) ObjRelationship(org.apache.cayenne.map.ObjRelationship) UnitTestClosure(org.apache.cayenne.unit.di.UnitTestClosure) ObjectContext(org.apache.cayenne.ObjectContext) ArtGroup(org.apache.cayenne.testdo.testmap.ArtGroup) Test(org.junit.Test)

Aggregations

Artist (org.apache.cayenne.testdo.testmap.Artist)490 Test (org.junit.Test)481 Painting (org.apache.cayenne.testdo.testmap.Painting)145 SelectQuery (org.apache.cayenne.query.SelectQuery)126 Expression (org.apache.cayenne.exp.Expression)67 UnitTestClosure (org.apache.cayenne.unit.di.UnitTestClosure)47 EJBQLQuery (org.apache.cayenne.query.EJBQLQuery)39 List (java.util.List)36 ObjectContext (org.apache.cayenne.ObjectContext)30 SQLTemplate (org.apache.cayenne.query.SQLTemplate)26 ParallelTestContainer (org.apache.cayenne.test.parallel.ParallelTestContainer)26 DataRow (org.apache.cayenne.DataRow)21 ArrayList (java.util.ArrayList)20 ValueHolder (org.apache.cayenne.ValueHolder)18 ArtGroup (org.apache.cayenne.testdo.testmap.ArtGroup)16 LifecycleCallbackRegistry (org.apache.cayenne.reflect.LifecycleCallbackRegistry)15 ObjectId (org.apache.cayenne.ObjectId)14 ROPainting (org.apache.cayenne.testdo.testmap.ROPainting)13 Gallery (org.apache.cayenne.testdo.testmap.Gallery)12 ROArtist (org.apache.cayenne.testdo.testmap.ROArtist)12