Class AbstractFileSystem

java.lang.Object
org.apache.commons.vfs2.provider.AbstractVfsComponent
org.apache.commons.vfs2.provider.AbstractFileSystem
All Implemented Interfaces:
Closeable, AutoCloseable, FileSystem, VfsComponent
Direct Known Subclasses:
CompressedFileFileSystem, FtpFileSystem, Http4FileSystem, LocalFileSystem, RamFileSystem, SftpFileSystem, TarFileSystem, UrlFileSystem, VirtualFileSystem, ZipFileSystem

public abstract class AbstractFileSystem extends AbstractVfsComponent implements FileSystem
A partial FileSystem implementation.
  • Field Details

    • EMPTY_FILE_LISTENER_ARRAY

      private static final FileListener[] EMPTY_FILE_LISTENER_ARRAY
    • LOG

      private static final org.apache.commons.logging.Log LOG
    • rootName

      private final FileName rootName
      The "root" of the file system. This is always "/" so it isn't always the "real" root.
    • rootURI

      private final String rootURI
      The root URI of the file system. The base path specified as a file system option when the file system was created.
    • capabilities

      private final Collection<Capability> capabilities
    • parentLayer

      private final FileObject parentLayer
    • listenerMap

      private final Map<FileName,ArrayList<FileListener>> listenerMap
      Map from FileName to an ArrayList of listeners for that file.
    • fileSystemOptions

      private final FileSystemOptions fileSystemOptions
      FileSystemOptions used for configuration
    • useCount

      private final AtomicLong useCount
      How many fileObjects are handed out
    • cacheKey

      private FileSystemKey cacheKey
    • openStreams

      private final AtomicInteger openStreams
      open streams counter for this file system
  • Constructor Details

    • AbstractFileSystem

      AbstractFileSystem()
      Only provided for Serializable subclasses.
    • AbstractFileSystem

      protected AbstractFileSystem(FileName rootFileName, FileObject parentLayer, FileSystemOptions fileSystemOptions)
  • Method Details

    • init

      public void init() throws FileSystemException
      Initializes this component.
      Specified by:
      init in interface VfsComponent
      Overrides:
      init in class AbstractVfsComponent
      Throws:
      FileSystemException - if an error occurs.
    • close

      public void close()
      Closes this component.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Specified by:
      close in interface VfsComponent
      Overrides:
      close in class AbstractVfsComponent
    • closeCommunicationLink

      public void closeCommunicationLink()
      Closes the underlying link used to access the files.
    • doCloseCommunicationLink

      protected void doCloseCommunicationLink()
      Closes the underlying link used to access the files.
    • createFile

      protected abstract FileObject createFile(AbstractFileName name) throws Exception
      Creates a file object.

      This method is called only if the requested file is not cached.

      Parameters:
      name - name referencing the new file.
      Returns:
      new created FileObject.
      Throws:
      Exception - might throw an Exception, which is then wrapped in FileSystemException.
    • addCapabilities

      protected abstract void addCapabilities(Collection<Capability> caps)
      Adds the capabilities of this file system.
      Parameters:
      caps - collections of Capabilities, can be immutable.
    • getRootName

      public FileName getRootName()
      Returns the name of the root of this file system.
      Specified by:
      getRootName in interface FileSystem
      Returns:
      the root FileName.
    • getRootURI

      public String getRootURI()
      Returns the root URI specified for this file System.
      Specified by:
      getRootURI in interface FileSystem
      Returns:
      The root URI used in this file system.
      Since:
      2.0
    • putFileToCache

      protected void putFileToCache(FileObject file)
      Adds a file object to the cache.
      Parameters:
      file - the file to add.
    • getFilesCache

      private FilesCache getFilesCache()
    • getFileFromCache

      protected FileObject getFileFromCache(FileName name)
      Returns a cached file.
      Parameters:
      name - name to search for.
      Returns:
      file object or null if not found.
    • removeFileFromCache

      protected void removeFileFromCache(FileName name)
      Removes a cached file.
      Parameters:
      name - The file name to remove.
    • hasCapability

      public boolean hasCapability(Capability capability)
      Determines if this file system has a particular capability.
      Specified by:
      hasCapability in interface FileSystem
      Parameters:
      capability - the Capability to check for.
      Returns:
      true if the FileSystem has the Capability, false otherwise.
    • getAttribute

      public Object getAttribute(String attrName) throws FileSystemException
      Retrieves the attribute with the specified name. The default implementation simply throws an exception.
      Specified by:
      getAttribute in interface FileSystem
      Parameters:
      attrName - The name of the attribute.
      Returns:
      the Object associated with the attribute or null if no object is.
      Throws:
      FileSystemException - if an error occurs.
      See Also:
    • setAttribute

      public void setAttribute(String attrName, Object value) throws FileSystemException
      Sets the attribute with the specified name. The default implementation simply throws an exception.
      Specified by:
      setAttribute in interface FileSystem
      Parameters:
      attrName - the attribute name.
      value - The object to associate with the attribute.
      Throws:
      FileSystemException - if an error occurs.
      See Also:
    • getParentLayer

      public FileObject getParentLayer() throws FileSystemException
      Returns the parent layer if this is a layered file system.
      Specified by:
      getParentLayer in interface FileSystem
      Returns:
      The FileObject for the parent layer.
      Throws:
      FileSystemException - if an error occurs.
    • getRoot

      public FileObject getRoot() throws FileSystemException
      Returns the root file of this file system.
      Specified by:
      getRoot in interface FileSystem
      Returns:
      The root FileObject of the FileSystem
      Throws:
      FileSystemException - if an error occurs.
    • resolveFile

      public FileObject resolveFile(String nameStr) throws FileSystemException
      Finds a file in this file system.
      Specified by:
      resolveFile in interface FileSystem
      Parameters:
      nameStr - The name of the file to resolve.
      Returns:
      The located FileObject or null if none could be located.
      Throws:
      FileSystemException - if an error occurs.
    • resolveFile

      public FileObject resolveFile(FileName name) throws FileSystemException
      Finds a file in this file system.
      Specified by:
      resolveFile in interface FileSystem
      Parameters:
      name - The name of the file to locate.
      Returns:
      The located FileObject or null if none could be located.
      Throws:
      FileSystemException - if an error occurs.
    • resolveFile

      private FileObject resolveFile(FileName name, boolean useCache) throws FileSystemException
      Throws:
      FileSystemException
    • decorateFileObject

      protected FileObject decorateFileObject(FileObject file) throws FileSystemException
      Throws:
      FileSystemException
    • replicateFile

      public File replicateFile(FileObject file, FileSelector selector) throws FileSystemException
      Creates a temporary local copy of a file and its descendants.
      Specified by:
      replicateFile in interface FileSystem
      Parameters:
      file - The FileObject to replicate.
      selector - The FileSelector.
      Returns:
      The replicated File.
      Throws:
      FileSystemException - if an error occurs.
    • getFileSystemOptions

      public FileSystemOptions getFileSystemOptions()
      Returns the FileSystemOptions used to instantiate this file system.
      Specified by:
      getFileSystemOptions in interface FileSystem
      Returns:
      the FileSystemOptions.
    • getFileSystemManager

      public FileSystemManager getFileSystemManager()
      Returns the FileSystemManager used to instantiate this file system.
      Specified by:
      getFileSystemManager in interface FileSystem
      Returns:
      the FileSystemManager.
    • getLastModTimeAccuracy

      public double getLastModTimeAccuracy()
      Returns the accuracy of the last modification time.
      Specified by:
      getLastModTimeAccuracy in interface FileSystem
      Returns:
      ms 0 perfectly accurate, >0 might be off by this value e.g. sftp 1000ms
    • doReplicateFile

      protected File doReplicateFile(FileObject file, FileSelector selector) throws Exception
      Creates a temporary local copy of a file and its descendants.
      Parameters:
      file - the start of the tree.
      selector - selection what to do with childs.
      Returns:
      replicated root file.
      Throws:
      Exception - any Exception is wrapped as FileSystemException.
    • addJunction

      public void addJunction(String junctionPoint, FileObject targetFile) throws FileSystemException
      Adds a junction to this file system.
      Specified by:
      addJunction in interface FileSystem
      Parameters:
      junctionPoint - The junction point.
      targetFile - The target to add.
      Throws:
      FileSystemException - if an error occurs.
    • removeJunction

      public void removeJunction(String junctionPoint) throws FileSystemException
      Removes a junction from this file system.
      Specified by:
      removeJunction in interface FileSystem
      Parameters:
      junctionPoint - The junction point.
      Throws:
      FileSystemException - if an error occurs
    • addListener

      public void addListener(FileObject file, FileListener listener)
      Adds a listener on a file in this file system.
      Specified by:
      addListener in interface FileSystem
      Parameters:
      file - The FileObject to be monitored.
      listener - The FileListener
    • removeListener

      public void removeListener(FileObject file, FileListener listener)
      Removes a listener from a file in this file system.
      Specified by:
      removeListener in interface FileSystem
      Parameters:
      file - The FileObject to be monitored.
      listener - The FileListener
    • fireFileCreated

      public void fireFileCreated(FileObject file)
      Fires a file create event.
      Parameters:
      file - The FileObject that was created.
    • fireFileDeleted

      public void fireFileDeleted(FileObject file)
      Fires a file delete event.
      Parameters:
      file - The FileObject that was deleted.
    • fireFileChanged

      public void fireFileChanged(FileObject file)
      Fires a file changed event.

      This will only happen if you monitor the file using FileMonitor.

      Parameters:
      file - The FileObject that changed.
    • isReleaseable

      public boolean isReleaseable()
      Returns true if no file is using this FileSystem.
      Returns:
      true if no file is using this FileSystem.
    • freeResources

      void freeResources()
    • fireEvent

      private void fireEvent(AbstractFileChangeEvent event)
      Fires an event.
    • fileObjectHanded

      void fileObjectHanded(FileObject fileObject)
    • fileObjectDestroyed

      void fileObjectDestroyed(FileObject fileObject)
    • setCacheKey

      void setCacheKey(FileSystemKey cacheKey)
    • getCacheKey

      FileSystemKey getCacheKey()
    • streamOpened

      void streamOpened()
    • streamClosed

      void streamClosed()
    • notifyAllStreamsClosed

      protected void notifyAllStreamsClosed()
      Called after all file-objects closed their streams.
    • isOpen

      public boolean isOpen()
      Checks if this file system has open streams.
      Returns:
      true if the FileSystem has open streams.