/** @deprecated use {@link Command#run(String...argv)} */ @Deprecated @Override public int runAll() { return run(args); }
@Override protected void processArguments(LinkedList<PathData> items) throws IOException { super.processArguments(items); if (numErrors != 0) { // check for error collecting paths return; } assert (items.size() == 1); PathData sroot = items.getFirst(); sroot.fs.deleteSnapshot(sroot.path, snapshotName); } }
@Override protected void processPathArgument(PathData item) throws IOException { // implicitly recurse once for cmdline directories if (dirRecurse && item.stat.isDirectory()) { recursePath(item); } else { super.processPathArgument(item); } }
@Override protected void processRawArguments(LinkedList<String> args) throws IOException { LinkedList<PathData> expendedArgs = expandArguments(args); // If "fs.defaultFs" is not set appropriately, it warns the user that the // command is not running against HDFS. final boolean displayWarnings = getConf().getBoolean( HADOOP_SHELL_MISSING_DEFAULT_FS_WARNING_KEY, HADOOP_SHELL_MISSING_DEFAULT_FS_WARNING_DEFAULT); if (displayWarnings) { final String defaultFs = getConf().get(FS_DEFAULT_NAME_KEY); final boolean missingDefaultFs = defaultFs == null || defaultFs.equals(FS_DEFAULT_NAME_DEFAULT); if (missingDefaultFs) { err.printf( "Warning: fs.defaultFS is not set when running \"%s\" command.%n", getCommandName()); } } processArguments(expendedArgs); } }
super.recursePath(src); if (dst.stat.isDirectory()) { preserveAttributes(src, dst, preserveRawXattrs);
/** * Tests valid and invalid group arguments to chgrp. */ @Test public void testChgrpGroupValidity() { // This test only covers argument parsing, so override to skip processing. FsCommand chgrp = new FsShellPermissions.Chgrp() { @Override protected void processArgument(PathData item) { } }; chgrp.setConf(new Configuration()); // The following are valid (no exception expected). chgrp.run("group", "/path"); // The following are valid only on Windows. assertValidArgumentsOnWindows(chgrp, "Group With Spaces", "/path"); // The following are invalid (exception expected). assertIllegalArguments(chgrp, ":gr#oup", "/path"); assertIllegalArguments(chgrp, ":gr%oup", "/path"); }
@Override protected void processNonexistentPath(PathData item) throws IOException { exitCode = 1; // flag that a path is bad super.processNonexistentPath(item); }
@Override protected List<PathData> expandArgument(String arg) throws IOException { try { return super.expandArgument(arg); } catch (PathNotFoundException e) { if (!ignoreFNF) { throw e; } // prevent -f on a non-existent glob from failing return new LinkedList<PathData>(); } }
@Override public String getCommandName() { return getName(); }
@Override protected void processPaths(PathData parent, PathData... items) throws IOException { if (parent != null && !isRecursive() && items.length != 0) { if (!pathOnly) { out.println("Found " + items.length + " items"); } Arrays.sort(items, getOrderComparator()); } if (!pathOnly) { adjustColumnWidths(items); } super.processPaths(parent, items); }
@Override protected void recursePath(PathData item) throws IOException { if (isStop(item)) { // this item returned a stop result so don't recurse any further return; } if (getDepth() >= getOptions().getMaxDepth()) { // reached the maximum depth so don't got any further. return; } if (item.stat.isSymlink() && getOptions().isFollowLink()) { PathData linkedItem = new PathData(item.stat.getSymlink().toString(), getConf()); if (isAncestor(item, linkedItem)) { getOptions().getErr().println( "Infinite loop ignored: " + item.toString() + " -> " + linkedItem.toString()); return; } if (linkedItem.exists) { item = linkedItem; } } if (item.stat.isDirectory()) { super.recursePath(item); } }
/** * Tests valid and invalid group arguments to chgrp. */ @Test public void testChgrpGroupValidity() { // This test only covers argument parsing, so override to skip processing. FsCommand chgrp = new FsShellPermissions.Chgrp() { @Override protected void processArgument(PathData item) { } }; chgrp.setConf(new Configuration()); // The following are valid (no exception expected). chgrp.run("group", "/path"); // The following are valid only on Windows. assertValidArgumentsOnWindows(chgrp, "Group With Spaces", "/path"); // The following are invalid (exception expected). assertIllegalArguments(chgrp, ":gr#oup", "/path"); assertIllegalArguments(chgrp, ":gr%oup", "/path"); }
@Override protected void processRawArguments(LinkedList<String> args) throws IOException { LinkedList<PathData> expendedArgs = expandArguments(args); // If "fs.defaultFs" is not set appropriately, it warns the user that the // command is not running against HDFS. final boolean displayWarnings = getConf().getBoolean( HADOOP_SHELL_MISSING_DEFAULT_FS_WARNING_KEY, HADOOP_SHELL_MISSING_DEFAULT_FS_WARNING_DEFAULT); if (displayWarnings) { final String defaultFs = getConf().get(FS_DEFAULT_NAME_KEY); final boolean missingDefaultFs = defaultFs == null || defaultFs.equals(FS_DEFAULT_NAME_DEFAULT); if (missingDefaultFs) { err.printf( "Warning: fs.defaultFS is not set when running \"%s\" command.%n", getCommandName()); } } processArguments(expendedArgs); } }
@Override protected void processNonexistentPath(PathData item) throws IOException { if (!ignoreFNF) super.processNonexistentPath(item); }
@Override protected List<PathData> expandArgument(String arg) throws IOException { try { return super.expandArgument(arg); } catch (PathNotFoundException e) { if (!ignoreFNF) { throw e; } // prevent -f on a non-existent glob from failing return new LinkedList<PathData>(); } }
@Override public String getCommandName() { return getName(); }
@Override protected void processPaths(PathData parent, PathData ... items) throws IOException { if (parent != null && !isRecursive() && items.length != 0) { out.println("Found " + items.length + " items"); } adjustColumnWidths(items); super.processPaths(parent, items); }
@Override protected void processArguments(LinkedList<PathData> args) throws IOException { super.processArguments(args); if (waitOpt) waitForReplication(); }
/** @deprecated use {@link Command#run(String...argv)} */ @Deprecated @Override public int runAll() { return run(args); }
@Override protected void processPathArgument(PathData src) throws IOException { if (src.stat.isDirectory() && src.fs.equals(dst.fs)) { PathData target = getTargetPath(src); String srcPath = src.fs.makeQualified(src.path).toString(); String dstPath = dst.fs.makeQualified(target.path).toString(); if (dstPath.equals(srcPath)) { PathIOException e = new PathIOException(src.toString(), "are identical"); e.setTargetPath(dstPath.toString()); throw e; } // When a path is normalized, all trailing slashes are removed // except for the root if(!srcPath.endsWith(Path.SEPARATOR)) { srcPath += Path.SEPARATOR; } if(dstPath.startsWith(srcPath)) { PathIOException e = new PathIOException(src.toString(), "is a subdirectory of itself"); e.setTargetPath(target.toString()); throw e; } } super.processPathArgument(src); }