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.provider.local;
    18
    19  import org.apache.commons.vfs.FileName;
    20  import org.apache.commons.vfs.FileObject;
    21  import org.apache.commons.vfs.FileSelector;
    22  import org.apache.commons.vfs.FileSystem;
    23  import org.apache.commons.vfs.FileSystemException;
    24  import org.apache.commons.vfs.FileSystemOptions;
    25  import org.apache.commons.vfs.provider.AbstractFileSystem;
    26
    27  import java.io.File;
    28  import java.io.FilePermission;
    29  import java.util.Collection;
    30
    31  /***
    32   * A local file system.
    33   *
    34   * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
    35   * @version $Revision: 480428 $ $Date: 2006-11-29 07:15:24 +0100 (Mi, 29 Nov 2006) $
    36   */
    37  public class LocalFileSystem
    38      extends AbstractFileSystem
    39      implements FileSystem
    40  {
    41      private final String rootFile;
    42
    43      public LocalFileSystem(final FileName rootName,
    44                             final String rootFile,
    45                             final FileSystemOptions opts)
    46      {
    47          super(rootName, null, opts);
    48          this.rootFile = rootFile;
    49      }
    50
    51      /***
    52       * Creates a file object.
    53       */
    54      protected FileObject createFile(final FileName name) throws FileSystemException
    55      {
    56          // Create the file
    57          return new LocalFile(this, rootFile, name);
    58      }
    59
    60      /***
    61       * Returns the capabilities of this file system.
    62       */
    63      protected void addCapabilities(final Collection caps)
    64      {
    65          caps.addAll(DefaultLocalFileProvider.capabilities);
    66      }
    67
    68      /***
    69       * Creates a temporary local copy of a file and its descendents.
    70       */
    71      protected File doReplicateFile(final FileObject fileObject,
    72                                     final FileSelector selector)
    73          throws Exception
    74      {
    75          final LocalFile localFile = (LocalFile) fileObject;
    76          final File file = localFile.getLocalFile();
    77          final SecurityManager sm = System.getSecurityManager();
    78          if (sm != null)
    79          {
    80              final FilePermission requiredPerm = new FilePermission(file.getAbsolutePath(), "read");
    81              sm.checkPermission(requiredPerm);
    82          }
    83          return file;
    84      }
    85
    86  }