RE: Type appendix

Another approach would be to extend the type-o-rama
appendix to say something like the following:

------------------------------------------------

A client should use the DAV:supported-live-property-set
and DAV:supported-method-set to classify a resource in
its GUI (e.g. to determine what icon to display).

Some common combinations of supported live properties
and methods that can be used to classify a resource include:

... (all the DAV:property-o-rama stuff).

------------------------------------------------

This will provide the information needed for different
clients to iconify resources in a consistent way.
I'm not sure the PROPPATCH example is really needed here
though ...

I believe this is better than just looking for a
"key" property, because as folks have pointed out in
this thread, it might be reasonable for some later defined
resource to support a subset of the properties (e.g. just
DAV:version-name).  Of course, if a client only uses
the semantics of DAV:version-name, it should just look
for that property, and not check for the full list of
properties that a "version" must support.

Cheers,
Geoff



-----Original Message-----
From: Tim Ellison [mailto:tim@peir.com]
Sent: Friday, June 08, 2001 5:07 PM
To: DeltaV
Subject: Type appendix


Here's a proposed appendix to the spec to clarify the type discussion we
have been having recently.

I suggest we call it "How to tell the difference between a Duck and an
Alligator".

Tim
=========================
VERSIONING RESOURCE TYPE

A versioning resource's type can be determined by examining the set of live
properties it supports.

For example, the supported live properties for the version history resource
/foo are retrieved by

>>REQUEST

PROPFIND /foo HTTP/1.1
Host: bar.com
Content-Type: text/xml; charset="utf-8"
Content-Length: xxx

<?xml version="1.0" encoding="utf-8" ?>
<D:propfind xmlns:D="DAV:">
    <D:prop>
	<D:supported-live-property-set/>
    </D:prop>
</D:propfind>

>> RESPONSE

HTTP/1.1 207 Multi-Status
Content-Type: text/xml; charset="utf-8"
Content-Length: xxxx

<?xml version="1.0" encoding="utf-8" ?>
<D:multistatus xmlns:D="DAV:">
   <D:response>
      <D:href>http://www.bar.com/foo</D:href>
      <D:propstat>
         <D:prop>
            <D:supported-live-property-set>
               <D:supported-live-property namespace="DAV:"
name="creationdate"/>
               <D:supported-live-property namespace="DAV:"
name="displayname"/>
               <D:supported-live-property namespace="DAV:"
name="getcontentlanguage"/>
               <D:supported-live-property namespace="DAV:"
name="getcontentlength"/>
               <D:supported-live-property namespace="DAV:"
name="getcontenttype"/>
               <D:supported-live-property namespace="DAV:" name="getetag"/>
               <D:supported-live-property namespace="DAV:"
name="getlastmodified"/>
               <D:supported-live-property namespace="DAV:"
name="lockdiscovery"/>
               <D:supported-live-property namespace="DAV:"
name="resourcetype"/>
               <D:supported-live-property namespace="DAV:" name="source"/>
               <D:supported-live-property namespace="DAV:"
name="supportedlock"/>
               <D:supported-live-property namespace="DAV:" name="comment"/>
               <D:supported-live-property namespace="DAV:"
name="creator-displayname"/>
               <D:supported-live-property namespace="DAV:"
name="supported-method-set"/>
               <D:supported-live-property namespace="DAV:"
name="supported-live-property-set"/>
               <D:supported-live-property namespace="DAV:"
name="supported-report-set"/>
               <D:supported-live-property namespace="DAV:"
name="workspace"/>
               <D:supported-live-property namespace="DAV:"
name="version-controlled-configuration"/>
               <D:supported-live-property namespace="DAV:"
name="version-set"/>
               <D:supported-live-property namespace="DAV:"
name="root-version"/>
            </D:supported-live-property-set>
         </D:prop>
         <D:status>HTTP/1.1 200 OK</D:status>
      </D:propstat>
   </D:response>
   <D:responsedescription>OK</D:responsedescription>
</D:multistatus>


The following types are described in the DeltaV specification.  The
resources type is uniquely determined by the presence or absence of key
supported live properties (inclusion in or omission from the reported
property set) as follows:

   Version-controlled resource (+*)
	<DAV:supported-live-property-set> includes <DAV:auto-checkout/>.

   Version (*)
	<DAV:supported-live-property-set> includes <DAV:version-name/>.

   Version history
	<DAV:supported-live-property-set> includes <DAV:root-version/>.

   Workspace
	<DAV:supported-live-property-set> includes
<DAV:workspace-checkout-set/>.

   Working resource (*)
	<DAV:supported-live-property-set> includes <DAV:checked-out/>.
	and
	<DAV:supported-live-property-set> does *not* include
<DAV:auto-checkout/>.

   Version-controlled configuration (+)
	<DAV:supported-live-property-set> includes
<DAV:baseline-controlled-collection/>.

   Baseline
	<DAV:supported-live-property-set> includes
<DAV:baseline-collection/>.

   Activity
	<DAV:supported-live-property-set> includes <DAV:subactivity-set/>.

Each resource type above marked with a plus-sign(+) can exist in a
checked-in or checked-out state.  The checked in state can be determined as
follows:
   <DAV:supported-live-properties> includes <DAV:checked-in>
      means the resource is checked-in.
   <DAV:supported-live-properties> includes <DAV:checked-out>
      means the resource is checked-out.

Each resource type above marked with an asterix(*) can exist as a collection
resource or a non-collection resource.  Determining whether a resource is a
collection is described in RFC2518.
   <DAV:resourcetype> does not include <DAV:collection/>
	means the resource is not a collection.
   <DAV:resourcetype> includes <DAV:collection/>
	means the resource is a collection.

Received on Friday, 8 June 2001 17:42:13 UTC