1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.vfs.util;
18
19 import org.apache.commons.vfs.FileObject;
20 import org.apache.commons.vfs.FileSystemException;
21 import org.apache.commons.vfs.impl.DecoratedFileObject;
22 import org.apache.commons.vfs.provider.AbstractFileObject;
23
24 /***
25 * Stuff to get some strange things from an FileObject
26 *
27 * @author <a href="mailto:imario@apache.org">Mario Ivankovits</a>
28 * @version $Revision: 480428 $ $Date: 2006-11-29 07:15:24 +0100 (Mi, 29 Nov 2006) $
29 */
30 public class FileObjectUtils
31 {
32 private FileObjectUtils()
33 {
34 }
35
36 /***
37 * get access to the base object even if decorated
38 */
39 public static AbstractFileObject getAbstractFileObject(final FileObject fileObject) throws FileSystemException
40 {
41 Object searchObject = fileObject;
42 while (searchObject instanceof DecoratedFileObject)
43 {
44 searchObject = ((DecoratedFileObject) searchObject).getDecoratedFileObject();
45 }
46 if (searchObject instanceof AbstractFileObject)
47 {
48 return (AbstractFileObject) searchObject;
49 }
50 if (searchObject == null)
51 {
52 return null;
53 }
54
55 throw new FileSystemException("vfs.util/find-abstract-file-object.error", fileObject==null?"null":fileObject.getClass().getName());
56 }
57
58 /***
59 * check if the given FileObject is instance of given class argument
60 */
61 public static boolean isInstanceOf(final FileObject fileObject, final Class wantedClass) throws FileSystemException
62 {
63 Object searchObject = fileObject;
64 while (searchObject instanceof DecoratedFileObject)
65 {
66 if (wantedClass.isInstance(searchObject))
67 {
68 return true;
69 }
70
71 searchObject = ((DecoratedFileObject) searchObject).getDecoratedFileObject();
72 }
73
74 if (wantedClass.isInstance(searchObject))
75 {
76 return true;
77 }
78
79 return false;
80 }
81 }