Java 类org.apache.hadoop.fs.swift.exceptions.SwiftOperationFailedException 实例源码

项目:hadoop    文件:SwiftNativeFileSystemStore.java   
/**
 * extracts URIs from json
 * @param json json to parse
 * @param path path (used in exceptions)
 * @return URIs
 * @throws SwiftOperationFailedException on any problem parsing the JSON
 */
public static List<URI> extractUris(String json, Path path) throws
                                                 SwiftOperationFailedException {
  final Matcher matcher = URI_PATTERN.matcher(json);
  final List<URI> result = new ArrayList<URI>();
  while (matcher.find()) {
    final String s = matcher.group();
    final String uri = s.substring(1, s.length() - 1);
    try {
      URI createdUri = URI.create(uri);
      result.add(createdUri);
    } catch (IllegalArgumentException e) {
      //failure to create the URI, which means this is bad JSON. Convert
      //to an exception with useful text
      throw new SwiftOperationFailedException(
        String.format(
          "could not convert \"%s\" into a URI." +
          " source: %s " +
          " first JSON: %s",
          uri, path, json.substring(0, 256)));
    }
  }
  return result;
}
项目:hadoop    文件:TestSwiftFileSystemRename.java   
@Test(timeout = SWIFT_TEST_TIMEOUT)
public void testMoveDirUnderParent() throws Throwable {
  if (!renameSupported()) {
    return;
  }
  Path testdir = path("test/dir");
  fs.mkdirs(testdir);
  Path parent = testdir.getParent();
  //the outcome here is ambiguous, so is not checked
  try {
    fs.rename(testdir, parent);
  } catch (SwiftOperationFailedException e) {
    // allowed
  }
  assertExists("Source directory has been deleted ", testdir);
}
项目:aliyun-oss-hadoop-fs    文件:SwiftNativeFileSystemStore.java   
/**
 * extracts URIs from json
 * @param json json to parse
 * @param path path (used in exceptions)
 * @return URIs
 * @throws SwiftOperationFailedException on any problem parsing the JSON
 */
public static List<URI> extractUris(String json, Path path) throws
                                                 SwiftOperationFailedException {
  final Matcher matcher = URI_PATTERN.matcher(json);
  final List<URI> result = new ArrayList<URI>();
  while (matcher.find()) {
    final String s = matcher.group();
    final String uri = s.substring(1, s.length() - 1);
    try {
      URI createdUri = URI.create(uri);
      result.add(createdUri);
    } catch (IllegalArgumentException e) {
      //failure to create the URI, which means this is bad JSON. Convert
      //to an exception with useful text
      throw new SwiftOperationFailedException(
        String.format(
          "could not convert \"%s\" into a URI." +
          " source: %s " +
          " first JSON: %s",
          uri, path, json.substring(0, 256)));
    }
  }
  return result;
}
项目:aliyun-oss-hadoop-fs    文件:TestSwiftFileSystemRename.java   
@Test(timeout = SWIFT_TEST_TIMEOUT)
public void testMoveDirUnderParent() throws Throwable {
  if (!renameSupported()) {
    return;
  }
  Path testdir = path("test/dir");
  fs.mkdirs(testdir);
  Path parent = testdir.getParent();
  //the outcome here is ambiguous, so is not checked
  try {
    fs.rename(testdir, parent);
  } catch (SwiftOperationFailedException e) {
    // allowed
  }
  assertExists("Source directory has been deleted ", testdir);
}
项目:big-c    文件:SwiftNativeFileSystemStore.java   
/**
 * extracts URIs from json
 * @param json json to parse
 * @param path path (used in exceptions)
 * @return URIs
 * @throws SwiftOperationFailedException on any problem parsing the JSON
 */
public static List<URI> extractUris(String json, Path path) throws
                                                 SwiftOperationFailedException {
  final Matcher matcher = URI_PATTERN.matcher(json);
  final List<URI> result = new ArrayList<URI>();
  while (matcher.find()) {
    final String s = matcher.group();
    final String uri = s.substring(1, s.length() - 1);
    try {
      URI createdUri = URI.create(uri);
      result.add(createdUri);
    } catch (IllegalArgumentException e) {
      //failure to create the URI, which means this is bad JSON. Convert
      //to an exception with useful text
      throw new SwiftOperationFailedException(
        String.format(
          "could not convert \"%s\" into a URI." +
          " source: %s " +
          " first JSON: %s",
          uri, path, json.substring(0, 256)));
    }
  }
  return result;
}
项目:big-c    文件:TestSwiftFileSystemRename.java   
@Test(timeout = SWIFT_TEST_TIMEOUT)
public void testMoveDirUnderParent() throws Throwable {
  if (!renameSupported()) {
    return;
  }
  Path testdir = path("test/dir");
  fs.mkdirs(testdir);
  Path parent = testdir.getParent();
  //the outcome here is ambiguous, so is not checked
  try {
    fs.rename(testdir, parent);
  } catch (SwiftOperationFailedException e) {
    // allowed
  }
  assertExists("Source directory has been deleted ", testdir);
}
项目:hadoop-2.6.0-cdh5.4.3    文件:SwiftNativeFileSystemStore.java   
/**
 * extracts URIs from json
 * @param json json to parse
 * @param path path (used in exceptions)
 * @return URIs
 * @throws SwiftOperationFailedException on any problem parsing the JSON
 */
public static List<URI> extractUris(String json, Path path) throws
                                                 SwiftOperationFailedException {
  final Matcher matcher = URI_PATTERN.matcher(json);
  final List<URI> result = new ArrayList<URI>();
  while (matcher.find()) {
    final String s = matcher.group();
    final String uri = s.substring(1, s.length() - 1);
    try {
      URI createdUri = URI.create(uri);
      result.add(createdUri);
    } catch (IllegalArgumentException e) {
      //failure to create the URI, which means this is bad JSON. Convert
      //to an exception with useful text
      throw new SwiftOperationFailedException(
        String.format(
          "could not convert \"%s\" into a URI." +
          " source: %s " +
          " first JSON: %s",
          uri, path, json.substring(0, 256)));
    }
  }
  return result;
}
项目:hadoop-2.6.0-cdh5.4.3    文件:TestSwiftFileSystemRename.java   
@Test(timeout = SWIFT_TEST_TIMEOUT)
public void testMoveDirUnderParent() throws Throwable {
  if (!renameSupported()) {
    return;
  }
  Path testdir = path("test/dir");
  fs.mkdirs(testdir);
  Path parent = testdir.getParent();
  //the outcome here is ambiguous, so is not checked
  try {
    fs.rename(testdir, parent);
  } catch (SwiftOperationFailedException e) {
    // allowed
  }
  assertExists("Source directory has been deleted ", testdir);
}
项目:hops    文件:SwiftNativeFileSystemStore.java   
/**
 * extracts URIs from json
 * @param json json to parse
 * @param path path (used in exceptions)
 * @return URIs
 * @throws SwiftOperationFailedException on any problem parsing the JSON
 */
public static List<URI> extractUris(String json, Path path) throws
                                                 SwiftOperationFailedException {
  final Matcher matcher = URI_PATTERN.matcher(json);
  final List<URI> result = new ArrayList<URI>();
  while (matcher.find()) {
    final String s = matcher.group();
    final String uri = s.substring(1, s.length() - 1);
    try {
      URI createdUri = URI.create(uri);
      result.add(createdUri);
    } catch (IllegalArgumentException e) {
      //failure to create the URI, which means this is bad JSON. Convert
      //to an exception with useful text
      throw new SwiftOperationFailedException(
        String.format(
          "could not convert \"%s\" into a URI." +
          " source: %s " +
          " first JSON: %s",
          uri, path, json.substring(0, 256)));
    }
  }
  return result;
}
项目:hops    文件:TestSwiftFileSystemRename.java   
@Test(timeout = SWIFT_TEST_TIMEOUT)
public void testMoveDirUnderParent() throws Throwable {
  if (!renameSupported()) {
    return;
  }
  Path testdir = path("test/dir");
  fs.mkdirs(testdir);
  Path parent = testdir.getParent();
  //the outcome here is ambiguous, so is not checked
  try {
    fs.rename(testdir, parent);
  } catch (SwiftOperationFailedException e) {
    // allowed
  }
  assertExists("Source directory has been deleted ", testdir);
}
项目:hadoop-on-lustre2    文件:SwiftNativeFileSystemStore.java   
/**
 * extracts URIs from json
 * @param json json to parse
 * @param path path (used in exceptions)
 * @return URIs
 * @throws SwiftOperationFailedException on any problem parsing the JSON
 */
public static List<URI> extractUris(String json, Path path) throws
                                                 SwiftOperationFailedException {
  final Matcher matcher = URI_PATTERN.matcher(json);
  final List<URI> result = new ArrayList<URI>();
  while (matcher.find()) {
    final String s = matcher.group();
    final String uri = s.substring(1, s.length() - 1);
    try {
      URI createdUri = URI.create(uri);
      result.add(createdUri);
    } catch (IllegalArgumentException e) {
      //failure to create the URI, which means this is bad JSON. Convert
      //to an exception with useful text
      throw new SwiftOperationFailedException(
        String.format(
          "could not convert \"%s\" into a URI." +
          " source: %s " +
          " first JSON: %s",
          uri, path, json.substring(0, 256)));
    }
  }
  return result;
}
项目:sahara-extra    文件:SwiftNativeFileSystemStore.java   
/**
 * extracts URIs from json
 * @param json json to parse
 * @param path path (used in exceptions)
 * @return URIs
 * @throws SwiftOperationFailedException on any problem parsing the JSON
 */
public static List<URI> extractUris(String json, Path path) throws
                                                 SwiftOperationFailedException {
  final Matcher matcher = URI_PATTERN.matcher(json);
  final List<URI> result = new ArrayList<URI>();
  while (matcher.find()) {
    final String s = matcher.group();
    final String uri = s.substring(1, s.length() - 1);
    try {
      URI createdUri = URI.create(uri);
      result.add(createdUri);
    } catch (IllegalArgumentException e) {
      //failure to create the URI, which means this is bad JSON. Convert
      //to an exception with useful text
      throw new SwiftOperationFailedException(
        String.format(
          "could not convert \"%s\" into a URI." +
          " source: %s " +
          " first JSON: %s",
          uri, path, json.substring(0, 256)));
    }
  }
  return result;
}
项目:hadoop    文件:SwiftNativeFileSystem.java   
/**
   * @param permission Currently ignored.
   */
  @Override
  public FSDataOutputStream create(Path file, FsPermission permission,
                                   boolean overwrite, int bufferSize,
                                   short replication, long blockSize,
                                   Progressable progress)
          throws IOException {
    LOG.debug("SwiftFileSystem.create");

    FileStatus fileStatus = null;
    Path absolutePath = makeAbsolute(file);
    try {
      fileStatus = getFileStatus(absolutePath);
    } catch (FileNotFoundException e) {
      //the file isn't there.
    }

    if (fileStatus != null) {
      //the path exists -action depends on whether or not it is a directory,
      //and what the overwrite policy is.

      //What is clear at this point is that if the entry exists, there's
      //no need to bother creating any parent entries
      if (fileStatus.isDirectory()) {
        //here someone is trying to create a file over a directory

/*    we can't throw an exception here as there is no easy way to distinguish
     a file from the dir

        throw new SwiftPathExistsException("Cannot create a file over a directory:"
                                           + file);
 */
        if (LOG.isDebugEnabled()) {
          LOG.debug("Overwriting either an empty file or a directory");
        }
      }
      if (overwrite) {
        //overwrite set -> delete the object.
        store.delete(absolutePath, true);
      } else {
        throw new FileAlreadyExistsException("Path exists: " + file);
      }
    } else {
      // destination does not exist -trigger creation of the parent
      Path parent = file.getParent();
      if (parent != null) {
        if (!mkdirs(parent)) {
          throw new SwiftOperationFailedException(
            "Mkdirs failed to create " + parent);
        }
      }
    }

    SwiftNativeOutputStream out = createSwiftOutputStream(file);
    return new FSDataOutputStream(out, statistics);
  }
项目:hadoop    文件:SwiftFileSystemBaseTest.java   
/**
 * Rename to success
 *
 * @param src source
 * @param dst dest
 * @param srcExists add assert that the source exists afterwards
 * @param dstExists add assert the dest exists afterwards
 * @throws SwiftOperationFailedException operation failure
 * @throws IOException IO problems
 */
protected void renameToSuccess(Path src, Path dst,
                               boolean srcExists, boolean dstExists)
    throws SwiftOperationFailedException, IOException {
  getStore().rename(src, dst);
  String outcome = getRenameOutcome(src, dst);
  assertEquals("Source " + src + "exists: " + outcome,
          srcExists, fs.exists(src));
  assertEquals("Destination " + dstExists + " exists" + outcome,
          dstExists, fs.exists(dst));
}
项目:aliyun-oss-hadoop-fs    文件:SwiftFileSystemBaseTest.java   
/**
 * Rename to success
 *
 * @param src source
 * @param dst dest
 * @param srcExists add assert that the source exists afterwards
 * @param dstExists add assert the dest exists afterwards
 * @throws SwiftOperationFailedException operation failure
 * @throws IOException IO problems
 */
protected void renameToSuccess(Path src, Path dst,
                               boolean srcExists, boolean dstExists)
    throws SwiftOperationFailedException, IOException {
  getStore().rename(src, dst);
  String outcome = getRenameOutcome(src, dst);
  assertEquals("Source " + src + "exists: " + outcome,
          srcExists, fs.exists(src));
  assertEquals("Destination " + dstExists + " exists" + outcome,
          dstExists, fs.exists(dst));
}
项目:big-c    文件:SwiftFileSystemBaseTest.java   
/**
 * Rename to success
 *
 * @param src source
 * @param dst dest
 * @param srcExists add assert that the source exists afterwards
 * @param dstExists add assert the dest exists afterwards
 * @throws SwiftOperationFailedException operation failure
 * @throws IOException IO problems
 */
protected void renameToSuccess(Path src, Path dst,
                               boolean srcExists, boolean dstExists)
    throws SwiftOperationFailedException, IOException {
  getStore().rename(src, dst);
  String outcome = getRenameOutcome(src, dst);
  assertEquals("Source " + src + "exists: " + outcome,
          srcExists, fs.exists(src));
  assertEquals("Destination " + dstExists + " exists" + outcome,
          dstExists, fs.exists(dst));
}
项目:hadoop-2.6.0-cdh5.4.3    文件:SwiftFileSystemBaseTest.java   
/**
 * Rename to success
 *
 * @param src source
 * @param dst dest
 * @param srcExists add assert that the source exists afterwards
 * @param dstExists add assert the dest exists afterwards
 * @throws SwiftOperationFailedException operation failure
 * @throws IOException IO problems
 */
protected void renameToSuccess(Path src, Path dst,
                               boolean srcExists, boolean dstExists)
    throws SwiftOperationFailedException, IOException {
  getStore().rename(src, dst);
  String outcome = getRenameOutcome(src, dst);
  assertEquals("Source " + src + "exists: " + outcome,
          srcExists, fs.exists(src));
  assertEquals("Destination " + dstExists + " exists" + outcome,
          dstExists, fs.exists(dst));
}
项目:hops    文件:SwiftFileSystemBaseTest.java   
/**
 * Rename to success
 *
 * @param src source
 * @param dst dest
 * @param srcExists add assert that the source exists afterwards
 * @param dstExists add assert the dest exists afterwards
 * @throws SwiftOperationFailedException operation failure
 * @throws IOException IO problems
 */
protected void renameToSuccess(Path src, Path dst,
                               boolean srcExists, boolean dstExists)
    throws SwiftOperationFailedException, IOException {
  getStore().rename(src, dst);
  String outcome = getRenameOutcome(src, dst);
  assertEquals("Source " + src + "exists: " + outcome,
          srcExists, fs.exists(src));
  assertEquals("Destination " + dstExists + " exists" + outcome,
          dstExists, fs.exists(dst));
}
项目:hadoop-on-lustre2    文件:SwiftFileSystemBaseTest.java   
/**
 * Rename to success
 *
 * @param src source
 * @param dst dest
 * @param srcExists add assert that the source exists afterwards
 * @param dstExists add assert the dest exists afterwards
 * @throws SwiftOperationFailedException operation failure
 * @throws IOException IO problems
 */
protected void renameToSuccess(Path src, Path dst,
                               boolean srcExists, boolean dstExists)
    throws SwiftOperationFailedException, IOException {
  getStore().rename(src, dst);
  String outcome = getRenameOutcome(src, dst);
  assertEquals("Source " + src + "exists: " + outcome,
          srcExists, fs.exists(src));
  assertEquals("Destination " + dstExists + " exists" + outcome,
          dstExists, fs.exists(dst));
}
项目:sahara-extra    文件:SwiftFileSystemBaseTest.java   
/**
 * Rename to success
 *
 * @param src source
 * @param dst dest
 * @param srcExists add assert that the source exists afterwards
 * @param dstExists add assert the dest exists afterwards
 * @throws SwiftOperationFailedException operation failure
 * @throws IOException IO problems
 */
protected void renameToSuccess(Path src, Path dst,
                               boolean srcExists, boolean dstExists)
    throws SwiftOperationFailedException, IOException {
  getStore().rename(src, dst);
  String outcome = getRenameOutcome(src, dst);
  assertEquals("Source " + src + "exists: " + outcome,
          srcExists, fs.exists(src));
  assertEquals("Destination " + dstExists + " exists" + outcome,
          dstExists, fs.exists(dst));
}
项目:aliyun-oss-hadoop-fs    文件:SwiftNativeFileSystem.java   
/**
   * @param permission Currently ignored.
   */
  @Override
  public FSDataOutputStream create(Path file, FsPermission permission,
                                   boolean overwrite, int bufferSize,
                                   short replication, long blockSize,
                                   Progressable progress)
          throws IOException {
    LOG.debug("SwiftFileSystem.create");

    FileStatus fileStatus = null;
    Path absolutePath = makeAbsolute(file);
    try {
      fileStatus = getFileStatus(absolutePath);
    } catch (FileNotFoundException e) {
      //the file isn't there.
    }

    if (fileStatus != null) {
      //the path exists -action depends on whether or not it is a directory,
      //and what the overwrite policy is.

      //What is clear at this point is that if the entry exists, there's
      //no need to bother creating any parent entries
      if (fileStatus.isDirectory()) {
        //here someone is trying to create a file over a directory

/*    we can't throw an exception here as there is no easy way to distinguish
     a file from the dir

        throw new SwiftPathExistsException("Cannot create a file over a directory:"
                                           + file);
 */
        if (LOG.isDebugEnabled()) {
          LOG.debug("Overwriting either an empty file or a directory");
        }
      }
      if (overwrite) {
        //overwrite set -> delete the object.
        store.delete(absolutePath, true);
      } else {
        throw new FileAlreadyExistsException("Path exists: " + file);
      }
    } else {
      // destination does not exist -trigger creation of the parent
      Path parent = file.getParent();
      if (parent != null) {
        if (!mkdirs(parent)) {
          throw new SwiftOperationFailedException(
            "Mkdirs failed to create " + parent);
        }
      }
    }

    SwiftNativeOutputStream out = createSwiftOutputStream(file);
    return new FSDataOutputStream(out, statistics);
  }
项目:big-c    文件:SwiftNativeFileSystem.java   
/**
   * @param permission Currently ignored.
   */
  @Override
  public FSDataOutputStream create(Path file, FsPermission permission,
                                   boolean overwrite, int bufferSize,
                                   short replication, long blockSize,
                                   Progressable progress)
          throws IOException {
    LOG.debug("SwiftFileSystem.create");

    FileStatus fileStatus = null;
    Path absolutePath = makeAbsolute(file);
    try {
      fileStatus = getFileStatus(absolutePath);
    } catch (FileNotFoundException e) {
      //the file isn't there.
    }

    if (fileStatus != null) {
      //the path exists -action depends on whether or not it is a directory,
      //and what the overwrite policy is.

      //What is clear at this point is that if the entry exists, there's
      //no need to bother creating any parent entries
      if (fileStatus.isDirectory()) {
        //here someone is trying to create a file over a directory

/*    we can't throw an exception here as there is no easy way to distinguish
     a file from the dir

        throw new SwiftPathExistsException("Cannot create a file over a directory:"
                                           + file);
 */
        if (LOG.isDebugEnabled()) {
          LOG.debug("Overwriting either an empty file or a directory");
        }
      }
      if (overwrite) {
        //overwrite set -> delete the object.
        store.delete(absolutePath, true);
      } else {
        throw new FileAlreadyExistsException("Path exists: " + file);
      }
    } else {
      // destination does not exist -trigger creation of the parent
      Path parent = file.getParent();
      if (parent != null) {
        if (!mkdirs(parent)) {
          throw new SwiftOperationFailedException(
            "Mkdirs failed to create " + parent);
        }
      }
    }

    SwiftNativeOutputStream out = createSwiftOutputStream(file);
    return new FSDataOutputStream(out, statistics);
  }
项目:hadoop-2.6.0-cdh5.4.3    文件:SwiftNativeFileSystem.java   
/**
   * @param permission Currently ignored.
   */
  @Override
  public FSDataOutputStream create(Path file, FsPermission permission,
                                   boolean overwrite, int bufferSize,
                                   short replication, long blockSize,
                                   Progressable progress)
          throws IOException {
    LOG.debug("SwiftFileSystem.create");

    FileStatus fileStatus = null;
    Path absolutePath = makeAbsolute(file);
    try {
      fileStatus = getFileStatus(absolutePath);
    } catch (FileNotFoundException e) {
      //the file isn't there.
    }

    if (fileStatus != null) {
      //the path exists -action depends on whether or not it is a directory,
      //and what the overwrite policy is.

      //What is clear at this point is that if the entry exists, there's
      //no need to bother creating any parent entries
      if (fileStatus.isDirectory()) {
        //here someone is trying to create a file over a directory

/*    we can't throw an exception here as there is no easy way to distinguish
     a file from the dir

        throw new SwiftPathExistsException("Cannot create a file over a directory:"
                                           + file);
 */
        if (LOG.isDebugEnabled()) {
          LOG.debug("Overwriting either an empty file or a directory");
        }
      }
      if (overwrite) {
        //overwrite set -> delete the object.
        store.delete(absolutePath, true);
      } else {
        throw new FileAlreadyExistsException("Path exists: " + file);
      }
    } else {
      // destination does not exist -trigger creation of the parent
      Path parent = file.getParent();
      if (parent != null) {
        if (!mkdirs(parent)) {
          throw new SwiftOperationFailedException(
            "Mkdirs failed to create " + parent);
        }
      }
    }

    SwiftNativeOutputStream out = createSwiftOutputStream(file);
    return new FSDataOutputStream(out, statistics);
  }
项目:hops    文件:SwiftNativeFileSystem.java   
/**
   * @param permission Currently ignored.
   */
  @Override
  public FSDataOutputStream create(Path file, FsPermission permission,
                                   boolean overwrite, int bufferSize,
                                   short replication, long blockSize,
                                   Progressable progress)
          throws IOException {
    LOG.debug("SwiftFileSystem.create");

    FileStatus fileStatus = null;
    Path absolutePath = makeAbsolute(file);
    try {
      fileStatus = getFileStatus(absolutePath);
    } catch (FileNotFoundException e) {
      //the file isn't there.
    }

    if (fileStatus != null) {
      //the path exists -action depends on whether or not it is a directory,
      //and what the overwrite policy is.

      //What is clear at this point is that if the entry exists, there's
      //no need to bother creating any parent entries
      if (fileStatus.isDirectory()) {
        //here someone is trying to create a file over a directory

/*    we can't throw an exception here as there is no easy way to distinguish
     a file from the dir

        throw new SwiftPathExistsException("Cannot create a file over a directory:"
                                           + file);
 */
        if (LOG.isDebugEnabled()) {
          LOG.debug("Overwriting either an empty file or a directory");
        }
      }
      if (overwrite) {
        //overwrite set -> delete the object.
        store.delete(absolutePath, true);
      } else {
        throw new FileAlreadyExistsException("Path exists: " + file);
      }
    } else {
      // destination does not exist -trigger creation of the parent
      Path parent = file.getParent();
      if (parent != null) {
        if (!mkdirs(parent)) {
          throw new SwiftOperationFailedException(
            "Mkdirs failed to create " + parent);
        }
      }
    }

    SwiftNativeOutputStream out = createSwiftOutputStream(file);
    return new FSDataOutputStream(out, statistics);
  }
项目:hadoop-on-lustre2    文件:SwiftNativeFileSystem.java   
/**
   * @param permission Currently ignored.
   */
  @Override
  public FSDataOutputStream create(Path file, FsPermission permission,
                                   boolean overwrite, int bufferSize,
                                   short replication, long blockSize,
                                   Progressable progress)
          throws IOException {
    LOG.debug("SwiftFileSystem.create");

    FileStatus fileStatus = null;
    Path absolutePath = makeAbsolute(file);
    try {
      fileStatus = getFileStatus(absolutePath);
    } catch (FileNotFoundException e) {
      //the file isn't there.
    }

    if (fileStatus != null) {
      //the path exists -action depends on whether or not it is a directory,
      //and what the overwrite policy is.

      //What is clear at this point is that if the entry exists, there's
      //no need to bother creating any parent entries
      if (fileStatus.isDirectory()) {
        //here someone is trying to create a file over a directory

/*    we can't throw an exception here as there is no easy way to distinguish
     a file from the dir

        throw new SwiftPathExistsException("Cannot create a file over a directory:"
                                           + file);
 */
        if (LOG.isDebugEnabled()) {
          LOG.debug("Overwriting either an empty file or a directory");
        }
      }
      if (overwrite) {
        //overwrite set -> delete the object.
        store.delete(absolutePath, true);
      } else {
        throw new SwiftPathExistsException("Path exists: " + file);
      }
    } else {
      // destination does not exist -trigger creation of the parent
      Path parent = file.getParent();
      if (parent != null) {
        if (!mkdirs(parent)) {
          throw new SwiftOperationFailedException(
            "Mkdirs failed to create " + parent);
        }
      }
    }

    SwiftNativeOutputStream out = createSwiftOutputStream(file);
    return new FSDataOutputStream(out, statistics);
  }
项目:sahara-extra    文件:SwiftNativeFileSystem.java   
/**
   * @param permission Currently ignored.
   */
  @Override
  public FSDataOutputStream create(Path file, FsPermission permission,
                                   boolean overwrite, int bufferSize,
                                   short replication, long blockSize,
                                   Progressable progress)
          throws IOException {
    LOG.debug("SwiftFileSystem.create");

    FileStatus fileStatus = null;
    Path absolutePath = makeAbsolute(file);
    try {
      fileStatus = getFileStatus(absolutePath);
    } catch (FileNotFoundException e) {
      //the file isn't there.
    }

    if (fileStatus != null) {
      //the path exists -action depends on whether or not it is a directory,
      //and what the overwrite policy is.

      //What is clear at this point is that if the entry exists, there's
      //no need to bother creating any parent entries
      if (fileStatus.isDir()) {
        //here someone is trying to create a file over a directory

/*    we can't throw an exception here as there is no easy way to distinguish
     a file from the dir

        throw new SwiftPathExistsException("Cannot create a file over a directory:"
                                           + file);
 */
        if (LOG.isDebugEnabled()) {
          LOG.debug("Overwriting either an empty file or a directory");
        }
      }
      if (overwrite) {
        //overwrite set -> delete the object.
        store.delete(absolutePath, true);
      } else {
        throw new SwiftPathExistsException("Path exists: " + file);
      }
    } else {
      // destination does not exist -trigger creation of the parent
      Path parent = file.getParent();
      if (parent != null) {
        if (!mkdirs(parent)) {
          throw new SwiftOperationFailedException(
            "Mkdirs failed to create " + parent);
        }
      }
    }

    SwiftNativeOutputStream out = createSwiftOutputStream(file);
    return new FSDataOutputStream(out, statistics);
  }