public class BrokerImpl extends Object implements Broker, FindCallbacks, Cloneable, Serializable
Broker
. The broker handles object-level behavior,
but leaves all interaction with the data store to a StoreManager
that must be supplied at initialization.Modifier and Type | Class and Description |
---|---|
static class |
BrokerImpl.StateManagerId
Unique id for state managers of new datastore instances without assigned
object ids.
|
Modifier and Type | Field and Description |
---|---|
protected static int |
FLUSH_COMMIT
Flush in preparation of commit.
|
protected static int |
FLUSH_INC
Incremental flush.
|
protected static int |
FLUSH_LOGICAL
Run persistence-by-reachability and other flush-time operations without
accessing the database.
|
protected static int |
FLUSH_ROLLBACK
Flush to check consistency of cache, then immediately rollback changes.
|
EXCLUDE_ALL, OID_ALLOW_NEW, OID_COPY, OID_NODELETED, OID_NOVALIDATE
CONN_RETAIN_ALWAYS, CONN_RETAIN_DEMAND, CONN_RETAIN_TRANS
DETACH_ALL, DETACH_FETCH_GROUPS, DETACH_FGS, DETACH_LOADED
LOCK_NONE, LOCK_READ, LOCK_WRITE
RESTORE_ALL, RESTORE_IMMUTABLE, RESTORE_NONE
CLEAR_ALL, CLEAR_DATASTORE
DETACH_CLOSE, DETACH_COMMIT, DETACH_NONE, DETACH_NONTXREAD, DETACH_ROLLBACK, names, values
CALLBACK_FAIL_FAST, CALLBACK_IGNORE, CALLBACK_LOG, CALLBACK_RETHROW, CALLBACK_ROLLBACK
Constructor and Description |
---|
BrokerImpl() |
Modifier and Type | Method and Description |
---|---|
void |
addLifecycleListener(Object listener,
Class[] classes)
Register a listener for lifecycle-related events on the specified
classes.
|
void |
addTransactionListener(Object tl)
Register a listener for transaction-related events.
|
void |
afterCompletion(int status) |
void |
assertActiveTransaction()
Throw an exception if there is no active transaction.
|
void |
assertNontransactionalRead()
Throw an exception if there is no transaction active and
nontransactional reading is not enabled.
|
void |
assertOpen()
Throw an exception if the context is closed.
|
protected PersistenceCapable |
assertPersistenceCapable(Object obj)
Return the given instance as a
PersistenceCapable . |
void |
assertWriteOperation()
Throw an exception if a write operation is not permitted (there is
no active transaction and nontransactional writing is not enabled).
|
protected void |
assignObjectId(Object cache,
Object id,
StateManagerImpl sm)
Assign the object id to the cache.
|
Object |
attach(Object obj,
boolean copyNew,
OpCallbacks call)
Import the specified detached object into the broker.
|
Object[] |
attachAll(Collection objs,
boolean copyNew,
OpCallbacks call)
Import the specified objects into the broker.
|
void |
beforeCompletion() |
void |
begin()
Begin a transaction.
|
boolean |
beginOperation(boolean syncTrans)
Begin a logical operation.
|
void |
beginStore()
Begin a data store transaction.
|
boolean |
cancelAll()
Cancel all pending data store statements.
|
protected void |
checkForDuplicateId(Object id,
Object obj,
ClassMetaData meta)
This method makes sure we don't already have the instance cached
|
protected void |
clearStatusFlag(int flag)
Clears the given flag from the status.
|
Object |
clone() |
void |
close()
Close the broker.
|
void |
commit()
Commit the current transaction.
|
void |
commitAndResume()
Issue a commit and then start a new transaction.
|
void |
delete(Object obj,
OpCallbacks call)
Delete the given object.
|
void |
deleteAll(Collection objs,
OpCallbacks call)
Delete the given objects.
|
Object |
detach(Object obj,
OpCallbacks call)
Detach the specified object from the broker.
|
Object[] |
detachAll(Collection objs,
OpCallbacks call)
Detach the specified objects from the broker.
|
void |
detachAll(OpCallbacks call)
Detach all objects in place.
|
void |
detachAll(OpCallbacks call,
boolean flush)
Detach all objects in place, with the option of performing a
flush before doing the detachment.
|
void |
dirtyType(Class cls)
Mark the given class as dirty within the current transaction.
|
OpenJPAStateManager |
embed(Object obj,
Object id,
OpenJPAStateManager owner,
ValueMetaData ownerMeta)
Make the given instance embedded.
|
boolean |
endOperation()
Mark the operation over.
|
protected void |
endTransaction(int status)
End the current transaction, making appropriate state transitions.
|
void |
evict(Object obj,
OpCallbacks call)
Evict the given object.
|
void |
evictAll(Collection objs,
OpCallbacks call)
Evict the given objects.
|
void |
evictAll(Extent extent,
OpCallbacks call)
Evict all persistent-clean and persistent-nontransactional
instances in the given
Extent . |
void |
evictAll(OpCallbacks call)
Evict all clean objects.
|
Iterator |
extentIterator(Class type,
boolean subclasses,
FetchConfiguration fetch,
boolean ignoreChanges)
Return an iterator over all instances of the given type.
|
Object |
find(Object oid,
boolean validate,
FindCallbacks call)
Find the persistence object with the given oid.
|
Object |
find(Object oid,
FetchConfiguration fetch,
BitSet exclude,
Object edata,
int flags)
Return the object with the given oid.
|
protected Object |
find(Object oid,
FetchConfiguration fetch,
BitSet exclude,
Object edata,
int flags,
FindCallbacks call)
Internal finder.
|
Object[] |
findAll(Collection oids,
boolean validate,
FindCallbacks call)
Return the objects with the given oids.
|
Object[] |
findAll(Collection oids,
FetchConfiguration fetch,
BitSet exclude,
Object edata,
int flags)
Return the objects with the given oids.
|
protected Object[] |
findAll(Collection oids,
FetchConfiguration fetch,
BitSet exclude,
Object edata,
int flags,
FindCallbacks call)
Internal finder.
|
Object |
findCached(Object oid,
FindCallbacks call)
Return the instance for the given oid/object , or null if not
found in the L1 cache.
|
void |
flush()
Flush all transactional instances to the data store.
|
protected void |
flush(int reason)
Flush the transactional state to the data store.
|
protected void |
free()
Free the resources used by this persistence manager.
|
boolean |
getAllowReferenceToSiblingContext()
Affirms if this context will allow its managed instances to refer instances
that are managed by other contexts.
|
int |
getAutoClear()
Whether objects clear when entering transactions.
|
int |
getAutoDetach()
Bit flags marked in
AutoDetach which indicate when persistent
managed objects should be automatically detached in-place. |
Broker |
getBroker()
Return the broker for this context, if possible.
|
BrokerFactory |
getBrokerFactory()
Return the factory that produced this broker.
|
boolean |
getCacheFinderQuery() |
boolean |
getCachePreparedQuery()
Affirms if this receiver is caching prepared queries.
|
ClassLoader |
getClassLoader()
Return the current thread's class loader at the time this context
was obtained.
|
OpenJPAConfiguration |
getConfiguration()
Return the configuration associated with this context.
|
Object |
getConnection()
Return the connection in use by the context, or a new connection if none.
|
Object |
getConnectionFactory()
Return the 'JTA' ConnectionFactory, looking it up from JNDI if needed.
|
Object |
getConnectionFactory2()
Return the 'NonJTA' ConnectionFactory, looking it up from JNDI if needed.
|
String |
getConnectionFactory2Name()
Return the 'NonJTA' ConnectionFactoryName.
|
String |
getConnectionFactoryName()
Return the 'JTA' connectionFactoryName
|
String |
getConnectionPassword()
Return the connection password.
|
int |
getConnectionRetainMode()
Return the connection retain mode for this broker.
|
String |
getConnectionUserName()
Return the connection user name.
|
Collection |
getDeletedTypes()
Return the set of classes that have been deleted in the current
transaction.
|
int |
getDetachState()
Detach mode constant to determine which fields are part of the
detached graph.
|
Collection |
getDirtyObjects()
Return a list of current dirty instances.
|
protected Collection |
getDirtyStates()
Return a copy of all dirty state managers.
|
boolean |
getEvictFromDataCache()
Whether to also evict an object from the store cache when it is
evicted through this broker.
|
FetchConfiguration |
getFetchConfiguration()
Return the (mutable) fetch configuration for loading objects from this
context.
|
Seq |
getIdentitySequence(ClassMetaData meta)
Returns a
Seq for the datastore identity values of the
specified persistent class, or null if the class' identity cannot be
represented as a sequence. |
boolean |
getIgnoreChanges()
Whether to take into account changes in the transaction when executing
a query or iterating an extent.
|
InverseManager |
getInverseManager()
Return the inverse manager in use.
|
LifecycleEventManager |
getLifecycleEventManager()
Give state managers access to the lifecycle event manager.
|
int |
getLifecycleListenerCallbackMode()
The callback mode for handling exceptions from lifecycle event listeners.
|
int |
getLockLevel(Object o)
Return the lock level of the specified object.
|
LockManager |
getLockManager()
Return the lock manager in use.
|
Collection |
getManagedObjects()
Return a list of all managed instances.
|
ManagedRuntime |
getManagedRuntime()
Return the managed runtime in use.
|
protected Collection |
getManagedStates()
Return a copy of all managed state managers.
|
boolean |
getMultithreaded()
Whether the broker or its managed instances are used in a multithreaded
environment.
|
boolean |
getNontransactionalRead()
Whether to allow nontransactional access to persistent state.
|
boolean |
getNontransactionalWrite()
Whether to allow nontransactional changes to persistent state.
|
Object |
getObjectId(Object obj)
Return the oid of the given instance.
|
Class<?> |
getObjectIdType(Class<?> cls)
Return the application or datastore identity class the given persistent
class uses for object ids.
|
protected Set<Object> |
getOperatingSet()
Gets the unmodifiable set of instances being operated.
|
boolean |
getOptimistic()
Whether to use optimistic transactional semantics.
|
boolean |
getOrderDirtyObjects()
Whether to maintain the order in which objects are dirtied for
StoreContext.getDirtyObjects() . |
Collection |
getPendingTransactionalObjects()
Return a list of instances which will become transactional upon
the next transaction.
|
protected Collection |
getPendingTransactionalStates()
Return a copy of all state managers which will become
transactional upon the next transaction.
|
Collection |
getPersistedTypes()
Return the set of classes that have been made persistent in the current
transaction.
|
boolean |
getPopulateDataCache()
Whether objects accessed during this transaction will be added to the
store cache.
|
boolean |
getPostLoadOnMerge()
Force sending a @PostLoad lifecycle event while merging.
|
boolean |
getPrintParameters() |
Map<String,Object> |
getProperties()
Get current configuration property values used by this instance.
|
int |
getRestoreState()
Whether to restore an object's original state on rollback.
|
boolean |
getRetainState()
Whether objects retain their persistent state on transaction commit.
|
Throwable |
getRollbackCause()
Returns the Throwable that caused the transaction to be
marked for rollback.
|
boolean |
getRollbackOnly()
Return whether the current transaction has been marked for rollback.
|
OpenJPAStateManager |
getStateManager(Object obj)
Return the state manager for the given instance.
|
protected StateManagerImpl |
getStateManagerImpl(Object obj,
boolean assertThisContext)
Return the state manager for the given instance, or null.
|
protected StateManagerImpl |
getStateManagerImplById(Object oid,
boolean allowNew)
Return the state manager for the given oid.
|
DelegatingStoreManager |
getStoreManager()
Return the store manager in use.
|
Set<String> |
getSupportedProperties()
Gets the property names that can be used to corresponding setter methods of this receiver
to set its value.
|
boolean |
getSuppressBatchOLELogging()
Return whether this Broker will generate verbose optimistic lock exceptions when batching
operations.
|
Synchronization |
getSynchronization() |
boolean |
getSyncWithManagedTransactions()
Whether to check for a global transaction upon every managed,
non-transactional operation.
|
Collection |
getTransactionalObjects()
Return a list of current transaction instances.
|
protected Collection<StateManagerImpl> |
getTransactionalStates()
Return a copy of all transactional state managers.
|
int |
getTransactionListenerCallbackMode()
The callback mode for handling exceptions from transaction event
listeners.
|
Collection<Object> |
getTransactionListeners()
Gets an umodifiable collection of currently registered lsteners.
|
Collection |
getUpdatedTypes()
Return the set of classes for objects that have been modified
in the current transaction.
|
Object |
getUserObject(Object key)
Get the value for the specified key from the map of user objects.
|
Seq |
getValueSequence(FieldMetaData fmd)
Returns a
Seq for the generated values of the specified
field, or null if the field is not generated. |
Object |
getVersion(Object obj)
Returns the current version indicator for
o . |
boolean |
hasConnection()
Whether the broker has a dedicated connection based on the configured
connection retain mode and transaction status.
|
void |
initialize(AbstractBrokerFactory factory,
DelegatingStoreManager sm,
boolean managed,
int connMode,
boolean fromDeserialization)
Initialize the persistence manager.
|
void |
initialize(AbstractBrokerFactory factory,
DelegatingStoreManager sm,
boolean managed,
int connMode,
boolean fromDeserialization,
boolean fromWriteBehindCallback) |
protected StateManagerImpl |
initialize(StateManagerImpl sm,
boolean load,
FetchConfiguration fetch,
Object edata)
Initialize a newly-constructed state manager.
|
boolean |
isActive()
Whether a logical transaction is active.
|
boolean |
isCached(List<Object> oids)
Indicate whether the oid can be found in the StoreContext's L1 cache or in the StoreManager cache.
|
boolean |
isClosed()
Whether the broker is closed.
|
boolean |
isCloseInvoked()
Whether
Broker.close() has been invoked, though the broker might
remain open until the current managed transaction completes. |
boolean |
isDeleted(Object obj)
Return whether the given object is deleted.
|
boolean |
isDetached(Object obj)
Returns
true if obj is a detached object
(one that can be reattached to a Broker via a call to
Broker.attach(java.lang.Object, boolean, org.apache.openjpa.kernel.OpCallbacks) ); otherwise returns false . |
boolean |
isDetached(Object obj,
boolean find)
This method makes a best effort to determine if the provided object is detached.
|
boolean |
isDetachedNew()
Whether to treat relations to detached instances during persist
operations as new or as pseudo-hollow instances.
|
boolean |
isDirty(Object obj)
Return whether the given object is dirty.
|
protected boolean |
isFlushing() |
boolean |
isFromWriteBehindCallback() |
boolean |
isLoading(Object o) |
boolean |
isManaged()
Whether this context is using managed transactions.
|
boolean |
isNew(Object obj)
Return whether the given object is a newly-created instance registered
with
broker . |
boolean |
isPersistent(Object obj)
Return whether the given object is persistent.
|
boolean |
isStoreActive()
Whether a data store transaction is active.
|
boolean |
isTrackChangesByType()
Whether memory usage is reduced during this transaction at the expense
of tracking changes at the type level instead of the instance level,
resulting in more aggressive cache invalidation.
|
boolean |
isTransactional(Object obj)
Return whether the given object is transactional.
|
void |
lock()
Synchronizes on an internal lock if the
Multithreaded flag is set to true. |
void |
lock(Object obj,
int level,
int timeout,
OpCallbacks call)
Ensure that the given instance is locked at the given lock level.
|
void |
lock(Object obj,
OpCallbacks call)
Ensure that the given instance is locked at the current lock level, as
set in the
FetchConfiguration for the broker. |
void |
lockAll(Collection objs,
int level,
int timeout,
OpCallbacks call)
Ensure that the given instances are locked at the given lock level.
|
void |
lockAll(Collection objs,
OpCallbacks call)
Ensure that the given instances are locked at the current lock level, as
set in the
FetchConfiguration for the broker. |
Extent |
newExtent(Class type,
boolean subclasses)
Return an extent of the given class, optionally including subclasses.
|
Object |
newInstance(Class cls)
Create a new instance of type
cls . |
protected Map<?,?> |
newManagedObjectCache()
Create a
Map to be used for the primary managed object cache. |
Object |
newObjectId(Class<?> cls,
Object val)
Create a new object id instance from the given value.
|
Query |
newQuery(String lang,
Class cls,
Object query)
Create a new query from the given data, with the given candidate class
and language.
|
Query |
newQuery(String lang,
Object query)
Create a new query in the given language.
|
protected QueryImpl |
newQueryImpl(String lang,
StoreQuery sq)
Create a new query.
|
protected StateManagerImpl |
newStateManagerImpl(Object oid,
ClassMetaData meta)
Create a state manager for the given oid and metadata.
|
void |
nontransactional(Object obj,
OpCallbacks call)
Make the given object non-transactional.
|
void |
nontransactionalAll(Collection objs,
OpCallbacks call)
Make the given objects nontransactional.
|
void |
persist(Object obj,
boolean explicit,
OpCallbacks call)
Persist the given object.
|
OpenJPAStateManager |
persist(Object obj,
Object id,
boolean explicit,
OpCallbacks call)
Persist the given object.
|
OpenJPAStateManager |
persist(Object obj,
Object id,
boolean explicit,
OpCallbacks call,
boolean fireEvent)
Persist the given object.
|
OpenJPAStateManager |
persist(Object obj,
Object id,
OpCallbacks call)
Make the given instance persistent.
|
void |
persist(Object obj,
OpCallbacks call)
Persist the given object.
|
void |
persistAll(Collection objs,
boolean explicit,
OpCallbacks call)
Persist the given objects.
|
void |
persistAll(Collection objs,
OpCallbacks call)
Persist the given objects.
|
void |
popFetchConfiguration()
Pops the fetch configuration from the top of the stack, making the
next one down the active one.
|
void |
preFlush()
Run pre-flush actions on transactional objects, including
persistence-by-reachability, inverse relationship management,
deletion of dependent instances, and instance callbacks.
|
Object |
processArgument(Object oid)
Process find argument.
|
Object |
processReturn(Object oid,
OpenJPAStateManager sm)
Process operation return value.
|
FetchConfiguration |
pushFetchConfiguration()
Pushes a new fetch configuration that inherits from the current
fetch configuration onto a stack, and makes the new configuration
the active one.
|
FetchConfiguration |
pushFetchConfiguration(FetchConfiguration fc)
Pushes the fetch configuration argument onto a stack, and makes the new configuration
the active one.
|
Object |
putUserObject(Object key,
Object val)
Put the specified key-value pair into the map of user objects.
|
void |
refresh(Object obj,
OpCallbacks call)
Refresh the state of the given object.
|
void |
refreshAll(Collection objs,
OpCallbacks call)
Refresh the state of the given objects.
|
protected void |
refreshInternal(Collection objs,
OpCallbacks call)
This method is called with the full set of objects reachable via
cascade-refresh relations from the user-given instances.
|
protected void |
refreshInternal(Object obj,
OpCallbacks call)
Optimization for single-object refresh.
|
void |
release(Object obj,
OpCallbacks call)
Release the given object from management.
|
void |
releaseAll(Collection objs,
OpCallbacks call)
Release the given objects from management.
|
void |
releaseSavepoint()
Release the last set savepoint and any resources associated with it.
|
void |
releaseSavepoint(String savepoint)
Release the savepoint and any resources associated with it.
|
void |
removeLifecycleListener(Object listener)
Remove a listener for lifecycle-related events.
|
void |
removeTransactionListener(Object tl)
Remove a listener for transaction-related events.
|
void |
retrieve(Object obj,
boolean dfgOnly,
OpCallbacks call)
Immediately load the given object's persistent fields.
|
void |
retrieveAll(Collection objs,
boolean dfgOnly,
OpCallbacks call)
Retrieve the given objects' persistent state.
|
void |
rollback()
Rollback the current transaction.
|
void |
rollbackAndResume()
Issue a rollback and then start a new transaction.
|
void |
rollbackToSavepoint()
Rollback the current transaction to the last savepoint.
|
void |
rollbackToSavepoint(String savepoint)
Rollback the current transaction to the given savepoint name.
|
void |
setAllowReferenceToSiblingContext(boolean allow)
Affirms if this context will allow its managed instances to refer instances
that are managed by other contexts.
|
void |
setAuthentication(String user,
String pass)
Set the persistence manager's authentication.
|
void |
setAutoClear(int val)
Whether objects clear when entering transactions.
|
void |
setAutoDetach(int detachFlags)
Sets automatic detachment option.
|
void |
setAutoDetach(int detachFlag,
boolean on)
Bit flags marked in
AutoDetach which indicate when persistent
managed objects should be automatically detached in-place. |
void |
setCacheFinderQuery(boolean flag) |
void |
setCachePreparedQuery(boolean flag)
Sets whether this receiver will cache prepared queries during its
lifetime.
|
void |
setConnectionFactory2Name(String connectionFactory2Name)
Set the 'NonJTA' ConnectionFactoryName.
|
void |
setConnectionFactoryName(String connectionFactoryName)
Set the 'JTA' ConnectionFactoryName.
|
void |
setDetachedNew(boolean isNew)
Whether to treat relations to detached instances as new.
|
void |
setDetachState(int mode)
Detach mode constant to determine which fields are part of the
detached graph.
|
void |
setEvictFromDataCache(boolean evict)
Whether to also evict an object from the store cache when it is
evicted through this broker.
|
void |
setIgnoreChanges(boolean val)
Whether to take into account changes in the transaction when executing
a query or iterating an extent.
|
void |
setImplicitBehavior(OpCallbacks call,
RuntimeExceptionTranslator ex)
Set the broker's behavior for implicit actions such as flushing,
automatic detachment, and exceptions thrown by managed instances outside
a broker operation.
|
void |
setLifecycleListenerCallbackMode(int mode)
The callback mode for handling exceptions from lifecycle event listeners.
|
void |
setMultithreaded(boolean multithreaded)
Whether the broker or its managed instances are used in a multithreaded
environment.
|
void |
setNontransactionalRead(boolean val)
Whether to allow nontransactional access to persistent state.
|
void |
setNontransactionalWrite(boolean val)
Whether to allow nontransactional changes to persistent state.
|
void |
setOptimistic(boolean val)
Whether to use optimistic transactional semantics.
|
void |
setOrderDirtyObjects(boolean order)
Whether to maintain the order in which objects are dirtied for
StoreContext.getDirtyObjects() . |
void |
setPopulateDataCache(boolean cache)
Whether to populate the store cache with objects used by this
transaction.
|
void |
setPostLoadOnMerge(boolean allow)
Set to
true if the merge operation should trigger
a @PostLoad lifecycle event. |
void |
setRestoreState(int val)
Whether to restore an object's original state on rollback.
|
void |
setRetainState(boolean val)
Whether objects retain their persistent state on transaction commit.
|
void |
setRollbackOnly()
Mark the current transaction for rollback.
|
void |
setRollbackOnly(Throwable cause)
Mark the current transaction for rollback with the specified cause
of the rollback.
|
void |
setSavepoint(String name)
Set a transactional savepoint where operations after this savepoint
will be rolled back.
|
protected void |
setStateManager(Object id,
StateManagerImpl sm,
int status)
Set the cached StateManager for the instance that had the given oid.
|
protected void |
setStatusFlag(int flag)
Sets the given flag to the status.
|
void |
setSuppressBatchOLELogging(boolean b)
Set whether this Broker will generate verbose optimistic lock exceptions when batching
operations.
|
void |
setSynchronization(Synchronization sync) |
void |
setSyncWithManagedTransactions(boolean sync)
Whether to check for a global transaction upon every managed,
non-transactional operation.
|
void |
setTrackChangesByType(boolean largeTransaction)
If a large number of objects will be created, modified, or deleted
during this transaction setting this option to true will reduce memory
usage if you perform periodic flushes by tracking changes at the type
level instead of the instance level, resulting in more aggressive cache
invalidation.
|
void |
setTransactionListenerCallbackMode(int mode)
The callback mode for handling exceptions from transaction event
listeners.
|
boolean |
syncWithManagedTransaction()
Attempt to synchronize with a current managed transaction, returning
true if successful, false if no managed transaction is active.
|
void |
transactional(Object obj,
boolean updateVersion,
OpCallbacks call)
Make the given instances transactional.
|
void |
transactionalAll(Collection objs,
boolean updateVersion,
OpCallbacks call)
Make the given instances transactional.
|
void |
unlock()
Releases the internal lock.
|
void |
validateChanges()
Validate the changes made in this transaction, reporting any optimistic
violations, constraint violations, etc.
|
protected static final int FLUSH_INC
protected static final int FLUSH_COMMIT
protected static final int FLUSH_ROLLBACK
protected static final int FLUSH_LOGICAL
public void setAuthentication(String user, String pass)
user
- the username this broker represents; used when pooling
brokers to make sure that a request to the factory for
a connection with an explicit user is delegated to a suitable brokerpass
- the password for the above userpublic void initialize(AbstractBrokerFactory factory, DelegatingStoreManager sm, boolean managed, int connMode, boolean fromDeserialization)
factory
- the factory used to create this brokersm
- a concrete StoreManager implementation to
handle interaction with the data storemanaged
- the transaction modeconnMode
- the connection retain modefromDeserialization
- whether this call happened because of a
deserialization or creation of a new BrokerImpl.public void initialize(AbstractBrokerFactory factory, DelegatingStoreManager sm, boolean managed, int connMode, boolean fromDeserialization, boolean fromWriteBehindCallback)
protected Set<Object> getOperatingSet()
public Object clone() throws CloneNotSupportedException
clone
in class Object
CloneNotSupportedException
protected Map<?,?> newManagedObjectCache()
Map
to be used for the primary managed object cache.
Maps oids to state managers. By default, this creates a
ReferenceMap
with soft values.public Broker getBroker()
StoreContext
getBroker
in interface StoreContext
public void setImplicitBehavior(OpCallbacks call, RuntimeExceptionTranslator ex)
Broker
setImplicitBehavior
in interface Broker
public BrokerFactory getBrokerFactory()
Broker
getBrokerFactory
in interface Broker
public OpenJPAConfiguration getConfiguration()
StoreContext
getConfiguration
in interface StoreContext
public FetchConfiguration getFetchConfiguration()
StoreContext
getFetchConfiguration
in interface StoreContext
public FetchConfiguration pushFetchConfiguration()
StoreContext
pushFetchConfiguration
in interface StoreContext
public FetchConfiguration pushFetchConfiguration(FetchConfiguration fc)
StoreContext
pushFetchConfiguration
in interface StoreContext
public void popFetchConfiguration()
StoreContext
popFetchConfiguration
in interface StoreContext
public int getConnectionRetainMode()
Broker
getConnectionRetainMode
in interface Broker
public boolean isManaged()
StoreContext
isManaged
in interface StoreContext
public ManagedRuntime getManagedRuntime()
Broker
getManagedRuntime
in interface Broker
public ClassLoader getClassLoader()
StoreContext
getClassLoader
in interface StoreContext
public DelegatingStoreManager getStoreManager()
StoreContext
DelegatingStoreManager.getInnermostDelegate()
.getStoreManager
in interface StoreContext
public LockManager getLockManager()
StoreContext
getLockManager
in interface StoreContext
public InverseManager getInverseManager()
Broker
getInverseManager
in interface Broker
public String getConnectionUserName()
StoreContext
getConnectionUserName
in interface StoreContext
public String getConnectionPassword()
StoreContext
getConnectionPassword
in interface StoreContext
public boolean getMultithreaded()
Broker
getMultithreaded
in interface Broker
public void setMultithreaded(boolean multithreaded)
Broker
setMultithreaded
in interface Broker
public boolean getIgnoreChanges()
Broker
getIgnoreChanges
in interface Broker
public void setIgnoreChanges(boolean val)
Broker
setIgnoreChanges
in interface Broker
public boolean getNontransactionalRead()
Broker
getNontransactionalRead
in interface Broker
public void setNontransactionalRead(boolean val)
Broker
setNontransactionalRead
in interface Broker
public boolean getNontransactionalWrite()
Broker
getNontransactionalWrite
in interface Broker
public void setNontransactionalWrite(boolean val)
Broker
setNontransactionalWrite
in interface Broker
public boolean getOptimistic()
Broker
getOptimistic
in interface Broker
public void setOptimistic(boolean val)
Broker
setOptimistic
in interface Broker
public int getRestoreState()
Broker
getRestoreState
in interface Broker
public void setRestoreState(int val)
Broker
setRestoreState
in interface Broker
public boolean getRetainState()
Broker
getRetainState
in interface Broker
public void setRetainState(boolean val)
Broker
setRetainState
in interface Broker
public int getAutoClear()
Broker
getAutoClear
in interface Broker
public void setAutoClear(int val)
Broker
setAutoClear
in interface Broker
public int getAutoDetach()
Broker
AutoDetach
which indicate when persistent
managed objects should be automatically detached in-place.getAutoDetach
in interface Broker
public void setAutoDetach(int detachFlags)
AutoDetach.DETACH_NONE
option,
then no other option can be specified.setAutoDetach
in interface Broker
public void setAutoDetach(int detachFlag, boolean on)
Broker
AutoDetach
which indicate when persistent
managed objects should be automatically detached in-place.setAutoDetach
in interface Broker
public int getDetachState()
StoreContext
DetachState.DETACH_LOADED
.getDetachState
in interface StoreContext
public void setDetachState(int mode)
StoreContext
DetachState.DETACH_LOADED
.setDetachState
in interface StoreContext
public boolean isDetachedNew()
Broker
isDetachedNew
in interface Broker
public void setDetachedNew(boolean isNew)
Broker
setDetachedNew
in interface Broker
public boolean getSyncWithManagedTransactions()
Broker
getSyncWithManagedTransactions
in interface Broker
public void setSyncWithManagedTransactions(boolean sync)
Broker
setSyncWithManagedTransactions
in interface Broker
public boolean getEvictFromDataCache()
Broker
getEvictFromDataCache
in interface Broker
public void setEvictFromDataCache(boolean evict)
Broker
setEvictFromDataCache
in interface Broker
public boolean getPopulateDataCache()
StoreContext
getPopulateDataCache
in interface StoreContext
public void setPopulateDataCache(boolean cache)
StoreContext
setPopulateDataCache
in interface StoreContext
public boolean isTrackChangesByType()
StoreContext
isTrackChangesByType
in interface StoreContext
public void setTrackChangesByType(boolean largeTransaction)
StoreContext
RemoteCommitEvent
s. Defaults to false.setTrackChangesByType
in interface StoreContext
public Object getUserObject(Object key)
Broker
getUserObject
in interface Broker
public Object putUserObject(Object key, Object val)
Broker
putUserObject
in interface Broker
public Map<String,Object> getProperties()
getProperties
in interface Broker
public Set<String> getSupportedProperties()
getSupportedProperties
in interface Broker
public void addLifecycleListener(Object listener, Class[] classes)
Broker
addLifecycleListener
in interface Broker
public void removeLifecycleListener(Object listener)
Broker
removeLifecycleListener
in interface Broker
public int getLifecycleListenerCallbackMode()
Broker
getLifecycleListenerCallbackMode
in interface Broker
public void setLifecycleListenerCallbackMode(int mode)
Broker
setLifecycleListenerCallbackMode
in interface Broker
public LifecycleEventManager getLifecycleEventManager()
getLifecycleEventManager
in interface Broker
public void addTransactionListener(Object tl)
Broker
addTransactionListener
in interface Broker
public void removeTransactionListener(Object tl)
Broker
removeTransactionListener
in interface Broker
public Collection<Object> getTransactionListeners()
Broker
getTransactionListeners
in interface Broker
public int getTransactionListenerCallbackMode()
Broker
getTransactionListenerCallbackMode
in interface Broker
public void setTransactionListenerCallbackMode(int mode)
Broker
setTransactionListenerCallbackMode
in interface Broker
public void setSuppressBatchOLELogging(boolean b)
public boolean getSuppressBatchOLELogging()
public Object find(Object oid, boolean validate, FindCallbacks call)
StoreContext
validate
is true, the broker will check the store
for the object, and return null if it does not exist. If
validate
is false, this method never returns null. The
broker will either return its cached instance, attempt to create a
hollow instance, or throw an ObjectNotFoundException
if
unable to return a hollow instance.find
in interface StoreContext
validate
- if true, validate that the instance exists in the
store and load fetch group fields, otherwise return
any cached or hollow instancepublic Object find(Object oid, FetchConfiguration fetch, BitSet exclude, Object edata, int flags)
StoreContext
exclude
mask. By default this method does not find new
unflushed instances, validates, and does not throw an exception
if a cached instance has been deleted concurrently. These options
are controllable through the given OID_XXX
flags.find
in interface StoreContext
protected Object find(Object oid, FetchConfiguration fetch, BitSet exclude, Object edata, int flags, FindCallbacks call)
protected StateManagerImpl initialize(StateManagerImpl sm, boolean load, FetchConfiguration fetch, Object edata)
public Object[] findAll(Collection oids, boolean validate, FindCallbacks call)
StoreContext
findAll
in interface StoreContext
oids
- the oids of the objects to returnStoreContext.find(Object,boolean,FindCallbacks)
public Object[] findAll(Collection oids, FetchConfiguration fetch, BitSet exclude, Object edata, int flags)
StoreContext
findAll
in interface StoreContext
StoreContext.find(Object,FetchConfiguration,BitSet,Object,int)
protected Object[] findAll(Collection oids, FetchConfiguration fetch, BitSet exclude, Object edata, int flags, FindCallbacks call)
public boolean isLoading(Object o)
public Object findCached(Object oid, FindCallbacks call)
StoreContext
findCached
in interface StoreContext
oid
- the object's idpublic Class<?> getObjectIdType(Class<?> cls)
StoreContext
getObjectIdType
in interface StoreContext
public Object newObjectId(Class<?> cls, Object val)
StoreContext
newObjectId
in interface StoreContext
cls
- the persistent class that uses this identity valueval
- an object id instance, stringified object id, or primary
key valueprotected StateManagerImpl newStateManagerImpl(Object oid, ClassMetaData meta)
public void begin()
Broker
public void beginStore()
StoreContext
beginStore
in interface StoreContext
public void commit()
Broker
public void rollback()
Broker
public boolean syncWithManagedTransaction()
Broker
syncWithManagedTransaction
in interface Broker
public void commitAndResume()
Broker
broker.commit (); broker.begin ();except that the broker's internal atomic lock is utilized, so this method can be safely executed from multiple threads.
commitAndResume
in interface Broker
Broker.commit()
,
Broker.begin()
public void rollbackAndResume()
Broker
broker.rollback (); broker.begin ();except that the broker's internal atomic lock is utilized, so this method can be safely executed from multiple threads.
rollbackAndResume
in interface Broker
Broker.rollback()
,
Broker.begin()
public boolean getRollbackOnly()
Broker
getRollbackOnly
in interface Broker
public Throwable getRollbackCause()
Broker
getRollbackCause
in interface Broker
public void setRollbackOnly()
Broker
setRollbackOnly
in interface Broker
public void setRollbackOnly(Throwable cause)
Broker
setRollbackOnly
in interface Broker
public void setSavepoint(String name)
Broker
setSavepoint
in interface Broker
public void releaseSavepoint()
Broker
releaseSavepoint
in interface Broker
public void releaseSavepoint(String savepoint)
Broker
releaseSavepoint
in interface Broker
public void rollbackToSavepoint()
Broker
rollbackToSavepoint
in interface Broker
public void rollbackToSavepoint(String savepoint)
Broker
rollbackToSavepoint
in interface Broker
protected void setStatusFlag(int flag)
protected void clearStatusFlag(int flag)
public void flush()
Broker
public void preFlush()
Broker
public void validateChanges()
Broker
Broker.flush()
. In an optimistic transaction that has not yet begun a
datastore-level transaction, however, it will only report exceptions
that would occur on flush, without retaining any datastore resources.validateChanges
in interface Broker
public boolean isActive()
StoreContext
isActive
in interface StoreContext
public boolean isStoreActive()
StoreContext
isStoreActive
in interface StoreContext
public boolean beginOperation(boolean syncTrans)
Broker
Broker.endOperation()
is called.beginOperation
in interface Broker
syncTrans
- whether instances may be loaded/modified during
this operation requiring a re-check of global txpublic boolean endOperation()
endOperation
in interface Broker
public Synchronization getSynchronization()
public void setSynchronization(Synchronization sync)
public void beforeCompletion()
beforeCompletion
in interface Synchronization
public void afterCompletion(int status)
afterCompletion
in interface Synchronization
protected void flush(int reason)
reason
- one of FLUSH_INC
, FLUSH_COMMIT
,
FLUSH_ROLLBACK
, or FLUSH_LOGICAL
protected void endTransaction(int status)
public void persist(Object obj, OpCallbacks call)
Broker
public OpenJPAStateManager persist(Object obj, Object id, OpCallbacks call)
Broker
ValueMetaData.CASCADE_IMMEDIATE
.public void persistAll(Collection objs, OpCallbacks call)
Broker
persistAll
in interface Broker
public void persistAll(Collection objs, boolean explicit, OpCallbacks call)
public void persist(Object obj, boolean explicit, OpCallbacks call)
public OpenJPAStateManager persist(Object obj, Object id, boolean explicit, OpCallbacks call)
Broker
for details on this method.public OpenJPAStateManager persist(Object obj, Object id, boolean explicit, OpCallbacks call, boolean fireEvent)
Broker
for details on this method.public void deleteAll(Collection objs, OpCallbacks call)
Broker
public void delete(Object obj, OpCallbacks call)
Broker
public void releaseAll(Collection objs, OpCallbacks call)
Broker
releaseAll
in interface Broker
public void release(Object obj, OpCallbacks call)
Broker
public OpenJPAStateManager embed(Object obj, Object id, OpenJPAStateManager owner, ValueMetaData ownerMeta)
StoreContext
embed
in interface StoreContext
obj
- the instance to embed; may be null to create a new instanceid
- the id to give the embedded state manager; may be
null for defaultowner
- the owning state managerownerMeta
- the value in which the object is embeddedpublic void refreshAll(Collection objs, OpCallbacks call)
Broker
refreshAll
in interface Broker
public void refresh(Object obj, OpCallbacks call)
Broker
protected void refreshInternal(Collection objs, OpCallbacks call)
protected void refreshInternal(Object obj, OpCallbacks call)
public void retrieveAll(Collection objs, boolean dfgOnly, OpCallbacks call)
StoreContext
retrieveAll
in interface StoreContext
dfgOnly
- indicator as to whether to retrieve only fieldsStoreContext.retrieve(java.lang.Object, boolean, org.apache.openjpa.kernel.OpCallbacks)
public void retrieve(Object obj, boolean dfgOnly, OpCallbacks call)
StoreContext
retrieve
in interface StoreContext
dfgOnly
- indicator as to whether to retrieve only fields
in the current fetch groups, or all fieldsStoreContext.retrieve(java.lang.Object, boolean, org.apache.openjpa.kernel.OpCallbacks)
public void evictAll(OpCallbacks call)
Broker
public void evictAll(Collection objs, OpCallbacks call)
Broker
public void evictAll(Extent extent, OpCallbacks call)
Broker
Extent
.public void evict(Object obj, OpCallbacks call)
Broker
public Object detach(Object obj, OpCallbacks call)
Broker
public Object[] detachAll(Collection objs, OpCallbacks call)
Broker
Broker.attachAll(java.util.Collection, boolean, org.apache.openjpa.kernel.OpCallbacks)
. The
detached instances will be unmanaged copies of the specified parameters,
and are suitable for serialization and manipulation outside
of a OpenJPA environment. When detaching instances, only fields
in the current FetchConfiguration
will be traversed. Thus,
to detach a graph of objects, relations to other persistent
instances must either be in the default-fetch-group
,
or in the current custom FetchConfiguration
.public void detachAll(OpCallbacks call)
Broker
public void detachAll(OpCallbacks call, boolean flush)
Broker
public Object attach(Object obj, boolean copyNew, OpCallbacks call)
Broker
public Object[] attachAll(Collection objs, boolean copyNew, OpCallbacks call)
Broker
public void nontransactionalAll(Collection objs, OpCallbacks call)
StoreContext
nontransactionalAll
in interface StoreContext
public void nontransactional(Object obj, OpCallbacks call)
StoreContext
nontransactional
in interface StoreContext
public void transactionalAll(Collection objs, boolean updateVersion, OpCallbacks call)
transactionalAll
in interface StoreContext
objs
- instances to make transactionalupdateVersion
- if true, the instance's version will be
incremented at the next flushpublic void transactional(Object obj, boolean updateVersion, OpCallbacks call)
transactional
in interface StoreContext
obj
- instance to make transactionalupdateVersion
- if true, the instance's version will be
incremented at the next flushpublic Extent newExtent(Class type, boolean subclasses)
Broker
public Iterator extentIterator(Class type, boolean subclasses, FetchConfiguration fetch, boolean ignoreChanges)
StoreContext
ImplHelper.close(java.lang.Object)
when no longer needed. This method delegates to
StoreManager.executeExtent(org.apache.openjpa.meta.ClassMetaData, boolean, org.apache.openjpa.kernel.FetchConfiguration)
.extentIterator
in interface StoreContext
public Query newQuery(String lang, Class cls, Object query)
Broker
public Query newQuery(String lang, Object query)
Broker
protected QueryImpl newQueryImpl(String lang, StoreQuery sq)
public Seq getIdentitySequence(ClassMetaData meta)
Broker
Seq
for the datastore identity values of the
specified persistent class, or null if the class' identity cannot be
represented as a sequence.getIdentitySequence
in interface Broker
public Seq getValueSequence(FieldMetaData fmd)
Broker
Seq
for the generated values of the specified
field, or null if the field is not generated.getValueSequence
in interface Broker
public void lock(Object obj, OpCallbacks call)
Broker
FetchConfiguration
for the broker.public void lock(Object obj, int level, int timeout, OpCallbacks call)
Broker
public void lockAll(Collection objs, OpCallbacks call)
Broker
FetchConfiguration
for the broker.public void lockAll(Collection objs, int level, int timeout, OpCallbacks call)
Broker
public boolean cancelAll()
Broker
public Object getConnection()
StoreContext
getConnection
in interface StoreContext
public boolean hasConnection()
StoreContext
hasConnection
in interface StoreContext
public Collection getManagedObjects()
StoreContext
getManagedObjects
in interface StoreContext
public Collection getTransactionalObjects()
StoreContext
getTransactionalObjects
in interface StoreContext
public Collection getPendingTransactionalObjects()
StoreContext
getPendingTransactionalObjects
in interface StoreContext
public Collection getDirtyObjects()
StoreContext
getDirtyObjects
in interface StoreContext
public boolean getOrderDirtyObjects()
StoreContext
StoreContext.getDirtyObjects()
. Default is the store manager's decision.getOrderDirtyObjects
in interface StoreContext
public void setOrderDirtyObjects(boolean order)
StoreContext
StoreContext.getDirtyObjects()
. Default is the store manager's decision.setOrderDirtyObjects
in interface StoreContext
protected Collection getManagedStates()
protected Collection<StateManagerImpl> getTransactionalStates()
protected Collection getDirtyStates()
protected Collection getPendingTransactionalStates()
protected void setStateManager(Object id, StateManagerImpl sm, int status)
id
- the id previously used by the instancesm
- the state manager for the instance; if the state
manager is transient, we'll stop managing the instance;
if it has updated its oid, we'll re-cache under the new oidstatus
- one of our STATUS constants describing why we're
setting the state managerpublic void dirtyType(Class cls)
Broker
public Collection getPersistedTypes()
StoreContext
getPersistedTypes
in interface StoreContext
public Collection getUpdatedTypes()
StoreContext
getUpdatedTypes
in interface StoreContext
public Collection getDeletedTypes()
StoreContext
getDeletedTypes
in interface StoreContext
public boolean isClosed()
Broker
public boolean isCloseInvoked()
Broker
Broker.close()
has been invoked, though the broker might
remain open until the current managed transaction completes.isCloseInvoked
in interface Broker
public void close()
Broker
protected void free()
public void lock()
StoreContext
Multithreaded
flag is set to true. Make sure to call
StoreContext.unlock()
in a finally clause of the same method.lock
in interface StoreContext
public void unlock()
StoreContext
unlock
in interface StoreContext
public Object newInstance(Class cls)
Broker
cls
. If cls
is
an interface or an abstract class whose abstract methods follow the
JavaBeans convention, this method will create a concrete implementation
according to the metadata that defines the class.
Otherwise, if cls
is a managed type, this will return an
instance of the specified class.newInstance
in interface Broker
public Object getObjectId(Object obj)
StoreContext
getObjectId
in interface StoreContext
public int getLockLevel(Object o)
StoreContext
getLockLevel
in interface StoreContext
public Object getVersion(Object obj)
StoreContext
o
.getVersion
in interface StoreContext
public boolean isDirty(Object obj)
StoreContext
isDirty
in interface StoreContext
public boolean isTransactional(Object obj)
StoreContext
isTransactional
in interface StoreContext
public boolean isPersistent(Object obj)
StoreContext
isPersistent
in interface StoreContext
public boolean isNew(Object obj)
StoreContext
broker
.isNew
in interface StoreContext
public boolean isDeleted(Object obj)
StoreContext
isDeleted
in interface StoreContext
public boolean isDetached(Object obj)
Broker
true
if obj
is a detached object
(one that can be reattached to a Broker
via a call to
Broker.attach(java.lang.Object, boolean, org.apache.openjpa.kernel.OpCallbacks)
); otherwise returns false
.isDetached
in interface Broker
public boolean isDetached(Object obj, boolean find)
find
- - If true, as a last resort this method will check whether or not the provided object exists in the
DB. If it is in the DB, the provided object is detached.public OpenJPAStateManager getStateManager(Object obj)
StoreContext
obj
is not
a managed type or is managed by another context, throw an exception.getStateManager
in interface StoreContext
protected StateManagerImpl getStateManagerImpl(Object obj, boolean assertThisContext)
assertThisContext
- if true, thow an exception if the given
object is managed by another brokerprotected StateManagerImpl getStateManagerImplById(Object oid, boolean allowNew)
allowNew
- if true, objects made persistent in the current
transaction will be included in the search; if
multiple new objects match the given oid, it is
undefined which will be returnedprotected PersistenceCapable assertPersistenceCapable(Object obj)
PersistenceCapable
.
If the instance is not manageable throw the proper exception.public void assertOpen()
assertOpen
in interface Broker
public void assertActiveTransaction()
Broker
assertActiveTransaction
in interface Broker
public void assertNontransactionalRead()
Broker
assertNontransactionalRead
in interface Broker
public void assertWriteOperation()
Broker
assertWriteOperation
in interface Broker
public Object processArgument(Object oid)
FindCallbacks
OpenJPAException
for illegal value.processArgument
in interface FindCallbacks
public Object processReturn(Object oid, OpenJPAStateManager sm)
FindCallbacks
processReturn
in interface FindCallbacks
public boolean getPrintParameters()
protected void assignObjectId(Object cache, Object id, StateManagerImpl sm)
protected void checkForDuplicateId(Object id, Object obj, ClassMetaData meta)
public boolean getCachePreparedQuery()
Broker
getCachePreparedQuery
in interface Broker
public void setCachePreparedQuery(boolean flag)
Broker
setCachePreparedQuery
in interface Broker
public boolean getCacheFinderQuery()
public void setCacheFinderQuery(boolean flag)
public boolean isFromWriteBehindCallback()
public String getConnectionFactoryName()
getConnectionFactoryName
in interface StoreContext
public void setConnectionFactoryName(String connectionFactoryName)
setConnectionFactoryName
in interface StoreContext
public String getConnectionFactory2Name()
getConnectionFactory2Name
in interface StoreContext
public void setConnectionFactory2Name(String connectionFactory2Name)
setConnectionFactory2Name
in interface StoreContext
public Object getConnectionFactory()
getConnectionFactory
in interface StoreContext
public Object getConnectionFactory2()
getConnectionFactory2
in interface StoreContext
public boolean isCached(List<Object> oids)
StoreContext
isCached
in interface StoreContext
oids
- List of ObjectIds for PersistenceCapables which may be found in memory.public boolean getAllowReferenceToSiblingContext()
StoreContext
getAllowReferenceToSiblingContext
in interface StoreContext
public void setAllowReferenceToSiblingContext(boolean allow)
StoreContext
setAllowReferenceToSiblingContext
in interface StoreContext
protected boolean isFlushing()
public boolean getPostLoadOnMerge()
StoreContext
getPostLoadOnMerge
in interface StoreContext
false
by defaultpublic void setPostLoadOnMerge(boolean allow)
StoreContext
true
if the merge operation should trigger
a @PostLoad lifecycle event.setPostLoadOnMerge
in interface StoreContext
allow
- PostLoad lifecycle events to be triggered on a merge operationCopyright © 2006–2017 Apache Software Foundation. All rights reserved.