Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
2.0, 2.1
-
None
-
Apache 2.2.22 as Testerver and setted up like http://commons.apache.org/vfs/testserver.html (but changed the 'crypt' password)
Description
Running the WebdavProviderTestCase using mvn -P webdav clean test -Dtest.webdav.uri=webdav://vfsusr:vfstest@localhost/vfstest -Dtest=WebdavProviderTestCase results in
DavException: (301) Moved Permanently
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.645 sec <<< FAILURE!
Results :
Tests in error:
junit.framework.TestSuite@55c9be00(org.apache.commons.vfs2.provider.webdav.test.WebdavProviderTestCase$1): Could not determine the type of file "webdav://vfsusr:****@localhost/vfstest/read-tests".
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0
The deeper Problem is, that the HttpClient using by VFS does not append a trailing slash and mod_dir of httpd has "DirectorySlash On" per default. So httpd send 301 redirect to the same url with / appended.
I know that for this reason of problematic webdav client apache introduced "redirect-carefully" for some user agents using the "BrowserMatch" directive. So I just tried adding the following into my <Directory> directive
BrowserMatch "^Jakarta-Commons-VFS" redirect-carefully BrowserMatch "^Jakarta Commons-HttpClient/3.0" redirect-carefully BrowserMatch "^Jakarta Commons-HttpClient/3.1" redirect-carefully
Its needed to have Jakarta-Commons-VFS and Jakarta Commons-HttpClient because of two requests from commons vfs using two different user agents.
But instead of solving the issue, I get for every FileObject.getChildren() call at least one FileObject of type imaginary with the same basename as the parent. Thats not a problem at all (besides that this is totally wrong!) but deleting a parent just dont work anymore, because of an non-existent imaginary file inside the dir which cannot be deleted of course.
To cut a long story short, what is the right httpd webdav server config to use 2.0 Release version of VFS?