|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.cayenne.BaseContext
public abstract class BaseContext
A common base superclass for Cayenne ObjectContext implementors.
| Field Summary | |
|---|---|
protected DataChannel |
channel
|
protected EntityResolver |
entityResolver
|
protected ObjectContextGraphAction |
graphAction
Graph action that handles property changes |
protected QueryCache |
queryCache
|
protected static java.lang.ThreadLocal<ObjectContext> |
threadObjectContext
A holder of a ObjectContext bound to the current thread. |
protected java.util.Map<java.lang.String,java.lang.Object> |
userProperties
Stores user defined properties associated with this DataContext. |
| Fields inherited from interface org.apache.cayenne.DataChannel |
|---|
FLUSH_CASCADE_SYNC, FLUSH_NOCASCADE_SYNC, GRAPH_CHANGED_SUBJECT, GRAPH_FLUSHED_SUBJECT, GRAPH_ROLLEDBACK_SUBJECT, ROLLBACK_CASCADE_SYNC |
| Constructor Summary | |
|---|---|
protected |
BaseContext()
|
| Method Summary | ||
|---|---|---|
protected void |
attachToChannel(DataChannel channel)
Attaches to a provided DataChannel. |
|
protected void |
attachToRuntime(Injector injector)
Attaches this context to the CayenneRuntime whose Injector is passed as an argument to this method. |
|
protected boolean |
attachToRuntimeIfNeeded()
Checks whether this context is attached to Cayenne runtime stack and if not, attempts to attach itself to the runtime using Injector returned from the call to CayenneRuntime.getThreadInjector(). |
|
static void |
bindThreadObjectContext(ObjectContext context)
Binds a ObjectContext to the current thread. |
|
abstract void |
commitChanges()
Flushes all changes to objects in this context to the parent DataChannel, cascading flush operation all the way through the stack, ultimately saving data in the database. |
|
abstract void |
commitChangesToParent()
Flushes all changes to objects in this context to the parent DataChannel. |
|
abstract java.util.Collection<?> |
deletedObjects()
Returns a collection of objects that are registered with this ObjectContext and have a state PersistenceState.DELETED |
|
void |
deleteObject(java.lang.Object object)
Deprecated. since 3.1 use deleteObjects(Object...) method instead. This
method is redundant. |
|
void |
deleteObjects(java.util.Collection<?> objects)
Schedules deletion of a collection of persistent objects. |
|
|
deleteObjects(T... objects)
Schedules deletion of one or more persistent objects. |
|
protected void |
fireDataChannelChanged(java.lang.Object postedBy,
GraphDiff changes)
|
|
protected void |
fireDataChannelCommitted(java.lang.Object postedBy,
GraphDiff changes)
|
|
protected void |
fireDataChannelRolledback(java.lang.Object postedBy,
GraphDiff changes)
|
|
DataChannel |
getChannel()
Returns an DataChannel used by this context. |
|
EntityResolver |
getEntityResolver()
Returns EntityResolver that stores all mapping information accessible by this ObjectContext. |
|
EventManager |
getEventManager()
Returns EventManager associated with the ObjectStore. |
|
abstract GraphManager |
getGraphManager()
Returns GraphManager that manages object graph associated with this context. |
|
QueryCache |
getQueryCache()
|
|
static ObjectContext |
getThreadObjectContext()
Returns the ObjectContext bound to the current thread. |
|
protected java.util.Map<java.lang.String,java.lang.Object> |
getUserProperties()
Returns a map of user-defined properties associated with this DataContext. |
|
java.lang.Object |
getUserProperty(java.lang.String key)
Returns a user-defined property previously set via 'setUserProperty'. |
|
protected void |
injectInitialValue(java.lang.Object obj)
If ObjEntity qualifier is set, asks it to inject initial value to an object. |
|
void |
invalidateObjects(java.util.Collection<?> objects)
Invalidates a Collection of persistent objects. |
|
|
invalidateObjects(T... objects)
Invalidates one or more persistent objects. |
|
abstract Persistent |
localObject(ObjectId id,
java.lang.Object prototype)
Deprecated. since 3.1 Cayenne users should use localObject(Object); the
internal code has been refactored to avoid using this method all
together. |
|
|
localObject(T objectFromAnotherContext)
Returns a copy of 'objectFromAnotherContext' object that is registered in this context, creating and registering a local hollow object if needed. |
|
abstract java.util.Collection<?> |
modifiedObjects()
Returns a collection of objects that are registered with this ObjectContext and have a state PersistenceState.MODIFIED |
|
abstract
|
newObject(java.lang.Class<T> persistentClass)
Creates a new persistent object of a given class scheduled to be inserted to the database on next commit. |
|
abstract java.util.Collection<?> |
newObjects()
Returns a collection of objects that are registered with this ObjectContext and have a state PersistenceState.NEW |
|
protected abstract GraphDiff |
onContextFlush(ObjectContext originatingContext,
GraphDiff changes,
boolean cascade)
|
|
GraphDiff |
onSync(ObjectContext originatingContext,
GraphDiff changes,
int syncType)
Processes synchronization request from a child ObjectContext, returning a GraphDiff that describes changes to objects made on the receiving end as a result of syncronization. |
|
abstract QueryResponse |
performGenericQuery(Query query)
Executes any kind of query providing the result in a form of QueryResponse. |
|
abstract java.util.List |
performQuery(Query query)
Executes a selecting query, returning a list of persistent objects or data rows. |
|
void |
prepareForAccess(Persistent object,
java.lang.String property,
boolean lazyFaulting)
A callback method that child Persistent objects are expected to call before accessing property values. |
|
void |
propertyChanged(Persistent object,
java.lang.String property,
java.lang.Object oldValue,
java.lang.Object newValue)
A callback method that child Persistent objects are expected to call from inside the setter after modifying a value of a persistent property, including "simple" and "arc" properties. |
|
abstract void |
registerNewObject(java.lang.Object object)
Registers a transient object with the context. |
|
abstract void |
rollbackChanges()
Resets all uncommitted changes made to the objects in this ObjectContext, cascading rollback operation all the way through the stack. |
|
abstract void |
rollbackChangesLocally()
Resets all uncommitted changes made to the objects in this ObjectContext. |
|
void |
setChannel(DataChannel channel)
Sets a new DataChannel for this context. |
|
void |
setEntityResolver(EntityResolver entityResolver)
|
|
void |
setQueryCache(QueryCache queryCache)
Sets a QueryCache to be used for storing cached query results. |
|
void |
setUserProperty(java.lang.String key,
java.lang.Object value)
Sets a user-defined property. |
|
abstract java.util.Collection<?> |
uncommittedObjects()
Returns a collection of MODIFIED, DELETED or NEW objects. |
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Methods inherited from interface org.apache.cayenne.ObjectContext |
|---|
createChildContext, hasChanges |
| Methods inherited from interface org.apache.cayenne.DataChannel |
|---|
onQuery |
| Field Detail |
|---|
protected static final java.lang.ThreadLocal<ObjectContext> threadObjectContext
protected transient DataChannel channel
protected transient QueryCache queryCache
protected transient EntityResolver entityResolver
protected ObjectContextGraphAction graphAction
protected volatile java.util.Map<java.lang.String,java.lang.Object> userProperties
| Constructor Detail |
|---|
protected BaseContext()
| Method Detail |
|---|
public static ObjectContext getThreadObjectContext()
throws java.lang.IllegalStateException
java.lang.IllegalStateException - if there is no ObjectContext bound to the current
thread.public static void bindThreadObjectContext(ObjectContext context)
getThreadObjectContext().
Using null parameter will unbind currently bound ObjectContext.
protected boolean attachToRuntimeIfNeeded()
CayenneRuntime.getThreadInjector(). If thread Injector is not available and
the context is not attached, throws CayenneRuntimeException.
This method is called internally by the context before access to transient variables to allow the context to attach to the stack lazily following deserialization.
protected void attachToRuntime(Injector injector)
protected void attachToChannel(DataChannel channel)
public abstract void commitChanges()
ObjectContext
commitChanges in interface ObjectContextpublic abstract void commitChangesToParent()
ObjectContextObjectContext.commitChanges(), but no cascading flush occurs.
commitChangesToParent in interface ObjectContextpublic abstract java.util.Collection<?> deletedObjects()
ObjectContext
deletedObjects in interface ObjectContextpublic DataChannel getChannel()
ObjectContext
getChannel in interface ObjectContextpublic void setChannel(DataChannel channel)
public EntityResolver getEntityResolver()
ObjectContext
getEntityResolver in interface DataChannelgetEntityResolver in interface ObjectContextpublic void setEntityResolver(EntityResolver entityResolver)
public <T> T localObject(T objectFromAnotherContext)
ObjectContext
localObject in interface ObjectContextpublic abstract GraphManager getGraphManager()
ObjectContext
getGraphManager in interface ObjectContext
public abstract Persistent localObject(ObjectId id,
java.lang.Object prototype)
localObject(Object); the
internal code has been refactored to avoid using this method all
together.
ObjectContextprototype is not null, local object is refreshed with the prototype
values.
This method can do both "mapping" (i.e. finding an object with the same id in this context) and "synchronization" (i.e. updating the state of the found object with the state of the prototype object).
localObject in interface ObjectContextpublic abstract java.util.Collection<?> modifiedObjects()
ObjectContext
modifiedObjects in interface ObjectContextpublic abstract <T> T newObject(java.lang.Class<T> persistentClass)
ObjectContext
newObject in interface ObjectContextpublic abstract void registerNewObject(java.lang.Object object)
ObjectContextObjectContext.newObject(Class) is that a user creates an object herself, before
attaching it to the context, instead of relying on Cayenne to do that.
registerNewObject in interface ObjectContextobject - new object that needs to be made persistent.public abstract java.util.Collection<?> newObjects()
ObjectContext
newObjects in interface ObjectContextpublic abstract QueryResponse performGenericQuery(Query query)
ObjectContext
performGenericQuery in interface ObjectContextpublic abstract java.util.List performQuery(Query query)
ObjectContext
performQuery in interface ObjectContext
public void prepareForAccess(Persistent object,
java.lang.String property,
boolean lazyFaulting)
ObjectContext
prepareForAccess in interface ObjectContext
public void propertyChanged(Persistent object,
java.lang.String property,
java.lang.Object oldValue,
java.lang.Object newValue)
ObjectContext
propertyChanged in interface ObjectContextpublic abstract void rollbackChanges()
ObjectContext
rollbackChanges in interface ObjectContextpublic abstract void rollbackChangesLocally()
ObjectContextObjectContext.rollbackChanges()(), but rollback is local to this context and no
cascading changes undoing occurs.
rollbackChangesLocally in interface ObjectContextpublic abstract java.util.Collection<?> uncommittedObjects()
ObjectContext
uncommittedObjects in interface ObjectContextpublic QueryCache getQueryCache()
public void setQueryCache(QueryCache queryCache)
public EventManager getEventManager()
getEventManager in interface DataChannel
public GraphDiff onSync(ObjectContext originatingContext,
GraphDiff changes,
int syncType)
DataChannel
onSync in interface DataChanneloriginatingContext - an ObjectContext that initiated the sync. Can be null.changes - diff from the context that initiated the sync.syncType - One of DataChannel.FLUSH_NOCASCADE_SYNC, DataChannel.FLUSH_CASCADE_SYNC,
DataChannel.ROLLBACK_CASCADE_SYNC.
protected abstract GraphDiff onContextFlush(ObjectContext originatingContext,
GraphDiff changes,
boolean cascade)
protected void fireDataChannelCommitted(java.lang.Object postedBy,
GraphDiff changes)
protected void fireDataChannelRolledback(java.lang.Object postedBy,
GraphDiff changes)
protected void fireDataChannelChanged(java.lang.Object postedBy,
GraphDiff changes)
public void invalidateObjects(java.util.Collection<?> objects)
ObjectContext
invalidateObjects in interface ObjectContextpublic <T> void invalidateObjects(T... objects)
ObjectContextObjectContext.invalidateObjects(Collection) only with a vararg argument list for easier
invalidation of individual objects. If no arguments are passed to this method, it
does nothing.
invalidateObjects in interface ObjectContextprotected java.util.Map<java.lang.String,java.lang.Object> getUserProperties()
public java.lang.Object getUserProperty(java.lang.String key)
getUserProperty in interface ObjectContext
public void setUserProperty(java.lang.String key,
java.lang.Object value)
setUserProperty in interface ObjectContextprotected void injectInitialValue(java.lang.Object obj)
public void deleteObject(java.lang.Object object)
deleteObjects(Object...) method instead. This
method is redundant.
deleteObject in interface ObjectContextobject - a persistent object that we want to delete.
DeleteDenyException - if a DENY delete rule is applicable for object
deletion.
java.lang.NullPointerException - if object is null.
public <T> void deleteObjects(T... objects)
throws DeleteDenyException
ObjectContextObjectContext.deleteObjects(Collection) only with a vararg argument list for easier
deletion of individual objects.
deleteObjects in interface ObjectContextDeleteDenyException - if a DeleteRule.DENY
delete rule is applicable for object deletion.
public void deleteObjects(java.util.Collection<?> objects)
throws DeleteDenyException
ObjectContext
deleteObjects in interface ObjectContextDeleteDenyException - if a DeleteRule.DENY
delete rule is applicable for object deletion.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||