diff --git shims/src/0.20/java/org/apache/hadoop/hive/fs/ProxyFileSystem.java shims/src/0.20/java/org/apache/hadoop/hive/fs/ProxyFileSystem.java new file mode 100644 index 0000000..dc64417 --- /dev/null +++ shims/src/0.20/java/org/apache/hadoop/hive/fs/ProxyFileSystem.java @@ -0,0 +1,42 @@ +/** + * Licensed to the Apache Software Foundation (ASF) 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 org.apache.hadoop.fs; + +import java.net.URI; + +/**************************************************************** + * A FileSystem that can serve a given scheme/authority using some + * other file system. In that sense, it serves as a proxy for the + * real/underlying file system + *****************************************************************/ + +public class ProxyFileSystem extends ProxyFileSystemBase { + public ProxyFileSystem() { + super(); + } + + public ProxyFileSystem(FileSystem fs) { + super(fs); + } + + public ProxyFileSystem(FileSystem fs, URI myUri) { + super(fs, myUri); + } +} + diff --git shims/src/0.20S/java/org/apache/hadoop/hive/fs/ProxyFileSystem.java shims/src/0.20S/java/org/apache/hadoop/hive/fs/ProxyFileSystem.java new file mode 100644 index 0000000..dc64417 --- /dev/null +++ shims/src/0.20S/java/org/apache/hadoop/hive/fs/ProxyFileSystem.java @@ -0,0 +1,42 @@ +/** + * Licensed to the Apache Software Foundation (ASF) 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 org.apache.hadoop.fs; + +import java.net.URI; + +/**************************************************************** + * A FileSystem that can serve a given scheme/authority using some + * other file system. In that sense, it serves as a proxy for the + * real/underlying file system + *****************************************************************/ + +public class ProxyFileSystem extends ProxyFileSystemBase { + public ProxyFileSystem() { + super(); + } + + public ProxyFileSystem(FileSystem fs) { + super(fs); + } + + public ProxyFileSystem(FileSystem fs, URI myUri) { + super(fs, myUri); + } +} + diff --git shims/src/0.23/java/org/apache/hadoop/hive/fs/ProxyFileSystem.java shims/src/0.23/java/org/apache/hadoop/hive/fs/ProxyFileSystem.java new file mode 100644 index 0000000..83eba78 --- /dev/null +++ shims/src/0.23/java/org/apache/hadoop/hive/fs/ProxyFileSystem.java @@ -0,0 +1,67 @@ +/** + * Licensed to the Apache Software Foundation (ASF) 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 org.apache.hadoop.fs; + +import java.net.URI; +import java.io.IOException; +import java.io.FileNotFoundException; + +/**************************************************************** + * A FileSystem that can serve a given scheme/authority using some + * other file system. In that sense, it serves as a proxy for the + * real/underlying file system + *****************************************************************/ + +public class ProxyFileSystem extends ProxyFileSystemBase { + public ProxyFileSystem() { + super(); + } + + public ProxyFileSystem(FileSystem fs) { + super(fs); + } + + public ProxyFileSystem(FileSystem fs, URI myUri) { + super(fs, myUri); + } + + @Override + public RemoteIterator listLocatedStatus(final Path f) + throws FileNotFoundException, IOException { + return new RemoteIterator() { + private RemoteIterator stats = + ProxyFileSystem.super.listLocatedStatus( + ProxyFileSystem.super.swizzleParamPath(f)); + + @Override + public boolean hasNext() throws IOException { + return stats.hasNext(); + } + + @Override + public LocatedFileStatus next() throws IOException { + LocatedFileStatus result = stats.next(); + return new LocatedFileStatus( + ProxyFileSystem.super.swizzleFileStatus(result, false), + result.getBlockLocations()); + } + }; + } +} + diff --git shims/src/common/java/org/apache/hadoop/fs/ProxyFileSystem.java shims/src/common/java/org/apache/hadoop/fs/ProxyFileSystem.java deleted file mode 100644 index 28a18f6..0000000 --- shims/src/common/java/org/apache/hadoop/fs/ProxyFileSystem.java +++ /dev/null @@ -1,291 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) 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 org.apache.hadoop.fs; - -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; - -import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.fs.permission.FsPermission; -import org.apache.hadoop.util.Progressable; -import org.apache.hadoop.util.Shell; - -/**************************************************************** - * A FileSystem that can serve a given scheme/authority using some - * other file system. In that sense, it serves as a proxy for the - * real/underlying file system - *****************************************************************/ - -public class ProxyFileSystem extends FilterFileSystem { - - protected String myScheme; - protected String myAuthority; - protected URI myUri; - - protected String realScheme; - protected String realAuthority; - protected URI realUri; - - - - private Path swizzleParamPath(Path p) { - String pathUriString = p.toUri().toString(); - URI newPathUri = URI.create(pathUriString); - return new Path (realScheme, realAuthority, newPathUri.getPath()); - } - - private Path swizzleReturnPath(Path p) { - String pathUriString = p.toUri().toString(); - URI newPathUri = URI.create(pathUriString); - return new Path (myScheme, myAuthority, newPathUri.getPath()); - } - - private FileStatus swizzleFileStatus(FileStatus orig, boolean isParam) { - FileStatus ret = - new FileStatus(orig.getLen(), orig.isDir(), orig.getReplication(), - orig.getBlockSize(), orig.getModificationTime(), - orig.getAccessTime(), orig.getPermission(), - orig.getOwner(), orig.getGroup(), - isParam ? swizzleParamPath(orig.getPath()) : - swizzleReturnPath(orig.getPath())); - return ret; - } - - public ProxyFileSystem() { - throw new RuntimeException ("Unsupported constructor"); - } - - public ProxyFileSystem(FileSystem fs) { - throw new RuntimeException ("Unsupported constructor"); - } - - /** - * - * @param p - * @return - * @throws IOException - */ - public Path resolvePath(final Path p) throws IOException { - // Return the fully-qualified path of path f resolving the path - // through any symlinks or mount point - checkPath(p); - return getFileStatus(p).getPath(); - } - - /** - * Create a proxy file system for fs. - * - * @param fs FileSystem to create proxy for - * @param myUri URI to use as proxy. Only the scheme and authority from - * this are used right now - */ - public ProxyFileSystem(FileSystem fs, URI myUri) { - super(fs); - - URI realUri = fs.getUri(); - this.realScheme = realUri.getScheme(); - this.realAuthority=realUri.getAuthority(); - this.realUri = realUri; - - this.myScheme = myUri.getScheme(); - this.myAuthority=myUri.getAuthority(); - this.myUri = myUri; - } - - @Override - public void initialize(URI name, Configuration conf) throws IOException { - try { - URI realUri = new URI (realScheme, realAuthority, - name.getPath(), name.getQuery(), name.getFragment()); - super.initialize(realUri, conf); - } catch (URISyntaxException e) { - throw new RuntimeException(e); - } - } - - @Override - public URI getUri() { - return myUri; - } - - @Override - public String getName() { - return getUri().toString(); - } - - @Override - public Path makeQualified(Path path) { - return swizzleReturnPath(super.makeQualified(swizzleParamPath(path))); - } - - - @Override - protected void checkPath(final Path path) { - super.checkPath(swizzleParamPath(path)); - } - - @Override - public BlockLocation[] getFileBlockLocations(FileStatus file, long start, - long len) throws IOException { - return super.getFileBlockLocations(swizzleFileStatus(file, true), - start, len); - } - - @Override - public FSDataInputStream open(Path f, int bufferSize) throws IOException { - return super.open(swizzleParamPath(f), bufferSize); - } - - @Override - public FSDataOutputStream append(Path f, int bufferSize, - Progressable progress) throws IOException { - return super.append(swizzleParamPath(f), bufferSize, progress); - } - - @Override - public FSDataOutputStream create(Path f, FsPermission permission, - boolean overwrite, int bufferSize, short replication, long blockSize, - Progressable progress) throws IOException { - return super.create(swizzleParamPath(f), permission, - overwrite, bufferSize, replication, blockSize, progress); - } - - @Override - public boolean setReplication(Path src, short replication) throws IOException { - return super.setReplication(swizzleParamPath(src), replication); - } - - @Override - public boolean rename(Path src, Path dst) throws IOException { - return super.rename(swizzleParamPath(src), swizzleParamPath(dst)); - } - - @Override - public boolean delete(Path f, boolean recursive) throws IOException { - return super.delete(swizzleParamPath(f), recursive); - } - - @Override - public boolean deleteOnExit(Path f) throws IOException { - return super.deleteOnExit(swizzleParamPath(f)); - } - - @Override - public FileStatus[] listStatus(Path f) throws IOException { - FileStatus[] orig = super.listStatus(swizzleParamPath(f)); - FileStatus[] ret = new FileStatus [orig.length]; - for (int i=0; i