StateManager sm = om.findStateManager(entity); if (sm != null) { if (sm instanceof ForceJPAStateManagerImpl) {
StateManager sm = om.findStateManager(entity); if (sm != null) { if (sm instanceof ForceJPAStateManagerImpl) {
@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); }
public boolean isLoaded(Object entity, String attrName) { OMFContext omfCtx = pmf.getOMFContext(); JDOPersistenceManager pm = (JDOPersistenceManager)omfCtx.getApiAdapter().getPersistenceManager(entity); if (pm == null) { return false; } ObjectManager om = pm.getObjectManager(); StateManager sm = om.findStateManager(entity); if (sm == null) { // Not managed return false; } AbstractClassMetaData cmd = omfCtx.getMetaDataManager().getMetaDataForClass(entity.getClass(), omfCtx.getClassLoaderResolver(entity.getClass().getClassLoader())); if (cmd == null) { // No metadata return false; } return omfCtx.getApiAdapter().isLoaded(sm.getObjectProvider(), cmd.getAbsolutePositionOfMember(attrName)); }
/** * Determine if the Bean Validation provider is allowed to reach the property state * @param traversableObject object hosting <code>traversableProperty</code> or null if <code>validateValue</code> is * called * @param traversableProperty the traversable property. * @param rootBeanType type of the root object passed to the Validator. * @param pathToTraversableObject path from the root object to <code>traversableObject</code> (using the path * specification defined by Bean Validator). * @param elementType either <code>FIELD</code> or <code>METHOD</code>. * @return <code>true</code> if the Bean Validation provider is allowed to reach the property state, * <code>false</code> otherwise. */ public boolean isReachable(Object traversableObject, Path.Node traversableProperty, Class<?> rootBeanType, Path pathToTraversableObject, ElementType elementType) { AbstractClassMetaData acmd = om.getMetaDataManager().getMetaDataForClass(traversableObject.getClass(), om.getClassLoaderResolver()); if (acmd == null) { return false; } int fieldNumber = acmd.getMetaDataForMember(traversableProperty.getName()).getAbsoluteFieldNumber(); boolean loaded = om.getApiAdapter().isLoaded(om.findStateManager(traversableObject).getObjectProvider(), fieldNumber); if (loaded) { return true; } return false; } }
/** * Get the current lock mode for the entity instance. * @param entity The entity in question * @return lock mode * @throws TransactionRequiredException if there is no transaction * @throws IllegalArgumentException if the instance is not a managed entity and a transaction is active */ public LockModeType getLockMode(Object entity) { assertIsActive(); assertEntity(entity); if (om.getApiAdapter().getPersistenceManager(entity) != pm) { throw new IllegalArgumentException(LOCALISER.msg("EM.EntityIsNotManaged", StringUtils.toJVMIDString(entity))); } if (om.getApiAdapter().isDetached(entity)) { throw new IllegalArgumentException(LOCALISER.msg("EM.EntityIsNotManaged", StringUtils.toJVMIDString(entity))); } StateManager sm = om.findStateManager(entity); return getJPALockModeTypeForLockType(sm.getLockMode()); }
StateManager sm = om.findStateManager(pc); if (om.getApiAdapter().isDeleted(pc))
StateManager sm = om.findStateManager(pc); if (om.getApiAdapter().isDeleted(pc))
om.getLockManager().lock(om.findStateManager(entity), getLockTypeForJPALockModeType(lock));