These look like VFS issues. It should be handling the 302 redirect correctly. 
As for whether it supports making multiple directories at once, I'm not sure. 
You could try doing:
<vfs:mkdir 
dir="webdav://user:passw...@hostname.com/archiva/repository/snapshots/testOrg" 
/>
<vfs:mkdir 
dir="webdav://user:passw...@hostname.com/archiva/repository/snapshots/testOrg/testArtifact"
 />

However, Archiva actually allows "cheating" on the WebDAV protocol to avoid all 
the mkdir calls. So if you try putting a file directly to, say, 
webdav://user:passw...@hostname.com/archiva/repository/snapshots/testOrg/testArtifact/1.0/testArtifact-1.0.pom,
 it should work without the mkdir calls.

Cheers,
Brett

On 17/03/2010, at 6:32 AM, Mandie Smith wrote:

> I'm trying to get commons-vfs talking to Archiva and I'm having trouble
> getting them talking and I was hoping someone here could help me out.
> 
> I'm just trying a simple test to create a directory on the webdav server.
> My build.xml looks like this:
> 
> <project name="test" xmlns:vfs="antlib:org.apache.commons.vfs.tasks">
>  <target name="main">
>    <vfs:mkdir dir="webdav://
> user:passw...@hostname.com/archiva/repository/snapshots/testOrg/testArtifact"
> />
>  </target>
> </project>
> 
> When I try to run this I get the following exception:
> 
> org.apache.commons.vfs.
> FileSystemException: Could not determine the type of file
> "webdav://user:*...@hostname.com/archiva/repository/snapshots/testOrg".
>    at
> org.apache.commons.vfs.provider.AbstractFileObject.getType(AbstractFileObject.java:476)
>    at
> org.apache.commons.vfs.provider.AbstractFileObject.createFolder(AbstractFileObject.java:931)
>    at
> org.apache.commons.vfs.provider.AbstractFileObject.createFolder(AbstractFileObject.java:952)
>    at org.apache.commons.vfs.tasks.MkdirTask.execute(MkdirTask.java:62)
>    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>    at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>    at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>    at java.lang.reflect.Method.invoke(Method.java:597)
>    at
> org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
>    at org.apache.tools.ant.Task.perform(Task.java:348)
>    at org.apache.tools.ant.Target.execute(Target.java:357)
>    at org.apache.tools.ant.Target.performTasks(Target.java:385)
>    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
>    at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
>    at
> org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
>    at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
>    at org.apache.tools.ant.Main.runBuild(Main.java:758)
>    at org.apache.tools.ant.Main.startAnt(Main.java:217)
>    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
>    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
> Caused by: org.apache.commons.vfs.FileSystemException: Unknown message with
> code "Found".
>    at
> org.apache.commons.vfs.provider.webdav.ExceptionConverter.generate(ExceptionConverter.java:88)
>    at
> org.apache.commons.vfs.provider.webdav.ExceptionConverter.generate(ExceptionConverter.java:41)
>    at
> org.apache.commons.vfs.provider.webdav.WebdavFileObject.execute(WebdavFileObject.java:413)
>    at
> org.apache.commons.vfs.provider.webdav.WebdavFileObject.getProperties(WebdavFileObject.java:488)
>    at
> org.apache.commons.vfs.provider.webdav.WebdavFileObject.getProperties(WebdavFileObject.java:463)
>    at
> org.apache.commons.vfs.provider.webdav.WebdavFileObject.getProperty(WebdavFileObject.java:456)
>    at
> org.apache.commons.vfs.provider.webdav.WebdavFileObject.getProperty(WebdavFileObject.java:448)
>    at
> org.apache.commons.vfs.provider.webdav.WebdavFileObject.isDirectory(WebdavFileObject.java:428)
>    at
> org.apache.commons.vfs.provider.webdav.WebdavFileObject.doGetType(WebdavFileObject.java:113)
>    at
> org.apache.commons.vfs.provider.AbstractFileObject.getType(AbstractFileObject.java:467)
>    ... 20 more
> 
> Total time: 1 second
> 
> 
> I dug through the source and the exact HTTP code was a 302 Found.  When I
> look at the Archiva access logs I see the following:
> 
> 1.1.1.1 -  -  [12/Mar/2010:15:19:46 +0000] "HEAD / HTTP/1.1" 404 1268 "-"
> "Jakarta Commons-HttpClient/3.1"
> 1.1.1.1 -  -  [12/Mar/2010:15:19:46 +0000] "PROPFIND
> /archiva/repository/snapshots/
> testOrg/testArtifact HTTP/1.1" 404 0 "-" "Jakarta-Commons-VFS"
> 1.1.1.1 -  -  [12/Mar/2010:15:19:46 +0000] "PROPFIND
> /archiva/repository/snapshots/testOrg HTTP/1.1" 404 0 "-"
> "Jakarta-Commons-VFS"
> 1.1.1.1 -  -  [12/Mar/2010:15:19:46 +0000] "PROPFIND
> /archiva/repository/snapshots HTTP/1.1" 302 0 "-" "Jakarta-Commons-VFS"

--
Brett Porter
br...@apache.org
http://brettporter.wordpress.com/




Reply via email to