private Object getTransformedValueFromParamValue(Object paramValue, ExecutionContext executionContext) { AbstractClassMetaData acmd = executionContext.getMetaDataManager().getMetaDataForClass(paramValue.getClass(), executionContext.getClassLoaderResolver()); if (acmd != null && paramValue instanceof PersistenceCapable) { return getIdFromObject((PersistenceCapable) paramValue, acmd).toString(); } else if (paramValue instanceof Collection<?>) { return new CollectionParameter((Collection<?>) paramValue); } else { return paramValue; } }
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); } } } } }
/** * Convenience method to return a managed (POJO) object for the provided Entity for the EntityManager. * @param entity The entity * @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()); } }
public static String determineKind(AbstractClassMetaData acmd, ExecutionContext ec) { MappedStoreManager storeMgr = (MappedStoreManager) ec.getStoreManager(); return determineKind(acmd, storeMgr, ec.getClassLoaderResolver()); }
<T> List<T> toPojoResult(final ExecutionContext ec, Class<T> cls, Iterable<Entity> queryResultIterable, Cursor endCursor) { final ClassLoaderResolver clr = ec.getClassLoaderResolver(); final AbstractClassMetaData acmd = ec.getMetaDataManager().getMetaDataForClass(cls, clr); Utils.Function<Entity, Object> func = new Utils.Function<Entity, Object>() { public Object apply(Entity from) { AbstractJavaQuery query = new DummyQuery(ec.getStoreManager(), ec); final ManagedConnection mconn = ec.getStoreManager().getConnection(ec); try { List<T> results = (List<T>) DatastoreQuery.newStreamingQueryResultForEntities(
PersistenceUtils.getMemberElementClassMetaData(ammd, ec.getClassLoaderResolver(), ec.getMetaDataManager()); Collection childrenColl = null; Map childrenMap = null; while (subs.hasNext()) { final XmlObject child = subs.next(); Object value = ec.findObjectUsingAID(new Type(ec.getClassLoaderResolver(). classForName(cmd.getFullClassName())), ForceQueryUtils.getFieldValues2(cmd, fieldsToLoad, mconn, storeManager, child, query), try { AbstractClassMetaData cmd = ec.getMetaDataManager().getMetaDataForClass(ammd.getTypeName(), ec.getClassLoaderResolver()); return ec.findObjectUsingAID(new Type(ec.getClassLoaderResolver(). classForName(cmd.getFullClassName())), ForceQueryUtils.getFieldValues2(cmd, cmd.getDFGMemberPositions(), return ec.findObject(new StringIdentity(ammd.getType(), (String) o), false, false, ammd.getTypeName());
AbstractClassMetaData childCmd = ec.getMetaDataManager().getMetaDataForClass(childObj.getClass(), ec.getClassLoaderResolver()); if (ec.getApiAdapter().isDetached(childObj)) { Object valueID = ec.getApiAdapter().getIdForObject(childObj); if (childCmd.getIdentityType() == IdentityType.DATASTORE) { OID oid = (OID)valueID; return EntityUtils.getPkAsKey(keyValue, childCmd, ec); } else { Object valuePK = ec.getApiAdapter().getTargetKeyForSingleFieldIdentity(valueID); Key key = EntityUtils.getPrimaryKeyAsKey(valuePK, ec, ec.getMetaDataManager().getMetaDataForClass(childObj.getClass(), ec.getClassLoaderResolver())); return key; } else if (ec.getApiAdapter().isDeleted(childObj)) { ObjectProvider childOP = ec.findObjectProvider(childObj); if (childOP == null) { key = EntityUtils.getPrimaryKeyAsKey(ec.getApiAdapter(), childOP); } else { Object primaryKey = ec.getApiAdapter().getTargetKeyForSingleFieldIdentity(childOP.getInternalObjectId()); if (primaryKey == null) { key = EntityUtils.getPrimaryKeyAsKey(ec.getApiAdapter(), childOP);
AbstractClassMetaData keyCmd = mmd.getMap().getKeyClassMetaData(clr, ec.getMetaDataManager()); AbstractClassMetaData valCmd = mmd.getMap().getValueClassMetaData(clr, ec.getMetaDataManager()); Iterator keyValIter = keysValues.iterator(); List<Key> keysToRetrieve = new ArrayList<Key>(); continue; key = EntityUtils.entityToPojo(entity, keyCmd, clr, ec, false, ec.getFetchPlan()); } else { continue; val = EntityUtils.entityToPojo(entity, valCmd, clr, ec, false, ec.getFetchPlan()); } else {
public static Key getKeyForObject(Object pc, ExecutionContext ec) { AbstractClassMetaData cmd = ec.getMetaDataManager().getMetaDataForClass(pc.getClass(), ec.getClassLoaderResolver()); if (cmd.getIdentityType() == IdentityType.DATASTORE) { OID oid = (OID)ec.getApiAdapter().getIdForObject(pc); if (oid == null) { // Not yet persistent, so return null return null; } Object keyValue = oid.getKeyValue(); return EntityUtils.getPkAsKey(keyValue, cmd, ec); } else { // TODO Cater for composite identity Object internalPk = ec.getApiAdapter().getTargetKeyForSingleFieldIdentity(ec.getApiAdapter().getIdForObject(pc)); if (internalPk == null) { // Not yet persistent, so return null return null; } return EntityUtils.getPkAsKey(internalPk, ec.getMetaDataManager().getMetaDataForClass(pc.getClass(), ec.getClassLoaderResolver()), ec); } }
ClassLoaderResolver getClassLoaderResolver() { return ec.getClassLoaderResolver(); }
DatastoreManager storeMgr = (DatastoreManager)ec.getStoreManager(); ec.getClassLoaderResolver()); AbstractMemberMetaData parentField = table.getParentMappingMemberMetaData(); if (parentField != null && MetaDataUtils.isOwnedRelation(parentField, storeMgr)) { ObjectProvider ownerOP = op.getExecutionContext().getObjectProviderOfOwnerForAttachingObject(op.getObject()); if (ownerOP != null) { Object parentPojo = ownerOP.getObject(); ObjectProvider mergeOP = ec.findObjectProvider(parentPojo); if (mergeOP != null) { parentKey = EntityUtils.getPrimaryKeyAsKey(ec.getApiAdapter(), mergeOP);
if (ec.findObjectProvider(pc) == null) ClassLoaderResolver clr = ec.getClassLoaderResolver(); String className = storeMgr.getClassNameForObjectID(id, clr, ec); if (className == null) AbstractClassMetaData cmd = ec.getMetaDataManager().getMetaDataForClass(className, clr); if (cmd.getIdentityType() == IdentityType.APPLICATION) ObjectProvider pcSM = ec.findObjectProvider(pc); if (pcSM == null)
final DatastoreManager storeMgr = (DatastoreManager) ec.getStoreManager(); storeMgr.validateMetaDataForClass(acmd); if (key.getName() != null) { id = OIDFactory.getInstance(ec.getNucleusContext(), key.getName()); } else { id = OIDFactory.getInstance(ec.getNucleusContext(), cls.getName(), key.getId()); Object pojo = ec.findObject(id, fv, cls, ignoreCache, false); ObjectProvider op = ec.findObjectProvider(pojo); op.setAssociatedValue(((DatastoreManager)ec.getStoreManager()).getDatastoreTransaction(ec), entity);
if (ec.getApiAdapter().isDetached(element)) {// User passed in detached object to collection.remove()! { elementToRemove = ec.findObject(ec.getApiAdapter().getIdForObject(element), true, false, element.getClass().getName()); ObjectProvider elementOP = ec.findObjectProvider(elementToRemove); if (!ec.getApiAdapter().isDeleted(elementToRemove)) { ec.getApiAdapter().isLoaded(elementOP, elemOwnerFieldNumber); oldOwner = elementOP.provideField(elemOwnerFieldNumber); if (ec.getApiAdapter().isPersistable(elementToRemove) && ec.getApiAdapter().isDeleted(elementToRemove)) { ec.deleteObjectInternal(elementToRemove); } else {
AbstractClassMetaData elemCmd = mmd.getCollection().getElementClassMetaData(clr, ec.getMetaDataManager()); EmbeddedMetaData embmd = mmd.getElementMetaData() != null ? mmd.getElementMetaData().getEmbeddedMetaData() : null; AbstractClassMetaData elemCmd = mmd.getArray().getElementClassMetaData(clr, ec.getMetaDataManager()); EmbeddedMetaData embmd = mmd.getElementMetaData() != null ? mmd.getElementMetaData().getEmbeddedMetaData() : null; } else { TypeManager typeMgr = ec.getNucleusContext().getTypeManager(); value = ((DatastoreManager) ec.getStoreManager()) .getTypeConversionUtils() .pojoValueToDatastoreValue(typeMgr, clr, value, mmd);
ec.getClassLoaderResolver()); Object id = null; ObjectProvider sm = ec.findObjectProvider(pc); if (sm != null)
ObjectProvider elementOP = ec.findObjectProvider(element); if (relationType == Relation.ONE_TO_MANY_BI) { ec.getApiAdapter().isLoaded(elementOP, getFieldNumberInElementForBidirectional(elementOP)); // Ensure is loaded Object oldOwner = elementOP.provideField(getFieldNumberInElementForBidirectional(elementOP)); if (oldOwner != newOwner) { if (ec.getManageRelations()) { ec.getRelationshipManager(elementOP).relationChange(relatedFieldNumber, oldOwner, newOwner); if (ec.isFlushing()) { elementOP.flush();
AbstractClassMetaData cmd, DB4OStoreManager storeMgr) if (!ec.getApiAdapter().isPersistable(obj)) ObjectProvider op = ec.findObjectProvider(obj); if (op == null) id = OIDFactory.getInstance(ec.getNucleusContext(), db4oId); id = ec.getApiAdapter().getNewApplicationIdentityObjectId(obj, cmd);
ApiAdapter apiAdapter = ec.getApiAdapter(); ObjectProvider childOP = ec.findObjectProvider(child); if (apiAdapter.isNew(child) && (childOP == null || childOP.getAssociatedValue(((DatastoreManager)ec.getStoreManager()).getDatastoreTransaction(ec)) == null)) {
if (ec.getApiAdapter().isDeleted(pc)) { if (ec.getApiAdapter().isDetached(pc)) { childPC = ec.persistObjectInternal(pc, null, -1, ObjectProvider.PC); ObjectProvider childOP = ec.findObjectProvider(childPC); if (childOP == null) { childPC = ec.persistObjectInternal(childPC, null, -1, ObjectProvider.PC); childOP = ec.findObjectProvider(childPC); Object primaryKey = ec.getApiAdapter().getTargetKeyForSingleFieldIdentity(childOP.getInternalObjectId()); if (primaryKey == null) {