public class EntityManagerImpl extends java.lang.Object implements EntityManager
| Modifier and Type | Class and Description |
|---|---|
class |
EntityManagerImpl.DefaultTrackingHandler |
EntityManager.Function, EntityManager.Propagation, EntityManager.PropagationPolicy, EntityManager.Update, EntityManager.UpdateKind| Constructor and Description |
|---|
EntityManagerImpl(java.lang.String id,
DataManager dataManager) |
| Modifier and Type | Method and Description |
|---|---|
void |
acceptConflict(Conflict conflict,
boolean client)
Accept values for conflict
|
void |
addListener(DataConflictListener listener)
Register a listener for data conflicts
|
void |
addReference(java.lang.Object obj,
java.lang.Object parent,
java.lang.String propName)
Register a reference to the provided object with either a parent or res
|
void |
attach(java.lang.Object object)
Attach an entity graph in the current entity manager
|
void |
attachEntity(java.lang.Object entity)
Attach an entity to this context
|
void |
attachEntity(java.lang.Object entity,
boolean putInCache)
Attach an entity to this context
|
void |
clear()
Clear the current context
Destroys all components/context variables
|
void |
clearCache()
Clears entity cache
|
void |
defaultMerge(MergeContext mergeContext,
java.lang.Object obj,
java.lang.Object dest,
java.lang.Object parent,
java.lang.String propertyName)
Default implementation of entity merge for simple ActionScript beans with public properties
Can be used to implement Tide managed entities with simple objects
|
void |
detach(java.lang.Object object,
java.util.IdentityHashMap<java.lang.Object,java.lang.Object> cache,
boolean forceRemove)
Internal implementation of object detach
|
void |
detachEntity(java.lang.Object entity,
boolean removeFromCache,
boolean forceRemove)
Detach an entity from this context
|
java.lang.Object |
getCachedObject(java.lang.Object object,
boolean nullIfAbsent)
Retrieve an entity in the cache from its uid
|
DataManager |
getDataManager()
Data manager for this entity manager
|
java.lang.String |
getId()
Return the entity manager id
|
java.util.List<java.lang.Object[]> |
getOwnerEntities(java.lang.Object object)
Retrieve the owner entity of the provided object (collection/map/entity)
|
java.lang.Object[] |
getOwnerEntity(java.lang.Object object)
Retrieve the owner entity of the provided object (collection/map/entity)
|
java.util.Map<java.lang.Object,java.util.Map<java.lang.String,java.lang.Object>> |
getSavedProperties()
Current map of saved properties for the the context
|
java.util.Map<java.lang.String,java.lang.Object> |
getSavedProperties(java.lang.Object entity)
Current map of saved properties for the specified entity
|
DataManager.TrackingHandler |
getTrackingHandler()
Tracking handler for this entity manager
|
void |
handleMergeConflicts(MergeContext mergeContext)
Dispatch an event when last merge generated conflicts
|
void |
handleRemovalsAndPersists(MergeContext mergeContext,
java.util.List<java.lang.Object> removals,
java.util.List<java.lang.Object> persists)
Remove elements from cache and managed collections
|
void |
handleUpdates(MergeContext mergeContext,
java.lang.String sourceSessionId,
java.util.List<EntityManager.Update> updates)
Handle data updates
|
boolean |
initializeObject(ServerSession serverSession,
java.lang.Object entity,
java.lang.String propertyName,
java.lang.Object object)
Trigger remote initialization of lazy-loaded objects
|
MergeContext |
initMerge(ServerSession serverSession)
Initialize the merge context in the current thread
MergeContext should be released at the end of the process
|
java.lang.Object |
internalMergeExternalData(MergeContext mergeContext,
java.lang.Object obj,
java.lang.Object prev,
java.util.List<java.lang.Object> removals,
java.util.List<java.lang.Object> persists)
Merge an object coming from a remote location (in general from a service) in the local context
|
boolean |
isActive()
Return the entity manager state
|
boolean |
isDeepDirtyEntity(java.lang.Object entity)
Entity is deep dirty when any element in its object graph has been modified
|
boolean |
isDirty()
Entity manager is dirty when any entity/collection/map has been modified
|
boolean |
isDirtyEntity(java.lang.Object entity)
Entity is dirty when any direct property has been modified
|
boolean |
isEntityChanged(java.lang.Object entity) |
boolean |
isEntityDeepChanged(java.lang.Object entity) |
boolean |
isPersisted(java.lang.Object entity)
Indicates if the entity is persisted on the server (id/version not null/NaN)
|
boolean |
isSavedEntity(java.lang.Object entity) |
static boolean |
isSimple(java.lang.Object object) |
boolean |
isUninitializeAllowed()
Allow uninitialize of persistent collections ?
|
java.lang.Object |
mergeExternal(MergeContext mergeContext,
java.lang.Object obj,
java.lang.Object previous,
java.lang.Object parent,
java.lang.String propertyName,
boolean forceUpdate)
Merge an object coming from the server in the context
|
java.lang.Object |
mergeExternalData(java.lang.Object obj)
Merge an object coming from a remote location (in general from a service) in the local context
|
java.lang.Object |
mergeExternalData(java.lang.Object obj,
java.lang.Object prev,
java.lang.String externalDataSessionId,
java.util.List<java.lang.Object> removals,
java.util.List<java.lang.Object> persists)
Merge an object coming from a remote location (in general from a service) in the local context
|
java.lang.Object |
mergeExternalData(ServerSession serverSession,
java.lang.Object obj)
Merge an object coming from a remote location (in general from a service) in the local context
|
java.lang.Object |
mergeExternalData(ServerSession serverSession,
java.lang.Object obj,
java.lang.Object prev,
java.lang.String externalDataSessionId,
java.util.List<java.lang.Object> removals,
java.util.List<java.lang.Object> persists)
Merge an object coming from a remote location (in general from a service) in the local context
|
java.lang.Object |
mergeFromEntityManager(EntityManager sourceEntityManager,
ServerSession serverSession,
java.lang.Object obj,
java.lang.String externalDataSessionId,
boolean uninitializing)
Merge an object coming from another entity manager (in general in the global context) in the local context
|
void |
mergeInEntityManager(EntityManager entityManager,
ServerSession serverSession)
Merge conversation entity manager context variables in global entity manager
Only applicable to conversation contexts
|
protected java.lang.Object |
mergePersistentCollection(MergeContext mergeContext,
org.granite.client.persistence.collection.PersistentCollection<?> coll,
java.lang.Object previous,
java.lang.Object parent,
java.lang.String propertyName)
Wraps a persistent collection to manage lazy initialization
|
EntityManager |
newTemporaryEntityManager()
Create a new temporary entity manager
|
void |
raiseUpdateEvents(Context context,
java.util.List<EntityManager.Update> updates)
Dispatch update events on the context
|
void |
removeListener(DataConflictListener listener)
Unregister a listener for data conflicts
|
boolean |
removeReference(java.lang.Object obj,
java.lang.Object parent,
java.lang.String propName)
Remove a reference on the provided object
|
void |
resetAllEntities()
Discard changes of all cached entities from last version received from the server
|
void |
resetEntity(java.lang.Object entity)
Discard changes of entity from last version received from the server
|
void |
resolveMergeConflicts(MergeContext mergeContext,
java.lang.Object modifiedEntity,
java.lang.Object localEntity,
boolean resolving)
Resolve merge conflicts
|
void |
setActive(boolean active)
Setter for active flag
When EntityManager is not active, dirty checking is disabled
|
void |
setCustomMergers(DataMerger[] customMergers)
Setter for the array of custom mergers
|
void |
setDirtyCheckContext(DirtyCheckContext dirtyCheckContext)
Setter for dirty check context implementation
|
void |
setEntityManagerPropagation(EntityManager.Propagation propagation)
Setter for the propagation manager
|
void |
setRemoteInitializer(RemoteInitializer remoteInitializer)
Setter for the remote initializer implementation
|
void |
setRemoteValidator(RemoteValidator remoteValidator)
Setter for the remote validator implementation
|
void |
setUninitializeAllowed(boolean uninitializeAllowed)
Allow uninitialize of persistent collections
|
boolean |
validateObject(java.lang.Object object,
java.lang.String property,
java.lang.Object value)
Trigger remote validation of objects
|
public EntityManagerImpl(java.lang.String id,
DataManager dataManager)
public java.lang.String getId()
getId in interface EntityManagerpublic boolean isActive()
isActive in interface EntityManagerpublic void clear()
clear in interface EntityManagerpublic void clearCache()
clearCache in interface EntityManagerpublic DataManager getDataManager()
EntityManagergetDataManager in interface EntityManagerpublic DataManager.TrackingHandler getTrackingHandler()
EntityManagergetTrackingHandler in interface EntityManagerpublic void setCustomMergers(DataMerger[] customMergers)
customMergers - array of mergerspublic void setUninitializeAllowed(boolean uninitializeAllowed)
EntityManagersetUninitializeAllowed in interface EntityManageruninitializeAllowed - allow uninitialize of collectionspublic boolean isUninitializeAllowed()
EntityManagerisUninitializeAllowed in interface EntityManagerpublic void setEntityManagerPropagation(EntityManager.Propagation propagation)
setEntityManagerPropagation in interface EntityManagerpropagation - propagation function that will visit child entity managerspublic void setActive(boolean active)
active - statepublic void setDirtyCheckContext(DirtyCheckContext dirtyCheckContext)
dirtyCheckContext - dirty check context implementationpublic EntityManager newTemporaryEntityManager()
newTemporaryEntityManager in interface EntityManagerpublic void attachEntity(java.lang.Object entity)
entity - an entitypublic void attachEntity(java.lang.Object entity,
boolean putInCache)
entity - an entityputInCache - put entity in cachepublic void detachEntity(java.lang.Object entity,
boolean removeFromCache,
boolean forceRemove)
entity - an entityremoveFromCache - remove entity from cacheforceRemove - remove even if persistentpublic void attach(java.lang.Object object)
EntityManagerattach in interface EntityManagerpublic static boolean isSimple(java.lang.Object object)
public boolean isPersisted(java.lang.Object entity)
isPersisted in interface EntityManagerentity - an entitypublic void detach(java.lang.Object object,
java.util.IdentityHashMap<java.lang.Object,java.lang.Object> cache,
boolean forceRemove)
object - objectcache - internal cache to avoid graph loopsforceRemove - force removal even if persistedpublic java.lang.Object getCachedObject(java.lang.Object object,
boolean nullIfAbsent)
getCachedObject in interface EntityManagerobject - an entitynullIfAbsent - return null if entity not cached in contextpublic java.lang.Object[] getOwnerEntity(java.lang.Object object)
getOwnerEntity in interface EntityManagerobject - an entitypublic java.util.List<java.lang.Object[]> getOwnerEntities(java.lang.Object object)
object - an entitypublic void addReference(java.lang.Object obj,
java.lang.Object parent,
java.lang.String propName)
addReference in interface EntityManagerobj - an entityparent - the parent entitypropName - name of the parent entity property that references the entitypublic boolean removeReference(java.lang.Object obj,
java.lang.Object parent,
java.lang.String propName)
removeReference in interface EntityManagerobj - an entityparent - the parent entity to dereferencepropName - name of the parent entity property that references the entitypublic MergeContext initMerge(ServerSession serverSession)
EntityManagerinitMerge in interface EntityManagerpublic java.lang.Object mergeExternal(MergeContext mergeContext, java.lang.Object obj, java.lang.Object previous, java.lang.Object parent, java.lang.String propertyName, boolean forceUpdate)
mergeExternal in interface EntityManagermergeContext - current merge contextobj - external objectprevious - previously existing object in the context (null if no existing object)parent - parent object for collectionspropertyName - property name of the current object in the parent objectforceUpdate - force update of property (used for externalized properties)protected java.lang.Object mergePersistentCollection(MergeContext mergeContext, org.granite.client.persistence.collection.PersistentCollection<?> coll, java.lang.Object previous, java.lang.Object parent, java.lang.String propertyName)
mergeContext - current merge contextcoll - the collection to wrapprevious - the previous existing collectionparent - the owner objectpropertyName - owner propertypublic java.lang.Object mergeFromEntityManager(EntityManager sourceEntityManager, ServerSession serverSession, java.lang.Object obj, java.lang.String externalDataSessionId, boolean uninitializing)
mergeFromEntityManager in interface EntityManagersourceEntityManager - source context of incoming dataserverSession - current server sessionobj - external objectexternalDataSessionId - is merge from external datauninitializing - true to force folding of loaded lazy associationspublic java.lang.Object mergeExternalData(java.lang.Object obj)
mergeExternalData in interface EntityManagerobj - external objectpublic java.lang.Object mergeExternalData(ServerSession serverSession, java.lang.Object obj)
EntityManagermergeExternalData in interface EntityManagerserverSession - the current server sessionobj - external objectpublic java.lang.Object mergeExternalData(java.lang.Object obj,
java.lang.Object prev,
java.lang.String externalDataSessionId,
java.util.List<java.lang.Object> removals,
java.util.List<java.lang.Object> persists)
EntityManagermergeExternalData in interface EntityManagerobj - external objectprev - existing local object to merge withexternalDataSessionId - sessionId from which the data is coming (other user/server), null if local or current user sessionremovals - list of entities to remove from the entity manager cachepersists - list of entities newly persisted to be added in the entity manager cachepublic java.lang.Object mergeExternalData(ServerSession serverSession, java.lang.Object obj, java.lang.Object prev, java.lang.String externalDataSessionId, java.util.List<java.lang.Object> removals, java.util.List<java.lang.Object> persists)
mergeExternalData in interface EntityManagerserverSession - server sessionobj - external objectprev - existing local object to merge withexternalDataSessionId - sessionId from which the data is coming (other user/server), null if local or current user sessionremovals - list of entities to remove from the entity manager cachepersists - list of newly persisted entitiespublic java.lang.Object internalMergeExternalData(MergeContext mergeContext, java.lang.Object obj, java.lang.Object prev, java.util.List<java.lang.Object> removals, java.util.List<java.lang.Object> persists)
mergeContext - current merge contextobj - external objectprev - existing local object to merge withremovals - array of entities to remove from the entity manager cachepersists - list of newly persisted entitiespublic void mergeInEntityManager(EntityManager entityManager, ServerSession serverSession)
mergeInEntityManager in interface EntityManagerentityManager - conversation entity managerserverSession - current server sessionpublic boolean isDirty()
EntityManagerisDirty in interface EntityManagerpublic boolean isDirtyEntity(java.lang.Object entity)
EntityManagerisDirtyEntity in interface EntityManagerpublic boolean isDeepDirtyEntity(java.lang.Object entity)
EntityManagerisDeepDirtyEntity in interface EntityManagerentity - root of the entity graphpublic boolean isSavedEntity(java.lang.Object entity)
public void handleRemovalsAndPersists(MergeContext mergeContext, java.util.List<java.lang.Object> removals, java.util.List<java.lang.Object> persists)
mergeContext - current merge contextremovals - list of entity instances to remove from the entity manager cachepersists - list of newly persisted entity instancespublic void addListener(DataConflictListener listener)
EntityManageraddListener in interface EntityManagerlistener - listenerpublic void removeListener(DataConflictListener listener)
EntityManagerremoveListener in interface EntityManagerlistener - listenerpublic void handleMergeConflicts(MergeContext mergeContext)
mergeContext - current merge contextpublic void resolveMergeConflicts(MergeContext mergeContext, java.lang.Object modifiedEntity, java.lang.Object localEntity, boolean resolving)
mergeContext - current merge contextmodifiedEntity - the received entitylocalEntity - the locally cached entityresolving - true to keep client statepublic java.util.Map<java.lang.Object,java.util.Map<java.lang.String,java.lang.Object>> getSavedProperties()
getSavedProperties in interface EntityManagerpublic java.util.Map<java.lang.String,java.lang.Object> getSavedProperties(java.lang.Object entity)
getSavedProperties in interface EntityManagerentity - an entitypublic void defaultMerge(MergeContext mergeContext, java.lang.Object obj, java.lang.Object dest, java.lang.Object parent, java.lang.String propertyName)
mergeContext - current merge contextobj - source objectdest - destination objectparent - owning objectpropertyName - property name of the owning objectpublic boolean isEntityChanged(java.lang.Object entity)
public boolean isEntityDeepChanged(java.lang.Object entity)
public void resetEntity(java.lang.Object entity)
resetEntity in interface EntityManagerentity - entity to restorepublic void resetAllEntities()
resetAllEntities in interface EntityManagerpublic void acceptConflict(Conflict conflict, boolean client)
acceptConflict in interface EntityManagerconflict - conflictclient - true: keep client changes, false: override with server changespublic void setRemoteInitializer(RemoteInitializer remoteInitializer)
EntityManagersetRemoteInitializer in interface EntityManagerremoteInitializer - instance of IRemoteInitializerpublic boolean initializeObject(ServerSession serverSession, java.lang.Object entity, java.lang.String propertyName, java.lang.Object object)
initializeObject in interface EntityManagerserverSession - current server sessionentity - owner entitypropertyName - property nameobject - a lazily loaded objectpublic void handleUpdates(MergeContext mergeContext, java.lang.String sourceSessionId, java.util.List<EntityManager.Update> updates)
handleUpdates in interface EntityManagermergeContext - current merge contextsourceSessionId - sessionId from which data updates come (null when from current session)updates - list of data updatespublic void raiseUpdateEvents(Context context, java.util.List<EntityManager.Update> updates)
EntityManagerraiseUpdateEvents in interface EntityManagercontext - tide contextupdates - list of data updatespublic void setRemoteValidator(RemoteValidator remoteValidator)
EntityManagersetRemoteValidator in interface EntityManagerremoteValidator - instance of IRemoteValidatorpublic boolean validateObject(java.lang.Object object,
java.lang.String property,
java.lang.Object value)
EntityManagervalidateObject in interface EntityManagerobject - an object to remotely validateproperty - a property to validatevalue - value to check