cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Michal Stochmialek <mi...@e-informatyka.pl>
Subject Re: WebDAVSource.getParent() and makeCollection()
Date Tue, 29 Jun 2004 13:47:28 GMT
On Mon, Jun 28, 2004 at 12:13:27PM +0200, Unico Hommes wrote:

> >Something's wrong with implementation of getParent and makeCollection 
> >methods.
> >(in cocoon 2.1.5)
> >
> >makeCollection() - creates collection only if parent exists. Can't create
> > directory hierarchy. When I try, i've got this exception:
> >
> >Directory einformatyka/articles exists, review - don't.
> >
> >Is this correct implementation of ModifiableTraversableSource?
> >
> Nope, you found a bug :-)

It tried again makeCollection method, and i've got exception below:

 Caused by: org.apache.excalibur.source.SourceException:
Unable to create collection webdav://localhost/svn/einformatyka/articles/review/1088515900892.
 Server responded 404 (Not Found (404))
     at org.apache.cocoon.components.source.impl.WebDAVSource.makeCollection(WebDAVSource.java:763)
     at pl.einformatyka.common.components.filesystem.FileManagerImpl.createDirectory(FileManagerImpl.java:79)


> >private void createDirectories(ModifiableTraversableSource source) throws 
> >SourceException
> >{
> >       System.out.println("Creating dir ["+source.getURI()+"] " + " 
> >       EXISTS: "+source.exists());
> >
> >   	if (source.exists()) return;
> >   	if (!source.getParent().exists())
> >   		createDirectories((ModifiableTraversableSource)source.getParent());
> >   	
> >   	source.makeCollection();
> >}
> >

> Yes, is also a bug. It seems that in some cases getParent() would return 
> itself as its parent collection. I've just committed a fix for both 
> problems. I think its fixed now but haven't the opportunity to test. 
> Could you check if it works for you now?

I've run above method again, and getParent throwed this exception:

org.apache.excalibur.source.SourceNotFoundException: Not found: webdav://localhost/svn/einformatyka/articles/review/1088515426783
     at org.apache.cocoon.components.source.impl.WebDAVSource.initResource(WebDAVSource.java:225)
     at org.apache.cocoon.components.source.impl.WebDAVSource.getParent(WebDAVSource.java:605)
     at pl.einformatyka.common.components.filesystem.FileManagerImpl.createDirectories(FileManagerImpl.java:94)
     at pl.einformatyka.common.components.filesystem.FileManagerImpl.createDirectory(FileManagerImpl.java:80)
     ... 5 more
 Caused by: org.apache.commons.httpclient.HttpException
     at org.apache.webdav.lib.WebdavResource.propfindMethod(WebdavResource.java:3185)
     at org.apache.webdav.lib.WebdavResource.propfindMethod(WebdavResource.java:3145)
     at org.apache.webdav.lib.WebdavResource.setNamedProp(WebdavResource.java:879)
     at org.apache.webdav.lib.WebdavResource.setBasicProperties(WebdavResource.java:824)
     at org.apache.webdav.lib.WebdavResource.setProperties(WebdavResource.java:1746)
     at org.apache.webdav.lib.WebdavResource.setHttpURL(WebdavResource.java:1156)
     at org.apache.webdav.lib.WebdavResource.<init>(WebdavResource.java:242)
     at org.apache.cocoon.components.source.impl.WebDAVSource.initResource(WebDAVSource.java:211)

I think you need some testcase ;)

regards,
-- 
Michal Stochmialek <misto@e-informatyka.pl>

Mime
View raw message