|
||||||||||
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 ObjectContextGraphAction |
graphAction
Graph action that handles property changes |
protected QueryCache |
queryCache
|
protected static ThreadLocal<DataChannel> |
threadDeserializationChannel
A holder of a DataChannel bound to the current thread. |
protected static ThreadLocal<ObjectContext> |
threadObjectContext
A holder of a ObjectContext bound to the current thread. |
protected Map<String,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 | ||
---|---|---|
static void |
bindThreadDeserializationChannel(DataChannel dataChannel)
Binds a DataChannel to the current thread that should be used for deserializing of ObjectContexts. |
|
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 Collection<?> |
deletedObjects()
Returns a collection of objects that are registered with this ObjectContext and have a state PersistenceState.DELETED |
|
void |
deleteObject(Object object)
Schedules an object for deletion on the next commit of this context. |
|
void |
deleteObjects(Collection<?> objects)
Deletes a collection of objects by repeatedly calling deleteObject safely (avoiding a concurrent modification exception). |
|
protected void |
fireDataChannelChanged(Object postedBy,
GraphDiff changes)
|
|
protected void |
fireDataChannelCommitted(Object postedBy,
GraphDiff changes)
|
|
protected void |
fireDataChannelRolledback(Object postedBy,
GraphDiff changes)
|
|
DataChannel |
getChannel()
Returns an DataChannel used by this context. |
|
abstract 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()
Returns QueryCache , creating it on the fly if needed. |
|
static DataChannel |
getThreadDeserializationChannel()
Returns the DataChannel bound to the current thread. |
|
static ObjectContext |
getThreadObjectContext()
Returns the ObjectContext bound to the current thread. |
|
protected Map<String,Object> |
getUserProperties()
Returns a map of user-defined properties associated with this DataContext. |
|
Object |
getUserProperty(String key)
Returns a user-defined property previously set via 'setUserProperty'. |
|
protected void |
injectInitialValue(Object obj)
If ObjEntity qualifier is set, asks it to inject initial value to an object. |
|
void |
invalidateObjects(Collection objects)
Invalidates a Collection of persistent objects. |
|
abstract Persistent |
localObject(ObjectId id,
Object prototype)
Returns an object local to this ObjectContext and matching the ObjectId. |
|
abstract Collection<?> |
modifiedObjects()
Returns a collection of objects that are registered with this ObjectContext and have a state PersistenceState.MODIFIED |
|
abstract
|
newObject(Class<T> persistentClass)
Creates a new persistent object of a given class scheduled to be inserted to the database on next commit. |
|
abstract 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 List |
performQuery(Query query)
Executes a selecting query, returning a list of persistent objects or data rows. |
|
void |
prepareForAccess(Persistent object,
String property,
boolean lazyFaulting)
A callback method that child Persistent objects are expected to call before accessing property values. |
|
void |
propertyChanged(Persistent object,
String property,
Object oldValue,
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(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 |
setQueryCache(QueryCache queryCache)
Sets a QueryCache to be used for storing cached query results. |
|
void |
setUserProperty(String key,
Object value)
Sets a user-defined property. |
|
abstract 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 ThreadLocal<ObjectContext> threadObjectContext
protected static final ThreadLocal<DataChannel> threadDeserializationChannel
protected transient DataChannel channel
protected QueryCache queryCache
protected ObjectContextGraphAction graphAction
protected Map<String,Object> userProperties
Constructor Detail |
---|
protected BaseContext()
Method Detail |
---|
public static ObjectContext getThreadObjectContext() throws IllegalStateException
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.
public static void bindThreadDeserializationChannel(DataChannel dataChannel)
getThreadDeserializationChannel()
from its deserialization method to
attach to the currently active channel.
CayenneFilter
will automatically bind the right channel to each request
thread. If you are not using CayenneFilter, your application is responsible for
calling this method at appropriate points of the lifecycle.
public static DataChannel getThreadDeserializationChannel()
getThreadObjectContext()
that throws if a context is not
bound).
public abstract void commitChanges()
ObjectContext
commitChanges
in interface ObjectContext
public abstract void commitChangesToParent()
ObjectContext
ObjectContext.commitChanges()
, but no cascading flush occurs.
commitChangesToParent
in interface ObjectContext
public abstract Collection<?> deletedObjects()
ObjectContext
deletedObjects
in interface ObjectContext
public DataChannel getChannel()
ObjectContext
getChannel
in interface ObjectContext
public abstract EntityResolver getEntityResolver()
ObjectContext
getEntityResolver
in interface DataChannel
getEntityResolver
in interface ObjectContext
public abstract GraphManager getGraphManager()
ObjectContext
getGraphManager
in interface ObjectContext
public abstract Persistent localObject(ObjectId id, Object prototype)
ObjectContext
prototype
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 ObjectContext
public abstract Collection<?> modifiedObjects()
ObjectContext
modifiedObjects
in interface ObjectContext
public abstract <T> T newObject(Class<T> persistentClass)
ObjectContext
newObject
in interface ObjectContext
public abstract void registerNewObject(Object object)
ObjectContext
ObjectContext.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 ObjectContext
object
- new object that needs to be made persistent.public abstract Collection<?> newObjects()
ObjectContext
newObjects
in interface ObjectContext
public abstract QueryResponse performGenericQuery(Query query)
ObjectContext
performGenericQuery
in interface ObjectContext
public abstract List performQuery(Query query)
ObjectContext
performQuery
in interface ObjectContext
public void prepareForAccess(Persistent object, String property, boolean lazyFaulting)
ObjectContext
prepareForAccess
in interface ObjectContext
public void propertyChanged(Persistent object, String property, Object oldValue, Object newValue)
ObjectContext
propertyChanged
in interface ObjectContext
public abstract void rollbackChanges()
ObjectContext
rollbackChanges
in interface ObjectContext
public abstract void rollbackChangesLocally()
ObjectContext
ObjectContext.rollbackChanges()()
, but rollback is local to this context and no
cascading changes undoing occurs.
rollbackChangesLocally
in interface ObjectContext
public abstract Collection<?> uncommittedObjects()
ObjectContext
uncommittedObjects
in interface ObjectContext
public QueryCache getQueryCache()
QueryCache
, creating it on the fly if needed.
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 DataChannel
originatingContext
- 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(Object postedBy, GraphDiff changes)
protected void fireDataChannelRolledback(Object postedBy, GraphDiff changes)
protected void fireDataChannelChanged(Object postedBy, GraphDiff changes)
public void invalidateObjects(Collection objects)
ObjectContext
invalidateObjects
in interface ObjectContext
RefreshQuery
protected Map<String,Object> getUserProperties()
public Object getUserProperty(String key)
getUserProperty
in interface ObjectContext
public void setUserProperty(String key, Object value)
setUserProperty
in interface ObjectContext
protected void injectInitialValue(Object obj)
public void deleteObject(Object object)
deleteObject
in interface ObjectContext
object
- a persistent object that we want to delete.
DeleteDenyException
- if a DENY delete rule is applicable for object
deletion.
NullPointerException
- if object is null.public void deleteObjects(Collection<?> objects) throws DeleteDenyException
ObjectContext
deleteObjects
in interface ObjectContext
DeleteDenyException
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |