Archiva

Removal of Archiva-Webdav implementation in favor of Jackrabbit-webdav

Details

  • Type: Improvement Improvement
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Fixed
  • Affects Version/s: 1.1
  • Fix Version/s: 1.1
  • Component/s: WebDAV Interface
  • Labels:
    None
  • Patch Submitted:
    Yes
  • Number of attachments :
    6

Description

This patch removes plexus-webdav in favor of Jackrabbit's webdav servlet implementation. It is not yet 100% completed and tested. HTTP GET and PUT should work correctly.

The following needs to happen before integration:

1) New Jackrabbit classes need to be correctly unit tested.
2) Webdav properties need to be implemented
3) Testing of common webdav clients - Mac OS X, Windows, Wagon-Dav, etc

  1. archiva-file-leak.patch
    23/Apr/08 12:40 AM
    1 kB
    James William Dumay
  2. archiva-guest-role.patch
    18/Apr/08 6:41 AM
    3 kB
    jameswdumay
  3. archiva-jackrabbit-webdav.patch
    17/Apr/08 8:40 AM
    642 kB
    jameswdumay
  4. archiva-jackrabbit-webdav.patch
    15/Apr/08 7:08 AM
    641 kB
    jameswdumay
  5. archiva-jackrabbit-webdav.patch
    14/Apr/08 10:45 PM
    609 kB
    jameswdumay
  6. archiva-jr-review-fixes.patch
    17/Apr/08 11:46 PM
    2 kB
    jameswdumay

Issue Links

Activity

Hide
jameswdumay added a comment -

Fixed a few failing tests relating to serverside relocation

Show
jameswdumay added a comment - Fixed a few failing tests relating to serverside relocation
Hide
jameswdumay added a comment -

All unit tests pass.

Still missing:

  • Webdav properties
Show
jameswdumay added a comment - All unit tests pass. Still missing:
  • Webdav properties
Hide
Brett Porter added a comment - - edited

this is looking ok so far. Some missing things:

  • license header on some new files
  • I saw this when getting group and artifact ID level metadata: 2008-04-17 23:52:11,208 [btpool0-6] ERROR org.apache.maven.archiva.webdav.ArchivaDavResourceFactory - Not a versioned reference, as version id on path has no number in it.
    org.apache.maven.archiva.repository.metadata.RepositoryMetadataException: Not a versioned reference, as version id on path has no number in it.
  • requires login (guest doesn't work) even when configured (may be my fault as I adjusted XworkUser too)
  • content length is not reported - we should compare HTTP headers that used to be returned to ensure they are complete

I'll look to commit this tomorrow.

Show
Brett Porter added a comment - - edited this is looking ok so far. Some missing things:
  • license header on some new files
  • I saw this when getting group and artifact ID level metadata: 2008-04-17 23:52:11,208 [btpool0-6] ERROR org.apache.maven.archiva.webdav.ArchivaDavResourceFactory - Not a versioned reference, as version id on path has no number in it. org.apache.maven.archiva.repository.metadata.RepositoryMetadataException: Not a versioned reference, as version id on path has no number in it.
  • requires login (guest doesn't work) even when configured (may be my fault as I adjusted XworkUser too)
  • content length is not reported - we should compare HTTP headers that used to be returned to ensure they are complete
I'll look to commit this tomorrow.
Hide
Brett Porter added a comment -

some matters of style for future patches:

  • match current formatting
  • we don't tend to use final parameters
  • we don't tend to use * imports
Show
Brett Porter added a comment - some matters of style for future patches:
  • match current formatting
  • we don't tend to use final parameters
  • we don't tend to use * imports
Hide
Brett Porter added a comment -

committed. I added the license headers myself, but the other issues need further patches to address

Show
Brett Porter added a comment - committed. I added the license headers myself, but the other issues need further patches to address
Hide
jameswdumay added a comment -

Fixes contentlength, contenttype and metadata exceptions

Show
jameswdumay added a comment - Fixes contentlength, contenttype and metadata exceptions
Hide
Brett Porter added a comment -

applied

Show
Brett Porter added a comment - applied
Hide
jameswdumay added a comment -

This patch fixes the guest role bug Brett reported.

Ive also improved some of the exception warning in the servlet.

Show
jameswdumay added a comment - This patch fixes the guest role bug Brett reported. Ive also improved some of the exception warning in the servlet.
Hide
Brett Porter added a comment -

applied. Leavng open for webdav properties, and for confirming the HTTP headers are equivalent

Show
Brett Porter added a comment - applied. Leavng open for webdav properties, and for confirming the HTTP headers are equivalent
Hide
James William Dumay added a comment -

This patch closes the stream that causes a file leak

Show
James William Dumay added a comment - This patch closes the stream that causes a file leak
Hide
Brett Porter added a comment -

applied

Show
Brett Porter added a comment - applied
Hide
James William Dumay added a comment -

Committed on trunk:

  • Implemented Webdav properties, including copy/move/delete operations
  • Unit tested the DavResourceLocator and DavLocatorFactory implementations (More tests on the way)
  • Introduced joda-time dependency todo ISO8601 dates for the dav servlet

Still need to:

  • Compare HTTP headers
  • Test Windows webdav support
  • Fix OS X support - OS X only supports webdav Level 2 - locking may need to be implemented
  • Tests for the Resource factory and resource implemenation
Show
James William Dumay added a comment - Committed on trunk:
  • Implemented Webdav properties, including copy/move/delete operations
  • Unit tested the DavResourceLocator and DavLocatorFactory implementations (More tests on the way)
  • Introduced joda-time dependency todo ISO8601 dates for the dav servlet
Still need to:
  • Compare HTTP headers
  • Test Windows webdav support
  • Fix OS X support - OS X only supports webdav Level 2 - locking may need to be implemented
  • Tests for the Resource factory and resource implemenation
Hide
James William Dumay added a comment -

MRM-440 broke (Redirect on collection resource if there is no trailing slash). I committed the fix in r653817.

Show
James William Dumay added a comment - MRM-440 broke (Redirect on collection resource if there is no trailing slash). I committed the fix in r653817.
Hide
James William Dumay added a comment -

As of r662742 litmus test can now run correctly

james-william-dumays-macbook:~ jdumay$ litmus http://localhost:9091/repository/internal/
-> running `basic':
 0. init.................. pass
 1. begin................. pass
 2. options............... FAIL (OPTIONS on base collection `/repository/internal/litmus/': 302 Found)
 3. put_get............... pass
 4. put_get_utf8_segment.. pass
 5. mkcol_over_plain...... pass
 6. delete................ pass
 7. delete_null........... FAIL (DELETE nonexistent resource succeeded)
 8. delete_fragment....... FAIL (DELETE on `/repository/internal/litmus/frag/': 302 Found)
 9. mkcol................. pass
10. mkcol_again........... WARNING: MKCOL on existing collection gave 302, should be 405
    ...................... pass (with 1 warning)
11. delete_coll........... FAIL (DELETE on collection `/repository/internal/litmus/coll/': 302 Found)
12. mkcol_no_parent....... FAIL (MKCOL with missing intermediate succeeds)
13. mkcol_with_body....... FAIL (MKCOL with weird body must fail (RFC2518:8.3.1))
14. finish................ pass
<- summary for `basic': of 15 tests run: 9 passed, 6 failed. 60.0%
Show
James William Dumay added a comment - As of r662742 litmus test can now run correctly
james-william-dumays-macbook:~ jdumay$ litmus http://localhost:9091/repository/internal/
-> running `basic':
 0. init.................. pass
 1. begin................. pass
 2. options............... FAIL (OPTIONS on base collection `/repository/internal/litmus/': 302 Found)
 3. put_get............... pass
 4. put_get_utf8_segment.. pass
 5. mkcol_over_plain...... pass
 6. delete................ pass
 7. delete_null........... FAIL (DELETE nonexistent resource succeeded)
 8. delete_fragment....... FAIL (DELETE on `/repository/internal/litmus/frag/': 302 Found)
 9. mkcol................. pass
10. mkcol_again........... WARNING: MKCOL on existing collection gave 302, should be 405
    ...................... pass (with 1 warning)
11. delete_coll........... FAIL (DELETE on collection `/repository/internal/litmus/coll/': 302 Found)
12. mkcol_no_parent....... FAIL (MKCOL with missing intermediate succeeds)
13. mkcol_with_body....... FAIL (MKCOL with weird body must fail (RFC2518:8.3.1))
14. finish................ pass
<- summary for `basic': of 15 tests run: 9 passed, 6 failed. 60.0%
Hide
James William Dumay added a comment -

Committed r662968

  • Renabled RepositoryServletBrowseTest
  • Added more tests to the DavResourceLocator test
  • Litmus test score is looking much better
james-william-dumays-macbook:~ jdumay$ litmus http://localhost:9091/repository/internal/
-> running `basic':
 0. init.................. pass
 1. begin................. pass
 2. options............... pass
 3. put_get............... pass
 4. put_get_utf8_segment.. pass
 5. mkcol_over_plain...... pass
 6. delete................ pass
 7. delete_null........... FAIL (DELETE nonexistent resource succeeded)
 8. delete_fragment....... WARNING: DELETE removed collection resource with Request-URI including fragment; unsafe
    ...................... pass (with 1 warning)
 9. mkcol................. pass
10. mkcol_again........... pass
11. delete_coll........... pass
12. mkcol_no_parent....... pass
13. mkcol_with_body....... FAIL (MKCOL with weird body must fail (RFC2518:8.3.1))
14. finish................ pass
<- summary for `basic': of 15 tests run: 13 passed, 2 failed. 86.7%
-> 1 warning was issued.
See debug.log for network/debug traces.
Show
James William Dumay added a comment - Committed r662968
  • Renabled RepositoryServletBrowseTest
  • Added more tests to the DavResourceLocator test
  • Litmus test score is looking much better
james-william-dumays-macbook:~ jdumay$ litmus http://localhost:9091/repository/internal/
-> running `basic':
 0. init.................. pass
 1. begin................. pass
 2. options............... pass
 3. put_get............... pass
 4. put_get_utf8_segment.. pass
 5. mkcol_over_plain...... pass
 6. delete................ pass
 7. delete_null........... FAIL (DELETE nonexistent resource succeeded)
 8. delete_fragment....... WARNING: DELETE removed collection resource with Request-URI including fragment; unsafe
    ...................... pass (with 1 warning)
 9. mkcol................. pass
10. mkcol_again........... pass
11. delete_coll........... pass
12. mkcol_no_parent....... pass
13. mkcol_with_body....... FAIL (MKCOL with weird body must fail (RFC2518:8.3.1))
14. finish................ pass
<- summary for `basic': of 15 tests run: 13 passed, 2 failed. 86.7%
-> 1 warning was issued.
See debug.log for network/debug traces.
Hide
James William Dumay added a comment - - edited

Committed r662968

  • DELETE should 404 if resource does not exist
  • 93% litmus coverage
-> running `basic':
 0. init.................. pass
 1. begin................. pass
 2. options............... pass
 3. put_get............... pass
 4. put_get_utf8_segment.. pass
 5. mkcol_over_plain...... pass
 6. delete................ pass
 7. delete_null........... pass
 8. delete_fragment....... WARNING: DELETE removed collection resource with Request-URI including fragment; unsafe
    ...................... pass (with 1 warning)
 9. mkcol................. pass
10. mkcol_again........... pass
11. delete_coll........... pass
12. mkcol_no_parent....... pass
13. mkcol_with_body....... FAIL (MKCOL with weird body must fail (RFC2518:8.3.1))
14. finish................ pass
<- summary for `basic': of 15 tests run: 14 passed, 1 failed. 93.3%
-> 1 warning was issued.
Show
James William Dumay added a comment - - edited Committed r662968
  • DELETE should 404 if resource does not exist
  • 93% litmus coverage
-> running `basic':
 0. init.................. pass
 1. begin................. pass
 2. options............... pass
 3. put_get............... pass
 4. put_get_utf8_segment.. pass
 5. mkcol_over_plain...... pass
 6. delete................ pass
 7. delete_null........... pass
 8. delete_fragment....... WARNING: DELETE removed collection resource with Request-URI including fragment; unsafe
    ...................... pass (with 1 warning)
 9. mkcol................. pass
10. mkcol_again........... pass
11. delete_coll........... pass
12. mkcol_no_parent....... pass
13. mkcol_with_body....... FAIL (MKCOL with weird body must fail (RFC2518:8.3.1))
14. finish................ pass
<- summary for `basic': of 15 tests run: 14 passed, 1 failed. 93.3%
-> 1 warning was issued.
Hide
James William Dumay added a comment -

The implementation is now at a point where we can ship it.

Show
James William Dumay added a comment - The implementation is now at a point where we can ship it.

People

Vote (0)
Watch (1)

Dates

  • Created:
    Updated:
    Resolved: