[hunchentoot-devel] [CL-WEBDAV] Property behaviour
Ralf Mattes
rm at seid-online.de
Thu May 24 08:23:20 UTC 2007
On Thu, 2007-05-24 at 09:23 +0200, Edi Weitz wrote:
> On Wed, 23 May 2007 18:35:49 +0200, Ralf Mattes <rm at seid-online.de> wrote:
>
> > A PROPGET for all properties of a resource
>
> I assume you mean PROPFIND.
Sorry, yes - I'm testing with cadaver whose PROPFIND command is called
'propget'.
> > will result in a call to 'collect-all-properties' that will call
> > 'all-property-designators' which will result (at the end of a long
> > call chain) in a call to 'get-dead-properties'. After that the same
> > 'get-dead-properties' is called for each property again.
>
> No. GET-DEAD-PROPERTIES is called once for each /resource/ (not
> property) if the "Depth" header is not 0 - see transcript below. This
> has to be done because each resource can have a different set of dead
> properties. At least that's how I'm reading the spec.
>
There's nothing wrong with your transcript but it doesn't seem to
contradict what I reported. What I observe is that 'get-dead-properties'
gets called once for the resource and once for each property.
Now, unless you magically did add some properties to 'foo' and 'bar' you
can't observe this ... ;-)
Cheers, RalfD
> > Now, according to the documentation 'get-dead-properties' is
> > supposed to return _all_ dead properties so it looks as if we do
> > some extra work here ;-)
>
> I don't think so.
>
> Cheers,
> Edi.
>
>
>
>
> CL-USER 1 > (defmethod print-object ((resource dav:file-resource) stream)
> ;; for the TRACE output
> (print-unreadable-object (resource stream :type t)
> (format stream " ~S" (dav::resource-name resource))))
> #<STANDARD-METHOD PRINT-OBJECT NIL (CL-WEBDAV:FILE-RESOURCE T) 200BDDEF>
>
> CL-USER 2 > (merge-pathnames "test/*.*" dav:*file-resource-base-path-namestring*)
> #P"c:/tmp/test/*.*"
>
> CL-USER 3 > (directory *)
> (#P"c:/tmp/test/foo" #P"c:/tmp/test/bar")
>
> CL-USER 4 > (push (dav:create-dav-dispatcher 'dav:file-resource) tbnl:*dispatch-table*)
> (#<Closure ((METHOD CL-WEBDAV:CREATE-DAV-DISPATCHER (SYMBOL)) . 1) 200F6252> HUNCHENTOOT:DEFAULT-DISPATCHER)
>
> CL-USER 5 > (trace dav::get-dead-properties)
> (CL-WEBDAV:GET-DEAD-PROPERTIES)
>
> CL-USER 6 > (tbnl:start-server :port 4242)
> #<HUNCHENTOOT::SERVER 20090CFB>
>
> CL-USER 7 > (nth-value 1 (drakma:http-request "http://localhost:4242/test/"
> :method :propfind
> :additional-headers '(("Depth" . "1"))))
> 207
>
> CL-USER 8 > (nth-value 1 (drakma:http-request "http://localhost:4242/test/"
> :method :propfind
> :additional-headers '(("Depth" . "0"))))
> 207
>
>
> For the first request, the TRACE window looks like this:
>
> 0 CL-WEBDAV:GET-DEAD-PROPERTIES > ...
> >> CL-WEBDAV:RESOURCE : #<CL-WEBDAV:FILE-RESOURCE "test">
> 0 CL-WEBDAV:GET-DEAD-PROPERTIES < ...
> << VALUE-0 : NIL
> << VALUE-1 : NIL
> 0 CL-WEBDAV:GET-DEAD-PROPERTIES > ...
> >> CL-WEBDAV:RESOURCE : #<CL-WEBDAV:FILE-RESOURCE "foo">
> 0 CL-WEBDAV:GET-DEAD-PROPERTIES < ...
> << VALUE-0 : NIL
> << VALUE-1 : NIL
> 0 CL-WEBDAV:GET-DEAD-PROPERTIES > ...
> >> CL-WEBDAV:RESOURCE : #<CL-WEBDAV:FILE-RESOURCE "bar">
> 0 CL-WEBDAV:GET-DEAD-PROPERTIES < ...
> << VALUE-0 : NIL
> << VALUE-1 : NIL
>
> For the second request, the TRACE window looks like this:
>
> 0 CL-WEBDAV:GET-DEAD-PROPERTIES > ...
> >> CL-WEBDAV:RESOURCE : #<CL-WEBDAV:FILE-RESOURCE "test">
> 0 CL-WEBDAV:GET-DEAD-PROPERTIES < ...
> << VALUE-0 : NIL
> << VALUE-1 : NIL
More information about the Tbnl-devel
mailing list