Package org.datanucleus

Examples of org.datanucleus.StateManager


      public FetchPlan getFetchPlanForLoading() {
        return fetchPlan;
      }
    };
    Object pojo = om.findObjectUsingAID(clr.classForName(acmd.getFullClassName()), fv, ignoreCache, true);
    StateManager stateMgr = om.findStateManager(pojo);
    DatastorePersistenceHandler handler = storeMgr.getPersistenceHandler();
    // 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.
    handler.setAssociatedEntity(stateMgr, EntityUtils.getCurrentTransaction(om), entity);
View Full Code Here


        // We'll create a StateManager for a fresh PC object and then copy the
        // pk field of the parameter value into the fresh PC object.  We will
        // the extract the PK value from the fresh PC object.  The reason we
        // don't want to associate the state manager with the parameter value is
        // that this would be a very surprising (and meaningful) side effect.
        StateManager sm = apiAdapter.newStateManager(getObjectManager(), acmd);
        sm.initialiseForHollow(null, null, value.getClass());
        sm.copyFieldsFromObject((PersistenceCapable) value, acmd.getPKMemberPositions());
        jdoPrimaryKey = sm.provideField(acmd.getPKMemberPositions()[0]);
      }
      if (jdoPrimaryKey == null) {
        throw new FatalNucleusUserException(
            query.getSingleStringQuery() + ": Parameter value " + value
            + " does not have an id.");
View Full Code Here

     * persistent object that has never been saved to the database.
     * {@inheritDoc}
     */
    @Override
    public synchronized void detachObject(Object obj, FetchPlanState state) {
        StateManager sm = findStateManager(obj);
        super.detachObject(obj, state);
        if (sm != null) {
            clearDirty(sm);
        }
    }
View Full Code Here

                 * at flush or commit time
                 */
                throwException(new EntityExistsException("Entity already exists. Use merge to save changes."));
            }
            // We may have added a state manager which is not needed for persist calls
            StateManager sm = om.findStateManager(entity);
            if (sm != null) {
                if (sm instanceof ForceJPAStateManagerImpl) {
                    om.clearDirty(sm);
                    om.removeStateManager(sm);
                    pc.jdoReplaceStateManager(null);
View Full Code Here

            PersistenceCapable pc = (PersistenceCapable) entity;
            if (pc.jdoIsDetached() && pc.jdoGetObjectId() == null) {
                throw new IllegalArgumentException("Detached entity with null id cannot be merged.");
            }
            // Read id from entity
            StateManager sm = om.findStateManager(entity);
            if (sm != null) {
                // This path is taken by all merge() calls.
                // We need to isolate merge() calls that were made to Transient object instead of Detached objects
                AbstractClassMetaData acmd = om.getMetaDataManager()
                                                    .getMetaDataForClass(entity.getClass(), om.getClassLoaderResolver());
                Object id = ForceQueryUtils.getIdFromObject(pc, acmd);
                if (id != null) {
                    if (sm instanceof ForceJPAStateManagerImpl) {
                            sm.initialiseForDetached(pc, id, sm.getVersion(pc));
                            entity = sm.getObject();
                    }
                }
            }
        }
        return super.merge(entity);
View Full Code Here

      ElementContainerStore ecs) {
    JavaTypeMapping orderMapping = ecs.getOrderMapping();
    if (orderMapping != null) {
      DatastorePersistenceHandler handler = storeMgr.getPersistenceHandler();
      ObjectManager om = sm.getObjectManager();
      StateManager childSm = om.findStateManager(element);
      Entity childEntity = handler.getAssociatedEntityForCurrentTransaction(childSm);
      orderMapping.setObject(sm.getObjectManager(), childEntity, new int[1], index);
      handler.put(om, childEntity);
      return true;
    }
View Full Code Here

                                           DatastoreManager storeMgr) {
    super(localiser, clr, storeMgr);
  }

  public int indexOf(StateManager parentSm, Object element, ElementContainerStore ecs) {
    StateManager elementSm = parentSm.getObjectManager().findStateManager(element);
    Key elementKey = EntityUtils.getPrimaryKeyAsKey(elementSm.getObjectManager().getApiAdapter(), elementSm);
    if (elementKey == null) {
      throw new NucleusUserException("Collection element does not have a primary key.");
    } else if (elementKey.getParent() == null) {
      throw new NucleusUserException("Collection element primary key does not have a parent.");
    }

    DatastoreServiceConfig config = storeMgr.getDefaultDatastoreServiceConfigForReads();
    DatastoreService service = DatastoreServiceFactoryInternal.getDatastoreService(config);
    try {
      Entity e = service.get(elementKey);
      return extractIndexProperty(e, ecs, elementSm.getObjectManager());
    } catch (EntityNotFoundException enfe) {
      throw new NucleusDataStoreException("Could not determine index of entity.", enfe);
    }
  }
View Full Code Here

      // constructor and then persist that.
      value = JDOImplHelper.getInstance().newInstance(
          ammd.getType(), (javax.jdo.spi.StateManager) getStateManager());
    }
    ObjectManager objMgr = getObjectManager();
    StateManager embeddedStateMgr = objMgr.findStateManager(value);
    if (embeddedStateMgr == null) {
      embeddedStateMgr = StateManagerFactory.newStateManagerForEmbedded(objMgr, value, false);
      embeddedStateMgr.addEmbeddedOwner(getStateManager(), fieldNumber);
      embeddedStateMgr.setPcObjectType(StateManager.EMBEDDED_PC);
    }
    return embeddedStateMgr;
  }
View Full Code Here

  /**
   * We can't trust the fieldNumber on the ammd provided because some embedded
   * fields don't have this set.  That's why we pass it in as a separate param.
   */
  private Object fetchEmbeddedField(AbstractMemberMetaData ammd, int fieldNumber) {
    StateManager esm = getEmbeddedStateManager(ammd, fieldNumber, null);
    // We need to build a mapping consumer for the embedded class so that we
    // get correct fieldIndex --> metadata mappings for the class in the proper
    // embedded context
    // TODO(maxr) Consider caching this
    InsertMappingConsumer mappingConsumer = buildMappingConsumer(
        esm.getClassMetaData(), getClassLoaderResolver(),
        esm.getClassMetaData().getAllMemberPositions(),
        ammd.getEmbeddedMetaData());
    AbstractMemberMetaDataProvider ammdProvider = getEmbeddedAbstractMemberMetaDataProvider(mappingConsumer);
    fieldManagerStateStack.addFirst(new FieldManagerState(esm, ammdProvider, mappingConsumer, true));
    AbstractClassMetaData acmd = esm.getClassMetaData();
    esm.replaceFields(acmd.getAllMemberPositions(), this);
    fieldManagerStateStack.removeFirst();
    return esm.getObject();
  }
View Full Code Here

   * field for the parent.
   */
  Object establishEntityGroup() {
    Key parentKey = getEntity().getParent();
    if (parentKey == null) {
      StateManager sm = getStateManager();
      // Mechanism 1
      parentKey = KeyRegistry.getKeyRegistry(getObjectManager()).getRegisteredKey(sm.getObject());
      if (parentKey == null) {
        // Mechanism 2
        parentKey = getParentKeyFromExternalFKMappings(sm);
      }
      if (parentKey == null) {
        // Mechanism 3
        parentKey = getParentKeyFromParentField(sm);
      }
      if (parentKey == null) {
        // Mechanism 4
        Object parentPojo = DatastoreJPACallbackHandler.getAttachingParent(sm.getObject());
        if (parentPojo != null) {
          parentKey = getKeyFromParentPojo(parentPojo);
        }
      }
      if (parentKey != null) {
View Full Code Here

TOP

Related Classes of org.datanucleus.StateManager

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.