W3C home > Mailing lists > Public > ietf-dav-versioning@w3.org > April to June 2001

Re: Newbie questions

From: Tim Ellison <Tim_Ellison@uk.ibm.com>
Date: Tue, 19 Jun 2001 16:54:54 +0100
To: w3c-dist-auth@w3.org, ietf-dav-versioning@w3.org
Message-ID: <OFA6E6C30D.16036DBE-ON80256A70.0053451E@portsmouth.uk.ibm.com>
ajk@mds.rmit.edu.au (Alan Kent) wrote:
> Q1: When are null resources created? You can "lock a null resource in
order
>     to lock the name". Is it that if you do a lock on a name that does
not
>     exist as a resource, a null resource is created?

When you do a LOCK on a null resource then a lock-null resource is created.

>     Are there other ways
>     that null resources can be created? The text says you lock a null
resource
>     to create a lock-null resource. A lock-null resource has properties
and
>     appears under its parent container. A null resource does not appear
under
>     its parent. The definition of null resource is that it is a resource
>     that responds to requests, which implies that it exists.

I also find this confusing, and I posted a message in response to Jim
Whitehead's explanation which explains my confusion.  If I get a reply it
may answer both our questions :-)
(see
http://lists.w3.org/Archives/Public/w3c-dist-auth/2001AprJun/0285.html)

>     My guess is that any URI that is not bound to a resource is
implicitly
>     bound to a null resource which has no properties or any other state.

Not _any_ URI, but any URI where the immediate parent collection already
exists.

>     When you lock a null resource, a lock-null resource is created
allowing
>     it to be placed under its parent container and have properties.
>     Is this correct?

You are as close to understanding it as I am :-)

> Q2: Are locks on resources or URIs identifying resources? The DeltaV
>     documentation I have read I think said that locks are applied to the
>     resources identified by a URL.

Essentially both.  The lock applies to the resource (you cannot change its
content or dead properties) and to the internal members along the URI path
(you cannot remove or rebind those members i.e. by DELETE or MOVE or COPY)
so that the resource cannot disappear out from under you.

Caveat: I've built my own mental model of how this works because, IMHO,
RFC2518 does a poor job of describing it.  I stand to be corrected ...
better still I'd sit to have it explained clearly to me.

> Q3: The MOVE documentation says that a successful MOVE on a write locked
>     resource must not move the write lock. (It then talks about
collections
>     and locks.) If the resource being moved is locked (that is, the
resource
>     itself, not the collection it is in), why is the lock removed when
the
>     resource is moved?
>     If the lock is applied to a URI, does this mean a
>     lock-null is left for the old URI?  If the lock is applied to a
resource,
>     why does not the lock stay with the resource that is locked?
>     Or is the text in sectino 7.7 only relating to parent collections
that
>     have been locked and has nothing to do with locks directly on
resources?

See http://lists.w3.org/Archives/Public/w3c-dist-auth/1997JulSep/0177.html

> Q4: PROPFIND in section 8.1 talks about responses and errors and
multistatus
>     XML elements. I have read the text several times but is confusing.
>     It says servers must support returning a multistatus element. (It
does not
>     say that it must *always* return one, just that it must support it.)
It
>     then says errors must be returned as 404 *if* a multistatus element
is
>     returned. etc. It was not clear when a multistatus element must be
>     returned - is it optional or mandatory? Related, how to know when to
>     return multistatus elements in general? Examples of packet
communications
>     are given, but no formal request/response packet grammar is given.

I agree that this text is confusing.  FWIW my rule of thumb is that if the
status code applies _only_ to the resource at the request-URI then 207
Multi Status is not used (i.e. 404 Not Found, 301 Moved Permanently, and so
on).  207 Multi Status is returned when the result applies to the resource
identified by the request-URI and other resources (i.e. depth > 0) *or* the
response applies to any number of properties.

For a discussion of this topic see
http://lists.w3.org/Archives/Public/w3c-dist-auth/2000AprJun/0042.html

> Q5: MKCOL behaviour with message bodies is not defined in the standard
>     (section 8.3.1) but may be "defined elsewhere". Is there any such
>     defintion around? Or is the body of MKCOL not important for
>     interoperability.

There is no such definition around to my knowledge.  I also haven't heard
of anyone using a body for MKCOL for their own devious means -- did you
have a plan?

> Q6: Is there any clear definitative list of which properties are "live"
>     properties?

Do you mean in the spec. or in the world in general?
In the spec. it is those properties whose syntax and semantics are enforced
by the server, i.e. all those in Section 13.  In the world there is no such
registry.

>     My understanding that any property that is not a live property
>     is a dead property, therefore if I used a property name such as
DAV:xyz
>     which is currently not defined, its dead, but later if DAV defines
xyz,
>     then it would suddenly become live. I assume the protection here
>     is that I should never use DAV: because its a DAV namespace.

You are expected not to use the DAV namespace (despite what you might see
in some implementations).

> Q7: DELETE is defined to delete a non-collection resource, removing all
URIs
>     to that resource, not just the URI passed to the DELETE command
>     (section 8.6.1).

Strange isn't it?!  BTW this is explicitly overruled by the bindings
protocol.

>     Other sections such as MOVE and COPY talk about deleting
>     the destination. To me this therefore means that if /foo/a and /bar/a
>     are bound to resource R1, then a COPY with overwrite to /foo/a will
delete
>     the URIs /foo/a and /bar/a and resource R1 then create a new resource
R2
>     and only bind /foo/a to the new resource R2. Or should /foo/a and
/bar/a
>     both bind to R2? I noticed that DeltaV changes the DELETE semantics
>     relating to versioning.

I believe this is the issue OVERWRITE_DELETE_ALL_TOO_STRONG on the WebDAV
issues list http://www.ics.uci.edu/pub/ietf/webdav/protocol/issues.html

> Q8: In DeltaV, versions are given stable URLs such as /his/73/vr/1.
Should
>     these URLs be made visible via containers? Ie: should /his be a
container,
>     and /his/73, and /his/73/vr? Or are these URLs hidden from
containers?

That is your choice as a server implementer.  These URLs to a version are
server generated and servers are not obliged to expose "/his/" as a
resource.

>     My understanding that there is no standard for "/his", its whatever
the
>     system chooses. It just seemed a potentially very expensive operation
to
>     get a listing of the contents of "/his" as a container since it would
>     contain a child container for *every* versioned resource history
resource.

Agreed.

> A short background - we have a document management system are
> trying to work out how hard it is to support first DAV and then
> DeltaV. The document management system uses the DMA versioning
> model, hence any experiences of relating DeltaV to DMA would
> also be appreciated - although this is probably the wrong list
> for DeltaV questions.

Check out http://www.webdav.org/deltav/ for instructions on subscribing to
the DeltaV list.

> Thanks for any help people can provide. I relise mail with lots
> of questions can be a pain, but it was either that or send in
> lots of separate ones (which I find worse)! Hopefully there are
> simple answers to the above.

The questions were clearly written and beautifully formatted :-)
Shame about the answers.


Tim
Received on Tuesday, 19 June 2001 11:54:59 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 8 January 2008 13:57:41 GMT