org.apache.cayenne.access
Class ObjectStore

java.lang.Object
  extended by org.apache.cayenne.access.ObjectStore
All Implemented Interfaces:
java.io.Serializable, java.util.EventListener, SnapshotEventListener, GraphChangeHandler, GraphManager
Direct Known Subclasses:
NoSyncObjectStore

public class ObjectStore
extends java.lang.Object
implements java.io.Serializable, SnapshotEventListener, GraphManager

ObjectStore stores objects using their ObjectId as a key. It works as a dedicated object cache for a DataContext. Users rarely need to access ObjectStore directly, as DataContext serves as a facade, providing cover methods for most ObjectStore operations.

Since:
1.0
See Also:
Serialized Form

Field Summary
protected  java.util.Map<java.lang.Object,org.apache.cayenne.access.ObjectDiff> changes
           
protected  DataContext context
          The DataContext that owns this ObjectStore.
protected  DataRowStore dataRowCache
          Stores a reference to the DataRowStore.
protected  boolean dataRowCacheSet
           
protected  java.util.Map<java.lang.Object,Persistent> objectMap
           
 
Constructor Summary
ObjectStore()
          Deprecated. since 3.1
ObjectStore(DataRowStore dataRowCache)
          Deprecated. since 3.1
ObjectStore(DataRowStore dataRowCache, java.util.Map<java.lang.Object,Persistent> objectMap)
          Creates an ObjectStore with DataRowStore and a map to use for storing registered objects.
 
Method Summary
 void arcCreated(java.lang.Object nodeId, java.lang.Object targetNodeId, java.lang.Object arcId)
          Notifies implementing object that a new arc was created between two nodes.
 void arcDeleted(java.lang.Object nodeId, java.lang.Object targetNodeId, java.lang.Object arcId)
          Notifies implementing object that an arc between two nodes was deleted.
 DataRow getCachedSnapshot(ObjectId oid)
          Returns a snapshot for ObjectId from the underlying snapshot cache.
 DataContext getContext()
           
 DataRowStore getDataRowCache()
          Returns a DataRowStore associated with this ObjectStore.
 java.lang.Object getNode(java.lang.Object nodeId)
          Returns a registered DataObject or null of no object exists for the ObjectId.
 java.util.Iterator getObjectIterator()
          Returns an iterator over the registered objects.
 DataRow getSnapshot(ObjectId oid)
          Returns a snapshot for ObjectId from the underlying snapshot cache.
 boolean hasChanges()
          Returns true if there are any modified, deleted or new objects registered with this ObjectStore, false otherwise.
 void nodeCreated(java.lang.Object nodeId)
          Notifies implementing object that a new node was created in the graph.
 void nodeIdChanged(java.lang.Object nodeId, java.lang.Object newId)
          Does nothing.
 void nodePropertyChanged(java.lang.Object nodeId, java.lang.String property, java.lang.Object oldValue, java.lang.Object newValue)
          Records dirty object snapshot.
 void nodeRemoved(java.lang.Object nodeId)
          Notifies implementing object that a node was removed from the graph.
 java.util.List<Persistent> objectsInState(int state)
          Return a subset of registered objects that are in a certain persistence state.
 void objectsRolledBack()
          Reverts changes to all stored uncomitted objects.
 void objectsUnregistered(java.util.Collection objects)
          Evicts a collection of DataObjects from the ObjectStore, invalidates the underlying cache snapshots.
 java.util.Collection<java.lang.Object> registeredNodes()
          Returns all registered DataObjects.
 int registeredObjectsCount()
          Returns a number of objects currently registered with this ObjectStore.
 void registerNode(java.lang.Object nodeId, java.lang.Object nodeObject)
          "Registers" a graph node, usually storing the node in some internal map using its id as a key.
 void setContext(DataContext context)
           
 void setDataRowCache(DataRowStore dataRowCache)
          Sets parent DataRowStore.
 void snapshotsChanged(SnapshotEvent event)
          SnapshotEventListener implementation that processes snapshot change event, updating DataObjects that have the changes.
 java.lang.Object unregisterNode(java.lang.Object nodeId)
          "Unregisters" a graph node, forgetting any information associated with nodeId.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

objectMap

protected java.util.Map<java.lang.Object,Persistent> objectMap

changes

protected java.util.Map<java.lang.Object,org.apache.cayenne.access.ObjectDiff> changes

dataRowCache

protected transient DataRowStore dataRowCache
Stores a reference to the DataRowStore.

Serialization note: It is up to the owner of this ObjectStore to initialize DataRowStore after deserialization of this object. ObjectStore will not know how to restore the DataRowStore by itself.


dataRowCacheSet

protected boolean dataRowCacheSet

context

protected DataContext context
The DataContext that owns this ObjectStore.

Constructor Detail

ObjectStore

@Deprecated
public ObjectStore()
Deprecated. since 3.1


ObjectStore

@Deprecated
public ObjectStore(DataRowStore dataRowCache)
Deprecated. since 3.1


ObjectStore

public ObjectStore(DataRowStore dataRowCache,
                   java.util.Map<java.lang.Object,Persistent> objectMap)
Creates an ObjectStore with DataRowStore and a map to use for storing registered objects. Passed map doesn't require any special synchronization behavior, as ObjectStore is synchronized itself.

Since:
3.0
Method Detail

registeredObjectsCount

public int registeredObjectsCount()
Returns a number of objects currently registered with this ObjectStore.

Since:
1.2

getDataRowCache

public DataRowStore getDataRowCache()
Returns a DataRowStore associated with this ObjectStore.


setDataRowCache

public void setDataRowCache(DataRowStore dataRowCache)
Sets parent DataRowStore. Registers to receive SnapshotEvents if the cache is configured to allow ObjectStores to receive such events.


objectsUnregistered

public void objectsUnregistered(java.util.Collection objects)
Evicts a collection of DataObjects from the ObjectStore, invalidates the underlying cache snapshots. Changes objects state to TRANSIENT. This method can be used for manual cleanup of Cayenne cache.


objectsRolledBack

public void objectsRolledBack()
Reverts changes to all stored uncomitted objects.

Since:
1.1

getCachedSnapshot

public DataRow getCachedSnapshot(ObjectId oid)
Returns a snapshot for ObjectId from the underlying snapshot cache. If cache contains no snapshot, a null is returned.

Since:
1.1

getSnapshot

public DataRow getSnapshot(ObjectId oid)
Returns a snapshot for ObjectId from the underlying snapshot cache. If cache contains no snapshot, it will attempt fetching it using provided QueryEngine. If fetch attempt fails or inconsistent data is returned, underlying cache will throw a CayenneRuntimeException.

Since:
1.2

getObjectIterator

public java.util.Iterator getObjectIterator()
Returns an iterator over the registered objects.


hasChanges

public boolean hasChanges()
Returns true if there are any modified, deleted or new objects registered with this ObjectStore, false otherwise. This method will treat "phantom" modifications are real ones. I.e. if you "change" an object property to an equivalent value, this method will still think such object is modified. Phantom modifications are only detected and discarded during commit.


objectsInState

public java.util.List<Persistent> objectsInState(int state)
Return a subset of registered objects that are in a certain persistence state. Collection is returned by copy.


snapshotsChanged

public void snapshotsChanged(SnapshotEvent event)
SnapshotEventListener implementation that processes snapshot change event, updating DataObjects that have the changes.

Implementation note: This method should not attempt to alter the underlying DataRowStore, since it is normally invoked *AFTER* the DataRowStore was modified as a result of some external interaction.

Specified by:
snapshotsChanged in interface SnapshotEventListener
Since:
1.1

getContext

public DataContext getContext()
Since:
1.2

setContext

public void setContext(DataContext context)
Since:
1.2

getNode

public java.lang.Object getNode(java.lang.Object nodeId)
Returns a registered DataObject or null of no object exists for the ObjectId.

Specified by:
getNode in interface GraphManager
Since:
1.2

registeredNodes

public java.util.Collection<java.lang.Object> registeredNodes()
Returns all registered DataObjects. List is returned by copy and can be modified by the caller.

Specified by:
registeredNodes in interface GraphManager
Since:
1.2

registerNode

public void registerNode(java.lang.Object nodeId,
                         java.lang.Object nodeObject)
Description copied from interface: GraphManager
"Registers" a graph node, usually storing the node in some internal map using its id as a key.

Specified by:
registerNode in interface GraphManager
Since:
1.2

unregisterNode

public java.lang.Object unregisterNode(java.lang.Object nodeId)
Description copied from interface: GraphManager
"Unregisters" a graph node, forgetting any information associated with nodeId.

Specified by:
unregisterNode in interface GraphManager
Since:
1.2

nodeIdChanged

public void nodeIdChanged(java.lang.Object nodeId,
                          java.lang.Object newId)
Does nothing.

Specified by:
nodeIdChanged in interface GraphChangeHandler
Since:
1.2

nodeCreated

public void nodeCreated(java.lang.Object nodeId)
Description copied from interface: GraphChangeHandler
Notifies implementing object that a new node was created in the graph.

Specified by:
nodeCreated in interface GraphChangeHandler
Since:
1.2

nodeRemoved

public void nodeRemoved(java.lang.Object nodeId)
Description copied from interface: GraphChangeHandler
Notifies implementing object that a node was removed from the graph.

Specified by:
nodeRemoved in interface GraphChangeHandler
Since:
1.2

nodePropertyChanged

public void nodePropertyChanged(java.lang.Object nodeId,
                                java.lang.String property,
                                java.lang.Object oldValue,
                                java.lang.Object newValue)
Records dirty object snapshot.

Specified by:
nodePropertyChanged in interface GraphChangeHandler
Since:
1.2

arcCreated

public void arcCreated(java.lang.Object nodeId,
                       java.lang.Object targetNodeId,
                       java.lang.Object arcId)
Description copied from interface: GraphChangeHandler
Notifies implementing object that a new arc was created between two nodes.

Specified by:
arcCreated in interface GraphChangeHandler
Since:
1.2

arcDeleted

public void arcDeleted(java.lang.Object nodeId,
                       java.lang.Object targetNodeId,
                       java.lang.Object arcId)
Description copied from interface: GraphChangeHandler
Notifies implementing object that an arc between two nodes was deleted.

Specified by:
arcDeleted in interface GraphChangeHandler
Since:
1.2


Copyright © 2001-2012 Apache Cayenne. All Rights Reserved.