Package org.apache.openjpa.kernel

Examples of org.apache.openjpa.kernel.OpenJPAStateManager


        }
    }

    private void setJoinRefColumn(OpenJPAStateManager inverseSm, Column ownerCols[], Column inverseCol,
                                   Object val) {
        OpenJPAStateManager ownerSm = getPrimaryKey();
        if (ownerSm != null) {
            ClassMetaData ownerMeta = ownerSm.getMetaData();
            // loop through all the fields in the owner entity
            for (FieldMetaData ownerFM : ownerMeta.getFields()) {
                // look for any single column in this field references the
                // same column as the foreign key target column
                Column cols[] = ((FieldMapping) ownerFM).getColumns();
                if (cols.length == 1            // only support attribute of non-compound foreign key
                        && cols != ownerCols    // not @Id field
                        && cols[0].getIdentifier().equals(ownerCols[0].getIdentifier())) {
                    // copy the foreign key value to the current field.
                    FieldMetaData inverseFM = inverseSm.getMetaData().getField(
                                    inverseCol.getIdentifier().getName());
                    if (inverseFM != null) {
                        int inverseValIndex = inverseFM.getIndex();
                        Class<?> inverseType = inverseSm.getMetaData().getField(inverseValIndex).getType();
                        int ownerIndex = ownerFM.getIndex();
                        Class<?> ownerType = ownerSm.getMetaData().getField(ownerIndex).getType();
                        if (inverseType == ownerType) {
                            Object inverseVal = inverseSm.fetch(inverseValIndex);
                            ownerSm.storeField(ownerIndex, inverseVal);
                        }
                    }
                }
            }
        }
View Full Code Here


        StoreContext ctx, Object[] params) {
        if (_actions == null)
            return candidate;

        Action action;
        OpenJPAStateManager sm;
        Broker tmpBroker;
        for (Iterator itr = _actions.iterator(); itr.hasNext();) {
            action = (Action)itr.next();
            sm = null;
            tmpBroker = null;
            if (ImplHelper.isManageable(candidate))
                sm = (OpenJPAStateManager) (ImplHelper.toPersistenceCapable(
                    candidate, ctx.getConfiguration())).
                    pcGetStateManager();
            if (sm == null) {
                tmpBroker = ctx.getBroker();
                tmpBroker.transactional(candidate, false, null);
                sm = tmpBroker.getStateManager(candidate);
            }
            if (action.op != Action.GET && action.op != Action.GET_OUTER)
                continue;
            try {
                candidate = sm.fetchField(
                        ((FieldMapping)action.data).getIndex(), true);
            } catch (ClassCastException cce) {
                throw new RuntimeException(action.data + " not a field path");
            } finally {
                // transactional does not clear the state, which is
                // important since tmpCandidate might be also managed by
                // another broker if it's a proxied non-pc instance
                if (tmpBroker != null)
                    tmpBroker.nontransactional(sm.getManagedInstance(), null);
            }
        }
        return candidate;
    }
View Full Code Here

     * operating set. The slice is assigned only if a StateManager has never
     * been assigned before.
     */
    @Override
    public OpenJPAStateManager persist(Object pc, Object id, boolean explicit, OpCallbacks call) {
        OpenJPAStateManager sm = getStateManager(pc);
        SliceInfo info = null;
        boolean replicated = SliceImplHelper.isReplicated(pc, getConfiguration());
        if (getOperatingSet().isEmpty() && !SliceImplHelper.isSliceAssigned(sm)) {
            info = SliceImplHelper.getSlicesByPolicy(pc, getConfiguration(), this);
            if (info != null) {
View Full Code Here

    /**
     * Helper method to see that the one to one uses an intermediate values.
     */
    private void oneOneIntermediateTest(Broker broker) {
        RuntimeTest1 pc = (RuntimeTest1) broker.find(_pc, true, null);
        OpenJPAStateManager sm = broker.getStateManager(pc);
        assertNotNull(sm);
        FieldMetaData fmd = sm.getMetaData().getField("selfOneOne");
        assertNotNull(fmd);
        assertEquals(_rel, sm.getIntermediate(fmd.getIndex()));
        assertEquals(_rel, broker.getObjectId(pc.getSelfOneOne()));
        assertNull(sm.getIntermediate(fmd.getIndex()));
    }
View Full Code Here

        OpenJPAEntityManager pm = getPM();
        startTx(pm);

        RuntimeTest1 a = (RuntimeTest1) pm.find(RuntimeTest1.class, oid);
        a.setStringField(a.getStringField());
        OpenJPAStateManager sm = getStateManager(a, pm);
        FieldMetaData fmd = sm.getMetaData().getField("stringField");
        assertTrue(sm.getDirty().get(fmd.getIndex()) == false);

        endTx(pm);
        endEm(pm);
    }
View Full Code Here

        super.tearDown();
    }

    private void assertState(PCState state, boolean flushed) {
        OpenJPAStateManager sm = getStateManager(a, pm);
        assertNotNull(sm);
        assertEquals(flushed, sm.isFlushed());
        assertEquals(state, sm.getPCState());
    }
View Full Code Here

                        itr.hasNext();) {
                        PersistenceCapable pc = (PersistenceCapable) itr.next();
                        if (pc == null) {
                            continue;
                        }
                        OpenJPAStateManager sm = (OpenJPAStateManager) pc.pcGetStateManager();
                        ClassMapping cm =
                            (ClassMapping) _conf.getMetaDataRepositoryInstance().getCachedMetaData(pc.getClass());
                        FieldMapping[] fmd = cm.getFieldMappings();
                        for (int j = 0; j < fmd.length; j++) {
                            // don't check the oids for basic fields.
                            if (fmd[j].isTypePC()) {
                                Object oid = sm.getIntermediate(fmd[j].getIndex());
                                // if oid was setIntermediate() previously and it is the same as the owner,generate
                                // then set the inverse relation
                                if (oid != null && oid.equals(owner.getObjectId())) {
                                    sm.storeObject(fmd[j].getIndex(), owner.getPersistenceCapable());
                                    break;
                                }
                            }
                        }
                    }
View Full Code Here

    public void testInitialValueString() {
        OpenJPAEntityManager pm = getPM();
        startTx(pm);
        RuntimeTest1 rt1 = getObject(pm);
        OpenJPAStateManager sm = getStateManager(rt1, pm);
        FieldMetaData fmd = sm.getMetaData().getField("stringField");
        assertEquals("TestInitialValueFetching",
            sm.fetchInitialField(fmd.getIndex()));
        rt1.setStringField("TestInitialValueFetching-2");
        assertEquals("TestInitialValueFetching",
            sm.fetchInitialField(fmd.getIndex()));
        endTx(pm);
        assertEquals("TestInitialValueFetching-2",
            sm.fetchInitialField(fmd.getIndex()));
        endEm(pm);
    }
View Full Code Here

    public void testInitialValueInt() {
        OpenJPAEntityManager pm = getPM();
        startTx(pm);
        RuntimeTest1 rt1 = getObject(pm);
        OpenJPAStateManager sm = getStateManager(rt1, pm);
        FieldMetaData fmd = sm.getMetaData().getField("intField1");
        assertEquals(10,
            ((Integer) sm.fetchInitialField(fmd.getIndex())).intValue());
        rt1.setIntField1(11);
        assertEquals(10,
            ((Integer) sm.fetchInitialField(fmd.getIndex())).intValue());
        endTx(pm);
        assertEquals(11,
            ((Integer) sm.fetchInitialField(fmd.getIndex())).intValue());
        endEm(pm);
    }
View Full Code Here

        OpenJPAEntityManager pm = (OpenJPAEntityManager)
            pmf.createEntityManager();
        RuntimeTest1 rt1 = getObject(pm);

        Date d = rt1.getDateField();
        OpenJPAStateManager sm = getStateManager(rt1, pm);
        FieldMetaData fmd = sm.getMetaData().getField("dateField");
        try {
            sm.fetchInitialField(fmd.getIndex());
            fail("should get an exception if RestoreMutableValues is false");
        } catch (org.apache.openjpa.util.UserException e) {
            // expected
        }
        endEm(pm);
View Full Code Here

TOP

Related Classes of org.apache.openjpa.kernel.OpenJPAStateManager

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.