Package org.apache.openjpa.persistence

Examples of org.apache.openjpa.persistence.OpenJPAEntityManager


        doCollectionTest(false, 2, 0);
        doCollectionTest(false, 0, 2);
    }

    public void doCollectionTest(boolean newPC, int before, int after) {
        OpenJPAEntityManager pm = getPM();
        startTx(pm);
        ModRuntimeTest1 pc = new ModRuntimeTest1("orig", 1);
        ModRuntimeTest1 pc2 = newElement(pc, "persist", 2);
        ModRuntimeTest1 pc3 = newElement(pc, "delete", 3);
        pm.persist(pc);
        pm.persist(pc3);
        Object oid = pm.getObjectId(pc);
        ModRuntimeTest1 temp;
        if (!newPC) {
            endTx(pm);
            endEm(pm);

            pm = getPM();
            startTx(pm);
            pc = (ModRuntimeTest1) pm.find(ModRuntimeTest1.class, oid);
            assertEquals(2, pc.getSelfOneMany().size());
            for (Iterator it = pc.getSelfOneMany().iterator(); it.hasNext();) {
                temp = (ModRuntimeTest1) it.next();
                if (temp.getIntField() == 2)
                    pc2 = temp;
                else if (temp.getIntField() == 3)
                    pc3 = temp;
                else
                    fail("unknown");
            }
        }

        for (int i = 0; i < before; i++) {
            newElement(pc, "before" + i, (i + 1) * 10);
            pm.setSavepoint("before" + i);
        }
        pm.setSavepoint("test");
        pm.remove(pc3);
        pc.getSelfOneMany().remove(pc2);

        // kodo 4 is more stringent on deleted relations.
        pc.getSelfOneMany().remove(pc3);
        pc2.setSelfOneMany(null);

        for (int i = 0; i < after; i++) {
            newElement(pc, "after" + i, (i + 1) * -10);
            pm.setSavepoint("after" + i);
        }

        pm.rollbackToSavepoint("test");

        assertEquals("orig", pc.getStringField());
        assertFalse(pm.isRemoved(pc2));
        for (Iterator it = pc.getSelfOneMany().iterator(); it.hasNext();) {
            temp = (ModRuntimeTest1) it.next();
            assertFalse(pm.isRemoved(temp));
            assertEquals(pc, temp.getSelfOneOne());
            if (temp.getIntField() < 0)
                fail("shouldn't be here:" + temp.getStringField());
        }
        assertTrue(pc.getSelfOneMany().contains(pc2));
        assertTrue(pc.getSelfOneMany().contains(pc3));
        assertEquals(2 + before, pc.getSelfOneMany().size());
        endTx(pm);
        endEm(pm);

        pm = getPM();
        pc = (ModRuntimeTest1) pm.find(ModRuntimeTest1.class, oid);
        assertEquals("orig", pc.getStringField());
        assertEquals(2 + before, pc.getSelfOneMany().size());
        boolean found2 = false;
        boolean found3 = false;
        for (Iterator it = pc.getSelfOneMany().iterator(); it.hasNext();) {
View Full Code Here


    /**
     * This currently isn't working: state-image locking will not
     * detect when someone else updated the row before deleting.
     */
    public void NOTWORKINGtestOptLockWithDelete() {
        OpenJPAEntityManager pm1 = getEm(true, true);
        StateImagePC2 pc1 = (StateImagePC2) pm1.getObjectId(_oid);
       
        OpenJPAEntityManager pm2 = getEm(true, true);
        StateImagePC2 pc2 = (StateImagePC2) pm2.getObjectId(_oid);
       
        pm1.getTransaction().begin();
        pc1.setIntField(3);
       
        pm2.getTransaction().begin();
        pm2.remove(pc2);
       
        pm1.getTransaction().commit();
        try {
            pm2.getTransaction().commit();
            fail("Should have caused OL exception.");
        } catch (Exception jfe) {
            pm2.getTransaction().begin();
            pm2.refresh(pc2);
            pm2.remove(pc2);
            pm2.getTransaction().commit();
        }
    }
View Full Code Here

        assertTrue(found2 && found3);
        endEm(pm);
    }

    public void testChangeTracker() {
        OpenJPAEntityManager pm = getPM();
        startTx(pm);
        RuntimeTest4 pc = new RuntimeTest4("orig");
        for (int i = 0; i < 12; i++)
            pc.getRuntimeTest5s().add(new RuntimeTest5("five" + i));
        pm.persist(pc);
        Object oid = pm.getObjectId(pc);
        endTx(pm);
        endEm(pm);

        pm = getPM();
        startTx(pm);
        pc = (RuntimeTest4) pm.find(RuntimeTest4.class, oid);
        assertEquals(12, pc.getRuntimeTest5s().size());
        int count = 0;
        for (Iterator i = pc.getRuntimeTest5s().iterator();
            count < 2; count++) {
            i.next();
            i.remove();
        }
        assertEquals(10, pc.getRuntimeTest5s().size());
        pm.setSavepoint("test");
        count = 0;
        for (Iterator i = pc.getRuntimeTest5s().iterator();
            count < 2; count++) {
            i.next();
            i.remove();
        }
        assertEquals(8, pc.getRuntimeTest5s().size());
        endTx(pm);
        endEm(pm);

        pm = getPM();
        pc = (RuntimeTest4) pm.find(RuntimeTest4.class, oid);
        assertEquals(8, pc.getRuntimeTest5s().size());
        endEm(pm);
    }
View Full Code Here

        one.getSelfOneMany().add(two);
        return two;
    }

    public static PCState getState(Object o) {
        OpenJPAEntityManager pm = OpenJPAPersistence.getEntityManager(o);

        if (pm == null)
            return null;
        return JPAFacadeHelper.toBroker(pm).getStateManager(o).getPCState();
    }
View Full Code Here

            pm2.getTransaction().commit();
        }
    }
   
    public void testOptLockOnVerticalClass() {
        OpenJPAEntityManager pm1 = getEm(true, true);
        OpenJPAEntityManager pm2 = getEm(true, true);
       
        // have to load via query or extent where we're selecting the vertical
        // field in the initial SELECT
        OpenJPAQuery q1 = pm1.createNativeQuery("",StateImagePC2.class);
        //FIXME  jthomas
        //q1.setOrdering("intField ascending");
        StateImagePC2 pc1 = (StateImagePC2) ((Collection) q1.getCandidateCollection()).
                iterator().next();
        q1.closeAll();
       
        OpenJPAQuery q2 = pm2.createNativeQuery("",StateImagePC2.class);
        //FIXME jthomas
        //q2.setOrdering("intField ascending");
        StateImagePC2 pc2 = (StateImagePC2) ((Collection) q2.getCandidateCollection()).
                iterator().next();
        q2.closeAll();
       
        pm1.getTransaction().begin();
        pc1.setStringField("changed1");
        pc1.setStateImage(null);
       
        pm2.getTransaction().begin();
        pc2.setStringField("changed2");
       
        pm1.getTransaction().commit();
       
        try {
            pm2.getTransaction().commit();
            fail("Should have caused OL exception.");
        } catch (Exception jfe) {
            pm2.getTransaction().begin();
            pm2.refresh(pc2);
            pc2.setStringField("changed2");
            pm2.getTransaction().commit();
        }
        pm1.close();
        pm2.close();
       
        OpenJPAEntityManager pm =(OpenJPAEntityManager)currentEntityManager();
        StateImagePC2 pc = (StateImagePC2) pm.getObjectId(_oid);
        assertNull(pc.getStateImage());
        assertEquals("changed2", pc.getStringField());
        pm.close();
    }
View Full Code Here

        pm.close();
    }
   
    public void testLockGroup()
    throws Exception {
        OpenJPAEntityManager pm = getEm(true, true);
        pm.getTransaction().begin();
        StateImagePC3 pc = new StateImagePC3();
        pc.setLockField(4);
        pc.setNoLockField(6);
        pm.persist(pc);
        pm.getTransaction().commit();
       
        pm.getTransaction().begin();
        pc.setLockField(6);
        sql.clear();
        pm.getTransaction().commit();
        assertNotSQL("* WHERE * NOLOCK*");
       
        pm.close();
    }
View Full Code Here

        Base pc = new Base();
        pc.setBaseField(1);
        Object oid = persist(pc);
        sql.clear();
       
        OpenJPAEntityManager pm =(OpenJPAEntityManager)currentEntityManager();
       
        pc = (Base) pm.getObjectId(oid);
        assertEquals(1, pc.getBaseField());
        assertEquals(Base.class, pc.getClass());
        pm.close();
       
        assertEquals(1, sql.size());
        assertNotSQL(_outer);
        sql.clear();
       
        // should outer join with non-exact oid
        oid = new Id(Base.class, ((Id) oid).getId());
        pm = (OpenJPAEntityManager)currentEntityManager();
        pc = (Base) pm.getObjectId(oid);
        assertEquals(1, pc.getBaseField());
        assertEquals(Base.class, pc.getClass());
        pm.close();
       
        assertEquals(1, sql.size());
        assertSQL(_outer);
    }
View Full Code Here

        pc.setBaseField(1);
        Object oid = persist(pc);
        sql.clear();
       
        Id id = new Id(Base.class, -1);
        OpenJPAEntityManager pm =(OpenJPAEntityManager)currentEntityManager();
        try {
            pm.getObjectId(id);
            fail("No exception on bad id.");
        } catch (Exception jonfe) {
        }
        pm.close();
    }
View Full Code Here

        pc.setBaseSub1Field(5);
        pc.setBaseSub1Sub2Field(6);
        Object oid = persist(pc);
        sql.clear();
       
        OpenJPAEntityManager pm =(OpenJPAEntityManager)currentEntityManager();
        pc = (BaseSub1Sub2) pm.getObjectId(oid);
        assertEquals(4, pc.getBaseField());
        assertEquals(5, pc.getBaseSub1Field());
        assertEquals(6, pc.getBaseSub1Sub2Field());
        pm.close();
       
        assertEquals(1, sql.size());
        assertNotSQL(_outer);
        sql.clear();
       
        // should outer join with inexact oid
        oid = new Id(Base.class, ((Id) oid).getId());
        pm = (OpenJPAEntityManager)currentEntityManager();
        pc = (BaseSub1Sub2) pm.getObjectId(oid);
        assertEquals(4, pc.getBaseField());
        assertEquals(5, pc.getBaseSub1Field());
        assertEquals(6, pc.getBaseSub1Sub2Field());
        pm.close();
       
        assertEquals(1, sql.size());
        assertSQL(_outer);
    }
View Full Code Here

        pc.setBaseField(3);
        pc.setBaseSub2Field(4);
        Object oid = persist(pc);
        sql.clear();
       
        OpenJPAEntityManager pm =(OpenJPAEntityManager)currentEntityManager();
        pc = (BaseSub2) pm.getObjectId(oid);
        assertEquals(3, pc.getBaseField());
        assertEquals(4, pc.getBaseSub2Field());
        assertEquals(BaseSub2.class, pc.getClass());
        pm.close();
       
        assertEquals(1, sql.size());
        assertNotSQL(_outer);
        sql.clear();
       
        // should outer join with inexact oid
        oid = new Id(Base.class, ((Id) oid).getId());
        pm = (OpenJPAEntityManager)currentEntityManager();
        pc = (BaseSub2) pm.getObjectId(oid);
        assertEquals(3, pc.getBaseField());
        assertEquals(4, pc.getBaseSub2Field());
        assertEquals(BaseSub2.class, pc.getClass());
        pm.close();
       
        assertEquals(1, sql.size());
        assertSQL(_outer);
    }
View Full Code Here

TOP

Related Classes of org.apache.openjpa.persistence.OpenJPAEntityManager

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.