Package org.apache.openjpa.slice
Class DistributedBrokerImpl
- java.lang.Object
 - 
- org.apache.openjpa.kernel.BrokerImpl
 - 
- org.apache.openjpa.kernel.FinalizingBrokerImpl
 - 
- org.apache.openjpa.slice.DistributedBrokerImpl
 
 
 
 
- 
- All Implemented Interfaces:
 jakarta.transaction.Synchronization,Serializable,Cloneable,CallbackModes,AutoClear,AutoDetach,Broker,ConnectionRetainModes,DetachState,FindCallbacks,LockLevels,RestoreState,StoreContext,Closeable,DistributedBroker
public class DistributedBrokerImpl extends FinalizingBrokerImpl implements DistributedBroker
A specialized Broker to associate slice identifiers with the StateManagers as they are persisted in a cascade. This intervention helps the user to define distribution policy only for root instances i.e. the instances that are explicit argument to persist() call. The cascaded instances are assigned the same slice to honor collocation constraint.- Author:
 - Pinaki Poddar
 - See Also:
 - Serialized Form
 
 
- 
- 
Nested Class Summary
- 
Nested classes/interfaces inherited from class org.apache.openjpa.kernel.BrokerImpl
BrokerImpl.StateManagerId 
 - 
 
- 
Field Summary
- 
Fields inherited from class org.apache.openjpa.kernel.BrokerImpl
FLUSH_COMMIT, FLUSH_INC, FLUSH_LOGICAL, FLUSH_ROLLBACK 
- 
Fields inherited from interface org.apache.openjpa.kernel.AutoClear
CLEAR_ALL, CLEAR_DATASTORE 
- 
Fields inherited from interface org.apache.openjpa.kernel.AutoDetach
DETACH_CLOSE, DETACH_COMMIT, DETACH_NONE, DETACH_NONTXREAD, DETACH_ROLLBACK, names, values 
- 
Fields inherited from interface org.apache.openjpa.event.CallbackModes
CALLBACK_FAIL_FAST, CALLBACK_IGNORE, CALLBACK_LOG, CALLBACK_RETHROW, CALLBACK_ROLLBACK 
- 
Fields inherited from interface org.apache.openjpa.kernel.ConnectionRetainModes
CONN_RETAIN_ALWAYS, CONN_RETAIN_DEMAND, CONN_RETAIN_TRANS 
- 
Fields inherited from interface org.apache.openjpa.kernel.DetachState
DETACH_ALL, DETACH_FETCH_GROUPS, DETACH_FGS, DETACH_LOADED 
- 
Fields inherited from interface org.apache.openjpa.kernel.LockLevels
LOCK_NONE, LOCK_READ, LOCK_WRITE 
- 
Fields inherited from interface org.apache.openjpa.kernel.RestoreState
RESTORE_ALL, RESTORE_IMMUTABLE, RESTORE_NONE 
- 
Fields inherited from interface org.apache.openjpa.kernel.StoreContext
EXCLUDE_ALL, OID_ALLOW_NEW, OID_COPY, OID_NODELETED, OID_NOVALIDATE 
 - 
 
- 
Constructor Summary
Constructors Constructor Description DistributedBrokerImpl() 
- 
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidbeginStore()A virtual datastore need not be opened.booleanendOperation()Mark the operation over.protected voidflush(int reason)Flush the transactional state to the data store.DistributedConfigurationgetConfiguration()Return the configuration associated with this context.DistributedStoreManagergetDistributedStoreManager()Gets the distributed store manager used by this receiver.TargetFetchConfigurationgetFetchConfiguration()Return the (mutable) fetch configuration for loading objects from this context.voidlock()Always uses lock irrespective of super's multi-threaded settings.protected QueryImplnewQueryImpl(String lang, StoreQuery sq)Create a new query.OpenJPAStateManagerpersist(Object pc, Object id, boolean explicit, OpCallbacks call)Assigns slice identifier to the resultant StateManager as initialized by the super class implementation.ObjectprocessArgument(Object oid)Overrides to target specific slices for find() calls.protected voidsetStateManager(Object id, StateManagerImpl sm, int status)Set the cached StateManager for the instance that had the given oid.voidunlock()Releases the internal lock.- 
Methods inherited from class org.apache.openjpa.kernel.FinalizingBrokerImpl
finalize 
- 
Methods inherited from class org.apache.openjpa.kernel.BrokerImpl
addLifecycleListener, addTransactionListener, afterCompletion, assertActiveTransaction, assertNontransactionalRead, assertOpen, assertPersistenceCapable, assertWriteOperation, assignObjectId, attach, attachAll, beforeCompletion, begin, beginOperation, cancelAll, checkForDuplicateId, clearStatusFlag, clone, close, commit, commitAndResume, delete, deleteAll, detach, detachAll, detachAll, detachAll, dirtyType, embed, endTransaction, evict, evictAll, evictAll, evictAll, extentIterator, find, find, find, findAll, findAll, findAll, findCached, flush, free, getAllowReferenceToSiblingContext, getAutoClear, getAutoDetach, getBroker, getBrokerFactory, getCacheFinderQuery, getCachePreparedQuery, getClassLoader, getConnection, getConnectionFactory, getConnectionFactory2, getConnectionFactory2Name, getConnectionFactoryName, getConnectionPassword, getConnectionRetainMode, getConnectionUserName, getDeletedTypes, getDetachState, getDirtyObjects, getDirtyStates, getEvictFromDataCache, getIdentitySequence, getIgnoreChanges, getInverseManager, getLifecycleEventManager, getLifecycleListenerCallbackMode, getLockLevel, getLockManager, getManagedObjects, getManagedRuntime, getManagedStates, getMultithreaded, getNontransactionalRead, getNontransactionalWrite, getObjectId, getObjectIdType, getOperatingSet, getOptimistic, getOrderDirtyObjects, getPendingTransactionalObjects, getPendingTransactionalStates, getPersistedTypes, getPopulateDataCache, getPostLoadOnMerge, getPrintParameters, getProperties, getRestoreState, getRetainState, getRollbackCause, getRollbackOnly, getStateManager, getStateManagerImpl, getStateManagerImplById, getStoreManager, getSupportedProperties, getSuppressBatchOLELogging, getSynchronization, getSyncWithManagedTransactions, getTransactionalObjects, getTransactionalStates, getTransactionListenerCallbackMode, getTransactionListeners, getUpdatedTypes, getUserObject, getValueSequence, getVersion, hasConnection, initialize, initialize, initialize, isActive, isCached, isClosed, isCloseInvoked, isDeleted, isDetached, isDetached, isDetachedNew, isDirty, isFlushing, isFromWriteBehindCallback, isLoading, isManaged, isNew, isPersistent, isStoreActive, isTrackChangesByType, isTransactional, lock, lock, lockAll, lockAll, newExtent, newInstance, newManagedObjectCache, newObjectId, newQuery, newQuery, newStateManagerImpl, nontransactional, nontransactionalAll, persist, persist, persist, persist, persistAll, persistAll, popFetchConfiguration, preFlush, processReturn, pushFetchConfiguration, pushFetchConfiguration, putUserObject, refresh, refreshAll, refreshInternal, refreshInternal, release, releaseAll, releaseSavepoint, releaseSavepoint, removeLifecycleListener, removeTransactionListener, retrieve, retrieveAll, rollback, rollbackAndResume, rollbackToSavepoint, rollbackToSavepoint, setAllowReferenceToSiblingContext, setAuthentication, setAutoClear, setAutoDetach, setAutoDetach, setCacheFinderQuery, setCachePreparedQuery, setConnectionFactory2Name, setConnectionFactoryName, setDetachedNew, setDetachState, setEvictFromDataCache, setIgnoreChanges, setImplicitBehavior, setLifecycleListenerCallbackMode, setMultithreaded, setNontransactionalRead, setNontransactionalWrite, setOptimistic, setOrderDirtyObjects, setPopulateDataCache, setPostLoadOnMerge, setRestoreState, setRetainState, setRollbackOnly, setRollbackOnly, setSavepoint, setStatusFlag, setSuppressBatchOLELogging, setSynchronization, setSyncWithManagedTransactions, setTrackChangesByType, setTransactionListenerCallbackMode, syncWithManagedTransaction, transactional, transactionalAll, validateChanges 
- 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait 
- 
Methods inherited from interface org.apache.openjpa.kernel.Broker
addLifecycleListener, addTransactionListener, assertActiveTransaction, assertNontransactionalRead, assertOpen, assertWriteOperation, attach, attachAll, begin, beginOperation, cancelAll, close, commit, commitAndResume, delete, deleteAll, detach, detachAll, detachAll, detachAll, dirtyType, evict, evictAll, evictAll, evictAll, flush, getAutoClear, getAutoDetach, getBrokerFactory, getCachePreparedQuery, getConnectionRetainMode, getEvictFromDataCache, getIdentitySequence, getIgnoreChanges, getInverseManager, getLifecycleEventManager, getLifecycleListenerCallbackMode, getManagedRuntime, getMultithreaded, getNontransactionalRead, getNontransactionalWrite, getOptimistic, getProperties, getRestoreState, getRetainState, getRollbackCause, getRollbackOnly, getSupportedProperties, getSyncWithManagedTransactions, getTransactionListenerCallbackMode, getTransactionListeners, getUserObject, getValueSequence, isClosed, isCloseInvoked, isDetached, isDetachedNew, lock, lock, lockAll, lockAll, newExtent, newInstance, newQuery, newQuery, persist, persist, persistAll, preFlush, putUserObject, refresh, refreshAll, release, releaseAll, releaseSavepoint, releaseSavepoint, removeLifecycleListener, removeTransactionListener, rollback, rollbackAndResume, rollbackToSavepoint, rollbackToSavepoint, setAutoClear, setAutoDetach, setAutoDetach, setCachePreparedQuery, setDetachedNew, setEvictFromDataCache, setIgnoreChanges, setImplicitBehavior, setLifecycleListenerCallbackMode, setMultithreaded, setNontransactionalRead, setNontransactionalWrite, setOptimistic, setRestoreState, setRetainState, setRollbackOnly, setRollbackOnly, setSavepoint, setSyncWithManagedTransactions, setTransactionListenerCallbackMode, syncWithManagedTransaction, validateChanges 
- 
Methods inherited from interface org.apache.openjpa.kernel.StoreContext
embed, extentIterator, find, find, findAll, findAll, findCached, getAllowReferenceToSiblingContext, getBroker, getClassLoader, getConnection, getConnectionFactory, getConnectionFactory2, getConnectionFactory2Name, getConnectionFactoryName, getConnectionPassword, getConnectionUserName, getDeletedTypes, getDetachState, getDirtyObjects, getLockLevel, getLockManager, getManagedObjects, getObjectId, getObjectIdType, getOrderDirtyObjects, getPendingTransactionalObjects, getPersistedTypes, getPopulateDataCache, getPostLoadOnMerge, getStateManager, getStoreManager, getTransactionalObjects, getUpdatedTypes, getVersion, hasConnection, isActive, isCached, isDeleted, isDirty, isManaged, isNew, isPersistent, isStoreActive, isTrackChangesByType, isTransactional, newObjectId, nontransactional, nontransactionalAll, popFetchConfiguration, pushFetchConfiguration, pushFetchConfiguration, retrieve, retrieveAll, setAllowReferenceToSiblingContext, setConnectionFactory2Name, setConnectionFactoryName, setDetachState, setOrderDirtyObjects, setPopulateDataCache, setPostLoadOnMerge, setTrackChangesByType, transactional, transactionalAll 
 - 
 
 - 
 
- 
- 
Method Detail
- 
getConfiguration
public DistributedConfiguration getConfiguration()
Description copied from interface:StoreContextReturn the configuration associated with this context.- Specified by:
 getConfigurationin interfaceStoreContext- Overrides:
 getConfigurationin classBrokerImpl
 
- 
getDistributedStoreManager
public DistributedStoreManager getDistributedStoreManager()
Description copied from interface:DistributedBrokerGets the distributed store manager used by this receiver.- Specified by:
 getDistributedStoreManagerin interfaceDistributedBroker
 
- 
getFetchConfiguration
public TargetFetchConfiguration getFetchConfiguration()
Description copied from interface:StoreContextReturn the (mutable) fetch configuration for loading objects from this context.- Specified by:
 getFetchConfigurationin interfaceDistributedBroker- Specified by:
 getFetchConfigurationin interfaceStoreContext- Overrides:
 getFetchConfigurationin classBrokerImpl
 
- 
persist
public OpenJPAStateManager persist(Object pc, Object id, boolean explicit, OpCallbacks call)
Assigns slice identifier to the resultant StateManager as initialized by the super class implementation. The slice identifier is decided byDistributionPolicyfor givenpcif it is a root instance i.e. the argument of the user application's persist() call. The cascaded instances are detected by non-empty status of the current operating set. The slice is assigned only if a StateManager has never been assigned before.- Overrides:
 persistin classBrokerImpl
 
- 
setStateManager
protected void setStateManager(Object id, StateManagerImpl sm, int status)
Description copied from class:BrokerImplSet the cached StateManager for the instance that had the given oid. This method must not be called multiple times for new instances.- Overrides:
 setStateManagerin classBrokerImpl- Parameters:
 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 manager
 
- 
endOperation
public boolean endOperation()
Description copied from class:BrokerImplMark the operation over. If outermost caller of stack, returns true and will detach managed instances if necessary.- Specified by:
 endOperationin interfaceBroker- Overrides:
 endOperationin classBrokerImpl- Returns:
 - whether this is the outermost operation on the stack
 
 
- 
newQueryImpl
protected QueryImpl newQueryImpl(String lang, StoreQuery sq)
Create a new query.- Overrides:
 newQueryImplin classBrokerImpl
 
- 
lock
public void lock()
Always uses lock irrespective of super's multi-threaded settings.- Specified by:
 lockin interfaceStoreContext- Overrides:
 lockin classBrokerImpl
 
- 
unlock
public void unlock()
Description copied from interface:StoreContextReleases the internal lock.- Specified by:
 unlockin interfaceStoreContext- Overrides:
 unlockin classBrokerImpl
 
- 
beginStore
public void beginStore()
A virtual datastore need not be opened.- Specified by:
 beginStorein interfaceStoreContext- Overrides:
 beginStorein classBrokerImpl
 
- 
flush
protected void flush(int reason)
Description copied from class:BrokerImplFlush the transactional state to the data store. Subclasses that customize commit behavior should override this method. The method assumes that the persistence manager is locked, is not closed, and has an active transaction.- Overrides:
 flushin classBrokerImpl- Parameters:
 reason- one ofBrokerImpl.FLUSH_INC,BrokerImpl.FLUSH_COMMIT,BrokerImpl.FLUSH_ROLLBACK, orBrokerImpl.FLUSH_LOGICAL
 
- 
processArgument
public Object processArgument(Object oid)
Overrides to target specific slices for find() calls.- Specified by:
 processArgumentin interfaceFindCallbacks- Overrides:
 processArgumentin classBrokerImpl- Returns:
 - the id to look up, or null to ignore this argument
 
 
 - 
 
 -