View Javadoc

    1   /*
    2    * Licensed to the Apache Software Foundation (ASF) under one or more
    3    * contributor license agreements.  See the NOTICE file distributed with
    4    * this work for additional information regarding copyright ownership.
    5    * The ASF licenses this file to You under the Apache License, Version 2.0
    6    * (the "License"); you may not use this file except in compliance with
    7    * the License.  You may obtain a copy of the License at
    8    *
    9    *      http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    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  }