public abstract class AbstractLockManager extends AbstractNurseryService implements LockManager
LockManager
implementations to extend.GenericService.StartCommand, GenericService.StopCommand
Modifier and Type | Field and Description |
---|---|
protected neo.xredsys.content.ContentManager |
mContentManager
Deprecated.
|
protected EventManager |
mEventManager
Deprecated.
|
protected ObjectLoader |
mObjectLoader
Deprecated.
|
protected ResourceLockManager |
mResourceLockManager
Deprecated.
|
CLASS_VERSION
mLogger, state
Modifier | Constructor and Description |
---|---|
protected |
AbstractLockManager()
Deprecated.
|
Modifier and Type | Method and Description |
---|---|
protected void |
addActiveLock(IOTransaction pTransaction,
IOLockKeeper pKeeper,
String pHandle,
List<String> pLockHandles)
Deprecated.
|
IOTransaction |
breakAndLock(IOObject pObject,
IOLockKeeper pLockKeeper)
Deprecated.
This method will break the existing lock on an object, and re-lock
it.
|
IOTransaction |
breakAndLock(List<String> pLockHandles,
IOLockKeeper pLockKeeper)
Deprecated.
|
boolean |
breakLock(IOHashKey pHashKey)
Deprecated.
This method is similar to 'breakAndLock', except that it will not
re-lock the object.
|
boolean |
breakLock(IOObject pObject)
Deprecated.
This method is similar to 'breakAndLock', except that it will not
re-lock the object.
|
static void |
checkObjectForCreate(IOTransaction pTransaction)
Deprecated.
Checks if an
IOTransaction object is ready to be created as a new object. |
static void |
checkObjectForDelete(LockManager pLockManager,
IOTransaction pTransaction)
Deprecated.
Check if an
IOTransaction object is ready to be deleted. |
static void |
checkObjectForUpdate(LockManager pLockManager,
IOTransaction pTransaction)
Deprecated.
Check if an
IOTransaction object is ready to be updated. |
protected abstract IOTransaction |
createTransaction(IOObject pObject)
Deprecated.
Creates a transaction object from the given IOObject.
|
protected abstract boolean |
deleteLockImpl(IOHashKey pHashKey,
boolean pLocal)
Deprecated.
|
protected IOTransaction |
getActiveTransaction(IOObject pObject)
Deprecated.
|
neo.xredsys.content.ContentManager |
getContentManager()
Deprecated.
|
EventManager |
getEventManager()
Deprecated.
|
LockInfo |
getLockInfoFromIdentifier(IOHashKey pKey)
Deprecated.
|
LockInfo |
getLockInfoFromIdentifier(IOObject pObject)
Deprecated.
|
protected abstract LockInfo |
getLockInfoImpl(IOHashKey pKey)
Deprecated.
|
IOLockKeeper |
getLockKeeper(IOHashKey pHashKey)
Deprecated.
Get a reference to the lock keeper for an object.
|
IOLockKeeper |
getLockKeeper(IOObject pObject)
Deprecated.
Get a reference to the lock keeper for an object.
|
ObjectLoader |
getObjectLoader()
Deprecated.
|
ResourceLockManager |
getResourceLockManager()
Deprecated.
|
void |
handleEvent(IOEvent event)
Deprecated.
This method is called to let an event listener respond to an event.
|
boolean |
isActive(IOTransaction pTransaction)
Deprecated.
Checks whether or not the given transaction is active.
|
boolean |
isLocked(IOHashKey pHashKey)
Deprecated.
Check if an object is locked
|
boolean |
isLocked(IOObject pObject)
Deprecated.
Check if an object is locked
|
protected boolean |
isNewObject(IOObject pObject)
Deprecated.
Tests if an object is a new object.
|
IOTransaction |
lock(IOObject pObject,
IOLockKeeper pLockKeeper)
Deprecated.
Aquire a lock on an object.
|
IOTransaction |
lock(IOObject pObject,
List<String> pLockHandles,
IOLockKeeper pLockKeeper)
Deprecated.
Acquire a lock on the provided
IOObject using the provided lockhandles. |
IOTransaction |
lock(List<String> pLockHandles,
IOLockKeeper pLockKeeper)
Deprecated.
|
protected abstract IOTransaction |
lockImpl(IOObject pObject,
IOLockKeeper pLockKeeper,
List<String> pLockHandles)
Deprecated.
|
protected abstract IOTransaction |
lockImpl(IOObject pObject,
IOLockKeeper pLockKeeper,
String pHandle,
List<String> pLockHandles)
Deprecated.
|
protected abstract String |
obtainResourceLockImpl(URI pURI,
IOLockKeeper pLockKeeper,
List<String> pLockHandles,
String pMessage)
Deprecated.
|
void |
refreshLock(IOTransaction pTransaction)
Deprecated.
This method will refresh a lock when an object changes id.
|
protected abstract void |
refreshLockImpl(IOTransaction pTransaction,
String pHandle)
Deprecated.
|
boolean |
release(IOTransaction pObject)
Deprecated.
Release the lock on an object.
|
protected boolean |
releaseLock(LockInfo pLock,
boolean pLocal)
Deprecated.
Should be called by implementations whenever a lock is to be released.
|
protected neo.xredsys.api.AbstractLockManager.LockElement |
removeActiveLock(IOHashKey pKey)
Deprecated.
|
void |
setContentManager(neo.xredsys.content.ContentManager pContentManager)
Deprecated.
|
void |
setEventManager(EventManager pEventManager)
Deprecated.
|
void |
setObjectLoader(ObjectLoader pObjectLoader)
Deprecated.
|
void |
setResourceLockManager(ResourceLockManager pResourceLockManager)
Deprecated.
|
protected void |
startService()
Deprecated.
Is called by
AbstractNurseryService.doStartService() when the NurseryService is being started. |
protected void |
stopService()
Deprecated.
Is called by
AbstractNurseryService.doStopService() when the service is being shut down. |
protected void |
triggerEvent(IOHashKey key,
int type,
String pUsername)
Deprecated.
|
protected void |
triggerLockBrokenEvent(IOHashKey key)
Deprecated.
|
protected void |
triggerLockBrokenEvent(IOHashKey key,
String pUsername)
Deprecated.
|
protected void |
triggerLockedEvent(IOHashKey key,
String pUsername)
Deprecated.
|
protected void |
triggerLockTakenEvent(IOHashKey key)
Deprecated.
|
protected void |
triggerLockTakenEvent(IOHashKey key,
String pUsername)
Deprecated.
|
protected void |
triggerUnlockedEvent(IOHashKey key,
String pUsername)
Deprecated.
|
doStartService, doStopService, stopIdleService
assertServiceRunning, getServiceDescription, getServiceMessage, getServiceState, isServiceEnabled, isServiceFailed, isServiceIdle, isServiceRunning, isServiceShutdownFailed, isServiceStopped, setServiceDescription, setServiceEnabled, start, stop, validateIsTrue, validateNotNull
protected EventManager mEventManager
protected ResourceLockManager mResourceLockManager
protected ObjectLoader mObjectLoader
protected neo.xredsys.content.ContentManager mContentManager
protected void startService() throws Exception
AbstractNurseryService
Is called by AbstractNurseryService.doStartService()
when the NurseryService
is being started. Exceptions thrown by this
method are logged by AbstractNurseryService.doStartService()
.
Subclasses must implement this method to bootstrap the service.
startService
in class AbstractNurseryService
Exception
- when something goes wrong during startup. GenericService.isServiceRunning()
will return false
and GenericService.isServiceFailed()
will return true
.IllegalArgumentException
- when the configuration of the service
is invalid. GenericService.isServiceRunning()
will return false
and GenericService.isServiceFailed()
will return true
.IllegalStateException
- when this service is in the wrong state for startup. Used to signal to AbstractNurseryService.doStartService()
that it is OK to try to starting
this service
later. GenericService.isServiceRunning()
returns false
and GenericService.isServiceIdle()
returns true
.AbstractNurseryService.doStartService()
protected void stopService() throws Exception
AbstractNurseryService
Is called by AbstractNurseryService.doStopService()
when the service
is being shut down. Exceptions thrown by this
method are logged by AbstractNurseryService.doStopService()
.
Subclasses must implement this method to shut down the service.
stopService
in class AbstractNurseryService
IllegalStateException
- when this service is in the wrong state for shutdown. Used to signal to AbstractNurseryService.doStopService()
that
it is OK to try stopping this service
later. GenericService.isServiceRunning()
returns true
.Exception
- when something goes during shutdown. GenericService.isServiceRunning()
returns false
and
GenericService.isServiceShutdownFailed()
returns true
.AbstractNurseryService.doStopService()
public EventManager getEventManager()
public void setEventManager(EventManager pEventManager)
public ResourceLockManager getResourceLockManager()
public void setResourceLockManager(ResourceLockManager pResourceLockManager)
public ObjectLoader getObjectLoader()
public void setObjectLoader(ObjectLoader pObjectLoader)
protected abstract IOTransaction lockImpl(IOObject pObject, IOLockKeeper pLockKeeper, String pHandle, List<String> pLockHandles) throws IllegalArgumentException, IllegalOperationException
protected abstract IOTransaction lockImpl(IOObject pObject, IOLockKeeper pLockKeeper, List<String> pLockHandles) throws IllegalArgumentException, IllegalOperationException
protected abstract void refreshLockImpl(IOTransaction pTransaction, String pHandle)
protected abstract boolean deleteLockImpl(IOHashKey pHashKey, boolean pLocal) throws IllegalOperationException
IllegalOperationException
public IOTransaction lock(List<String> pLockHandles, IOLockKeeper pLockKeeper) throws IllegalArgumentException, IllegalOperationException
lock
in interface LockManager
IllegalArgumentException
IllegalOperationException
public IOTransaction lock(IOObject pObject, List<String> pLockHandles, IOLockKeeper pLockKeeper) throws IllegalArgumentException, IllegalOperationException
LockManager
IOObject
using the provided lockhandles. Locking the object will fail
if one or more of the lockhandles are already locked by someone else.lock
in interface LockManager
pObject
- the object to lock. The object may not be nullpLockHandles
- zero or more lockhandlespLockKeeper
- a lock keeper to notify if the object's lock is broken; if keeper is null, no notification will be
given on a broken lockIOTransaction
if locking the object succeededIllegalArgumentException
- if the object is nullIllegalOperationException
- if locking the object failedpublic IOTransaction lock(IOObject pObject, IOLockKeeper pLockKeeper) throws IllegalArgumentException, IllegalOperationException
LockManager
LockManager.breakLock(neo.xredsys.api.IOObject)
or LockManager.breakAndLock(neo.xredsys.api.IOObject, neo.xredsys.api.IOLockKeeper)
will generate a notification to the existing
LockKeeper.lock
in interface LockManager
pObject
- the object to be lockedpLockKeeper
- a lock keeper to notify if the object's lock is
broken; if keeper is null, no notification will be
given on a broken lockIllegalArgumentException
- if object is nullIllegalOperationException
- if the object is already locked, or if the object couldn't create an IOTransaction objectprotected abstract IOTransaction createTransaction(IOObject pObject) throws IllegalOperationException
pObject
- the objectIllegalOperationException
- if creating the transaction failsprotected abstract String obtainResourceLockImpl(URI pURI, IOLockKeeper pLockKeeper, List<String> pLockHandles, String pMessage) throws AlreadyLockedException
AlreadyLockedException
public final void refreshLock(IOTransaction pTransaction)
LockManager
refreshLock
in interface LockManager
pTransaction
- the object whose lock to refreshpublic IOTransaction breakAndLock(List<String> pLockHandles, IOLockKeeper pLockKeeper) throws IllegalArgumentException, IllegalOperationException
breakAndLock
in interface LockManager
IllegalArgumentException
IllegalOperationException
public final IOTransaction breakAndLock(IOObject pObject, IOLockKeeper pLockKeeper) throws IllegalArgumentException, IllegalOperationException
LockManager
breakAndLock
in interface LockManager
pObject
- the object to be lockedpLockKeeper
- a lock keeper to notify if the object's lock is brokenIllegalArgumentException
- if object is nullIllegalOperationException
- if object is a new object that doesn't exist in the databasepublic final boolean breakLock(IOObject pObject) throws IllegalArgumentException, IllegalOperationException
LockManager
breakLock
in interface LockManager
pObject
- the object that will be unlockedIllegalArgumentException
- if object is nullIllegalOperationException
- if the object isn't locked, or the object is new.public final boolean breakLock(IOHashKey pHashKey) throws IllegalArgumentException, IllegalOperationException
LockManager
breakLock
in interface LockManager
pHashKey
- the object that will be unlockedIllegalArgumentException
- if object is nullIllegalOperationException
- if the object isn't locked.public final boolean release(IOTransaction pObject) throws IllegalOperationException
LockManager
release
in interface LockManager
pObject
- the object to releaseIllegalOperationException
- if object is not the IOTransaction that was returned by lock or breakAndLockprotected final boolean releaseLock(LockInfo pLock, boolean pLocal) throws IllegalOperationException
pLock
- information about the lockpLocal
- true
if only local locks should be releasedtrue
if any locks was releasedPersistentStoreException
- if an error occurs in the persistence storeIllegalOperationException
- if the lock could not be releasedpublic boolean isActive(IOTransaction pTransaction)
LockManager
isActive
in interface LockManager
pTransaction
- the transaction to checkprotected final IOTransaction getActiveTransaction(IOObject pObject)
protected final void addActiveLock(IOTransaction pTransaction, IOLockKeeper pKeeper, String pHandle, List<String> pLockHandles)
protected final neo.xredsys.api.AbstractLockManager.LockElement removeActiveLock(IOHashKey pKey)
protected final boolean isNewObject(IOObject pObject)
getId() == ID_INVALID
.pObject
- the object to testtrue
if the object is considered new.public final boolean isLocked(IOObject pObject)
LockManager
isLocked
in interface LockManager
public final boolean isLocked(IOHashKey pHashKey)
LockManager
isLocked
in interface LockManager
public final IOLockKeeper getLockKeeper(IOObject pObject)
LockManager
getLockKeeper
in interface LockManager
public final IOLockKeeper getLockKeeper(IOHashKey pHashKey)
LockManager
getLockKeeper
in interface LockManager
public final LockInfo getLockInfoFromIdentifier(IOObject pObject)
getLockInfoFromIdentifier
in interface LockManager
public final LockInfo getLockInfoFromIdentifier(IOHashKey pKey)
getLockInfoFromIdentifier
in interface LockManager
public static void checkObjectForCreate(IOTransaction pTransaction) throws IllegalOperationException
IOTransaction
object is ready to be created as a new object.
This method will throw an IllegalOperationException
if
isLocked
)isNewObject
)ObjectUpdater
.pTransaction
- the transaction to testIllegalOperationException
- if any of the preconditions above failspublic static void checkObjectForUpdate(LockManager pLockManager, IOTransaction pTransaction) throws IllegalOperationException
IOTransaction
object is ready to be updated.
This method will throw an IllegalOperationException
if
isLocked
)isActive
)isNewObject
)ObjectUpdater
.pLockManager
- the lock manager to usepTransaction
- the transaction to testIllegalOperationException
- if any of the preconditions above failspublic static void checkObjectForDelete(LockManager pLockManager, IOTransaction pTransaction) throws IllegalOperationException
IOTransaction
object is ready to be deleted.
This method will throw an IllegalOperationException
if
isLocked
)isActive
)isNewObject
)ObjectUpdater
.pLockManager
- the lock manager to usepTransaction
- the transaction to testIllegalOperationException
- if any of the preconditions above failsprotected void triggerUnlockedEvent(IOHashKey key, String pUsername)
protected void triggerLockBrokenEvent(IOHashKey key)
protected void triggerLockBrokenEvent(IOHashKey key, String pUsername)
protected void triggerLockTakenEvent(IOHashKey key)
protected void triggerLockTakenEvent(IOHashKey key, String pUsername)
public void handleEvent(IOEvent event)
IOEventListener
handleEvent
in interface IOEventListener
event
- the eventpublic void setContentManager(neo.xredsys.content.ContentManager pContentManager)
public neo.xredsys.content.ContentManager getContentManager()
© 1998- 2018 Stibo DX