hadoop-common-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From szets...@apache.org
Subject svn commit: r1102068 - in /hadoop/common/trunk: CHANGES.txt src/java/org/apache/hadoop/fs/FsShell.java src/java/org/apache/hadoop/fs/shell/FsCommand.java src/java/org/apache/hadoop/fs/shell/Touchz.java src/test/core/org/apache/hadoop/cli/testConf.xml
Date Wed, 11 May 2011 20:20:18 GMT
Author: szetszwo
Date: Wed May 11 20:20:18 2011
New Revision: 1102068

URL: http://svn.apache.org/viewvc?rev=1102068&view=rev
Log:
HADOOP-7237. Refactor the touchz commands to conform to new FsCommand class.  Contributed
by Daryn Sharp

Added:
    hadoop/common/trunk/src/java/org/apache/hadoop/fs/shell/Touchz.java
Modified:
    hadoop/common/trunk/CHANGES.txt
    hadoop/common/trunk/src/java/org/apache/hadoop/fs/FsShell.java
    hadoop/common/trunk/src/java/org/apache/hadoop/fs/shell/FsCommand.java
    hadoop/common/trunk/src/test/core/org/apache/hadoop/cli/testConf.xml

Modified: hadoop/common/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/CHANGES.txt?rev=1102068&r1=1102067&r2=1102068&view=diff
==============================================================================
--- hadoop/common/trunk/CHANGES.txt (original)
+++ hadoop/common/trunk/CHANGES.txt Wed May 11 20:20:18 2011
@@ -144,6 +144,9 @@ Trunk (unreleased changes)
     HADOOP-7275. Refactor the stat commands to conform to new FsCommand
     class.  (Daryn Sharp via szetszwo)
 
+    HADOOP-7237. Refactor the touchz commands to conform to new FsCommand
+    class.  (Daryn Sharp via szetszwo)
+
   OPTIMIZATIONS
 
   BUG FIXES

Modified: hadoop/common/trunk/src/java/org/apache/hadoop/fs/FsShell.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/src/java/org/apache/hadoop/fs/FsShell.java?rev=1102068&r1=1102067&r2=1102068&view=diff
==============================================================================
--- hadoop/common/trunk/src/java/org/apache/hadoop/fs/FsShell.java (original)
+++ hadoop/common/trunk/src/java/org/apache/hadoop/fs/FsShell.java Wed May 11 20:20:18 2011
@@ -433,27 +433,6 @@ public class FsShell extends Configured 
   }
 
   /**
-   * (Re)create zero-length file at the specified path.
-   * This will be replaced by a more UNIX-like touch when files may be
-   * modified.
-   */
-  void touchz(String src) throws IOException {
-    Path f = new Path(src);
-    FileSystem srcFs = f.getFileSystem(getConf());
-    FileStatus st;
-    if (srcFs.exists(f)) {
-      st = srcFs.getFileStatus(f);
-      if (st.isDirectory()) {
-        // TODO: handle this
-        throw new IOException(src + " is a directory");
-      } else if (st.getLen() != 0)
-        throw new IOException(src + " must be a zero-length file");
-    }
-    FSDataOutputStream out = srcFs.create(f);
-    out.close();
-  }
-
-  /**
    * Check file types.
    */
   int test(String argv[], int i) throws IOException {
@@ -765,7 +744,7 @@ public class FsShell extends Configured 
       GET_SHORT_USAGE + "\n\t" +
       "[" + COPYTOLOCAL_SHORT_USAGE + "] [-moveToLocal <src> <localdst>]\n\t"
+
       "[-report]\n\t" +
-      "[-touchz <path>] [-test -[ezd] <path>]";
+      "[-test -[ezd] <path>]";
 
     String conf ="-conf <configuration file>:  Specify an application configuration
file.";
  
@@ -838,10 +817,6 @@ public class FsShell extends Configured 
 
     String moveToLocal = "-moveToLocal <src> <localdst>:  Not implemented yet
\n";
         
-    String touchz = "-touchz <path>: Creates a file of zero length\n"
-	+ "\t\t at <path> with current time as the timestamp of that <path>.\n"
-	+ "\t\t An error is returned if the file exists with non-zero length\n";
-
     String test = "-test -[ezd] <path>: If file { exists, has zero length, is a directory\n"
+
       "\t\tthen return 0, else return 1.\n";
 
@@ -889,8 +864,6 @@ public class FsShell extends Configured 
       System.out.println(moveToLocal);
     } else if ("get".equals(cmd)) {
       System.out.println(get);
-    } else if ("touchz".equals(cmd)) {
-      System.out.println(touchz);
     } else if ("test".equals(cmd)) {
       System.out.println(test);
     } else if ("help".equals(cmd)) {
@@ -917,7 +890,6 @@ public class FsShell extends Configured 
       System.out.println(get);
       System.out.println(copyToLocal);
       System.out.println(moveToLocal);
-      System.out.println(touchz);
       System.out.println(test);
 
       for (String thisCmdName : commandFactory.getNames()) {
@@ -974,8 +946,6 @@ public class FsShell extends Configured 
           delete(argv[i], true, rmSkipTrash);
         } else if ("-df".equals(cmd)) {
           df(argv[i]);
-        } else if ("-touchz".equals(cmd)) {
-          touchz(argv[i]);
         }
       } catch (IOException e) {
         LOG.debug("Error", e);
@@ -1005,8 +975,7 @@ public class FsShell extends Configured 
     } else if ("-D".equals(cmd)) {
       System.err.println("Usage: java FsShell" + 
                          " [-D <[property=value>]");
-    } else if ("-du".equals(cmd) || "-dus".equals(cmd) ||
-               "-touchz".equals(cmd)) {
+    } else if ("-du".equals(cmd) || "-dus".equals(cmd)) {
       System.err.println("Usage: java FsShell" + 
                          " [" + cmd + " <path>]");
     } else if ("-df".equals(cmd) ) {
@@ -1048,7 +1017,6 @@ public class FsShell extends Configured 
       System.err.println("           [" + GET_SHORT_USAGE + "]");
       System.err.println("           [" + COPYTOLOCAL_SHORT_USAGE + "]");
       System.err.println("           [-moveToLocal [-crc] <src> <localdst>]");
-      System.err.println("           [-touchz <path>]");
       System.err.println("           [-test -[ezd] <path>]");
       for (String name : commandFactory.getNames()) {
       	instance = commandFactory.getInstance(name);
@@ -1098,8 +1066,7 @@ public class FsShell extends Configured 
         printUsage(cmd);
         return exitCode;
       }
-    } else if ("-rm".equals(cmd) || "-rmr".equals(cmd) ||
-               "-touchz".equals(cmd)) {
+    } else if ("-rm".equals(cmd) || "-rmr".equals(cmd)) {
       if (argv.length < 2) {
         printUsage(cmd);
         return exitCode;
@@ -1168,8 +1135,6 @@ public class FsShell extends Configured 
         du(argv, i);
       } else if ("-dus".equals(cmd)) {
         dus(argv, i);
-      } else if ("-touchz".equals(cmd)) {
-        exitCode = doall(cmd, argv, i);
       } else if ("-test".equals(cmd)) {
         exitCode = test(argv, i);
       } else if ("-help".equals(cmd)) {

Modified: hadoop/common/trunk/src/java/org/apache/hadoop/fs/shell/FsCommand.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/src/java/org/apache/hadoop/fs/shell/FsCommand.java?rev=1102068&r1=1102067&r2=1102068&view=diff
==============================================================================
--- hadoop/common/trunk/src/java/org/apache/hadoop/fs/shell/FsCommand.java (original)
+++ hadoop/common/trunk/src/java/org/apache/hadoop/fs/shell/FsCommand.java Wed May 11 20:20:18
2011
@@ -52,6 +52,7 @@ abstract public class FsCommand extends 
     factory.registerCommands(SetReplication.class);
     factory.registerCommands(Stat.class);
     factory.registerCommands(Tail.class);
+    factory.registerCommands(Touch.class);
   }
 
   protected FsCommand() {}

Added: hadoop/common/trunk/src/java/org/apache/hadoop/fs/shell/Touchz.java
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/src/java/org/apache/hadoop/fs/shell/Touchz.java?rev=1102068&view=auto
==============================================================================
--- hadoop/common/trunk/src/java/org/apache/hadoop/fs/shell/Touchz.java (added)
+++ hadoop/common/trunk/src/java/org/apache/hadoop/fs/shell/Touchz.java Wed May 11 20:20:18
2011
@@ -0,0 +1,80 @@
+/**
+ * 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.shell;
+
+import java.io.IOException;
+import java.util.LinkedList;
+
+import org.apache.hadoop.classification.InterfaceAudience;
+import org.apache.hadoop.classification.InterfaceStability;
+import org.apache.hadoop.fs.shell.PathExceptions.PathIOException;
+import org.apache.hadoop.fs.shell.PathExceptions.PathIsDirectoryException;
+
+/**
+ * Unix touch like commands 
+ */
+@InterfaceAudience.Private
+@InterfaceStability.Unstable
+
+class Touch extends FsCommand {
+  public static void registerCommands(CommandFactory factory) {
+    factory.addClass(Touchz.class, "-touchz");
+  }
+
+  /**
+   * (Re)create zero-length file at the specified path.
+   * This will be replaced by a more UNIX-like touch when files may be
+   * modified.
+   */
+  public static class Touchz extends Touch {
+    public static final String NAME = "touchz";
+    public static final String USAGE = "<path> ...";
+    public static final String DESCRIPTION =
+      "Creates a file of zero length\n" +
+      "at <path> with current time as the timestamp of that <path>.\n" +
+      "An error is returned if the file exists with non-zero length\n";
+
+    @Override
+    protected void processOptions(LinkedList<String> args) {
+      CommandFormat cf = new CommandFormat(null, 1, Integer.MAX_VALUE);
+      cf.parse(args);
+    }
+
+    @Override
+    protected void processPath(PathData item) throws IOException {
+      if (item.stat.isDirectory()) {
+        // TODO: handle this
+        throw new PathIsDirectoryException(item.toString());
+      }
+      if (item.stat.getLen() != 0) {
+        throw new PathIOException(item.toString(), "Not a zero-length file");
+      }
+      touchz(item);
+    }
+
+    @Override
+    protected void processNonexistentPath(PathData item) throws IOException {
+      touchz(item);
+    }
+
+    private void touchz(PathData item) throws IOException {
+      item.fs.create(item.path).close();
+    }
+  }
+}

Modified: hadoop/common/trunk/src/test/core/org/apache/hadoop/cli/testConf.xml
URL: http://svn.apache.org/viewvc/hadoop/common/trunk/src/test/core/org/apache/hadoop/cli/testConf.xml?rev=1102068&r1=1102067&r2=1102068&view=diff
==============================================================================
--- hadoop/common/trunk/src/test/core/org/apache/hadoop/cli/testConf.xml (original)
+++ hadoop/common/trunk/src/test/core/org/apache/hadoop/cli/testConf.xml Wed May 11 20:20:18
2011
@@ -541,7 +541,7 @@
       <comparators>
         <comparator>
           <type>RegexpComparator</type>
-          <expected-output>^-touchz &lt;path&gt;: Creates a file of zero length(
)*</expected-output>
+          <expected-output>^-touchz &lt;path&gt; \.\.\.:( |\t)*Creates a file
of zero length( )*</expected-output>
         </comparator>
         <comparator>
           <type>RegexpComparator</type>
@@ -549,7 +549,7 @@
         </comparator>
         <comparator>
           <type>RegexpComparator</type>
-          <expected-output>^( |\t)* An error is returned if the file exists with non-zero
length( )*</expected-output>
+          <expected-output>^( |\t)*An error is returned if the file exists with non-zero
length( )*</expected-output>
         </comparator>
       </comparators>
     </test>



Mime
View raw message