Re: Puzzle: DELETE of a locked collection

Greg's question illustrates something that I believe is inherently
broken in the current WebDAV approach to operating against write-locked
resources.

When you are performing an operation against write-locked resources,
all you should be required to do is to include the appropriate list of
lock-tokens with your request.  The semantics is then very simple:

If any of the resources that your request attempts to modify is locked
with a lock token not in your list, the request fails.

Instead of this simple list, 2518 gives us the wonderfully baroque
(pronounced "broke" :-) If header, which lets us do ands and ors and
nots of state tokens and entity tags, and even tag the expressions
with the resource it should apply to, but does not in fact let us do
the one thing we really want to do, namely identify a list of lock
tokens.

The answer I'd like us to make is that you can include an arbitrary
number of Lock-Token headers with a request, and this defines the
lock token list for your request (no If header required).

Until then, as far as I can tell, 2518 requires Greg to do the
obviously non-scalable insertion of a tagged list for *every* member
of the collection being moved in the If header.

Cheers,
Geoff

   Date: Thu, 13 Apr 2000 04:51:59 -0700 (PDT)
   From: Greg Stein <gstein@lyra.org>

   Consider the following directory structure:

     Collection         [locked with token A, depth=0]
      \
       SubCollection    [locked with token B, depth=infinity]
	\
	 File1
	 File2          [these inherit token B]
	 ...
	 FileN


   Now, how do you delete SubCollection?

   Note that you must provide token A to remove SubCollection from
   Collection. Also, you must provide token B for SubCollection *and*
   File1..N.

   What's the IF: header look like?

   (presume that you cannot delineate all the (recursive) members of
    SubCollection and insert them *all* into the IF: header)

   I can't see a way to do it. Normally, no-tag-lists are used for specifying
   locks for a hierarchy. But you must use a tagged-list to specify token A.

   Ideas?

   Cheers,
   -g

   -- 
   Greg Stein, http://www.lyra.org/

Received on Thursday, 13 April 2000 11:19:17 UTC