Package org.apache.cayenne

Examples of org.apache.cayenne.ObjectContext


    public void testCommitChangesToParentDeleted() throws Exception {
        deleteTestData();
        createTestData("testFlushChanges");

        DataContext context = createDataContext();
        ObjectContext childContext = context.createChildContext();

        // make sure we fetch in predictable order
        SelectQuery query = new SelectQuery(Artist.class);
        query.addOrdering(Artist.ARTIST_NAME_PROPERTY, SortOrder.ASCENDING);
        List objects = childContext.performQuery(query);

        assertEquals(4, objects.size());

        // delete AND modify
        Artist childDeleted = (Artist) objects.get(2);
        childContext.deleteObject(childDeleted);
        childDeleted.setArtistName("DDD");

        // don't block queries - on delete Cayenne may need to resolve delete rules via
        // fetch
        childContext.commitChangesToParent();

        // * all modified child objects must be in committed state now
        // * all modifications should be propagated to the parent
        // * no actual commit should occur.

View Full Code Here


    public void testCommitChanges() throws Exception {
        deleteTestData();
        createTestData("testFlushChanges");

        DataContext context = createDataContext();
        ObjectContext childContext = context.createChildContext();

        // make sure we fetch in predictable order
        SelectQuery query = new SelectQuery(Artist.class);
        query.addOrdering(Artist.ARTIST_NAME_PROPERTY, SortOrder.ASCENDING);
        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.deleteObject(childDeleted);
        childDeleted.setArtistName("DDD");

        Artist childHollow = (Artist) objects.get(3);
        childContext.invalidateObjects(Collections.singleton(childHollow));

        childContext.commitChanges();

        assertEquals(PersistenceState.COMMITTED, childNew.getPersistenceState());
        assertEquals(PersistenceState.COMMITTED, childModified.getPersistenceState());
        assertEquals(PersistenceState.COMMITTED, childCommitted.getPersistenceState());
        assertEquals(PersistenceState.TRANSIENT, childDeleted.getPersistenceState());
View Full Code Here

   
    /**
     * Tests query creation with qualifier and ordering.
     */
    public void testDbEntityQualifier() throws Exception {
        ObjectContext context = createDataContext();
       
        SelectQuery q = new SelectQuery(Artist.class);
        final DbEntity entity = getNode().getEntityResolver().getDbEntity("ARTIST");
        final DbEntity middleEntity = getNode().getEntityResolver().getDbEntity("ARTIST_GROUP");
        entity.setQualifier(Expression.fromString("ARTIST_NAME = \"123\""));
        middleEntity.setQualifier(Expression.fromString("GROUP_ID = 1987"));

        try {
            Template test = new Template() {
                @Override
                void test(SelectTranslator transl) throws Exception {
                    String generatedSql = transl.createSqlString();
   
                    // do some simple assertions to make sure all parts are in
                    assertNotNull(generatedSql);
                    assertTrue(generatedSql.startsWith("SELECT "));
                    assertTrue(generatedSql.indexOf(" FROM ") > 0);
                    if (generatedSql.contains("RTRIM")) {
                        assertTrue(generatedSql.indexOf("ARTIST_NAME) = ") > generatedSql.indexOf("RTRIM("));
                        }
                    else {
                        assertTrue(generatedSql.indexOf("ARTIST_NAME = ") > 0);
                        }
                }
            };
   
            test.test(q);
            context.performQuery(q);           
           
            //testing outer join!!
            q = new SelectQuery(Painting.class);
            q.addOrdering("toArtist+.artistName", SortOrder.ASCENDING);
            test.test(q);
            context.performQuery(q);
           
            //testing quering from related table
            q = new SelectQuery(Painting.class,
                    ExpressionFactory.matchExp("toArtist.artistName", "foo"));
            test.test(q);
            context.performQuery(q);
           
            //testing flattened rels
            q = new SelectQuery(Artist.class, ExpressionFactory.matchExp("groupArray.name", "bar"));
            new Template() {
                @Override
                void test(SelectTranslator transl) throws Exception {
                    assertTrue(transl.createSqlString().indexOf("GROUP_ID = ") > 0);
                }
            }.test(q);
            context.performQuery(q);
        }
        finally {
            entity.setQualifier(null);
            middleEntity.setQualifier(null);
        }
View Full Code Here

import org.apache.cayenne.testdo.mt.ClientMtTable1Subclass;
import org.apache.cayenne.testdo.mt.MtTable1Subclass;

public class ValueInjectorTest extends RemoteCayenneCase {
    public void test() {
        ObjectContext context = createDataContext();
        ObjEntity entity = context.getEntityResolver().lookupObjEntity(MtTable1Subclass.class);
        Expression qualifier = entity.getDeclaredQualifier();
       
        try {
            MtTable1Subclass ee = context.newObject(MtTable1Subclass.class);
            assertEquals(ee.getGlobalAttribute1(), "sub1");
           
            //check AND
            entity.setDeclaredQualifier(qualifier.andExp(Expression.fromString("serverAttribute1 = 'sa'")));
            ee = context.newObject(MtTable1Subclass.class);
            assertEquals(ee.getGlobalAttribute1(), "sub1");
            assertEquals(ee.getServerAttribute1(), "sa");
        }
        finally {
            entity.setDeclaredQualifier(qualifier);
View Full Code Here

            entity.setDeclaredQualifier(qualifier);
        }
    }
   
    public void testRemote() {
        ObjectContext context = createROPContext();
        ObjEntity entity = context.getEntityResolver().lookupObjEntity(ClientMtTable1Subclass.class);
        Expression qualifier = entity.getDeclaredQualifier();
       
        try {
            ClientMtTable1Subclass ee = context.newObject(ClientMtTable1Subclass.class);
            assertEquals(ee.getGlobalAttribute1(), "sub1");
           
            //check AND
            entity.setDeclaredQualifier(qualifier.andExp(Expression.fromString("serverAttribute1 = 'sa'")));
            ee = context.newObject(ClientMtTable1Subclass.class);
            assertEquals(ee.getGlobalAttribute1(), "sub1");
            assertEquals(ee.getServerAttribute1(), "sa");
        }
        finally {
            entity.setDeclaredQualifier(qualifier);
View Full Code Here

        context.commitChanges();

        MockChannelListener listener = new MockChannelListener();
        EventUtil.listenForChannelEvents(context, listener);

        ObjectContext child = context.createChildContext();
        Artist a1 = (Artist) child.localObject(a.getObjectId(), a);

        a1.setArtistName("Y");
        child.commitChangesToParent();

        assertFalse(listener.graphCommitted);
        assertTrue(listener.graphChanged);
        assertFalse(listener.graphRolledBack);
    }
View Full Code Here

    }

    public void testChangeEventOnPeerChangeSecondNestingLevel() throws Exception {
        DataContext context = createDataContext();

        ObjectContext childPeer1 = context.createChildContext();

        Artist a = childPeer1.newObject(Artist.class);
        a.setArtistName("X");
        childPeer1.commitChanges();

        final MockChannelListener listener = new MockChannelListener();
        EventUtil.listenForChannelEvents((DataChannel) childPeer1, listener);

        ObjectContext childPeer2 = context.createChildContext();

        Artist a1 = (Artist) childPeer2.localObject(a.getObjectId(), a);

        a1.setArtistName("Y");
        childPeer2.commitChangesToParent();

        new ThreadedTestHelper() {

            @Override
            protected void assertResult() throws Exception {
View Full Code Here

        // TODO: andrus, 3/28/2006 - 'SnapshotEventDecorator' serves as a bridge (or
        // rather a noop wrapper) between old snapshot events and new GraphEvents. Once
        // SnapshotEvents are replaced with GraphEvents (in 2.0) we won't need it
        GraphDiff diff = new SnapshotEventDecorator(event);

        ObjectContext originatingContext = (event.getPostedBy() instanceof ObjectContext)
                ? (ObjectContext) event.getPostedBy()
                : null;
        context.fireDataChannelChanged(originatingContext, diff);
    }
View Full Code Here

        query.setParameter("b", "Y");
        createDataContext().performQuery(query);
    }

    public void testJoinToJoined() {
        ObjectContext context = createDataContext();

        EJBQLQuery query = new EJBQLQuery(
            "select g from Gallery g inner join g.paintingArray p where p.toArtist.artistName like '%a%'");
        context.performQuery(query);
    }
View Full Code Here

    }



    public void testJoinAndCount() {
        ObjectContext context = createDataContext();

        EJBQLQuery query = new EJBQLQuery(
            "select count(p) from Painting p where p.toGallery.galleryName LIKE '%a%' AND (" +
            "p.paintingTitle like '%a%' or " +
            "p.toArtist.artistName like '%a%'" +
            ")");
        context.performQuery(query);
    }
View Full Code Here

TOP

Related Classes of org.apache.cayenne.ObjectContext

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.