You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Gary Gregory <ga...@gmail.com> on 2014/08/01 00:54:44 UTC

Re: [vfs] webdav access throws ClassCastException: ArrayList cannot be cast Node

Is this in 2.0 or using the trunk version? If not trunk, can you check out
trunk and test your scenario?

Gayr


On Thu, Jul 31, 2014 at 4:43 PM, Jörg Wille <jo...@gmail.com> wrote:

> This is the first time I use VFS. But local and http file access works.
> But using webdav (with *Alfresco* as server) does not work.
> The Problem is similar to this one:
>
> http://mail-archives.apache.org/mod_mbox/commons-user/201109.mbox/%3C004001cc769b$ff3e6770$fdbb3650$@queres.com%3E
>
> *I am doing the following:*
>
> private static final String URL = "webdav://
> admin:alfresco@192.168.66.124:8080/alfresco/webdav/firmware/";
> DefaultFileSystemManager manager = new DefaultFileSystemManager();
> manager.addProvider("file", new DefaultLocalFileProvider());
> manager.addProvider("http", new HttpFileProvider());
> manager.addProvider("webdav", new WebdavFileProvider());
> manager.setCacheStrategy(CacheStrategy.ON_RESOLVE);
> manager.setFilesCache(new SoftRefFilesCache());
> manager.init();
> final FileObject fileObject = manager.resolveFile(URL)
> System.out.println("Name:" + fileObject.getName());
> System.out.println("Attached:" + fileObject.isAttached());
> try {
>     fileObject.isReadable();
> } catch (Exception e) {
>     System.out.println("Message: " + e.getMessage() + "\nCause: " +
> e.getCause()+ "\nStacktrace: " + getStackTrace(e));
> }
> try {
>     fileObject.getChildren();
> } catch (Exception e) {
>     System.out.println("Message: " + e.getMessage() + "\nCause: " +
> e.getCause()+ "\nStacktrace: " + getStackTrace(e));
> }
> try {
>     fileObject.isFolder();
> } catch (Exception e) {
>     System.out.println("Message: " + e.getMessage() + "\nCause: " +
> e.getCause()+ "\nStacktrace: " + getStackTrace(e));
> }
>
> *Result:*
>
> Name:webdav://admin:alfresco@192.168.66.124:8080/alfresco/webdav/firmware/
>
> *Attached:false*
>
> Message: Could not determine if file "webdav://admin:***@
> 192.168.66.124:8080/alfresco/webdav/firmware/" is readable.
>
> Cause: org.apache.commons.vfs2.FileSystemException: Could not determine the
> type of file "webdav://admin:***@
> 192.168.66.124:8080/alfresco/webdav/firmware/".
>
> Stacktrace: org.apache.commons.vfs2.FileSystemException: Could not
> determine if file "webdav://admin:***@
> 192.168.66.124:8080/alfresco/webdav/firmware/" is readable.
>
> …
>
> Caused by: java.lang.ClassCastException: java.util.ArrayList cannot be cast
> to org.w3c.dom.Node
>
> at
>
> org.apache.commons.vfs2.provider.webdav.WebdavFileObject.isDirectory(WebdavFileObject.java:718)
>
> at
>
> org.apache.commons.vfs2.provider.webdav.WebdavFileObject.doGetType(WebdavFileObject.java:405)
>
> at
>
> org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:1497)
>
> ... 57 more
>
>
> Message: Could not list the contents of folder "webdav://admin:***@
> 192.168.66.124:8080/alfresco/webdav/firmware/".
>
> Cause: java.lang.ClassCastException: java.util.ArrayList cannot be cast to
> org.w3c.dom.Node
>
> Stacktrace: org.apache.commons.vfs2.FileSystemException: Could not list the
> contents of folder "webdav://admin:***@
> 192.168.66.124:8080/alfresco/webdav/firmware/".
>
> …
>
> Caused by: java.lang.ClassCastException: java.util.ArrayList cannot be cast
> to org.w3c.dom.Node
>
> at
>
> org.apache.commons.vfs2.provider.webdav.WebdavFileObject.isDirectory(WebdavFileObject.java:718)
>
> at
>
> org.apache.commons.vfs2.provider.webdav.WebdavFileObject.doListChildrenResolved(WebdavFileObject.java:453)
>
> at
>
> org.apache.commons.vfs2.provider.AbstractFileObject.getChildren(AbstractFileObject.java:1147)
>
> ... 55 more
>
>
> Message: Could not determine the type of file "webdav://admin:***@
> 192.168.66.124:8080/alfresco/webdav/firmware/".
>
> Cause: java.lang.ClassCastException: java.util.ArrayList cannot be cast to
> org.w3c.dom.Node
>
> Stacktrace: org.apache.commons.vfs2.FileSystemException: Could not
> determine the type of file "webdav://admin:***@
> 192.168.66.124:8080/alfresco/webdav/firmware/".
>
> …
>
> Caused by: java.lang.ClassCastException: java.util.ArrayList cannot be cast
> to org.w3c.dom.Node
>
> at
>
> org.apache.commons.vfs2.provider.webdav.WebdavFileObject.isDirectory(WebdavFileObject.java:718)
>
> at
>
> org.apache.commons.vfs2.provider.webdav.WebdavFileObject.doGetType(WebdavFileObject.java:405)
>
> at
>
> org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:1497)
>
> ... 56 more
>
> What am I doing wrong? And what does "Attached:false" means?
>



-- 
E-Mail: garydgregory@gmail.com | ggregory@apache.org
Java Persistence with Hibernate, Second Edition
<http://www.manning.com/bauer3/>
JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
Spring Batch in Action <http://www.manning.com/templier/>
Blog: http://garygregory.wordpress.com
Home: http://garygregory.com/
Tweet! http://twitter.com/GaryGregory

RE: [vfs] webdav access throws ClassCastException: ArrayList cannot be cast Node

Posted by Martin Gainty <mg...@hotmail.com>.
org.w3c.dom.Node is at the heart of XML and is used by SAX,DOM and STAX
org.w3c.dom is currently not used by the Following implementations in commons-configurations:
properties
FileSystems such as VFS or Hadoop FS
DB 
unless of course we convert Properties/VFSFileEntitiesHadoop/DB to XML DOM Node which is not happening

to resolve these 2 distinct implementation paths i suggested a split in Functionality
one for XML (org.w3c.dom.Node)
and one for Properties/VFS/HDFS/DBEntities
So the solution seems to be a re-architecture...I have something running locally on my box which scans the file extension and then sets up the correct digesterRules and then sets up the XMLConfiguration for XML
but then uses PropertiesConfiguration for files which use a PropertyConfiguration for 
Properties, VFS, HadoopFS, DB

you can see clearly see this distinction in the rules initialisation within ConfigurationFactory.java
protected void initDigesterSectionRules(Digester digester, String matchString, boolean additional)

Martin


> Date: Thu, 31 Jul 2014 18:54:44 -0400
> Subject: Re: [vfs] webdav access throws ClassCastException: ArrayList cannot be cast Node
> From: garydgregory@gmail.com
> To: user@commons.apache.org
> 
> Is this in 2.0 or using the trunk version? If not trunk, can you check out
> trunk and test your scenario?
> 
> Gayr
> 
> 
> On Thu, Jul 31, 2014 at 4:43 PM, Jörg Wille <jo...@gmail.com> wrote:
> 
> > This is the first time I use VFS. But local and http file access works.
> > But using webdav (with *Alfresco* as server) does not work.
> > The Problem is similar to this one:
> >
> > http://mail-archives.apache.org/mod_mbox/commons-user/201109.mbox/%3C004001cc769b$ff3e6770$fdbb3650$@queres.com%3E
> >
> > *I am doing the following:*
> >
> > private static final String URL = "webdav://
> > admin:alfresco@192.168.66.124:8080/alfresco/webdav/firmware/";
> > DefaultFileSystemManager manager = new DefaultFileSystemManager();
> > manager.addProvider("file", new DefaultLocalFileProvider());
> > manager.addProvider("http", new HttpFileProvider());
> > manager.addProvider("webdav", new WebdavFileProvider());
> > manager.setCacheStrategy(CacheStrategy.ON_RESOLVE);
> > manager.setFilesCache(new SoftRefFilesCache());
> > manager.init();
> > final FileObject fileObject = manager.resolveFile(URL)
> > System.out.println("Name:" + fileObject.getName());
> > System.out.println("Attached:" + fileObject.isAttached());
> > try {
> >     fileObject.isReadable();
> > } catch (Exception e) {
> >     System.out.println("Message: " + e.getMessage() + "\nCause: " +
> > e.getCause()+ "\nStacktrace: " + getStackTrace(e));
> > }
> > try {
> >     fileObject.getChildren();
> > } catch (Exception e) {
> >     System.out.println("Message: " + e.getMessage() + "\nCause: " +
> > e.getCause()+ "\nStacktrace: " + getStackTrace(e));
> > }
> > try {
> >     fileObject.isFolder();
> > } catch (Exception e) {
> >     System.out.println("Message: " + e.getMessage() + "\nCause: " +
> > e.getCause()+ "\nStacktrace: " + getStackTrace(e));
> > }
> >
> > *Result:*
> >
> > Name:webdav://admin:alfresco@192.168.66.124:8080/alfresco/webdav/firmware/
> >
> > *Attached:false*
> >
> > Message: Could not determine if file "webdav://admin:***@
> > 192.168.66.124:8080/alfresco/webdav/firmware/" is readable.
> >
> > Cause: org.apache.commons.vfs2.FileSystemException: Could not determine the
> > type of file "webdav://admin:***@
> > 192.168.66.124:8080/alfresco/webdav/firmware/".
> >
> > Stacktrace: org.apache.commons.vfs2.FileSystemException: Could not
> > determine if file "webdav://admin:***@
> > 192.168.66.124:8080/alfresco/webdav/firmware/" is readable.
> >
> > …
> >
> > Caused by: java.lang.ClassCastException: java.util.ArrayList cannot be cast
> > to org.w3c.dom.Node
> >
> > at
> >
> > org.apache.commons.vfs2.provider.webdav.WebdavFileObject.isDirectory(WebdavFileObject.java:718)
> >
> > at
> >
> > org.apache.commons.vfs2.provider.webdav.WebdavFileObject.doGetType(WebdavFileObject.java:405)
> >
> > at
> >
> > org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:1497)
> >
> > ... 57 more
> >
> >
> > Message: Could not list the contents of folder "webdav://admin:***@
> > 192.168.66.124:8080/alfresco/webdav/firmware/".
> >
> > Cause: java.lang.ClassCastException: java.util.ArrayList cannot be cast to
> > org.w3c.dom.Node
> >
> > Stacktrace: org.apache.commons.vfs2.FileSystemException: Could not list the
> > contents of folder "webdav://admin:***@
> > 192.168.66.124:8080/alfresco/webdav/firmware/".
> >
> > …
> >
> > Caused by: java.lang.ClassCastException: java.util.ArrayList cannot be cast
> > to org.w3c.dom.Node
> >
> > at
> >
> > org.apache.commons.vfs2.provider.webdav.WebdavFileObject.isDirectory(WebdavFileObject.java:718)
> >
> > at
> >
> > org.apache.commons.vfs2.provider.webdav.WebdavFileObject.doListChildrenResolved(WebdavFileObject.java:453)
> >
> > at
> >
> > org.apache.commons.vfs2.provider.AbstractFileObject.getChildren(AbstractFileObject.java:1147)
> >
> > ... 55 more
> >
> >
> > Message: Could not determine the type of file "webdav://admin:***@
> > 192.168.66.124:8080/alfresco/webdav/firmware/".
> >
> > Cause: java.lang.ClassCastException: java.util.ArrayList cannot be cast to
> > org.w3c.dom.Node
> >
> > Stacktrace: org.apache.commons.vfs2.FileSystemException: Could not
> > determine the type of file "webdav://admin:***@
> > 192.168.66.124:8080/alfresco/webdav/firmware/".
> >
> > …
> >
> > Caused by: java.lang.ClassCastException: java.util.ArrayList cannot be cast
> > to org.w3c.dom.Node
> >
> > at
> >
> > org.apache.commons.vfs2.provider.webdav.WebdavFileObject.isDirectory(WebdavFileObject.java:718)
> >
> > at
> >
> > org.apache.commons.vfs2.provider.webdav.WebdavFileObject.doGetType(WebdavFileObject.java:405)
> >
> > at
> >
> > org.apache.commons.vfs2.provider.AbstractFileObject.getType(AbstractFileObject.java:1497)
> >
> > ... 56 more
> >
> > What am I doing wrong? And what does "Attached:false" means?
> >
> 
> 
> 
> -- 
> E-Mail: garydgregory@gmail.com | ggregory@apache.org
> Java Persistence with Hibernate, Second Edition
> <http://www.manning.com/bauer3/>
> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> Spring Batch in Action <http://www.manning.com/templier/>
> Blog: http://garygregory.wordpress.com
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory