ObjectProvider sm = ec.findObjectProvider(entity); if (sm == null)
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); } } } } }
public void clear(ObjectProvider op) { // Find elements present in the datastore and process them one-by-one 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 elementSM = ec.findObjectProvider(element); elementSM.flush(); } else { if (deleteElements) { ec.deleteObjectInternal(element); } else { // TODO Null this out (in parent) } } } } }
/** * Convenience method to return the ObjectProvider for the specified value. * The return will never be null, since we always want to store all properties into the * owning object (for querying). * @param ammd Metadata for the member where this object is embedded * @param fieldNumber Field number in the owning object where this is embedded * @param value The embedded value (or null, maybe when retrieving) * @return ObjectProvider to use */ protected ObjectProvider getEmbeddedObjectProvider(Class type, int fieldNumber, Object value) { if (value == null) { value = JDOImplHelper.getInstance().newInstance(type, (javax.jdo.spi.StateManager)getObjectProvider()); } ObjectProvider embeddedOP = ec.findObjectProvider(value); if (embeddedOP == null) { embeddedOP = ObjectProviderFactory.newForEmbedded(ec, value, false, getObjectProvider(), fieldNumber); embeddedOP.setPcObjectType(ObjectProvider.EMBEDDED_PC); } return embeddedOP; }
/** * Convenience method to return the Entity for this <b>managed</b> JDO object. * @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; } else { Key key = EntityUtils.getPkAsKey(op); return EntityUtils.getEntityFromDatastore(storeMgr.getDatastoreServiceForReads(ec), op, key); } } else { Key key = EntityUtils.getPkAsKey(op); return EntityUtils.getEntityFromDatastore(storeMgr.getDatastoreServiceForReads(ec), op, key); } } else { // TODO Cater for detached objects throw new UnsupportedOperationException("Not yet supported getting Entity for detached/unmanaged object"); } }
/** * Convenience method to return the Entity for this <b>managed</b> JDO object. * @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; } else { Key key = EntityUtils.getPkAsKey(op); return EntityUtils.getEntityFromDatastore(storeMgr.getDatastoreServiceForReads(ec), op, key); } } else { Key key = EntityUtils.getPkAsKey(op); return EntityUtils.getEntityFromDatastore(storeMgr.getDatastoreServiceForReads(ec), op, key); } } else { // TODO Cater for detached objects throw new UnsupportedOperationException("Not yet supported getting Entity for detached/unmanaged object"); } }
public int lastIndexOf(ObjectProvider op, Object element) { ExecutionContext ec = op.getExecutionContext(); validateElementForReading(ec, element); ObjectProvider elementOP = ec.findObjectProvider(element); Key elementKey = EntityUtils.getPrimaryKeyAsKey(ec.getApiAdapter(), elementOP); if (elementKey == null) { // Not persistent return -1; } if (MetaDataUtils.readRelatedKeysFromParent(storeMgr, ownerMemberMetaData)) { // Return the position using the field of List<Key> in the owner String propName = EntityUtils.getPropertyName(storeMgr.getIdentifierFactory(), ownerMemberMetaData); Entity ownerEntity = getOwnerEntity(op); if (ownerEntity.hasProperty(propName)) { Object value = ownerEntity.getProperty(propName); if (value == null) { return -1; } List<Key> keys = (List<Key>) value; return keys.lastIndexOf(elementKey); } } // Owned relation in earlier storage version so use parentKey to determine membership of list (only present once) return indexOf(op, element); }
ObjectProvider objSM = sm.getExecutionContext().findObjectProvider(obj); if (objSM != null)
ObjectProvider childOP = ec.findObjectProvider(childPC); if (childOP == null) { childOP = ec.findObjectProvider(childPC);
ec.getClassLoaderResolver()); Object id = null; ObjectProvider sm = ec.findObjectProvider(pc); if (sm != null)
ObjectProvider elementOP = ec.findObjectProvider(element); if (elementOP != null && !ec.getApiAdapter().isDeleted(element)) { Entity elementEntity = getOwnerEntity(elementOP);
validateElementForReading(ec, element); ObjectProvider elementOP = ec.findObjectProvider(element); Key elementKey = EntityUtils.getPrimaryKeyAsKey(ec.getApiAdapter(), elementOP); if (elementKey == null) {
if (ownerMapping.isNullable()) { ObjectProvider elementSM = ec.findObjectProvider(element); if (relationType == Relation.ONE_TO_MANY_BI) {
if (ec.findObjectProvider(pc) == null) ObjectProvider pcSM = ec.findObjectProvider(pc); if (pcSM == null)
ObjectProvider pcSM = ec.findObjectProvider(pc); if (pcSM == null)
ObjectProvider elementOP = ec.findObjectProvider(elementToRemove);
ApiAdapter apiAdapter = ec.getApiAdapter(); ObjectProvider childOP = ec.findObjectProvider(child); if (apiAdapter.isNew(child) && (childOP == null ||
ObjectProvider childOP = ec.findObjectProvider(childObj); if (childOP == null) {
ObjectProvider op = ec.findObjectProvider(obj); if (op == null)
if (ownerOP != null) { Object parentPojo = ownerOP.getObject(); ObjectProvider mergeOP = ec.findObjectProvider(parentPojo); if (mergeOP != null) { parentKey = EntityUtils.getPrimaryKeyAsKey(ec.getApiAdapter(), mergeOP);