Class SoftRefFilesCache

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, FilesCache, VfsComponent
    Direct Known Subclasses:
    WeakRefFilesCache

    public class SoftRefFilesCache
    extends AbstractFilesCache
    This implementation caches every file as long as it is strongly reachable by the JVM. As soon as the JVM needs memory - every softly reachable file will be discarded.
    See Also:
    SoftReference
    • Constructor Detail

      • SoftRefFilesCache

        public SoftRefFilesCache()
        Constructs a new instance.
    • Method Detail

      • clear

        public void clear​(FileSystem fileSystem)
        Description copied from interface: FilesCache
        Purges the entries corresponding to the FileSystem.
        Parameters:
        fileSystem - The FileSystem.
      • close

        public void close()
        Description copied from class: AbstractVfsComponent
        Closes the provider. This implementation does nothing.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in interface FilesCache
        Specified by:
        close in interface VfsComponent
        Overrides:
        close in class AbstractVfsComponent
      • close

        private void close​(FileSystem fileSystem)
        Parameters:
        fileSystem - The file system to close.
      • createReference

        protected java.lang.ref.Reference<FileObject> createReference​(FileObject file,
                                                                      java.lang.ref.ReferenceQueue<FileObject> refqueue)
      • endThread

        private void endThread()
      • getFile

        public FileObject getFile​(FileSystem fileSystem,
                                  FileName fileName)
        Description copied from interface: FilesCache
        Retrieves a FileObject from the cache by name.
        Parameters:
        fileSystem - The FileSystem.
        fileName - the name
        Returns:
        the file object or null if file is not cached
      • getOrCreateFilesystemCache

        protected java.util.Map<FileName,​java.lang.ref.Reference<FileObject>> getOrCreateFilesystemCache​(FileSystem fileSystem)
      • getSafeName

        private java.lang.String getSafeName​(FileName fileName)
      • getSafeName

        private java.lang.String getSafeName​(FileObject fileObject)
      • putFile

        public void putFile​(FileObject fileObject)
        Description copied from interface: FilesCache
        Adds a FileObject to the cache.
        Parameters:
        fileObject - the file
      • putFileIfAbsent

        public boolean putFileIfAbsent​(FileObject fileObject)
        Description copied from interface: FilesCache
        Adds a FileObject to the cache if it isn't already present.
        Parameters:
        fileObject - the file
        Returns:
        true if the file was stored, false otherwise.
      • removeFile

        public void removeFile​(FileSystem fileSystem,
                               FileName fileName)
        Description copied from interface: FilesCache
        Removes a file from cache.
        Parameters:
        fileSystem - file system
        fileName - file name
      • removeFile

        private void removeFile​(java.lang.ref.Reference<?> ref)
      • startThread

        private void startThread()
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object