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:06:57 UTC