package com.aliyun.odps.fs; import com.aliyun.odps.volume.VolumeFSUtil; import com.aliyun.odps.volume.protocol.VolumeFSConstants; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import org.apache.hadoop.fs.permission.FsPermission; import org.apache.hadoop.security.AccessControlException; import org.apache.hadoop.util.Progressable; import java.io.FileNotFoundException; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.util.EnumSet; /** * Created by tianli on 15/11/17. */ public class VolumeFs extends AbstractFileSystem { public VolumeFs(URI uri, String supportedScheme, boolean authorityNeeded, int defaultPort) throws URISyntaxException { super(uri, supportedScheme, authorityNeeded, defaultPort); } private VolumeFileSystem fs; public VolumeFs(final URI theUri, final Configuration conf) throws URISyntaxException, IOException { super(theUri, VolumeFileSystemConfigKeys.VOLUME_URI_SCHEME, false, -1); if (!theUri.getScheme().equalsIgnoreCase(VolumeFileSystemConfigKeys.VOLUME_URI_SCHEME)) { throw new IllegalArgumentException("Passed URI's scheme is not for ODPS Volume"); } fs = new VolumeFileSystem(); fs.initialize(theUri, conf); } @Override public int getUriDefaultPort() { return -1; } @Override public FsServerDefaults getServerDefaults() throws IOException { return null; } @Override public FSDataOutputStream createInternal(Path f, EnumSet<CreateFlag> flag, FsPermission absolutePermission, int bufferSize, short replication, long blockSize, Progressable progress, Options.ChecksumOpt checksumOpt, boolean createParent) throws AccessControlException, FileAlreadyExistsException, FileNotFoundException, ParentNotDirectoryException, UnsupportedFileSystemException, UnresolvedLinkException, IOException { return fs.create(f, null, flag.contains(CreateFlag.OVERWRITE), bufferSize, replication, blockSize, progress); } @Override public void mkdir(Path dir, FsPermission permission, boolean createParent) throws AccessControlException, FileAlreadyExistsException, FileNotFoundException, UnresolvedLinkException, IOException { fs.mkdirs(dir, permission); } @Override public boolean delete(Path f, boolean recursive) throws AccessControlException, FileNotFoundException, UnresolvedLinkException, IOException { return fs.delete(f, recursive); } @Override public FSDataInputStream open(Path f, int bufferSize) throws AccessControlException, FileNotFoundException, UnresolvedLinkException, IOException { return fs.open(f, bufferSize); } @Override public boolean setReplication(Path f, short replication) throws AccessControlException, FileNotFoundException, UnresolvedLinkException, IOException { return fs.setReplication(f, replication); } @Override public void renameInternal(Path src, Path dst) throws AccessControlException, FileAlreadyExistsException, FileNotFoundException, ParentNotDirectoryException, UnresolvedLinkException, IOException { fs.rename(src, dst); } @Override public void setPermission(Path f, FsPermission permission) throws AccessControlException, FileNotFoundException, UnresolvedLinkException, IOException { } @Override public void setOwner(Path f, String username, String groupname) throws AccessControlException, FileNotFoundException, UnresolvedLinkException, IOException { } @Override public void setTimes(Path f, long mtime, long atime) throws AccessControlException, FileNotFoundException, UnresolvedLinkException, IOException { } @Override public FileChecksum getFileChecksum(Path f) throws AccessControlException, FileNotFoundException, UnresolvedLinkException, IOException { return null; } @Override public FileStatus getFileStatus(Path f) throws AccessControlException, FileNotFoundException, UnresolvedLinkException, IOException { return fs.getFileStatus(f); } @Override public BlockLocation[] getFileBlockLocations(Path f, long start, long len) throws AccessControlException, FileNotFoundException, UnresolvedLinkException, IOException { return new BlockLocation[0]; } @Override public FsStatus getFsStatus() throws AccessControlException, FileNotFoundException, IOException { return null; } @Override public FileStatus[] listStatus(Path f) throws AccessControlException, FileNotFoundException, UnresolvedLinkException, IOException { return fs.listStatus(f); } @Override public void setVerifyChecksum(boolean verifyChecksum) throws AccessControlException, IOException { } }