- From: Geoffrey M Clemm <geoffrey.clemm@us.ibm.com>
- Date: Thu, 8 Jul 2004 23:06:15 +0200
- To: " webdav" <w3c-dist-auth@w3.org>
- Message-ID: <OF0D255863.42C43E6F-ONC1256ECB.0073021A-C1256ECB.0073EFA5@us.ibm.com>
Jason wrote on 07/08/2004 06:00:06 PM: > Geoff wrote > > But I'm not wedded to the idea of calling a lock a resource, so maybe > > it would be simplest to just say: > > ---------------------------------------- > > 2.5 Status of a lock > > A lock is identified by a URI (the lock token URI) but in general, it > > does not have a HTTP URL, and thus can not be directly manipulated using > > HTTP methods. Instead, this specification defines the new methods > > LOCK (creating and refreshing locks, see Section 4) and UNLOCK > > (removing locks, see Section 5) that act indirectly on locks. > > ----------------------------------------- > > > > Since I believe this is the only section that refers to the "resourceness" > > of a lock, we can avoid the contention while keeping all the good stuff in > > the later paragraphs. > > I guess we'd have to see it in context, but if that's the only mention of > resourceness, that should be a significant improvement. (Don't forget > to include the word "is" between lines 0 and 1. :-)) The context is just the rest of the paragraphs of Julian's proposed text, but I'll include it again below. By "significant improvement", do you mean "I now like it", or are there remaining problems that you see in the proposed text (quoted below, with the first two sentences changed to avoid calling a lock a resource): ----------------------- 2.5 Status of a lock A lock is identified by a URI (the lock token URI) but in general, it does not have a HTTP URL, and thus can not be directly manipulated using HTTP methods. Instead, this specification defines the new methods LOCK (creating and refreshing locks, see Section 4) and UNLOCK (removing locks, see Section 5) that act indirectly on locks. A lock has state that can be indirectly observed by using the DAV:lockdiscovery property defined in Section 3.2. At a minimum, the state of a lock consists of the items defined in the sections below. After lock creation, all parts of the state with the exception of the timeout value are immutable. 2.5.1 Lock Access Type At present, this specification only defines one lock access type, the "write" lock defined in Section xx. 2.5.2 Lock Scope A lock has either exclusive or shared scope (see Section 2.1). 2.5.3 Lock Root A lock is created as effect of a LOCK (creation) method request. The lock root is the URL to which this request was adressed. 2.5.4 Lock Depth A "depth 0" lock only affects the resource to which the LOCK request was adressed to (the lock root). This resource is said to be "directly locked" by the lock. On the other hand, a "depth infinity" lock on a collection additionally affects all members of that collection. These resources are said to be "indirectly locked" by the lock. A "depth infinity" lock on a non-collection resource behaves exactly the same way as a "depth 0" lock. 2.5.5 Lock Owner Clients can submit information about the lock owner when creating a lock. This information should be sufficient for either directly contacting a principal (such as a telephone number or email URI), or for discovering the principal (such as the URL of a homepage). Owner information is kept with the lock so that it can be returned in the DAV:lockdiscovery property upon request. Note that this information is entirely client-controlled, thus a server MUST store the information faithfully just like if it appeared in a WebDAV dead property (see [RFC2518], section 4). 2.5.6 Lock Timeout In general, a lock expires after a certain amount of time. This time can be specified in the LOCK creation request (however servers are not required to honor this request). If the timeout expires then the lock may be lost. Specifically, if the server wishes to harvest the lock upon time-out, the server SHOULD act as if an UNLOCK method was executed by the server on the resource using the lock token of the timed-out lock, performed with its override authority. Thus logs should be updated with the disposition of the lock, notifications should be sent, etc., just as they would be for an UNLOCK request. The timers used for timeout expiry can be reset by the client by submitting a LOCK refresh request. Servers are advised to pay close attention to the values submitted by clients, as they will be indicative of the type of activity the client intends to perform. For example, an applet running in a browser may need to lock a resource, but because of the instability of the environment within which the applet is running, the applet may be turned off without warning. As a result, the applet is likely to ask for a relatively small timeout value so that if the applet dies, the lock can be quickly harvested. However, a document management system is likely to ask for an extremely long timeout because its user may be planning on going off-line. A client MUST NOT assume that just because the time-out has expired the lock has been lost. Clients MUST assume that locks may arbitrarily disappear at any time, regardless of the value given in the Timeout header. The Timeout header only indicates the behavior of the server if "extraordinary" circumstances do not occur. For example, an administrator may remove a lock at any time or the system may crash in such a way that it loses the record of the lock's existence. ----------------------- Does anyone have any issues with this revised text? Cheers, Geoff
Received on Thursday, 8 July 2004 17:06:52 UTC