@Override public void checkFileAccess(FileSystem fs, FileStatus stat, FsAction action) throws IOException, AccessControlException, Exception { try { if (accessMethod == null) { // Have to rely on Hive implementation of filesystem permission checks. DefaultFileAccess.checkFileAccess(fs, stat, action); } else { accessMethod.invoke(fs, stat.getPath(), action); } } catch (Exception err) { throw wrapAccessException(err); } }
/** * Proxy file system also needs to override the access() method behavior. Cannot add Override * annotation since FileSystem.access() may not exist in the version of hadoop used to build * Hive. */ @Override public void access(Path path, FsAction action) throws AccessControlException, FileNotFoundException, IOException { Path underlyingFsPath = swizzleParamPath(path); FileStatus underlyingFsStatus = fs.getFileStatus(underlyingFsPath); try { if (accessMethod != null) { accessMethod.invoke(fs, underlyingFsPath, action); } else { // If the FS has no access() method, we can try DefaultFileAccess .. DefaultFileAccess.checkFileAccess(fs, underlyingFsStatus, action); } } catch (AccessControlException err) { throw err; } catch (FileNotFoundException err) { throw err; } catch (IOException err) { throw err; } catch (Exception err) { throw new RuntimeException(err.getMessage(), err); } }