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.cache;
    18
    19  import org.apache.commons.vfs.FileName;
    20  import org.apache.commons.vfs.FileObject;
    21  import org.apache.commons.vfs.FileSystem;
    22
    23  import java.util.HashMap;
    24  import java.util.Map;
    25  import java.util.TreeMap;
    26
    27  /***
    28   * A {@link org.apache.commons.vfs.FilesCache} implementation.<br>
    29   * This implementation caches every file for the complete lifetime of the used {@link org.apache.commons.vfs.FileSystemManager}.
    30   *
    31   * @author <a href="mailto:imario@apache.org">Mario Ivankovits</a>
    32   * @version $Revision: 480428 $ $Date: 2006-11-29 07:15:24 +0100 (Mi, 29 Nov 2006) $
    33   */
    34  public class DefaultFilesCache extends AbstractFilesCache
    35  {
    36      private final Map filesystemCache = new HashMap(10);
    37
    38      public void putFile(final FileObject file)
    39      {
    40          Map files = getOrCreateFilesystemCache(file.getFileSystem());
    41          files.put(file.getName(), file);
    42      }
    43
    44      public FileObject getFile(final FileSystem filesystem, final FileName name)
    45      {
    46          Map files = getOrCreateFilesystemCache(filesystem);
    47          return (FileObject) files.get(name);
    48      }
    49
    50      public void clear(FileSystem filesystem)
    51      {
    52          Map files = getOrCreateFilesystemCache(filesystem);
    53          files.clear();
    54      }
    55
    56      protected Map getOrCreateFilesystemCache(FileSystem filesystem)
    57      {
    58          Map files = (Map) filesystemCache.get(filesystem);
    59          if (files == null)
    60          {
    61              files = new TreeMap();
    62              filesystemCache.put(filesystem, files);
    63          }
    64
    65          return files;
    66      }
    67
    68      public void close()
    69      {
    70          super.close();
    71
    72          filesystemCache.clear();
    73      }
    74
    75      public void removeFile(FileSystem filesystem, FileName name)
    76      {
    77          Map files = getOrCreateFilesystemCache(filesystem);
    78          files.remove(name);
    79      }
    80
    81      public void touchFile(FileObject file)
    82      {
    83      }
    84  }