DELETE (was: Advanced Collections & the WebDAV Object Model)

   From: "Yaron Goland (Exchange)" <yarong@Exchange.Microsoft.com>

   DELETE(N): If NR(N) = R is the NULL resource then the method will fail. If R
   is not the NULL resource then R is to be deleted from the resource space and
   all n in the output set to RN(R) are to have their NR(N) set to the NULL
   resource.

An alternative definition of DELETE is:

DELETE(N): If NR(N) = R is the NULL resource then the method will fail. If R
is not the NULL resource, then NR(N) is set to NULL.

A few observations:

- These definitions are equivalent in the simple case where a resource
has only a single name, and in many cases the latter definition is easier
to implement (does not require a server to be able to compute RN(R)).

- The former (i.e. "DESTROY") form of DELETE can be implemented
by a client if it can discover the various names of a resource (see
the advanced collection "all-bindings" property), whereas
DESTROY cannot be used to implement the milder form of DELETE.

- This is clearly a value judgement, but I believe it is better for
downlevel clients to perform the weaker form of DELETE, since they may
not be aware of all the other clients that are still using that resource
under different names.  If we introduce a DESTROY method, that should
be only applied when specifically requested.  This is especially true
when versioning is introduced, since DESTROY is hardly ever the right
thing to do, and certainly not by default by downlevel clients.

Cheers,
Geoff

Received on Monday, 30 August 1999 17:31:38 UTC