コード例 #1
0
  private synchronized FileObject resolveFile(final FileName name, final boolean useCache)
      throws FileSystemException {
    if (!rootName.getRootURI().equals(name.getRootURI())) {
      throw new FileSystemException(
          "vfs.provider/mismatched-fs-for-name.error",
          new Object[] {name, rootName, name.getRootURI()});
    }

    // [email protected] ==> use getFileFromCache
    FileObject file;
    if (useCache) {
      file = getFileFromCache(name);
    } else {
      file = null;
    }
    // FileObject file = (FileObject) files.get(name);
    if (file == null) {
      try {
        synchronized (this) {
          file = createFile(name);
        }
      } catch (Exception e) {
        throw new FileSystemException("vfs.provider/resolve-file.error", name, e);
      }

      file = decorateFileObject(file);

      // [email protected] ==> use putFileToCache
      if (useCache) {
        putFileToCache(file);
      }
      // files.put(name, file);
    }

    /** resync the file information if requested */
    if (getFileSystemManager().getCacheStrategy().equals(CacheStrategy.ON_RESOLVE)) {
      file.refresh();
    }
    return file;
  }