01: /* Copyright 2002 The JA-SIG Collaborative. All rights reserved.
02: * See license distributed with this file and
03: * available online at http://www.uportal.org/license.html
04: */
05:
06: package org.jasig.portal.concurrency;
07:
08: import java.util.Date;
09:
10: /**
11: * Defines a lock associated with an owner and a portal entity that
12: * guarantees some degree of exclusive access to the entity, depending on
13: * <code>lockType</code> and <code>expirationTime</code>.
14: *
15: * See IEntityLockService for the rules governing lock assignment
16: * and a code example.
17: *
18: * @author Dan Ellentuck
19: * @version $Revision: 34757 $
20: * @see org.jasig.portal.concurrency.IEntityLockService
21: */
22: public interface IEntityLock {
23:
24: /**
25: * Attempts to change the <code>lockType</code> of this lock to
26: * <code>newType</code>. The <code>expirationTime</code> is renewed.
27: *
28: * @param newType int
29: * @exception org.jasig.portal.concurrency.LockingException - if the conversion fails.
30: */
31: public void convert(int newType) throws LockingException;
32:
33: /**
34: * Attempts to change the <code>lockType</code> of this lock to
35: * <code>newType</code>. The <code>expirationTime</code> is extended
36: * <code>newDuration</code> seconds.
37: *
38: * @param newType int
39: * @param newDuration int
40: * @exception org.jasig.portal.concurrency.LockingException - if the conversion fails.
41: */
42: public void convert(int newType, int newDuration)
43: throws LockingException;
44:
45: /**
46: * @return java.lang.String
47: */
48: public String getEntityKey();
49:
50: /**
51: * @see org.jasig.portal.EntityTypes for known types.
52: * @return java.lang.Class
53: */
54: public Class getEntityType();
55:
56: /**
57: * @return java.util.Date
58: */
59: public Date getExpirationTime();
60:
61: /**
62: * Could be the portal user or the framework or ...?
63: * @return java.lang.String
64: */
65: public String getLockOwner();
66:
67: /**
68: * See IEntityLockingService for a description of lock types.
69: * @return int
70: */
71: public int getLockType();
72:
73: /**
74: * Answers if this lock is still good.
75: */
76: public boolean isValid() throws LockingException;
77:
78: /**
79: * Invalidate the lock.
80: */
81: public void release() throws LockingException;
82:
83: /**
84: * Extends the expiration time of this lock for a service-defined period.
85: */
86: public void renew() throws LockingException;
87:
88: /**
89: * Extends the expiration time of this lock for <code>duration</code> seconds.
90: */
91: public void renew(int duration) throws LockingException;
92: }
|