|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectwt.services.StandardManager
wt.locks.StandardLockService
Provides an abstraction of the standard implementation of server-side functionality as defined by the LockService interface. This class can be augmented and/or extended to enhance functionality.
As defined by the standard locking service's access control rules, when attempting to lock an object if it is not already locked and the given principal has modify access to the object then it is locked. When attempting to unlock an object if it is already locked and the given principal has administrative access, or is the given principal is the one who originally placed the lock and has modify access to the object then it is unlocked. Otherwise, an exception is thrown indicating the failure. Additionally, when a lock is placed on an object by a principal, that user or group is the only agency able to then modify the object while it's in a locked state.
Event-based processing is performed on business objects asserted as being lockable during [preparation for] database modifications and full restorations. When a business object is [prepared for] being modified in the database this class listens to a dispatched event indicating that the modify is about to commence and vetoes it if the business object is locked and the current session's principal is not the one who originally placed the lock. Otherwise, the modification is allowed to take place. So it is valid to modify a business object that's lockable if it isn't locked. When a business object is being fully restored from the database this class listens to a dispatched event indicating that the full restoration is commencing and restores the lock cookie's locker reference.
If the standard implementation is not desired then a custom implementation can extend from LockService alongside the standard implementation, and be used as the default locking service.
Use the newStandardLockService
static factory method(s),
not the StandardLockService
constructor, to construct instances
of this class. Instances must be constructed using the static factory(s),
in order to ensure proper initialization of the instance.
Supported API: true
Extendable: false
StandardManager
,
LockServiceEvent
,
wt.fc.PersistenceManagerEvent.PREPARE_FOR_MODIFICATION
,
wt.fc.PersistenceManagerEvent.PRE_MODIFY
,
wt.fc.PersistenceManagerEvent.FULL_RESTORE
,
Serialized FormField Summary | |
private static String |
CLASSNAME
|
private static boolean |
LEAVE_MODIFY_DATE
|
private static String |
RESOURCE
|
Fields inherited from class wt.services.StandardManager |
|
Fields inherited from interface wt.services.Manager |
MANAGER_SERVICE, STARTUP_AUTOMATIC, STARTUP_MANUAL, STATUS_EMERGENCY_SHUTDOWN, STATUS_EMERGENCY_SHUTTING_DOWN, STATUS_SHUTDOWN, STATUS_SHUTDOWN_ERRORS, STATUS_SHUTDOWN_FAILURE, STATUS_SHUTTING_DOWN, STATUS_STARTED, STATUS_STARTED_ERRORS, STATUS_STARTING_UP, STATUS_STARTUP_FAILURE |
Constructor Summary | |
StandardLockService()
|
Method Summary | |
protected void |
dispatchVetoableEvent(String eventType,
Lockable object)
Dispatches a LockServiceEvent that includes the event type and target (i.e., Lockable object). |
String |
getConceptualClassname()
Deprecated. |
Lockable |
lock(Lockable object)
Defaults the note to be null, the principal to be null, which makes the principal the session's user, and invokes the main lock method. |
Lockable |
lock(Lockable object,
String note)
Defaults the principal to be null, which makes the principal the session's user, and invokes the main lock method. |
Lockable |
lock(Lockable object,
WTPrincipalReference locker)
Defaults the note to be null and invokes the main lock method. |
Lockable |
lock(Lockable object,
WTPrincipalReference locker,
String note)
Provides server-side functionality for the locking of business objects. |
static StandardLockService |
newStandardLockService()
Default factory for the class. |
protected void |
performStartupProcess()
Overrides the startup process specific to the locking service to provide custom startup for event subscription. |
void |
registerEvents(ManagerService manager)
Overrides the registration of all applicable locking service events with the service manager. |
protected void |
restoreLock(Lockable object)
Restores the locker of the lockable object's lock. |
Lockable |
unlock(Lockable object)
Defaults the principal to be null, which makes the principal the session's user, and invokes the main unlock method. |
Lockable |
unlock(Lockable object,
WTPrincipalReference locker)
Provides server-side functionality for releasing a business object's lock. |
protected void |
validateLock(Lockable object)
Vetoes a database modify if the object has been locked and if the current session's principal is not the one who placed the lock. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
private static final String RESOURCE
private static final String CLASSNAME
private static final boolean LEAVE_MODIFY_DATE
Constructor Detail |
public StandardLockService()
Method Detail |
public String getConceptualClassname()
getConceptualClassname
in interface NetFactor
getConceptualClassname
in class StandardManager
public void registerEvents(ManagerService manager)
registerEvents
in interface Manager
registerEvents
in class StandardManager
manager
- protected void dispatchVetoableEvent(String eventType, Lockable object) throws WTException, WTPropertyVetoException
eventType
- The name of the PersistentManagerEvent type.object
- The target of the persistable operation.
WTException
WTPropertyVetoException
protected void performStartupProcess() throws ManagerException
performStartupProcess
in class StandardManager
ManagerException
protected void validateLock(Lockable object) throws WTException, LockException
object
-
WTException
LockException
protected void restoreLock(Lockable object) throws WTException, LockException
object
-
WTException
LockException
public static StandardLockService newStandardLockService() throws WTException
WTException
public Lockable lock(Lockable object, WTPrincipalReference locker, String note) throws WTException, LockException, WTPropertyVetoException, PersistenceException
However, if an object is lockable but has not yet been locked, then any agency has unrestricted access to the object until it has been locked.
lock
in interface LockService
object
- locker
- note
-
WTException
LockException
WTPropertyVetoException
PersistenceException
public Lockable lock(Lockable object, WTPrincipalReference locker) throws WTException, LockException, WTPropertyVetoException, PersistenceException
lock
in interface LockService
object
- locker
-
WTException
LockException
WTPropertyVetoException
PersistenceException
LockService.lock(Lockable,WTPrincipalReference,String)
public Lockable lock(Lockable object, String note) throws WTException, LockException, WTPropertyVetoException, PersistenceException
lock
in interface LockService
object
- note
-
WTException
LockException
WTPropertyVetoException
PersistenceException
LockService.lock(Lockable,WTPrincipalReference,String)
public Lockable lock(Lockable object) throws WTException, LockException, WTPropertyVetoException, PersistenceException
lock
in interface LockService
object
-
WTException
LockException
WTPropertyVetoException
PersistenceException
LockService.lock(Lockable,WTPrincipalReference,String)
public Lockable unlock(Lockable object, WTPrincipalReference locker) throws WTException, LockException, WTPropertyVetoException, PersistenceException
unlock
in interface LockService
object
- locker
-
WTException
LockException
WTPropertyVetoException
PersistenceException
public Lockable unlock(Lockable object) throws WTException, LockException, WTPropertyVetoException, PersistenceException
unlock
in interface LockService
object
-
WTException
LockException
WTPropertyVetoException
PersistenceException
LockService.unlock(Lockable,WTPrincipalReference)
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |