The WebDAV implementation in Archiva is provided by the Simple WebDAV Server Servlet implementation from Pier Fumagalli.

Highlights

  • Archiva uses a Level 1 WebDAV Implementation.
    • No Locking
    • No Versioning
    • No Property Set
  • Archiva violates the MKCOL spec to allow for proxying of content that doesnt' exist (yet) on the WebDAV server.

Litmus Analysis

Here is a WebDAV analysis as performed by the litmus webdav testing tool.

Setup:

  • Archiva Trunk revision 578314.
  • Tomcat 5.0.28
  • JDK 1.5.0_11
  • Linux (Ubuntu Fiesty Fawn)
  • litmus version 0.11-1

Configuration:

  • Installed per instructions at http://docs.codehaus.org/display/MAVENUSER/Archiva+on+Tomcat
  • 2 repos.
    • internal : with allowed releases and no snapshots.
    • snapshots : with allowed snapshots and no releases.
  • Guest user configured with Global Repository Observer.
  • Guest user configured with Global Repository Manager.

Command Line:

$ litmus http://192.168.1.145:8080/archiva/repository/internal/

Report:
-> running `basic':

Test Name

Result

0.

init

(tick) pass

1.

begin

(tick) pass

2.

options

(warning) WARNING: server does not claim Class 2 compliance
(tick) pass (with 1 warning)

3.

put_get

(tick) pass

4.

put_get_utf8_segment

(tick) pass

5.

mkcol_over_plain

(tick) pass

6.

delete

(tick) pass

7.

delete_null

(tick) pass

8.

delete_fragment

(tick) pass

9.

mkcol

(tick) pass

10.

mkcol_again

(tick) pass

11.

delete_coll

(tick) pass

12.

mkcol_no_parent

(minus) FAIL (MKCOL with missing intermediate succeeds)

13.

mkcol_with_body

(tick) pass

14.

finish

(tick) pass

<- summary for `basic': of 15 tests run: 14 passed, 1 failed. 93.3%
-> 1 warning was issued.
See debug.log for network/debug traces.

Responses to Warnings/Errors
The warning outlined in test #2 refers to the fact that Archiva is a Level 1, (Class 1) WebDAV server. That is an intentional decision, and does not violate the WebDAV standard. It just means Archiva doesn't have advanced locking and versioning.

The error outlined in test #11 (mkcol_no_parent) refers the ability to MKCOL in a deep sense, without the need to MKCOL the parent directory first. This is an internal decision to allow for proxying of content not present in the webdav collection at the time of the request. This behavior is quite likely a violation of WebDAV standard (however I cannot find this section in the spec).

  • No labels