/*
 * Licensed to the University of California, Berkeley under one or more contributor license
 * agreements. See the NOTICE file distributed with this work for additional information regarding
 * copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance with the License. You may obtain a
 * copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */

package tachyon.client.file;

import tachyon.Path;
import tachyon.client.file.options.CreateOptions;
import tachyon.client.file.options.DeleteOptions;
import tachyon.client.file.options.FreeOptions;
import tachyon.client.file.options.GetInfoOptions;
import tachyon.client.file.options.ListStatusOptions;
import tachyon.client.file.options.LoadMetadataOptions;
import tachyon.client.file.options.MkdirOptions;
import tachyon.client.file.options.MountOptions;
import tachyon.client.file.options.OpenOptions;
import tachyon.client.file.options.RenameOptions;
import tachyon.client.file.options.SetStateOptions;
import tachyon.client.file.options.UnmountOptions;
import tachyon.thrift.FileInfo;

import java.util.List;

interface FileSystem {
  FileOutStream create(Path path);
  FileOutStream create(Path path, CreateOptions options);
  Path createDirectory(Path path);
  Path createDirectory(Path path, MkdirOptions options);
  void delete(Path path);
  void delete(Path path, DeleteOptions options);
  boolean exists(Path path);
  void free(Path path);
  void free(Path path, FreeOptions options);
  FileInfo getStatus(Path path);
  FileInfo getStatus(Path path, GetInfoOptions options);
  List<FileInfo> listStatus(Path path);
  List<FileInfo> listStatus(Path path, ListStatusOptions options);
  Path loadMetadata(Path path);
  Path loadMetadata(Path path, LoadMetadataOptions options);
  void mount(Path src, Path dst);
  void mount(Path src, Path dst, MountOptions options);
  FileInStream open(Path path);
  FileInStream open(Path path, OpenOptions options);
  void rename(Path src, Path dst);
  void rename(Path src, Path dst, RenameOptions options);
  void setAttr(Path path);
  void setAttr(Path path, SetStateOptions options);
  void unmount(Path path);
  void unmount(Path path, UnmountOptions options);
}

@@ -831,20 +831,26 @@
 tachyon.
-Path
+TachyonURI
 ;%0Aimport
@@ -1550,28 +1550,34 @@
 ream create(
-Path
+TachyonURI
  path);%0A  Fi
@@ -1595,20 +1595,26 @@
  create(
-Path
+TachyonURI
  path, C
@@ -1634,28 +1634,34 @@
 options);%0A  
-Path
+TachyonURI
  createDirec
@@ -1665,34 +1665,46 @@
 rectory(
-Path path);%0A  Path
+TachyonURI path);%0A  TachyonURI
  createD
@@ -1712,20 +1712,26 @@
 rectory(
-Path
+TachyonURI
  path, M
@@ -1762,28 +1762,34 @@
 void delete(
-Path
+TachyonURI
  path);%0A  vo
@@ -1798,20 +1798,26 @@
  delete(
-Path
+TachyonURI
  path, D
@@ -1856,20 +1856,26 @@
  exists(
-Path
+TachyonURI
  path);%0A
@@ -1882,28 +1882,34 @@
   void free(
-Path
+TachyonURI
  path);%0A  vo
@@ -1916,20 +1916,26 @@
 id free(
-Path
+TachyonURI
  path, F
@@ -1968,36 +1968,42 @@
 eInfo getStatus(
-Path
+TachyonURI
  path);%0A  FileIn
@@ -2011,28 +2011,34 @@
 o getStatus(
-Path
+TachyonURI
  path, GetIn
@@ -2081,28 +2081,34 @@
  listStatus(
-Path
+TachyonURI
  path);%0A  Li
@@ -2131,20 +2131,26 @@
 tStatus(
-Path
+TachyonURI
  path, L
@@ -2174,28 +2174,34 @@
 options);%0A  
-Path
+TachyonURI
  loadMetadat
@@ -2206,26 +2206,38 @@
 ata(
-Path path);%0A  Path
+TachyonURI path);%0A  TachyonURI
  loa
@@ -2246,20 +2246,26 @@
 etadata(
-Path
+TachyonURI
  path, L
@@ -2310,56 +2310,80 @@
 unt(
-Path src, Path dst);%0A  void mount(Path src, Path
+TachyonURI src, TachyonURI dst);%0A  void mount(TachyonURI src, TachyonURI
  dst
@@ -2423,28 +2423,34 @@
 Stream open(
-Path
+TachyonURI
  path);%0A  Fi
@@ -2465,20 +2465,26 @@
 am open(
-Path
+TachyonURI
  path, O
@@ -2522,57 +2522,81 @@
 ame(
-Path src, Path dst);%0A  void rename(Path src, Path
+TachyonURI src, TachyonURI dst);%0A  void rename(TachyonURI src, TachyonURI
  dst
@@ -2632,28 +2632,34 @@
 oid setAttr(
-Path
+TachyonURI
  path);%0A  vo
@@ -2669,20 +2669,26 @@
 setAttr(
-Path
+TachyonURI
  path, S
@@ -2723,28 +2723,34 @@
 oid unmount(
-Path
+TachyonURI
  path);%0A  vo
@@ -2764,12 +2764,18 @@
 unt(
-Path
+TachyonURI
  pat

Use TachyonURI instead of Path.