/** * Method to return the object identity for the passed persistable object. * Returns null if it is not persistable, or has no identity. * @param obj The object * @return The identity */ public Object getIdForObject(Object obj) { if (!isPersistable(obj)) { return null; } // TODO Change this to org.datanucleus.jpa.Persistable when we enhance to that return ((PersistenceCapable)obj).jdoGetObjectId(); }
/** * Method to return the object identity for the passed persistable object. * Returns null if it is not persistable, or has no identity. * @param obj The object * @return The identity */ public Object getIdForObject(Object obj) { if (!isPersistable(obj)) { return null; } // TODO Change this to org.datanucleus.jpa.Persistable when we enhance to that return ((PersistenceCapable)obj).jdoGetObjectId(); }
return ((PersistenceCapable)pc).jdoGetObjectId(); } else { return implHelper.nonBinaryCompatibleGet(pc, getObjectId);
return ((PersistenceCapable)pc).jdoGetObjectId(); } else { return implHelper.nonBinaryCompatibleGet(pc, getObjectId);
/** * Method to evict all current objects from L1 cache. */ public synchronized void evictAll() { assertIsOpen(); // All persistent non-transactional instances should be evicted here, // but we don't support those yet. ArrayList stateManagersToEvict = new ArrayList(); stateManagersToEvict.addAll(cache.values()); // Evict StateManagers and remove objects from cache // Performed in separate loop to avoid ConcurrentModificationException Iterator smIter = stateManagersToEvict.iterator(); while (smIter.hasNext()) { StateManager sm = (StateManager)smIter.next(); PersistenceCapable pc = sm.getObject(); sm.evict(); // Evict from L1 removeObjectFromCache(pc, pc.jdoGetObjectId(), true, false); } }
/** * Accessor for an object id given the object. * @param pc The object * @return The Object id */ public Object getObjectId(Object pc) { assertIsOpen(); if (pc != null && pc instanceof PersistenceCapable) { PersistenceCapable p = (PersistenceCapable) pc; if (p.jdoIsPersistent() || p.jdoIsDetached()) { return p.jdoGetObjectId(); } } return null; }
/** * Method to store an object in a field. * @param fieldNumber Number of the field * @param value The value to use */ public void storeObjectField(int fieldNumber, Object value) { if (value instanceof PersistenceCapable) { PersistenceCapable pc = (PersistenceCapable)value; pc.jdoCopyKeyFieldsFromObjectId(this, pc.jdoGetObjectId()); } else { JavaTypeMapping mapping = javaTypeMappings[mappingNum++]; mapping.setObject(pm, statement, getParamsForField(mapping), value); } } }
@Override public Object merge(Object entity) { if (LOGGER.isDebugEnabled()) { LOGGER.debug("JPA Merge: - entity: " + entity); } if (entity instanceof PersistenceCapable) { 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); }
@Override public Object merge(Object entity) { if (LOGGER.isDebugEnabled()) { LOGGER.debug("JPA Merge: - entity: " + entity); } if (entity instanceof PersistenceCapable) { 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); }
if (level2 && apmf.getJdoCacheLevel2() && pc.jdoGetObjectId() != null ) JPOXLogger.CACHE.debug(LOCALISER.msg("Cache.Level2.RemovingObject", pc.jdoGetObjectId(), String.valueOf(l2Cache.getSize()))); l2Cache.evict(pc.jdoGetObjectId());
/** * Method to retrieve an object (internally). * @param obj The object * @param fgOnly Whether to retrieve the current fetch group fields only */ private void internalRetrieve(Object obj, boolean fgOnly) { if (obj == null) { return; } try { clr.setPrimary(obj.getClass().getClassLoader()); assertPersistenceCapable(obj); assertNotDetached(obj); PersistenceCapable pc = (PersistenceCapable) obj; StateManager sm = findStateManager(pc); if (sm == null) { throw new JDOUserException(LOCALISER.msg("PM.DifferentOwner", pc.jdoGetObjectId())); } sm.retrieve(fgOnly); } finally { clr.unsetPrimary(); } }
if (sm == null) throw new JDOUserException(LOCALISER.msg("PM.DifferentOwner", pc.jdoGetObjectId()));
/** * Method to retrieve an object (internally). * @param obj The object * @param fetchPlan the fetch plan to load fields */ public synchronized void internalRetrieve(Object obj, FetchPlan fetchPlan) { if (obj == null) { return; } try { clr.setPrimary(obj.getClass().getClassLoader()); assertPersistenceCapable(obj); assertNotDetached(obj); PersistenceCapable pc = (PersistenceCapable) obj; StateManager sm = findStateManager(pc); if (sm == null) { throw new JDOUserException(LOCALISER.msg("PM.DifferentOwner", pc.jdoGetObjectId())); } sm.retrieve(fetchPlan); } finally { clr.unsetPrimary(); } }
if (sm == null) throw new JDOUserException(LOCALISER.msg("PM.DifferentOwner", pc.jdoGetObjectId()));
if (pc == null || pc.jdoGetObjectId() == null)
if (pm != null && this.getPMHandle() != pm.getPMHandle()) throw new JDOUserException(LOCALISER.msg("PM.DifferentOwner", pc.jdoGetObjectId()));
PersistenceCapable pcCopy = myPC.jdoNewInstance(this, myPC.jdoGetObjectId());
Object obj = pm.getObjectById(((PersistenceCapable)element).jdoGetObjectId(), true, false, element.getClass().getName()); if (obj != null)
Object obj = pm.getObjectById(((PersistenceCapable)key).jdoGetObjectId(), true, false, key.getClass().getName()); if (obj != null)
if (sm == null) throw new JDOUserException(LOCALISER.msg("PM.DifferentOwner", ((PersistenceCapable) pc).jdoGetObjectId()));