Search in sources :

Example 1 with RightSub

use of org.jpox.samples.models.leftright.RightSub in project tests by datanucleus.

the class PersistenceModelsTest method test1toNInheritance.

/**
 * Test case for 1-N inheritance relationships.
 */
public void test1toNInheritance() throws Exception {
    try {
        PersistenceManager pm = pmf.getPersistenceManager();
        Transaction tx = pm.currentTransaction();
        Object id = null;
        try {
            tx.begin();
            LeftBase base1 = new LeftBase(1);
            LeftBase base2 = new LeftBase(2);
            LeftBase base3 = new LeftBase(3);
            LeftSub group1 = new LeftSub(4, new LeftBase[] { base1, base2 });
            LeftSub group2 = new LeftSub(5, new LeftBase[] { group1, base3 });
            RightSub gr1 = new RightSub(1, group2);
            pm.makePersistent(gr1);
            tx.commit();
            id = pm.getObjectId(gr1);
        } catch (Exception e) {
            e.printStackTrace();
            fail(e.getMessage());
        } finally {
            if (tx.isActive()) {
                tx.rollback();
            }
            pm.close();
        }
        // test
        pm = pmf.getPersistenceManager();
        tx = pm.currentTransaction();
        try {
            tx.begin();
            RightSub gr2 = (RightSub) pm.getObjectById(id, true);
            assertEquals("Expect id == 5", 5, gr2.getBase().getId());
            assertEquals("Expect Group class instance.", LeftSub.class, gr2.getBase().getClass());
            assertEquals("Expect 2 members", 2, ((LeftSub) gr2.getBase()).getMembers().size());
            List members = ((LeftSub) gr2.getBase()).getMembers();
            assertEquals("Expect id == 4", 4, ((LeftBase) members.get(0)).getId());
            assertEquals("Expect id == 3", 3, ((LeftBase) members.get(1)).getId());
            assertEquals("Expect Group class instance in member.", LeftSub.class, members.get(0).getClass());
            assertEquals("Expect Base class instance in member.", LeftBase.class, members.get(1).getClass());
            tx.commit();
        } finally {
            if (tx.isActive()) {
                tx.rollback();
            }
            pm.close();
        }
    } finally {
        // Clean out all data
        PersistenceManager pm = pmf.getPersistenceManager();
        Transaction tx = pm.currentTransaction();
        try {
            tx.begin();
            Extent ex = pm.getExtent(LeftSub.class);
            Iterator iter = ex.iterator();
            while (iter.hasNext()) {
                LeftSub lsub = (LeftSub) iter.next();
                lsub.getMembers().clear();
            }
            tx.commit();
        } finally {
            if (tx.isActive()) {
                tx.rollback();
            }
        }
        clean(RightSub.class);
        clean(RightBase.class);
        clean(LeftSub.class);
        clean(LeftBase.class);
    }
}
Also used : Transaction(javax.jdo.Transaction) PersistenceManager(javax.jdo.PersistenceManager) RightSub(org.jpox.samples.models.leftright.RightSub) Extent(javax.jdo.Extent) LeftBase(org.jpox.samples.models.leftright.LeftBase) Iterator(java.util.Iterator) List(java.util.List) JDOObjectNotFoundException(javax.jdo.JDOObjectNotFoundException) LeftSub(org.jpox.samples.models.leftright.LeftSub)

Example 2 with RightSub

use of org.jpox.samples.models.leftright.RightSub in project tests by datanucleus.

the class RelationshipTest method test1toNInheritance.

/**
 * Test case for 1-1 inheritance relationships.
 * TODO Is this JoinTable, or FK - change name of test to suit
 */
public void test1toNInheritance() throws Exception {
    try {
        // prepare data
        PersistenceManager pm = pmf.getPersistenceManager();
        Transaction tx = pm.currentTransaction();
        Object id = null;
        try {
            tx.begin();
            LeftBase base1 = new LeftBase(1);
            LeftBase base2 = new LeftBase(2);
            LeftBase base3 = new LeftBase(3);
            LeftSub group1 = new LeftSub(4, new LeftBase[] { base1, base2 });
            LeftSub group2 = new LeftSub(5, new LeftBase[] { group1, base3 });
            RightSub gr1 = new RightSub(1, group2);
            pm.makePersistent(gr1);
            tx.commit();
            id = pm.getObjectId(gr1);
        } catch (Exception e) {
            LOG.error("Exception in test", e);
            fail(e.getMessage());
        } finally {
            if (tx.isActive()) {
                tx.rollback();
            }
            pm.close();
        }
        // test
        pm = pmf.getPersistenceManager();
        tx = pm.currentTransaction();
        try {
            tx.begin();
            RightSub gr2 = (RightSub) pm.getObjectById(id, true);
            assertEquals("Expect id == 5", 5, gr2.getBase().getId());
            assertEquals("Expect Group class instance.", LeftSub.class, gr2.getBase().getClass());
            assertEquals("Expect 2 members", 2, ((LeftSub) gr2.getBase()).getMembers().size());
            List members = ((LeftSub) gr2.getBase()).getMembers();
            assertEquals("Expect id == 4", 4, ((LeftBase) members.get(0)).getId());
            assertEquals("Expect id == 3", 3, ((LeftBase) members.get(1)).getId());
            assertEquals("Expect Group class instance in member.", LeftSub.class, members.get(0).getClass());
            assertEquals("Expect Base class instance in member.", LeftBase.class, members.get(1).getClass());
            tx.commit();
        } finally {
            if (tx.isActive()) {
                tx.rollback();
            }
            pm.close();
        }
    } finally {
        // Clean out all data
        PersistenceManager pm = pmf.getPersistenceManager();
        Transaction tx = pm.currentTransaction();
        tx.begin();
        for (Iterator iter = ((Collection) pm.newQuery(LeftSub.class).execute()).iterator(); iter.hasNext(); ) {
            LeftSub grp = (LeftSub) iter.next();
            grp.getMembers().clear();
        }
        tx.commit();
        pm.close();
        clean(RightSub.class);
        clean(RightBase.class);
        clean(LeftSub.class);
        clean(LeftBase.class);
    }
}
Also used : Transaction(javax.jdo.Transaction) PersistenceManager(javax.jdo.PersistenceManager) RightSub(org.jpox.samples.models.leftright.RightSub) LeftBase(org.jpox.samples.models.leftright.LeftBase) Iterator(java.util.Iterator) Collection(java.util.Collection) List(java.util.List) ArrayList(java.util.ArrayList) JDOObjectNotFoundException(javax.jdo.JDOObjectNotFoundException) LeftSub(org.jpox.samples.models.leftright.LeftSub)

Aggregations

Iterator (java.util.Iterator)2 List (java.util.List)2 JDOObjectNotFoundException (javax.jdo.JDOObjectNotFoundException)2 PersistenceManager (javax.jdo.PersistenceManager)2 Transaction (javax.jdo.Transaction)2 LeftBase (org.jpox.samples.models.leftright.LeftBase)2 LeftSub (org.jpox.samples.models.leftright.LeftSub)2 RightSub (org.jpox.samples.models.leftright.RightSub)2 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 Extent (javax.jdo.Extent)1