Package org.datanucleus

Examples of org.datanucleus.ExecutionContext


   * @param pc The JDO object (managed by the provided PM)
   * @param pm The Persistence Manager
   * @return The Entity (if accessible)
   */
  public Entity getEntityFromJPA(Object pc, EntityManager em) {
    ExecutionContext ec = ((JPAEntityManager)em).getExecutionContext();
    ObjectProvider op = ec.findObjectProvider(pc);
    if (op != null) {
      DatastoreManager storeMgr = (DatastoreManager) ec.getStoreManager();
      DatastoreTransaction txn = storeMgr.getDatastoreTransaction(ec);
      if (txn != null) {
        Entity entity = (Entity)op.getAssociatedValue(txn);
        if (entity != null) {
          return entity;
View Full Code Here


   * @param em The EntityManager
   * @param cls The POJO class being represented here
   * @return The POJO
   */
  public Object getJPAFromEntity(Entity entity, EntityManager em, Class cls) {
    ExecutionContext ec = ((JPAEntityManager)em).getExecutionContext();
    ClassLoaderResolver clr = ec.getClassLoaderResolver();
    AbstractClassMetaData cmd = ec.getMetaDataManager().getMetaDataForClass(cls, clr);
    return EntityUtils.entityToPojo(entity, cmd, clr, ec, false, ec.getFetchPlan());
  }
View Full Code Here

  public <T> List<T> toJDOResult(PersistenceManager pm, Class<T> cls, QueryResultIterable<Entity> queryResultIterable) {
    return toJDOResult(pm, cls, queryResultIterable, null);
  }

  private <T> List<T> toJDOResult(PersistenceManager pm, Class<T> cls, Iterable<Entity> queryResultIterable, Cursor endCursor) {
    ExecutionContext ec = ((JDOPersistenceManager) pm).getExecutionContext();
    return toPojoResult(ec, cls, queryResultIterable, endCursor);
  }
View Full Code Here

   * @param pc The JDO object (managed by the provided PM)
   * @param pm The Persistence Manager
   * @return The Entity (if accessible)
   */
  public Entity getEntityFromJDO(Object pc, PersistenceManager pm) {
    ExecutionContext ec = ((JDOPersistenceManager)pm).getExecutionContext();
    ObjectProvider op = ec.findObjectProvider(pc);
    if (op != null) {
      DatastoreManager storeMgr = (DatastoreManager) ec.getStoreManager();
      DatastoreTransaction txn = storeMgr.getDatastoreTransaction(ec);
      if (txn != null) {
        Entity entity = (Entity)op.getAssociatedValue(txn);
        if (entity != null) {
          return entity;
View Full Code Here

   * @param pm The PersistenceManager
   * @param cls The POJO class being represented here
   * @return The POJO
   */
  public Object getJDOFromEntity(Entity entity, PersistenceManager pm, Class cls) {
    ExecutionContext ec = ((JDOPersistenceManager)pm).getExecutionContext();
    ClassLoaderResolver clr = ec.getClassLoaderResolver();
    AbstractClassMetaData cmd = ec.getMetaDataManager().getMetaDataForClass(cls, clr);
    return EntityUtils.entityToPojo(entity, cmd, clr, ec, false, ec.getFetchPlan());
  }
View Full Code Here

  public static void checkParentage(Object child, ObjectProvider parentOP) {
    if (child == null) {
      return;
    }

    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

   * @param op ObjectProvider that we want to associate this Entity with (if any)
   * @param key The key
   * @return The Entity
   */
  public static Entity getEntityFromDatastore(DatastoreService ds, ObjectProvider op, Key key) {
    ExecutionContext ec = op.getExecutionContext();
    DatastoreTransaction txn =
      ((DatastoreManager)ec.getStoreManager()).getDatastoreTransaction(ec);

    if (NucleusLogger.DATASTORE_NATIVE.isDebugEnabled()) {
      NucleusLogger.DATASTORE_NATIVE.debug("Getting entity of kind " + key.getKind() + " with key " + key);
    }
    if (ec.getStatistics() != null) {
      ec.getStatistics().incrementNumReads();
    }

    Entity entity;
    try {
      if (txn == null) {
View Full Code Here

    Key parentKey = entity.getParent();
    if (parentKey != null) {
      return parentKey;
    }

    ExecutionContext ec = op.getExecutionContext();

    // Mechanism 1, from the registry
    parentKey = KeyRegistry.getKeyRegistry(ec).getParentKeyForOwnedObject(op.getObject());

    if (parentKey == null) {
      DatastoreManager storeMgr = (DatastoreManager)ec.getStoreManager();
      // Mechanism 2, from the parent end of a bidir relation where this is a child
      DatastoreTable table = storeMgr.getDatastoreClass(op.getClassMetaData().getFullClassName(),
          ec.getClassLoaderResolver());
      AbstractMemberMetaData parentField = table.getParentMappingMemberMetaData();
      if (parentField != null && MetaDataUtils.isOwnedRelation(parentField, storeMgr)) {
        Object parent = op.provideField(parentField.getAbsoluteFieldNumber());
        parentKey = parent == null ? null : EntityUtils.getKeyForObject(parent, ec);
      }
    }

    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);
        }
      }
    }

    return parentKey;
View Full Code Here

    DatastoreService service = DatastoreServiceFactoryInternal.getDatastoreService(config);
    AbstractClassMetaData acmd = elementCmd;
    String kind =
        storeMgr.getIdentifierFactory().newDatastoreContainerIdentifier(acmd).getIdentifierName();
    Query q = new Query(kind);
    ExecutionContext ec = op.getExecutionContext();
    Object id = ec.getApiAdapter().getTargetKeyForSingleFieldIdentity(op.getInternalObjectId());
    Key key = id instanceof Key ? (Key) id : KeyFactory.stringToKey((String) id);
    q.setAncestor(key);

    // create an entity just to capture the name of the index property
    Entity entity = new Entity(kind);
View Full Code Here

  /* (non-Javadoc)
   * @see org.datanucleus.store.scostore.CollectionStore#clear(org.datanucleus.store.ObjectProvider)
   */
  public void clear(ObjectProvider op) {
    boolean deleteElements = deleteElementsOnRemoveOrClear();
    ExecutionContext ec = op.getExecutionContext();
    Iterator elementsIter = iterator(op);
    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.ExecutionContext

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.