org.apache.openjpa.slice
Class DistributedBrokerImpl

java.lang.Object
  extended by org.apache.openjpa.kernel.BrokerImpl
      extended by org.apache.openjpa.kernel.FinalizingBrokerImpl
          extended by org.apache.openjpa.slice.DistributedBrokerImpl
All Implemented Interfaces:
Serializable, Cloneable, Synchronization, 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

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.StoreContext
EXCLUDE_ALL, OID_ALLOW_NEW, OID_COPY, OID_NODELETED, OID_NOVALIDATE
 
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.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
 
Constructor Summary
DistributedBrokerImpl()
           
 
Method Summary
 void beginStore()
          A virtual datastore need not be opened.
 boolean endOperation()
          Mark the operation over.
 DistributedConfiguration getConfiguration()
          Return the configuration associated with this context.
 DistributedStoreManager getDistributedStoreManager()
          Gets the distributed store manager used by this receiver.
 TargetFetchConfiguration getFetchConfiguration()
          Return the (mutable) fetch configuration for loading objects from this context.
 void lock()
          Always uses lock irrespective of super's multi-threaded settings.
protected  QueryImpl newQueryImpl(String lang, StoreQuery sq)
          Create a new query.
 OpenJPAStateManager persist(Object pc, Object id, boolean explicit, OpCallbacks call)
          Assigns slice identifier to the resultant StateManager as initialized by the super class implementation.
 Object processArgument(Object oid)
          Overrides to target specific slices for find() calls.
protected  void setStateManager(Object id, StateManagerImpl sm, int status)
          Set the cached StateManager for the instance that had the given oid.
 void unlock()
          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, 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, 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, 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 javax.transaction.Synchronization
afterCompletion, beforeCompletion
 
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
 

Constructor Detail

DistributedBrokerImpl

public DistributedBrokerImpl()
Method Detail

getConfiguration

public DistributedConfiguration getConfiguration()
Description copied from interface: StoreContext
Return the configuration associated with this context.

Specified by:
getConfiguration in interface StoreContext
Overrides:
getConfiguration in class BrokerImpl

getDistributedStoreManager

public DistributedStoreManager getDistributedStoreManager()
Description copied from interface: DistributedBroker
Gets the distributed store manager used by this receiver.

Specified by:
getDistributedStoreManager in interface DistributedBroker

getFetchConfiguration

public TargetFetchConfiguration getFetchConfiguration()
Description copied from interface: StoreContext
Return the (mutable) fetch configuration for loading objects from this context.

Specified by:
getFetchConfiguration in interface StoreContext
Specified by:
getFetchConfiguration in interface DistributedBroker
Overrides:
getFetchConfiguration in class BrokerImpl

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 by DistributionPolicy for given pc if 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:
persist in class BrokerImpl

setStateManager

protected void setStateManager(Object id,
                               StateManagerImpl sm,
                               int status)
Description copied from class: BrokerImpl
Set the cached StateManager for the instance that had the given oid. This method must not be called multiple times for new instances.

Overrides:
setStateManager in class BrokerImpl
Parameters:
id - the id previously used by the instance
sm - 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 oid
status - one of our STATUS constants describing why we're setting the state manager

endOperation

public boolean endOperation()
Description copied from class: BrokerImpl
Mark the operation over. If outermost caller of stack, returns true and will detach managed instances if necessary.

Specified by:
endOperation in interface Broker
Overrides:
endOperation in class BrokerImpl
Returns:
whether this is the outermost operation on the stack

newQueryImpl

protected QueryImpl newQueryImpl(String lang,
                                 StoreQuery sq)
Create a new query.

Overrides:
newQueryImpl in class BrokerImpl

lock

public void lock()
Always uses lock irrespective of super's multi-threaded settings.

Specified by:
lock in interface StoreContext
Overrides:
lock in class BrokerImpl

unlock

public void unlock()
Description copied from interface: StoreContext
Releases the internal lock.

Specified by:
unlock in interface StoreContext
Overrides:
unlock in class BrokerImpl

beginStore

public void beginStore()
A virtual datastore need not be opened.

Specified by:
beginStore in interface StoreContext
Overrides:
beginStore in class BrokerImpl

processArgument

public Object processArgument(Object oid)
Overrides to target specific slices for find() calls.

Specified by:
processArgument in interface FindCallbacks
Overrides:
processArgument in class BrokerImpl
Returns:
the id to look up, or null to ignore this argument


Copyright © 2006-2012 Apache Software Foundation. All Rights Reserved.