Package org.datanucleus.state

Examples of org.datanucleus.state.ObjectProvider


    }

    ExecutionContext ec = parentOP.getExecutionContext();
    ApiAdapter apiAdapter = ec.getApiAdapter();

    ObjectProvider childOP = ec.findObjectProvider(child);
    if (apiAdapter.isNew(child) &&
        (childOP == null ||
         childOP.getAssociatedValue(((DatastoreManager)ec.getStoreManager()).getDatastoreTransaction(ec)) == null)) {
      // This condition is difficult to get right.  An object that has been persisted
      // (and therefore had its primary key already established) may still be considered
      // NEW by the apiAdapter if there is a txn and the txn has not yet committed.
      // In order to determine if an object has been persisted we see if there is
      // a state manager for it.  If there isn't, there's no way it was persisted.
View Full Code Here


    }

    if (parentKey == null) {
      // Mechanism 3, use attach parent info from ExecutionContext
      // TODO This will need a change to cater for unowned relations. How do we know which field is used?
      ObjectProvider ownerOP = ec.findObjectProviderOfOwnerForAttachingObject(op.getObject());
      if (ownerOP != null) {
        Object parentPojo = ownerOP.getObject();
        ObjectProvider mergeOP = ec.findObjectProvider(parentPojo);
        if (mergeOP != null) {
          parentKey = EntityUtils.getPrimaryKeyAsKey(ec.getApiAdapter(), mergeOP);
        }
      }
    }
View Full Code Here

    } else if (ec.getApiAdapter().isDeleted(childObj)) {
      // Child is deleted, so return null
      return null;
    }

    ObjectProvider childOP = ec.findObjectProvider(childObj);
    if (childOP == null) {
      // Not yet persistent
      return null;
    }

    Key key = null;
    if (childCmd.getIdentityType() == IdentityType.DATASTORE) {
      Object intId = childOP.getInternalObjectId();
      if (intId == null || !(intId instanceof OID)) {
        // Not yet persistent, so return null
        return null;
      }
      key = EntityUtils.getPrimaryKeyAsKey(ec.getApiAdapter(), childOP);
    } else {
      // TODO Cater for composite identity
      Object primaryKey = ec.getApiAdapter().getTargetKeyForSingleFieldIdentity(childOP.getInternalObjectId());
      if (primaryKey == null) {
        // Not yet persistent, so return null
        return null;
      }
View Full Code Here

      FieldManager fm = new QueryEntityPKFetchFieldManager(acmd, entity);
      id = IdentityUtils.getApplicationIdentityForResultSetRow(ec, acmd, cls, true, fm);
    }

    Object pojo = ec.findObject(id, fv, cls, ignoreCache, false);
    ObjectProvider op = ec.findObjectProvider(pojo);

    // TODO(maxr): Seems like we should be able to refactor the handler
    // so that we can do a fetch without having to hide the entity in the state manager.
    op.setAssociatedValue(((DatastoreManager)ec.getStoreManager()).getDatastoreTransaction(ec), entity);

    // Make sure any version is set
    if (acmd.isVersioned()) {
      VersionMetaData vermd = acmd.getVersionMetaDataForClass();
      Object versionValue = entity.getProperty(EntityUtils.getVersionPropertyName(storeMgr.getIdentifierFactory(), vermd));
      if (vermd.getVersionStrategy() == VersionStrategy.DATE_TIME) {
        versionValue = new Timestamp((Long)versionValue);
      }
      op.setVersion(versionValue);
    }

    if (fetchPlan == null) {
      // Projection, so load everything
      // TODO Remove this. It prevents postLoad calls being made, but do we care since its a projection?
View Full Code Here

        {
            return;
        }

        // Find the SM for the embedded PC object
        ObjectProvider thisSM = getStateManagerForEmbeddedObject(sm);
        if (thisSM == null)
        {
            return;
        }
View Full Code Here

        {
            return;
        }

        // Find the SM for the embedded PC object
        ObjectProvider thisSM = getStateManagerForEmbeddedObject(sm);
        if (thisSM == null)
        {
            return;
        }
View Full Code Here

        {
            return;
        }

        // Find the SM for the embedded PC object
        ObjectProvider thisSM = getStateManagerForEmbeddedObject(sm);
        if (thisSM == null)
        {
            return;
        }
View Full Code Here

        {
            return;
        }

        // Find the SM for the embedded PC object
        ObjectProvider thisSM = getStateManagerForEmbeddedObject(sm);
        if (thisSM == null)
        {
            return;
        }
View Full Code Here

        if (value == null)
        {
            return null;
        }

        ObjectProvider thisSM = ec.findObjectProvider(value);
        if (thisSM == null)
        {
            // Assign a StateManager to manage our embedded object
            thisSM = ec.newObjectProviderForEmbedded(value, false, ownerSM, theMmd.getAbsoluteFieldNumber());
            thisSM.setPcObjectType(objectType);
        }

        return thisSM;
    }
View Full Code Here

    if (elementsIter != null) {
      while (elementsIter.hasNext()) {
        Object element = elementsIter.next();
        if (ec.getApiAdapter().isPersistable(element) && ec.getApiAdapter().isDeleted(element)) {
          // Element is waiting to be deleted so flush it (it has the FK)
          ObjectProvider objSM = ec.findObjectProvider(element);
          objSM.flush();
        } else {
          if (deleteElements) {
            ec.deleteObjectInternal(element);
          }
        }
View Full Code Here

TOP

Related Classes of org.datanucleus.state.ObjectProvider

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.