RE: Extend PROPPATCH to allow appending to properties?

On Monday, March 02, 1998 2:32 PM, Jim Davis [SMTP:jdavis@parc.xerox.com] 
wrote:
> As you know, I've been arguing that both external members and ordering of
> collections should be implemented by properties alone.  Last night it
> occurred to me that such property manipulation would be way more 
efficient
> if one extended PROPPATCH by defining a new XML element (append) that
> added a new value to a property (optionally at an arbitrary position).
>
> Without such an extension, to add a new external member one do LOCK,
> PROPFIND, PROPPATCH, UNLOCK.  With it, it suffices to do a PROPPATCH.

Unless you have test and set semantics on this append capability, it will 
be difficult to guarantee freedom from race condition problems without 
performing a LOCK.  Since PROPPATCH doesn't modify the entity tag (it 
doesn't modify the GET entity body), you can't use If-Match to see if the 
contents have changed.

> In a way, this makes PROPPATCH behave like PATCH did.  It allows a client
> to rewrite a value without a round trip.

I think you'd save one round trip (PROPFIND).

> A little more detail:  I propose to define a new XML element 'append', to
> extend propertyupdate to allow it.  The 'append' XML element MUST have a
> prop element, and optionally accepts a a 'listposition' XML element.  It
> interprets the property named by the prop as a list, and inserts the 
value
> of the prop into that list.  If listposition is not provided, the new 
item
> goes at the end.  If it is, then it specified the position.  I have not
> worked out listpostion, but it would include means to specify absolute
> position (0-n), first, last, and position relative to another value.
> (before, after).

It seems to me the devil is in the details of how to specify the absolute 
position.  Where do you start counting?  What gets counted (elements), what 
doesn't (PIs)?  It might be interesting to perform counting by "level" -- 
i.e., append after the 2nd level 2 element.

- Jim

Received on Monday, 2 March 1998 20:23:14 UTC