accumulo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From els...@apache.org
Subject [14/53] [abbrv] git commit: ACCUMULO-1897 Move shell into new package and module
Date Tue, 08 Apr 2014 03:03:10 GMT
ACCUMULO-1897 Move shell into new package and module


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/bcc9e7e4
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/bcc9e7e4
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/bcc9e7e4

Branch: refs/heads/ACCUMULO-378
Commit: bcc9e7e41c9a40cc36502fece266780c7cba0de8
Parents: 3a8f620
Author: Mike Drob <mdrob@cloudera.com>
Authored: Fri Apr 4 23:41:46 2014 -0700
Committer: Mike Drob <mdrob@cloudera.com>
Committed: Mon Apr 7 17:01:41 2014 -0400

----------------------------------------------------------------------
 core/pom.xml                                    |   19 -
 .../accumulo/core/client/mock/MockShell.java    |  142 ---
 .../core/util/format/DeleterFormatter.java      |  101 --
 .../apache/accumulo/core/util/shell/Shell.java  | 1168 ------------------
 .../core/util/shell/ShellCommandException.java  |   59 -
 .../core/util/shell/ShellCompletor.java         |  162 ---
 .../core/util/shell/ShellExtension.java         |   27 -
 .../accumulo/core/util/shell/ShellOptions.java  |   33 -
 .../core/util/shell/ShellOptionsJC.java         |  280 -----
 .../accumulo/core/util/shell/ShellUtil.java     |   60 -
 .../apache/accumulo/core/util/shell/Token.java  |  137 --
 .../core/util/shell/commands/AboutCommand.java  |   56 -
 .../commands/ActiveCompactionIterator.java      |  136 --
 .../util/shell/commands/ActiveScanIterator.java |   91 --
 .../util/shell/commands/AddAuthsCommand.java    |   82 --
 .../util/shell/commands/AddSplitsCommand.java   |   88 --
 .../shell/commands/AuthenticateCommand.java     |   66 -
 .../core/util/shell/commands/ByeCommand.java    |   19 -
 .../util/shell/commands/ClasspathCommand.java   |   55 -
 .../core/util/shell/commands/ClearCommand.java  |   52 -
 .../util/shell/commands/CloneTableCommand.java  |  102 --
 .../core/util/shell/commands/ClsCommand.java    |   19 -
 .../util/shell/commands/CompactCommand.java     |  129 --
 .../core/util/shell/commands/ConfigCommand.java |  315 -----
 .../util/shell/commands/ConstraintCommand.java  |  134 --
 .../shell/commands/CreateNamespaceCommand.java  |   99 --
 .../util/shell/commands/CreateTableCommand.java |  203 ---
 .../util/shell/commands/CreateUserCommand.java  |   76 --
 .../core/util/shell/commands/DUCommand.java     |  124 --
 .../core/util/shell/commands/DebugCommand.java  |   71 --
 .../core/util/shell/commands/DeleteCommand.java |  112 --
 .../util/shell/commands/DeleteIterCommand.java  |  114 --
 .../util/shell/commands/DeleteManyCommand.java  |   82 --
 .../shell/commands/DeleteNamespaceCommand.java  |  100 --
 .../util/shell/commands/DeleteRowsCommand.java  |   65 -
 .../shell/commands/DeleteScanIterCommand.java   |  102 --
 .../shell/commands/DeleteShellIterCommand.java  |  100 --
 .../util/shell/commands/DeleteTableCommand.java |   60 -
 .../util/shell/commands/DeleteUserCommand.java  |   19 -
 .../util/shell/commands/DropTableCommand.java   |   19 -
 .../util/shell/commands/DropUserCommand.java    |   61 -
 .../core/util/shell/commands/EGrepCommand.java  |   59 -
 .../util/shell/commands/ExecfileCommand.java    |   67 -
 .../core/util/shell/commands/ExitCommand.java   |   39 -
 .../util/shell/commands/ExportTableCommand.java |   78 --
 .../util/shell/commands/ExtensionCommand.java   |  102 --
 .../core/util/shell/commands/FateCommand.java   |  180 ---
 .../core/util/shell/commands/FlushCommand.java  |   63 -
 .../util/shell/commands/FormatterCommand.java   |   69 --
 .../util/shell/commands/GetAuthsCommand.java    |   67 -
 .../util/shell/commands/GetGroupsCommand.java   |   60 -
 .../util/shell/commands/GetSplitsCommand.java   |  155 ---
 .../core/util/shell/commands/GrantCommand.java  |  133 --
 .../core/util/shell/commands/GrepCommand.java   |  111 --
 .../core/util/shell/commands/HelpCommand.java   |  129 --
 .../core/util/shell/commands/HiddenCommand.java |   62 -
 .../util/shell/commands/HistoryCommand.java     |   82 --
 .../shell/commands/ImportDirectoryCommand.java  |   58 -
 .../util/shell/commands/ImportTableCommand.java |   51 -
 .../core/util/shell/commands/InfoCommand.java   |   19 -
 .../core/util/shell/commands/InsertCommand.java |  148 ---
 .../util/shell/commands/InterpreterCommand.java |   40 -
 .../shell/commands/ListCompactionsCommand.java  |   78 --
 .../util/shell/commands/ListIterCommand.java    |  140 ---
 .../util/shell/commands/ListScansCommand.java   |   78 --
 .../shell/commands/ListShellIterCommand.java    |  105 --
 .../core/util/shell/commands/MaxRowCommand.java |   55 -
 .../core/util/shell/commands/MergeCommand.java  |  111 --
 .../commands/NamespacePermissionsCommand.java   |   44 -
 .../util/shell/commands/NamespacesCommand.java  |   83 --
 .../util/shell/commands/NoTableCommand.java     |   40 -
 .../util/shell/commands/OfflineCommand.java     |   61 -
 .../core/util/shell/commands/OnlineCommand.java |   61 -
 .../core/util/shell/commands/OptUtil.java       |  146 ---
 .../core/util/shell/commands/PasswdCommand.java |   96 --
 .../core/util/shell/commands/PingCommand.java   |   82 --
 .../core/util/shell/commands/PingIterator.java  |   58 -
 .../util/shell/commands/QuestionCommand.java    |   24 -
 .../core/util/shell/commands/QuitCommand.java   |   19 -
 .../shell/commands/QuotedStringTokenizer.java   |  141 ---
 .../shell/commands/RenameNamespaceCommand.java  |   79 --
 .../util/shell/commands/RenameTableCommand.java |   62 -
 .../core/util/shell/commands/RevokeCommand.java |  133 --
 .../core/util/shell/commands/ScanCommand.java   |  334 -----
 .../core/util/shell/commands/ScriptCommand.java |  290 -----
 .../util/shell/commands/SetAuthsCommand.java    |   77 --
 .../util/shell/commands/SetGroupsCommand.java   |   78 --
 .../util/shell/commands/SetIterCommand.java     |  453 -------
 .../util/shell/commands/SetScanIterCommand.java |  127 --
 .../shell/commands/SetShellIterCommand.java     |  131 --
 .../ShellPluginConfigurationCommand.java        |  146 ---
 .../core/util/shell/commands/SleepCommand.java  |   46 -
 .../commands/SystemPermissionsCommand.java      |   44 -
 .../core/util/shell/commands/TableCommand.java  |   60 -
 .../util/shell/commands/TableOperation.java     |  153 ---
 .../shell/commands/TablePermissionsCommand.java |   44 -
 .../core/util/shell/commands/TablesCommand.java |  107 --
 .../core/util/shell/commands/TraceCommand.java  |  101 --
 .../core/util/shell/commands/UserCommand.java   |   71 --
 .../shell/commands/UserPermissionsCommand.java  |  106 --
 .../core/util/shell/commands/UsersCommand.java  |   45 -
 .../core/util/shell/commands/WhoAmICommand.java |   41 -
 .../core/util/format/DeleterFormatterTest.java  |  176 ---
 .../core/util/shell/PasswordConverterTest.java  |  113 --
 .../core/util/shell/ShellConfigTest.java        |   90 --
 .../core/util/shell/ShellSetInstanceTest.java   |  242 ----
 .../accumulo/core/util/shell/ShellTest.java     |  281 -----
 .../accumulo/core/util/shell/ShellUtilTest.java |   66 -
 .../shell/command/FormatterCommandTest.java     |  184 ---
 core/src/test/resources/shelltest.txt           |   16 -
 examples/simple/pom.xml                         |    4 +
 .../examples/simple/shell/DebugCommand.java     |    4 +-
 .../simple/shell/MyAppShellExtension.java       |    4 +-
 pom.xml                                         |    6 +
 server/monitor/pom.xml                          |    4 +
 .../accumulo/monitor/servlets/ShellServlet.java |    2 +-
 shell/pom.xml                                   |  123 ++
 .../java/org/apache/accumulo/shell/Shell.java   | 1168 ++++++++++++++++++
 .../accumulo/shell/ShellCommandException.java   |   59 +
 .../apache/accumulo/shell/ShellCompletor.java   |  162 +++
 .../apache/accumulo/shell/ShellExtension.java   |   27 +
 .../org/apache/accumulo/shell/ShellOptions.java |   33 +
 .../apache/accumulo/shell/ShellOptionsJC.java   |  280 +++++
 .../org/apache/accumulo/shell/ShellUtil.java    |   60 +
 .../java/org/apache/accumulo/shell/Token.java   |  137 ++
 .../accumulo/shell/commands/AboutCommand.java   |   56 +
 .../commands/ActiveCompactionIterator.java      |  136 ++
 .../shell/commands/ActiveScanIterator.java      |   91 ++
 .../shell/commands/AddAuthsCommand.java         |   82 ++
 .../shell/commands/AddSplitsCommand.java        |   88 ++
 .../shell/commands/AuthenticateCommand.java     |   66 +
 .../accumulo/shell/commands/ByeCommand.java     |   19 +
 .../shell/commands/ClasspathCommand.java        |   55 +
 .../accumulo/shell/commands/ClearCommand.java   |   52 +
 .../shell/commands/CloneTableCommand.java       |  102 ++
 .../accumulo/shell/commands/ClsCommand.java     |   19 +
 .../accumulo/shell/commands/CompactCommand.java |  129 ++
 .../accumulo/shell/commands/ConfigCommand.java  |  315 +++++
 .../shell/commands/ConstraintCommand.java       |  134 ++
 .../shell/commands/CreateNamespaceCommand.java  |   99 ++
 .../shell/commands/CreateTableCommand.java      |  203 +++
 .../shell/commands/CreateUserCommand.java       |   76 ++
 .../accumulo/shell/commands/DUCommand.java      |  124 ++
 .../accumulo/shell/commands/DebugCommand.java   |   71 ++
 .../accumulo/shell/commands/DeleteCommand.java  |  112 ++
 .../shell/commands/DeleteIterCommand.java       |  114 ++
 .../shell/commands/DeleteManyCommand.java       |   82 ++
 .../shell/commands/DeleteNamespaceCommand.java  |  100 ++
 .../shell/commands/DeleteRowsCommand.java       |   65 +
 .../shell/commands/DeleteScanIterCommand.java   |  102 ++
 .../shell/commands/DeleteShellIterCommand.java  |  100 ++
 .../shell/commands/DeleteTableCommand.java      |   60 +
 .../shell/commands/DeleteUserCommand.java       |   19 +
 .../shell/commands/DropTableCommand.java        |   19 +
 .../shell/commands/DropUserCommand.java         |   61 +
 .../accumulo/shell/commands/EGrepCommand.java   |   59 +
 .../shell/commands/ExecfileCommand.java         |   67 +
 .../accumulo/shell/commands/ExitCommand.java    |   39 +
 .../shell/commands/ExportTableCommand.java      |   78 ++
 .../shell/commands/ExtensionCommand.java        |  102 ++
 .../accumulo/shell/commands/FateCommand.java    |  180 +++
 .../accumulo/shell/commands/FlushCommand.java   |   63 +
 .../shell/commands/FormatterCommand.java        |   69 ++
 .../shell/commands/GetAuthsCommand.java         |   67 +
 .../shell/commands/GetGroupsCommand.java        |   60 +
 .../shell/commands/GetSplitsCommand.java        |  155 +++
 .../accumulo/shell/commands/GrantCommand.java   |  133 ++
 .../accumulo/shell/commands/GrepCommand.java    |  111 ++
 .../accumulo/shell/commands/HelpCommand.java    |  129 ++
 .../accumulo/shell/commands/HiddenCommand.java  |   62 +
 .../accumulo/shell/commands/HistoryCommand.java |   82 ++
 .../shell/commands/ImportDirectoryCommand.java  |   58 +
 .../shell/commands/ImportTableCommand.java      |   51 +
 .../accumulo/shell/commands/InfoCommand.java    |   19 +
 .../accumulo/shell/commands/InsertCommand.java  |  148 +++
 .../shell/commands/InterpreterCommand.java      |   40 +
 .../shell/commands/ListCompactionsCommand.java  |   78 ++
 .../shell/commands/ListIterCommand.java         |  140 +++
 .../shell/commands/ListScansCommand.java        |   78 ++
 .../shell/commands/ListShellIterCommand.java    |  105 ++
 .../accumulo/shell/commands/MaxRowCommand.java  |   55 +
 .../accumulo/shell/commands/MergeCommand.java   |  111 ++
 .../commands/NamespacePermissionsCommand.java   |   44 +
 .../shell/commands/NamespacesCommand.java       |   83 ++
 .../accumulo/shell/commands/NoTableCommand.java |   40 +
 .../accumulo/shell/commands/OfflineCommand.java |   61 +
 .../accumulo/shell/commands/OnlineCommand.java  |   61 +
 .../apache/accumulo/shell/commands/OptUtil.java |  146 +++
 .../accumulo/shell/commands/PasswdCommand.java  |   96 ++
 .../accumulo/shell/commands/PingCommand.java    |   82 ++
 .../accumulo/shell/commands/PingIterator.java   |   58 +
 .../shell/commands/QuestionCommand.java         |   24 +
 .../accumulo/shell/commands/QuitCommand.java    |   19 +
 .../shell/commands/QuotedStringTokenizer.java   |  141 +++
 .../shell/commands/RenameNamespaceCommand.java  |   79 ++
 .../shell/commands/RenameTableCommand.java      |   62 +
 .../accumulo/shell/commands/RevokeCommand.java  |  133 ++
 .../accumulo/shell/commands/ScanCommand.java    |  334 +++++
 .../accumulo/shell/commands/ScriptCommand.java  |  290 +++++
 .../shell/commands/SetAuthsCommand.java         |   77 ++
 .../shell/commands/SetGroupsCommand.java        |   78 ++
 .../accumulo/shell/commands/SetIterCommand.java |  453 +++++++
 .../shell/commands/SetScanIterCommand.java      |  127 ++
 .../shell/commands/SetShellIterCommand.java     |  131 ++
 .../ShellPluginConfigurationCommand.java        |  146 +++
 .../accumulo/shell/commands/SleepCommand.java   |   46 +
 .../commands/SystemPermissionsCommand.java      |   44 +
 .../accumulo/shell/commands/TableCommand.java   |   60 +
 .../accumulo/shell/commands/TableOperation.java |  153 +++
 .../shell/commands/TablePermissionsCommand.java |   44 +
 .../accumulo/shell/commands/TablesCommand.java  |  107 ++
 .../accumulo/shell/commands/TraceCommand.java   |  101 ++
 .../accumulo/shell/commands/UserCommand.java    |   71 ++
 .../shell/commands/UserPermissionsCommand.java  |  106 ++
 .../accumulo/shell/commands/UsersCommand.java   |   45 +
 .../accumulo/shell/commands/WhoAmICommand.java  |   41 +
 .../accumulo/shell/format/DeleterFormatter.java |  102 ++
 .../apache/accumulo/shell/mock/MockShell.java   |  143 +++
 shell/src/main/resources/.gitignore             |    0
 .../accumulo/shell/PasswordConverterTest.java   |  113 ++
 .../apache/accumulo/shell/ShellConfigTest.java  |   91 ++
 .../accumulo/shell/ShellSetInstanceTest.java    |  244 ++++
 .../org/apache/accumulo/shell/ShellTest.java    |  282 +++++
 .../apache/accumulo/shell/ShellUtilTest.java    |   67 +
 .../shell/command/FormatterCommandTest.java     |  184 +++
 .../shell/format/DeleterFormatterTest.java      |  177 +++
 shell/src/test/resources/log4j.properties       |   28 +
 shell/src/test/resources/shelltest.txt          |   16 +
 .../java/org/apache/accumulo/start/Main.java    |    2 +-
 .../org/apache/accumulo/test/ShellServerIT.java |    2 +-
 230 files changed, 12190 insertions(+), 12036 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/bcc9e7e4/core/pom.xml
----------------------------------------------------------------------
diff --git a/core/pom.xml b/core/pom.xml
index a89846c..2572fc1 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -35,10 +35,6 @@
       <artifactId>guava</artifactId>
     </dependency>
     <dependency>
-      <groupId>commons-cli</groupId>
-      <artifactId>commons-cli</artifactId>
-    </dependency>
-    <dependency>
       <groupId>commons-codec</groupId>
       <artifactId>commons-codec</artifactId>
     </dependency>
@@ -122,21 +118,6 @@
       <scope>test</scope>
     </dependency>
     <dependency>
-      <groupId>org.powermock</groupId>
-      <artifactId>powermock-api-easymock</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.powermock</groupId>
-      <artifactId>powermock-core</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.powermock</groupId>
-      <artifactId>powermock-module-junit4</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
       <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/accumulo/blob/bcc9e7e4/core/src/main/java/org/apache/accumulo/core/client/mock/MockShell.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/mock/MockShell.java b/core/src/main/java/org/apache/accumulo/core/client/mock/MockShell.java
deleted file mode 100644
index a8061f7..0000000
--- a/core/src/main/java/org/apache/accumulo/core/client/mock/MockShell.java
+++ /dev/null
@@ -1,142 +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.accumulo.core.client.mock;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.charset.StandardCharsets;
-
-import jline.console.ConsoleReader;
-
-import org.apache.accumulo.core.util.shell.Shell;
-import org.apache.accumulo.core.util.shell.ShellOptionsJC;
-
-/**
- * An Accumulo Shell implementation that allows a developer to attach an InputStream and Writer to the Shell for testing purposes.
- */
-public class MockShell extends Shell {
-  private static final String NEWLINE = "\n";
-  
-  protected InputStream in;
-  protected OutputStream out;
-  
-  public MockShell(InputStream in, OutputStream out) throws IOException {
-    super();
-    this.in = in;
-    this.out = out;
-  }
-  
-  public boolean config(String... args) {
-    configError = super.config(args);
-    
-    // Update the ConsoleReader with the input and output "redirected"
-    try {
-      this.reader = new ConsoleReader(in, out);
-    } catch (Exception e) {
-      printException(e);
-      configError = true;
-    }
-    
-    // Don't need this for testing purposes
-    this.reader.setHistoryEnabled(false);
-    this.reader.setPaginationEnabled(false);
-    
-    // Make the parsing from the client easier;
-    this.verbose = false;
-    return configError;
-  }
-  
-  @Override
-  protected void setInstance(ShellOptionsJC options) {
-    // We always want a MockInstance for this test
-    instance = new MockInstance();
-  }
-  
-  public int start() throws IOException {
-    if (configError)
-      return 1;
-    
-    String input;
-    if (isVerbose())
-      printInfo();
-    
-    if (execFile != null) {
-      java.util.Scanner scanner = new java.util.Scanner(execFile, StandardCharsets.UTF_8.name());
-      try {
-        while (scanner.hasNextLine() && !hasExited()) {
-          execCommand(scanner.nextLine(), true, isVerbose());
-        }
-      } finally {
-        scanner.close();
-      }
-    } else if (execCommand != null) {
-      for (String command : execCommand.split("\n")) {
-        execCommand(command, true, isVerbose());
-      }
-      return exitCode;
-    }
-    
-    while (true) {
-      if (hasExited())
-        return exitCode;
-      
-      reader.setPrompt(getDefaultPrompt());
-      input = reader.readLine();
-      if (input == null) {
-        reader.println();
-        return exitCode;
-      } // user canceled
-      
-      execCommand(input, false, false);
-    }
-  }
-  
-  /**
-   * @param in
-   *          the in to set
-   */
-  public void setConsoleInputStream(InputStream in) {
-    this.in = in;
-  }
-  
-  /**
-   * @param out
-   *          the output stream to set
-   */
-  public void setConsoleWriter(OutputStream out) {
-    this.out = out;
-  }
-  
-  /**
-   * Convenience method to create the byte-array to hand to the console
-   * 
-   * @param commands
-   *          An array of commands to run
-   * @return A byte[] input stream which can be handed to the console.
-   */
-  public static ByteArrayInputStream makeCommands(String... commands) {
-    StringBuilder sb = new StringBuilder(commands.length * 8);
-    
-    for (String command : commands) {
-      sb.append(command).append(NEWLINE);
-    }
-    
-    return new ByteArrayInputStream(sb.toString().getBytes(StandardCharsets.UTF_8));
-  }
-}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/bcc9e7e4/core/src/main/java/org/apache/accumulo/core/util/format/DeleterFormatter.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/util/format/DeleterFormatter.java b/core/src/main/java/org/apache/accumulo/core/util/format/DeleterFormatter.java
deleted file mode 100644
index 7ac0510..0000000
--- a/core/src/main/java/org/apache/accumulo/core/util/format/DeleterFormatter.java
+++ /dev/null
@@ -1,101 +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.accumulo.core.util.format;
-
-import java.io.IOException;
-import java.util.Map.Entry;
-
-import org.apache.accumulo.core.client.BatchWriter;
-import org.apache.accumulo.core.client.MutationsRejectedException;
-import org.apache.accumulo.core.data.ConstraintViolationSummary;
-import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.Mutation;
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.core.security.ColumnVisibility;
-import org.apache.accumulo.core.util.shell.Shell;
-import org.apache.log4j.Logger;
-
-public class DeleterFormatter extends DefaultFormatter {
-  
-  private static final Logger log = Logger.getLogger(DeleterFormatter.class);
-  private BatchWriter writer;
-  private Shell shellState;
-  private boolean printTimestamps;
-  private boolean force;
-  private boolean more;
-  
-  public DeleterFormatter(BatchWriter writer, Iterable<Entry<Key,Value>> scanner, boolean printTimestamps, Shell shellState, boolean force) {
-    super.initialize(scanner, printTimestamps);
-    this.writer = writer;
-    this.shellState = shellState;
-    this.printTimestamps = printTimestamps;
-    this.force = force;
-    this.more = true;
-  }
-  
-  @Override
-  public boolean hasNext() {
-    if (!getScannerIterator().hasNext() || !more) {
-      try {
-        writer.close();
-      } catch (MutationsRejectedException e) {
-        log.error(e.toString());
-        if (Shell.isDebuggingEnabled())
-          for (ConstraintViolationSummary cvs : e.getConstraintViolationSummaries())
-            log.trace(cvs.toString());
-      }
-      return false;
-    }
-    return true;
-  }
-  
-  /**
-   * @return null, because the iteration will provide prompts and handle deletes internally.
-   */
-  @Override
-  public String next() {
-    Entry<Key,Value> next = getScannerIterator().next();
-    Key key = next.getKey();
-    Mutation m = new Mutation(key.getRow());
-    String entryStr = formatEntry(next, printTimestamps);
-    boolean delete = force;
-    try {
-      if (!force) {
-        shellState.getReader().flush();
-        String line = shellState.getReader().readLine("Delete { " + entryStr + " } ? ");
-        more = line != null;
-        delete = line != null && (line.equalsIgnoreCase("y") || line.equalsIgnoreCase("yes"));
-      }
-      if (delete) {
-        m.putDelete(key.getColumnFamily(), key.getColumnQualifier(), new ColumnVisibility(key.getColumnVisibility()), key.getTimestamp());
-        try {
-          writer.addMutation(m);
-        } catch (MutationsRejectedException e) {
-          log.error(e.toString());
-          if (Shell.isDebuggingEnabled())
-            for (ConstraintViolationSummary cvs : e.getConstraintViolationSummaries())
-              log.trace(cvs.toString());
-        }
-      }
-      shellState.getReader().print(String.format("[%s] %s%n", delete ? "DELETED" : "SKIPPED", entryStr));
-    } catch (IOException e) {
-      log.error("Cannot write to console", e);
-      throw new RuntimeException(e);
-    }
-    return null;
-  }
-}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/bcc9e7e4/core/src/main/java/org/apache/accumulo/core/util/shell/Shell.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/util/shell/Shell.java b/core/src/main/java/org/apache/accumulo/core/util/shell/Shell.java
deleted file mode 100644
index f481395..0000000
--- a/core/src/main/java/org/apache/accumulo/core/util/shell/Shell.java
+++ /dev/null
@@ -1,1168 +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.accumulo.core.util.shell;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.net.InetAddress;
-import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.TreeMap;
-import java.util.UUID;
-
-import jline.console.ConsoleReader;
-import jline.console.UserInterruptException;
-import jline.console.history.FileHistory;
-
-import org.apache.accumulo.core.Constants;
-import org.apache.accumulo.core.client.AccumuloException;
-import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.ClientConfiguration;
-import org.apache.accumulo.core.client.ClientConfiguration.ClientProperty;
-import org.apache.accumulo.core.client.Connector;
-import org.apache.accumulo.core.client.Instance;
-import org.apache.accumulo.core.client.IteratorSetting;
-import org.apache.accumulo.core.client.TableNotFoundException;
-import org.apache.accumulo.core.client.ZooKeeperInstance;
-import org.apache.accumulo.core.client.impl.ServerConfigurationUtil;
-import org.apache.accumulo.core.client.impl.Tables;
-import org.apache.accumulo.core.client.mock.MockInstance;
-import org.apache.accumulo.core.client.security.tokens.AuthenticationToken;
-import org.apache.accumulo.core.client.security.tokens.PasswordToken;
-import org.apache.accumulo.core.conf.AccumuloConfiguration;
-import org.apache.accumulo.core.conf.DefaultConfiguration;
-import org.apache.accumulo.core.conf.Property;
-import org.apache.accumulo.core.conf.SiteConfiguration;
-import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.core.data.thrift.TConstraintViolationSummary;
-import org.apache.accumulo.core.tabletserver.thrift.ConstraintViolationException;
-import org.apache.accumulo.core.trace.DistributedTrace;
-import org.apache.accumulo.core.util.BadArgumentException;
-import org.apache.accumulo.core.util.format.BinaryFormatter;
-import org.apache.accumulo.core.util.format.DefaultFormatter;
-import org.apache.accumulo.core.util.format.Formatter;
-import org.apache.accumulo.core.util.format.FormatterFactory;
-import org.apache.accumulo.core.util.shell.commands.AboutCommand;
-import org.apache.accumulo.core.util.shell.commands.AddAuthsCommand;
-import org.apache.accumulo.core.util.shell.commands.AddSplitsCommand;
-import org.apache.accumulo.core.util.shell.commands.AuthenticateCommand;
-import org.apache.accumulo.core.util.shell.commands.ByeCommand;
-import org.apache.accumulo.core.util.shell.commands.ClasspathCommand;
-import org.apache.accumulo.core.util.shell.commands.ClearCommand;
-import org.apache.accumulo.core.util.shell.commands.CloneTableCommand;
-import org.apache.accumulo.core.util.shell.commands.ClsCommand;
-import org.apache.accumulo.core.util.shell.commands.CompactCommand;
-import org.apache.accumulo.core.util.shell.commands.ConfigCommand;
-import org.apache.accumulo.core.util.shell.commands.ConstraintCommand;
-import org.apache.accumulo.core.util.shell.commands.CreateNamespaceCommand;
-import org.apache.accumulo.core.util.shell.commands.CreateTableCommand;
-import org.apache.accumulo.core.util.shell.commands.CreateUserCommand;
-import org.apache.accumulo.core.util.shell.commands.DUCommand;
-import org.apache.accumulo.core.util.shell.commands.DebugCommand;
-import org.apache.accumulo.core.util.shell.commands.DeleteCommand;
-import org.apache.accumulo.core.util.shell.commands.DeleteIterCommand;
-import org.apache.accumulo.core.util.shell.commands.DeleteManyCommand;
-import org.apache.accumulo.core.util.shell.commands.DeleteNamespaceCommand;
-import org.apache.accumulo.core.util.shell.commands.DeleteRowsCommand;
-import org.apache.accumulo.core.util.shell.commands.DeleteScanIterCommand;
-import org.apache.accumulo.core.util.shell.commands.DeleteShellIterCommand;
-import org.apache.accumulo.core.util.shell.commands.DeleteTableCommand;
-import org.apache.accumulo.core.util.shell.commands.DeleteUserCommand;
-import org.apache.accumulo.core.util.shell.commands.DropTableCommand;
-import org.apache.accumulo.core.util.shell.commands.DropUserCommand;
-import org.apache.accumulo.core.util.shell.commands.EGrepCommand;
-import org.apache.accumulo.core.util.shell.commands.ExecfileCommand;
-import org.apache.accumulo.core.util.shell.commands.ExitCommand;
-import org.apache.accumulo.core.util.shell.commands.ExportTableCommand;
-import org.apache.accumulo.core.util.shell.commands.ExtensionCommand;
-import org.apache.accumulo.core.util.shell.commands.FateCommand;
-import org.apache.accumulo.core.util.shell.commands.FlushCommand;
-import org.apache.accumulo.core.util.shell.commands.FormatterCommand;
-import org.apache.accumulo.core.util.shell.commands.GetAuthsCommand;
-import org.apache.accumulo.core.util.shell.commands.GetGroupsCommand;
-import org.apache.accumulo.core.util.shell.commands.GetSplitsCommand;
-import org.apache.accumulo.core.util.shell.commands.GrantCommand;
-import org.apache.accumulo.core.util.shell.commands.GrepCommand;
-import org.apache.accumulo.core.util.shell.commands.HelpCommand;
-import org.apache.accumulo.core.util.shell.commands.HiddenCommand;
-import org.apache.accumulo.core.util.shell.commands.HistoryCommand;
-import org.apache.accumulo.core.util.shell.commands.ImportDirectoryCommand;
-import org.apache.accumulo.core.util.shell.commands.ImportTableCommand;
-import org.apache.accumulo.core.util.shell.commands.InfoCommand;
-import org.apache.accumulo.core.util.shell.commands.InsertCommand;
-import org.apache.accumulo.core.util.shell.commands.InterpreterCommand;
-import org.apache.accumulo.core.util.shell.commands.ListCompactionsCommand;
-import org.apache.accumulo.core.util.shell.commands.ListIterCommand;
-import org.apache.accumulo.core.util.shell.commands.ListScansCommand;
-import org.apache.accumulo.core.util.shell.commands.ListShellIterCommand;
-import org.apache.accumulo.core.util.shell.commands.MaxRowCommand;
-import org.apache.accumulo.core.util.shell.commands.MergeCommand;
-import org.apache.accumulo.core.util.shell.commands.NamespacePermissionsCommand;
-import org.apache.accumulo.core.util.shell.commands.NamespacesCommand;
-import org.apache.accumulo.core.util.shell.commands.NoTableCommand;
-import org.apache.accumulo.core.util.shell.commands.OfflineCommand;
-import org.apache.accumulo.core.util.shell.commands.OnlineCommand;
-import org.apache.accumulo.core.util.shell.commands.PasswdCommand;
-import org.apache.accumulo.core.util.shell.commands.PingCommand;
-import org.apache.accumulo.core.util.shell.commands.QuestionCommand;
-import org.apache.accumulo.core.util.shell.commands.QuitCommand;
-import org.apache.accumulo.core.util.shell.commands.QuotedStringTokenizer;
-import org.apache.accumulo.core.util.shell.commands.RenameNamespaceCommand;
-import org.apache.accumulo.core.util.shell.commands.RenameTableCommand;
-import org.apache.accumulo.core.util.shell.commands.RevokeCommand;
-import org.apache.accumulo.core.util.shell.commands.ScanCommand;
-import org.apache.accumulo.core.util.shell.commands.ScriptCommand;
-import org.apache.accumulo.core.util.shell.commands.SetAuthsCommand;
-import org.apache.accumulo.core.util.shell.commands.SetGroupsCommand;
-import org.apache.accumulo.core.util.shell.commands.SetIterCommand;
-import org.apache.accumulo.core.util.shell.commands.SetScanIterCommand;
-import org.apache.accumulo.core.util.shell.commands.SetShellIterCommand;
-import org.apache.accumulo.core.util.shell.commands.SleepCommand;
-import org.apache.accumulo.core.util.shell.commands.SystemPermissionsCommand;
-import org.apache.accumulo.core.util.shell.commands.TableCommand;
-import org.apache.accumulo.core.util.shell.commands.TablePermissionsCommand;
-import org.apache.accumulo.core.util.shell.commands.TablesCommand;
-import org.apache.accumulo.core.util.shell.commands.TraceCommand;
-import org.apache.accumulo.core.util.shell.commands.UserCommand;
-import org.apache.accumulo.core.util.shell.commands.UserPermissionsCommand;
-import org.apache.accumulo.core.util.shell.commands.UsersCommand;
-import org.apache.accumulo.core.util.shell.commands.WhoAmICommand;
-import org.apache.accumulo.core.volume.VolumeConfiguration;
-import org.apache.accumulo.core.zookeeper.ZooUtil;
-import org.apache.accumulo.fate.zookeeper.ZooReader;
-import org.apache.commons.cli.BasicParser;
-import org.apache.commons.cli.CommandLine;
-import org.apache.commons.cli.HelpFormatter;
-import org.apache.commons.cli.MissingOptionException;
-import org.apache.commons.cli.Option;
-import org.apache.commons.cli.Options;
-import org.apache.commons.cli.ParseException;
-import org.apache.hadoop.fs.Path;
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
-
-import com.beust.jcommander.JCommander;
-import com.beust.jcommander.ParameterException;
-
-/**
- * A convenient console interface to perform basic accumulo functions Includes auto-complete, help, and quoted strings with escape sequences
- */
-public class Shell extends ShellOptions {
-  public static final Logger log = Logger.getLogger(Shell.class);
-  private static final Logger audit = Logger.getLogger(Shell.class.getName() + ".audit");
-
-  public static final String CHARSET = "ISO-8859-1";
-  public static final int NO_FIXED_ARG_LENGTH_CHECK = -1;
-  public static final String COMMENT_PREFIX = "#";
-  public static final String HISTORY_DIR_NAME = ".accumulo";
-  public static final String HISTORY_FILE_NAME = "shell_history.txt";
-  private static final String SHELL_DESCRIPTION = "Shell - Apache Accumulo Interactive Shell";
-
-  protected int exitCode = 0;
-  private String tableName;
-  protected Instance instance;
-  private Connector connector;
-  protected ConsoleReader reader;
-  private String principal;
-  private AuthenticationToken token;
-  private final Class<? extends Formatter> defaultFormatterClass = DefaultFormatter.class;
-  private final Class<? extends Formatter> binaryFormatterClass = BinaryFormatter.class;
-  public Map<String,List<IteratorSetting>> scanIteratorOptions = new HashMap<String,List<IteratorSetting>>();
-  public Map<String,List<IteratorSetting>> iteratorProfiles = new HashMap<String,List<IteratorSetting>>();
-
-  private Token rootToken;
-  public final Map<String,Command> commandFactory = new TreeMap<String,Command>();
-  public final Map<String,Command[]> commandGrouping = new TreeMap<String,Command[]>();
-  protected boolean configError = false;
-
-  // exit if true
-  private boolean exit = false;
-
-  // file to execute commands from
-  protected File execFile = null;
-  // single command to execute from the command line
-  protected String execCommand = null;
-  protected boolean verbose = true;
-
-  private boolean tabCompletion;
-  private boolean disableAuthTimeout;
-  private long authTimeout;
-  private long lastUserActivity = System.currentTimeMillis();
-  private boolean logErrorsToConsole = false;
-  private PrintWriter writer = null;
-  private boolean masking = false;
-
-  public Shell() throws IOException {
-    this(new ConsoleReader(), new PrintWriter(
-        new OutputStreamWriter(System.out,
-        System.getProperty("jline.WindowsTerminal.output.encoding", System.getProperty("file.encoding")))));
-  }
-
-  public Shell(ConsoleReader reader, PrintWriter writer) {
-    super();
-    this.reader = reader;
-    this.writer = writer;
-  }
-
-  // Not for client use
-  public boolean config(String... args) {
-    ShellOptionsJC options = new ShellOptionsJC();
-    JCommander jc = new JCommander();
-
-    jc.setProgramName("accumulo shell");
-    jc.addObject(options);
-    try {
-      jc.parse(args);
-    } catch (ParameterException e) {
-      configError = true;
-    }
-
-    if (options.isHelpEnabled()) {
-      configError = true;
-    }
-
-    if (!configError && options.getUnrecognizedOptions() != null) {
-      configError = true;
-      logError("Unrecognized Options: " + options.getUnrecognizedOptions().toString());
-    }
-
-    if (configError) {
-      jc.usage();
-      return true;
-    }
-
-    setDebugging(options.isDebugEnabled());
-    authTimeout = options.getAuthTimeout() * 60 * 1000; // convert minutes to milliseconds
-    disableAuthTimeout = options.isAuthTimeoutDisabled();
-
-    // get the options that were parsed
-    String user = options.getUsername();
-    String password = options.getPassword();
-
-    tabCompletion = !options.isTabCompletionDisabled();
-
-    // Use a fake (Mock), ZK, or HdfsZK Accumulo instance
-    setInstance(options);
-
-    // AuthenticationToken options
-    token = options.getAuthenticationToken();
-    Map<String,String> loginOptions = options.getTokenProperties();
-
-    // process default parameters if unspecified
-    try {
-      boolean hasToken = (token != null);
-      boolean hasTokenOptions = !loginOptions.isEmpty();
-
-      if (hasToken && password != null) {
-        throw new ParameterException("Can not supply '--pass' option with '--tokenClass' option");
-      }
-
-      Runtime.getRuntime().addShutdownHook(new Thread() {
-        @Override
-        public void run() {
-          reader.getTerminal().setEchoEnabled(true);
-        }
-      });
-
-      // Need either both a token and options, or neither, but not just one.
-      if (hasToken != hasTokenOptions) {
-        throw new ParameterException("Must supply either both or neither of '--tokenClass' and '--tokenProperty'");
-      } else if (hasToken) { // implied hasTokenOptions
-        // Fully qualified name so we don't shadow java.util.Properties
-        org.apache.accumulo.core.client.security.tokens.AuthenticationToken.Properties props;
-        // and line wrap it because the package name is so long
-        props = new org.apache.accumulo.core.client.security.tokens.AuthenticationToken.Properties();
-
-        props.putAllStrings(loginOptions);
-        token.init(props);
-      } else {
-        // Read password if the user explicitly asked for it, or didn't specify anything at all
-        if ("stdin".equals(password) || password == null) {
-          password = reader.readLine("Password: ", '*');
-        }
-
-        if (password == null) {
-          // User cancel, e.g. Ctrl-D pressed
-          throw new ParameterException("No password or token option supplied");
-        } else {
-          this.token = new PasswordToken(password);
-        }
-      }
-
-      if (!options.isFake()) {
-        ZooReader zr = new ZooReader(instance.getZooKeepers(), instance.getZooKeepersSessionTimeOut());
-        DistributedTrace.enable(instance, zr, "shell", InetAddress.getLocalHost().getHostName());
-      }
-
-      this.setTableName("");
-      this.principal = user;
-      connector = instance.getConnector(this.principal, token);
-
-    } catch (Exception e) {
-      printException(e);
-      configError = true;
-    }
-
-    // decide whether to execute commands from a file and quit
-    if (options.getExecFile() != null) {
-      execFile = options.getExecFile();
-      verbose = false;
-    } else if (options.getExecFileVerbose() != null) {
-      execFile = options.getExecFileVerbose();
-      verbose = true;
-    }
-    execCommand = options.getExecCommand();
-    if (execCommand != null) {
-      verbose = false;
-    }
-
-    rootToken = new Token();
-
-    Command[] dataCommands = {new DeleteCommand(), new DeleteManyCommand(), new DeleteRowsCommand(), new EGrepCommand(), new FormatterCommand(),
-        new InterpreterCommand(), new GrepCommand(), new ImportDirectoryCommand(), new InsertCommand(), new MaxRowCommand(), new ScanCommand()};
-    Command[] debuggingCommands = {new ClasspathCommand(), new DebugCommand(), new ListScansCommand(), new ListCompactionsCommand(), new TraceCommand(),
-        new PingCommand()};
-    Command[] execCommands = {new ExecfileCommand(), new HistoryCommand(), new ExtensionCommand(), new ScriptCommand()};
-    Command[] exitCommands = {new ByeCommand(), new ExitCommand(), new QuitCommand()};
-    Command[] helpCommands = {new AboutCommand(), new HelpCommand(), new InfoCommand(), new QuestionCommand()};
-    Command[] iteratorCommands = {new DeleteIterCommand(), new DeleteScanIterCommand(), new ListIterCommand(), new SetIterCommand(), new SetScanIterCommand(),
-        new SetShellIterCommand(), new ListShellIterCommand(), new DeleteShellIterCommand()};
-    Command[] otherCommands = {new HiddenCommand()};
-    Command[] permissionsCommands = {new GrantCommand(), new RevokeCommand(), new SystemPermissionsCommand(), new TablePermissionsCommand(),
-        new UserPermissionsCommand(), new NamespacePermissionsCommand()};
-    Command[] stateCommands = {new AuthenticateCommand(), new ClsCommand(), new ClearCommand(), new FateCommand(), new NoTableCommand(), new SleepCommand(),
-        new TableCommand(), new UserCommand(), new WhoAmICommand()};
-    Command[] tableCommands = {new CloneTableCommand(), new ConfigCommand(), new CreateTableCommand(), new DeleteTableCommand(), new DropTableCommand(),
-        new DUCommand(), new ExportTableCommand(), new ImportTableCommand(), new OfflineCommand(), new OnlineCommand(), new RenameTableCommand(),
-        new TablesCommand(), new NamespacesCommand(), new CreateNamespaceCommand(), new DeleteNamespaceCommand(), new RenameNamespaceCommand()};
-    Command[] tableControlCommands = {new AddSplitsCommand(), new CompactCommand(), new ConstraintCommand(), new FlushCommand(), new GetGroupsCommand(),
-        new GetSplitsCommand(), new MergeCommand(), new SetGroupsCommand()};
-    Command[] userCommands = {new AddAuthsCommand(), new CreateUserCommand(), new DeleteUserCommand(), new DropUserCommand(), new GetAuthsCommand(),
-        new PasswdCommand(), new SetAuthsCommand(), new UsersCommand()};
-    commandGrouping.put("-- Writing, Reading, and Removing Data --", dataCommands);
-    commandGrouping.put("-- Debugging Commands -------------------", debuggingCommands);
-    commandGrouping.put("-- Shell Execution Commands -------------", execCommands);
-    commandGrouping.put("-- Exiting Commands ---------------------", exitCommands);
-    commandGrouping.put("-- Help Commands ------------------------", helpCommands);
-    commandGrouping.put("-- Iterator Configuration ---------------", iteratorCommands);
-    commandGrouping.put("-- Permissions Administration Commands --", permissionsCommands);
-    commandGrouping.put("-- Shell State Commands -----------------", stateCommands);
-    commandGrouping.put("-- Table Administration Commands --------", tableCommands);
-    commandGrouping.put("-- Table Control Commands ---------------", tableControlCommands);
-    commandGrouping.put("-- User Administration Commands ---------", userCommands);
-
-    for (Command[] cmds : commandGrouping.values()) {
-      for (Command cmd : cmds)
-        commandFactory.put(cmd.getName(), cmd);
-    }
-    for (Command cmd : otherCommands) {
-      commandFactory.put(cmd.getName(), cmd);
-    }
-    return configError;
-  }
-
-  /**
-   * Sets the instance used by the shell based on the given options.
-   * 
-   * @param options
-   *          shell options
-   */
-  protected void setInstance(ShellOptionsJC options) {
-    // should only be one set of instance options set
-    instance = null;
-    if (options.isFake()) {
-      instance = new MockInstance("fake");
-    } else {
-      String instanceName, hosts;
-      if (options.isHdfsZooInstance()) {
-        instanceName = hosts = null;
-      } else if (options.getZooKeeperInstance().size() > 0) {
-        List<String> zkOpts = options.getZooKeeperInstance();
-        instanceName = zkOpts.get(0);
-        hosts = zkOpts.get(1);
-      } else {
-        instanceName = options.getZooKeeperInstanceName();
-        hosts = options.getZooKeeperHosts();
-      }
-      try {
-        instance = getZooInstance(instanceName, hosts, options.getClientConfiguration());
-      } catch (Exception e) {
-        throw new IllegalArgumentException("Unable to load client config from " + options.getClientConfigFile(), e);
-      }
-    }
-  }
-
-  /*
-   * Takes instanceName and keepers as separate arguments, rather than just packaged into the clientConfig, so that we can fail over to accumulo-site.xml or
-   * HDFS config if they're unspecified.
-   */
-  private static Instance getZooInstance(String instanceName, String keepers, ClientConfiguration clientConfig) {
-    UUID instanceId = null;
-    if (instanceName == null) {
-      instanceName = clientConfig.get(ClientProperty.INSTANCE_NAME);
-    }
-    if (instanceName == null || keepers == null) {
-      AccumuloConfiguration conf = SiteConfiguration.getInstance(ServerConfigurationUtil.convertClientConfig(DefaultConfiguration.getInstance(), clientConfig));
-      if (instanceName == null) {
-        Path instanceDir = new Path(VolumeConfiguration.getVolumeUris(conf)[0], "instance_id");
-        instanceId = UUID.fromString(ZooUtil.getInstanceIDFromHdfs(instanceDir, conf));
-      }
-      if (keepers == null) {
-        keepers = conf.get(Property.INSTANCE_ZK_HOST);
-      }
-    }
-    if (instanceId != null) {
-      return new ZooKeeperInstance(clientConfig.withInstance(instanceId).withZkHosts(keepers));
-    } else {
-      return new ZooKeeperInstance(clientConfig.withInstance(instanceName).withZkHosts(keepers));
-    }
-  }
-
-  public Connector getConnector() {
-    return connector;
-  }
-
-  public Instance getInstance() {
-    return instance;
-  }
-
-  public static void main(String args[]) throws IOException {
-    Shell shell = new Shell();
-    try {
-      shell.config(args);
-
-      System.exit(shell.start());
-    } finally {
-      shell.shutdown();
-    }
-  }
-
-  public int start() throws IOException {
-    if (configError)
-      return 1;
-
-    String input;
-    if (isVerbose())
-      printInfo();
-
-    String home = System.getProperty("HOME");
-    if (home == null)
-      home = System.getenv("HOME");
-    String configDir = home + "/" + HISTORY_DIR_NAME;
-    String historyPath = configDir + "/" + HISTORY_FILE_NAME;
-    File accumuloDir = new File(configDir);
-    if (!accumuloDir.exists() && !accumuloDir.mkdirs())
-      log.warn("Unable to make directory for history at " + accumuloDir);
-    try {
-      final FileHistory history = new FileHistory(new File(historyPath));
-      reader.setHistory(history);
-      // Add shutdown hook to flush file history, per jline javadocs
-      Runtime.getRuntime().addShutdownHook(new Thread() {
-        @Override
-        public void run() {
-          try {
-            history.flush();
-          } catch (IOException e) {
-            log.warn("Could not flush history to file.");
-          }
-        }
-      });
-    } catch (IOException e) {
-      log.warn("Unable to load history file at " + historyPath);
-    }
-
-    // Turn Ctrl+C into Exception instead of JVM exit
-    reader.setHandleUserInterrupt(true);
-
-    ShellCompletor userCompletor = null;
-
-    if (execFile != null) {
-      java.util.Scanner scanner = new java.util.Scanner(execFile, StandardCharsets.UTF_8.name());
-      try {
-        while (scanner.hasNextLine() && !hasExited()) {
-          execCommand(scanner.nextLine(), true, isVerbose());
-        }
-      } finally {
-        scanner.close();
-      }
-    } else if (execCommand != null) {
-      for (String command : execCommand.split("\n")) {
-        execCommand(command, true, isVerbose());
-      }
-      return exitCode;
-    }
-
-    while (true) {
-      try {
-        if (hasExited())
-          return exitCode;
-
-        // If tab completion is true we need to reset
-        if (tabCompletion) {
-          if (userCompletor != null)
-            reader.removeCompleter(userCompletor);
-
-          userCompletor = setupCompletion();
-          reader.addCompleter(userCompletor);
-        }
-
-        reader.setPrompt(getDefaultPrompt());
-        input = reader.readLine();
-        if (input == null) {
-          reader.println();
-          return exitCode;
-        } // User Canceled (Ctrl+D)
-
-        execCommand(input, disableAuthTimeout, false);
-      } catch (UserInterruptException uie) {
-        // User Cancelled (Ctrl+C)
-        reader.println();
-
-        String partialLine = uie.getPartialLine();
-        if (partialLine == null || "".equals(uie.getPartialLine().trim())) {
-          // No content, actually exit
-          return exitCode;
-        }
-      } finally {
-        reader.flush();
-      }
-    }
-  }
-
-  public void shutdown() {
-    if (reader != null) {
-      reader.shutdown();
-    }
-  }
-
-  public void printInfo() throws IOException {
-    reader.print("\n" + SHELL_DESCRIPTION + "\n" + "- \n" + "- version: " + Constants.VERSION + "\n" + "- instance name: "
-        + connector.getInstance().getInstanceName() + "\n" + "- instance id: " + connector.getInstance().getInstanceID() + "\n" + "- \n"
-        + "- type 'help' for a list of available commands\n" + "- \n");
-    reader.flush();
-  }
-
-  public void printVerboseInfo() throws IOException {
-    StringBuilder sb = new StringBuilder("-\n");
-    sb.append("- Current user: ").append(connector.whoami()).append("\n");
-    if (execFile != null)
-      sb.append("- Executing commands from: ").append(execFile).append("\n");
-    if (disableAuthTimeout)
-      sb.append("- Authorization timeout: disabled\n");
-    else
-      sb.append("- Authorization timeout: ").append(String.format("%.2fs%n", authTimeout / 1000.0));
-    sb.append("- Debug: ").append(isDebuggingEnabled() ? "on" : "off").append("\n");
-    if (!scanIteratorOptions.isEmpty()) {
-      for (Entry<String,List<IteratorSetting>> entry : scanIteratorOptions.entrySet()) {
-        sb.append("- Session scan iterators for table ").append(entry.getKey()).append(":\n");
-        for (IteratorSetting setting : entry.getValue()) {
-          sb.append("-    Iterator ").append(setting.getName()).append(" options:\n");
-          sb.append("-        ").append("iteratorPriority").append(" = ").append(setting.getPriority()).append("\n");
-          sb.append("-        ").append("iteratorClassName").append(" = ").append(setting.getIteratorClass()).append("\n");
-          for (Entry<String,String> optEntry : setting.getOptions().entrySet()) {
-            sb.append("-        ").append(optEntry.getKey()).append(" = ").append(optEntry.getValue()).append("\n");
-          }
-        }
-      }
-    }
-    sb.append("-\n");
-    reader.print(sb.toString());
-  }
-
-  public String getDefaultPrompt() {
-    return connector.whoami() + "@" + connector.getInstance().getInstanceName() + (getTableName().isEmpty() ? "" : " ") + getTableName() + "> ";
-  }
-
-  public void execCommand(String input, boolean ignoreAuthTimeout, boolean echoPrompt) throws IOException {
-    audit.log(Level.INFO, getDefaultPrompt() + input);
-    if (echoPrompt) {
-      reader.print(getDefaultPrompt());
-      reader.println(input);
-    }
-
-    if (input.startsWith(COMMENT_PREFIX)) {
-      return;
-    }
-
-    String fields[];
-    try {
-      fields = new QuotedStringTokenizer(input).getTokens();
-    } catch (BadArgumentException e) {
-      printException(e);
-      ++exitCode;
-      return;
-    }
-    if (fields.length == 0)
-      return;
-
-    String command = fields[0];
-    fields = fields.length > 1 ? Arrays.copyOfRange(fields, 1, fields.length) : new String[] {};
-
-    Command sc = null;
-    if (command.length() > 0) {
-      try {
-        // Obtain the command from the command table
-        sc = commandFactory.get(command);
-        if (sc == null) {
-          reader.println(String.format("Unknown command \"%s\".  Enter \"help\" for a list possible commands.", command));
-          reader.flush();
-          return;
-        }
-
-        if (!(sc instanceof ExitCommand) && !ignoreAuthTimeout && System.currentTimeMillis() - lastUserActivity > authTimeout) {
-          reader.println("Shell has been idle for too long. Please re-authenticate.");
-          boolean authFailed = true;
-          do {
-            String pwd = readMaskedLine("Enter current password for '" + connector.whoami() + "': ", '*');
-            if (pwd == null) {
-              reader.println();
-              return;
-            } // user canceled
-
-            try {
-              authFailed = !connector.securityOperations().authenticateUser(connector.whoami(), new PasswordToken(pwd));
-            } catch (Exception e) {
-              ++exitCode;
-              printException(e);
-            }
-
-            if (authFailed)
-              reader.print("Invalid password. ");
-          } while (authFailed);
-          lastUserActivity = System.currentTimeMillis();
-        }
-
-        // Get the options from the command on how to parse the string
-        Options parseOpts = sc.getOptionsWithHelp();
-
-        // Parse the string using the given options
-        CommandLine cl = new BasicParser().parse(parseOpts, fields);
-
-        int actualArgLen = cl.getArgs().length;
-        int expectedArgLen = sc.numArgs();
-        if (cl.hasOption(helpOption)) {
-          // Display help if asked to; otherwise execute the command
-          sc.printHelp(this);
-        } else if (expectedArgLen != NO_FIXED_ARG_LENGTH_CHECK && actualArgLen != expectedArgLen) {
-          ++exitCode;
-          // Check for valid number of fixed arguments (if not
-          // negative; negative means it is not checked, for
-          // vararg-like commands)
-          printException(new IllegalArgumentException(String.format("Expected %d argument%s. There %s %d.", expectedArgLen, expectedArgLen == 1 ? "" : "s",
-              actualArgLen == 1 ? "was" : "were", actualArgLen)));
-          sc.printHelp(this);
-        } else {
-          int tmpCode = sc.execute(input, cl, this);
-          exitCode += tmpCode;
-          reader.flush();
-        }
-
-      } catch (ConstraintViolationException e) {
-        ++exitCode;
-        printConstraintViolationException(e);
-      } catch (TableNotFoundException e) {
-        ++exitCode;
-        if (getTableName().equals(e.getTableName()))
-          setTableName("");
-        printException(e);
-      } catch (ParseException e) {
-        // not really an error if the exception is a missing required
-        // option when the user is asking for help
-        if (!(e instanceof MissingOptionException && (Arrays.asList(fields).contains("-" + helpOption) || Arrays.asList(fields).contains("--" + helpLongOption)))) {
-          ++exitCode;
-          printException(e);
-        }
-        if (sc != null)
-          sc.printHelp(this);
-      } catch (UserInterruptException e) {
-        ++exitCode;
-      } catch (Exception e) {
-        ++exitCode;
-        printException(e);
-      }
-    } else {
-      ++exitCode;
-      printException(new BadArgumentException("Unrecognized empty command", command, -1));
-    }
-    reader.flush();
-  }
-
-  /**
-   * The command tree is built in reverse so that the references are more easily linked up. There is some code in token to allow forward building of the command
-   * tree.
-   */
-  private ShellCompletor setupCompletion() {
-    rootToken = new Token();
-
-    Set<String> tableNames = null;
-    try {
-      tableNames = connector.tableOperations().list();
-    } catch (Exception e) {
-      log.debug("Unable to obtain list of tables", e);
-      tableNames = Collections.emptySet();
-    }
-
-    Set<String> userlist = null;
-    try {
-      userlist = connector.securityOperations().listLocalUsers();
-    } catch (Exception e) {
-      log.debug("Unable to obtain list of users", e);
-      userlist = Collections.emptySet();
-    }
-
-    Set<String> namespaces = null;
-    try {
-      namespaces = connector.namespaceOperations().list();
-    } catch (Exception e) {
-      log.debug("Unable to obtain list of namespaces", e);
-      namespaces = Collections.emptySet();
-    }
-
-    Map<Command.CompletionSet,Set<String>> options = new HashMap<Command.CompletionSet,Set<String>>();
-
-    Set<String> commands = new HashSet<String>();
-    for (String a : commandFactory.keySet())
-      commands.add(a);
-
-    Set<String> modifiedUserlist = new HashSet<String>();
-    Set<String> modifiedTablenames = new HashSet<String>();
-    Set<String> modifiedNamespaces = new HashSet<String>();
-
-    for (String a : tableNames)
-      modifiedTablenames.add(a.replaceAll("([\\s'\"])", "\\\\$1"));
-    for (String a : userlist)
-      modifiedUserlist.add(a.replaceAll("([\\s'\"])", "\\\\$1"));
-    for (String a : namespaces) {
-      String b = a.replaceAll("([\\s'\"])", "\\\\$1");
-      modifiedNamespaces.add(b.isEmpty() ? "\"\"" : b);
-    }
-
-    options.put(Command.CompletionSet.USERNAMES, modifiedUserlist);
-    options.put(Command.CompletionSet.TABLENAMES, modifiedTablenames);
-    options.put(Command.CompletionSet.NAMESPACES, modifiedNamespaces);
-    options.put(Command.CompletionSet.COMMANDS, commands);
-
-    for (Command[] cmdGroup : commandGrouping.values()) {
-      for (Command c : cmdGroup) {
-        c.getOptionsWithHelp(); // prep the options for the command
-        // so that the completion can
-        // include them
-        c.registerCompletion(rootToken, options);
-      }
-    }
-    return new ShellCompletor(rootToken, options);
-  }
-
-  /**
-   * The Command class represents a command to be run in the shell. It contains the methods to execute along with some methods to help tab completion, and
-   * return the command name, help, and usage.
-   */
-  public static abstract class Command {
-    // Helper methods for completion
-    public enum CompletionSet {
-      TABLENAMES, USERNAMES, COMMANDS, NAMESPACES
-    }
-
-    static Set<String> getCommandNames(Map<CompletionSet,Set<String>> objects) {
-      return objects.get(CompletionSet.COMMANDS);
-    }
-
-    static Set<String> getTableNames(Map<CompletionSet,Set<String>> objects) {
-      return objects.get(CompletionSet.TABLENAMES);
-    }
-
-    static Set<String> getUserNames(Map<CompletionSet,Set<String>> objects) {
-      return objects.get(CompletionSet.USERNAMES);
-    }
-
-    static Set<String> getNamespaces(Map<CompletionSet,Set<String>> objects) {
-      return objects.get(CompletionSet.NAMESPACES);
-    }
-
-    public void registerCompletionGeneral(Token root, Set<String> args, boolean caseSens) {
-      Token t = new Token(args);
-      t.setCaseSensitive(caseSens);
-
-      Token command = new Token(getName());
-      command.addSubcommand(t);
-
-      root.addSubcommand(command);
-    }
-
-    public void registerCompletionForTables(Token root, Map<CompletionSet,Set<String>> completionSet) {
-      registerCompletionGeneral(root, completionSet.get(CompletionSet.TABLENAMES), true);
-    }
-
-    public void registerCompletionForUsers(Token root, Map<CompletionSet,Set<String>> completionSet) {
-      registerCompletionGeneral(root, completionSet.get(CompletionSet.USERNAMES), true);
-    }
-
-    public void registerCompletionForCommands(Token root, Map<CompletionSet,Set<String>> completionSet) {
-      registerCompletionGeneral(root, completionSet.get(CompletionSet.COMMANDS), false);
-    }
-
-    public void registerCompletionForNamespaces(Token root, Map<CompletionSet,Set<String>> completionSet) {
-      registerCompletionGeneral(root, completionSet.get(CompletionSet.NAMESPACES), true);
-    }
-
-    // abstract methods to override
-    public abstract int execute(String fullCommand, CommandLine cl, Shell shellState) throws Exception;
-
-    public abstract String description();
-
-    /**
-     * If the number of arguments is not always zero (not including those arguments handled through Options), make sure to override the {@link #usage()} method.
-     * Otherwise, {@link #usage()} does need to be overridden.
-     */
-    public abstract int numArgs();
-
-    // OPTIONAL methods to override:
-
-    // the general version of getname uses reflection to get the class name
-    // and then cuts off the suffix -Command to get the name of the command
-    public String getName() {
-      String s = this.getClass().getName();
-      int st = Math.max(s.lastIndexOf('$'), s.lastIndexOf('.'));
-      int i = s.indexOf("Command");
-      return i > 0 ? s.substring(st + 1, i).toLowerCase(Locale.ENGLISH) : null;
-    }
-
-    // The general version of this method adds the name
-    // of the command to the completion tree
-    public void registerCompletion(Token root, Map<CompletionSet,Set<String>> completion_set) {
-      root.addSubcommand(new Token(getName()));
-    }
-
-    // The general version of this method uses the HelpFormatter
-    // that comes with the apache Options package to print out the help
-    public final void printHelp(Shell shellState) {
-      shellState.printHelp(usage(), "description: " + this.description(), getOptionsWithHelp());
-    }
-
-    public final void printHelp(Shell shellState, int width) {
-      shellState.printHelp(usage(), "description: " + this.description(), getOptionsWithHelp(), width);
-    }
-
-    // Get options with help
-    public final Options getOptionsWithHelp() {
-      Options opts = getOptions();
-      opts.addOption(new Option(helpOption, helpLongOption, false, "display this help"));
-      return opts;
-    }
-
-    // General usage is just the command
-    public String usage() {
-      return getName();
-    }
-
-    // General Options are empty
-    public Options getOptions() {
-      return new Options();
-    }
-  }
-
-  public interface PrintLine {
-    void print(String s);
-
-    void close();
-  }
-
-  public static class PrintShell implements PrintLine {
-    ConsoleReader reader;
-
-    public PrintShell(ConsoleReader reader) {
-      this.reader = reader;
-    }
-
-    @Override
-    public void print(String s) {
-      try {
-        reader.println(s);
-      } catch (Exception ex) {
-        throw new RuntimeException(ex);
-      }
-    }
-
-    @Override
-    public void close() {}
-  };
-
-  public static class PrintFile implements PrintLine {
-    PrintWriter writer;
-
-    public PrintFile(String filename) throws FileNotFoundException {
-      writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filename), StandardCharsets.UTF_8)));
-    }
-
-    @Override
-    public void print(String s) {
-      writer.println(s);
-    }
-
-    @Override
-    public void close() {
-      writer.close();
-    }
-  };
-
-  public final void printLines(Iterator<String> lines, boolean paginate) throws IOException {
-    printLines(lines, paginate, null);
-  }
-
-  public final void printLines(Iterator<String> lines, boolean paginate, PrintLine out) throws IOException {
-    int linesPrinted = 0;
-    String prompt = "-- hit any key to continue or 'q' to quit --";
-    int lastPromptLength = prompt.length();
-    int termWidth = reader.getTerminal().getWidth();
-    int maxLines = reader.getTerminal().getHeight();
-
-    String peek = null;
-    while (lines.hasNext()) {
-      String nextLine = lines.next();
-      if (nextLine == null)
-        continue;
-      for (String line : nextLine.split("\\n")) {
-        if (out == null) {
-          if (peek != null) {
-            reader.println(peek);
-            if (paginate) {
-              linesPrinted += peek.length() == 0 ? 0 : Math.ceil(peek.length() * 1.0 / termWidth);
-
-              // check if displaying the next line would result in
-              // scrolling off the screen
-              if (linesPrinted + Math.ceil(lastPromptLength * 1.0 / termWidth) + Math.ceil(prompt.length() * 1.0 / termWidth)
-                  + Math.ceil(line.length() * 1.0 / termWidth) > maxLines) {
-                linesPrinted = 0;
-                int numdashes = (termWidth - prompt.length()) / 2;
-                String nextPrompt = repeat("-", numdashes) + prompt + repeat("-", numdashes);
-                lastPromptLength = nextPrompt.length();
-                reader.print(nextPrompt);
-                reader.flush();
-
-                if (Character.toUpperCase((char) reader.readCharacter()) == 'Q') {
-                  reader.println();
-                  return;
-                }
-                reader.println();
-                termWidth = reader.getTerminal().getWidth();
-                maxLines = reader.getTerminal().getHeight();
-              }
-            }
-          }
-          peek = line;
-        } else {
-          out.print(line);
-        }
-      }
-    }
-    if (out == null && peek != null) {
-      reader.println(peek);
-    }
-  }
-
-  public final void printRecords(Iterable<Entry<Key,Value>> scanner, boolean printTimestamps, boolean paginate, Class<? extends Formatter> formatterClass,
-      PrintLine outFile) throws IOException {
-    printLines(FormatterFactory.getFormatter(formatterClass, scanner, printTimestamps), paginate, outFile);
-  }
-
-  public final void printRecords(Iterable<Entry<Key,Value>> scanner, boolean printTimestamps, boolean paginate, Class<? extends Formatter> formatterClass)
-      throws IOException {
-    printLines(FormatterFactory.getFormatter(formatterClass, scanner, printTimestamps), paginate);
-  }
-
-  public final void printBinaryRecords(Iterable<Entry<Key,Value>> scanner, boolean printTimestamps, boolean paginate, PrintLine outFile) throws IOException {
-    printLines(FormatterFactory.getFormatter(binaryFormatterClass, scanner, printTimestamps), paginate, outFile);
-  }
-
-  public final void printBinaryRecords(Iterable<Entry<Key,Value>> scanner, boolean printTimestamps, boolean paginate) throws IOException {
-    printLines(FormatterFactory.getFormatter(binaryFormatterClass, scanner, printTimestamps), paginate);
-  }
-
-  public static String repeat(String s, int c) {
-    StringBuilder sb = new StringBuilder();
-    for (int i = 0; i < c; i++)
-      sb.append(s);
-    return sb.toString();
-  }
-
-  public void checkTableState() {
-    if (getTableName().isEmpty())
-      throw new IllegalStateException(
-          "Not in a table context. Please use 'table <tableName>' to switch to a table, or use '-t' to specify a table if option is available.");
-  }
-
-  private final void printConstraintViolationException(ConstraintViolationException cve) {
-    printException(cve, "");
-    int COL1 = 50, COL2 = 14;
-    int col3 = Math.max(1, Math.min(Integer.MAX_VALUE, reader.getTerminal().getWidth() - COL1 - COL2 - 6));
-    logError(String.format("%" + COL1 + "s-+-%" + COL2 + "s-+-%" + col3 + "s%n", repeat("-", COL1), repeat("-", COL2), repeat("-", col3)));
-    logError(String.format("%-" + COL1 + "s | %" + COL2 + "s | %-" + col3 + "s%n", "Constraint class", "Violation code", "Violation Description"));
-    logError(String.format("%" + COL1 + "s-+-%" + COL2 + "s-+-%" + col3 + "s%n", repeat("-", COL1), repeat("-", COL2), repeat("-", col3)));
-    for (TConstraintViolationSummary cvs : cve.violationSummaries)
-      logError(String.format("%-" + COL1 + "s | %" + COL2 + "d | %-" + col3 + "s%n", cvs.constrainClass, cvs.violationCode, cvs.violationDescription));
-    logError(String.format("%" + COL1 + "s-+-%" + COL2 + "s-+-%" + col3 + "s%n", repeat("-", COL1), repeat("-", COL2), repeat("-", col3)));
-  }
-
-  public final void printException(Exception e) {
-    printException(e, e.getMessage());
-  }
-
-  private final void printException(Exception e, String msg) {
-    logError(e.getClass().getName() + (msg != null ? ": " + msg : ""));
-    log.debug(e.getClass().getName() + (msg != null ? ": " + msg : ""), e);
-  }
-
-  public static final void setDebugging(boolean debuggingEnabled) {
-    Logger.getLogger(Constants.CORE_PACKAGE_NAME).setLevel(debuggingEnabled ? Level.TRACE : Level.INFO);
-  }
-
-  public static final boolean isDebuggingEnabled() {
-    return Logger.getLogger(Constants.CORE_PACKAGE_NAME).isTraceEnabled();
-  }
-
-  private final void printHelp(String usage, String description, Options opts) {
-    printHelp(usage, description, opts, Integer.MAX_VALUE);
-  }
-
-  private final void printHelp(String usage, String description, Options opts, int width) {
-    // TODO Use the OutputStream from the JLine ConsoleReader if we can ever get access to it
-    new HelpFormatter().printHelp(writer, width, usage, description, opts, 2, 5, null, true);
-    writer.flush();
-  }
-
-  public int getExitCode() {
-    return exitCode;
-  }
-
-  public void resetExitCode() {
-    exitCode = 0;
-  }
-
-  public void setExit(boolean exit) {
-    this.exit = exit;
-  }
-
-  public boolean getExit() {
-    return this.exit;
-  }
-
-  public boolean isVerbose() {
-    return verbose;
-  }
-
-  public void setTableName(String tableName) {
-    this.tableName = (tableName == null || tableName.isEmpty()) ? "" : Tables.qualified(tableName);
-  }
-
-  public String getTableName() {
-    return tableName;
-  }
-
-  public ConsoleReader getReader() {
-    return reader;
-  }
-
-  public void updateUser(String principal, AuthenticationToken token) throws AccumuloException, AccumuloSecurityException {
-    connector = instance.getConnector(principal, token);
-    this.principal = principal;
-    this.token = token;
-  }
-
-  public String getPrincipal() {
-    return principal;
-  }
-
-  public AuthenticationToken getToken() {
-    return token;
-  }
-
-  /**
-   * Return the formatter for the current table.
-   * 
-   * @return the formatter class for the current table
-   */
-  public Class<? extends Formatter> getFormatter() {
-    return getFormatter(this.tableName);
-  }
-
-  /**
-   * Return the formatter for the given table.
-   * 
-   * @param tableName
-   *          the table name
-   * @return the formatter class for the given table
-   */
-  public Class<? extends Formatter> getFormatter(String tableName) {
-    Class<? extends Formatter> formatter = FormatterCommand.getCurrentFormatter(tableName, this);
-
-    if (null == formatter) {
-      logError("Could not load the specified formatter. Using the DefaultFormatter");
-      return this.defaultFormatterClass;
-    } else {
-      return formatter;
-    }
-  }
-
-  public void setLogErrorsToConsole() {
-    this.logErrorsToConsole = true;
-  }
-
-  private void logError(String s) {
-    log.error(s);
-    if (logErrorsToConsole) {
-      try {
-        reader.println("ERROR: " + s);
-        reader.flush();
-      } catch (IOException e) {}
-    }
-  }
-
-  public String readMaskedLine(String prompt, Character mask) throws IOException {
-    this.masking = true;
-    String s = reader.readLine(prompt, mask);
-    this.masking = false;
-    return s;
-  }
-
-  public boolean isMasking() {
-    return masking;
-  }
-
-  public boolean hasExited() {
-    return exit;
-  }
-
-  public boolean isTabCompletion() {
-    return tabCompletion;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/bcc9e7e4/core/src/main/java/org/apache/accumulo/core/util/shell/ShellCommandException.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/util/shell/ShellCommandException.java b/core/src/main/java/org/apache/accumulo/core/util/shell/ShellCommandException.java
deleted file mode 100644
index 6bef379..0000000
--- a/core/src/main/java/org/apache/accumulo/core/util/shell/ShellCommandException.java
+++ /dev/null
@@ -1,59 +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.accumulo.core.util.shell;
-
-public class ShellCommandException extends Exception {
-  private static final long serialVersionUID = 1L;
-  
-  public enum ErrorCode {
-    UNKNOWN_ERROR("Unknown error"),
-    UNSUPPORTED_LANGUAGE("Programming language used is not supported"),
-    UNRECOGNIZED_COMMAND("Command is not supported"),
-    INITIALIZATION_FAILURE("Command could not be initialized"),
-    XML_PARSING_ERROR("Failed to parse the XML file");
-    
-    private String description;
-    
-    private ErrorCode(String description) {
-      this.description = description;
-    }
-    
-    public String getDescription() {
-      return this.description;
-    }
-    
-    public String toString() {
-      return getDescription();
-    }
-  }
-  
-  private ErrorCode code;
-  private String command;
-  
-  public ShellCommandException(ErrorCode code) {
-    this(code, null);
-  }
-  
-  public ShellCommandException(ErrorCode code, String command) {
-    this.code = code;
-    this.command = command;
-  }
-  
-  public String getMessage() {
-    return code + (command != null ? " (" + command + ")" : "");
-  }
-}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/bcc9e7e4/core/src/main/java/org/apache/accumulo/core/util/shell/ShellCompletor.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/util/shell/ShellCompletor.java b/core/src/main/java/org/apache/accumulo/core/util/shell/ShellCompletor.java
deleted file mode 100644
index c64e0c7..0000000
--- a/core/src/main/java/org/apache/accumulo/core/util/shell/ShellCompletor.java
+++ /dev/null
@@ -1,162 +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.accumulo.core.util.shell;
-
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import jline.console.completer.Completer;
-
-import org.apache.accumulo.core.util.shell.Shell.Command.CompletionSet;
-import org.apache.accumulo.core.util.shell.commands.QuotedStringTokenizer;
-
-public class ShellCompletor implements Completer {
-
-  // private static final Logger log = Logger.getLogger(ShellCompletor.class);
-
-  Map<CompletionSet,Set<String>> options;
-  Token root = null;
-
-  public ShellCompletor() {}
-
-  public ShellCompletor(Token root) {
-    this.root = root;
-  }
-
-  public ShellCompletor(Token rootToken, Map<CompletionSet,Set<String>> options) {
-    this.root = rootToken;
-    this.options = options;
-  }
-
-  @Override
-  @SuppressWarnings({"unchecked", "rawtypes"})
-  public int complete(String buffer, int cursor, List candidates) {
-    try {
-      return _complete(buffer, cursor, candidates);
-    } catch (Exception e) {
-      candidates.add("");
-      candidates.add(e.getMessage());
-      return cursor;
-    }
-  }
-
-  private int _complete(String fullBuffer, int cursor, List<String> candidates) {
-    boolean inTableFlag = false, inUserFlag = false, inNamespaceFlag = false;
-    // Only want to grab the buffer up to the cursor because
-    // the user could be trying to tab complete in the middle
-    // of the line
-    String buffer = fullBuffer.substring(0, cursor);
-
-    Token current_command_token = root;
-    String current_string_token = null;
-    boolean end_space = buffer.endsWith(" ");
-
-    // tabbing with no text
-    if (buffer.length() == 0) {
-      candidates.addAll(root.getSubcommandNames());
-      return 0;
-    }
-
-    String prefix = "";
-
-    QuotedStringTokenizer qst = new QuotedStringTokenizer(buffer);
-
-    Iterator<String> iter = qst.iterator();
-    while (iter.hasNext()) {
-      current_string_token = iter.next();
-      current_string_token = current_string_token.replaceAll("([\\s'\"])", "\\\\$1");
-
-      if (!iter.hasNext()) {
-        // if we end in a space and that space isn't part of the last token
-        // (which would be the case at the start of a quote) OR the buffer
-        // ends with a " indicating that we need to start on the next command
-        // and not complete the current command.
-        if (end_space && !current_string_token.endsWith(" ") || buffer.endsWith("\"")) {
-          // match subcommands
-
-          // we're in a subcommand so try to match the universal
-          // option flags if we're there
-          if (current_string_token.trim().equals("-" + Shell.tableOption)) {
-            candidates.addAll(options.get(Shell.Command.CompletionSet.TABLENAMES));
-            prefix += "-" + Shell.tableOption + " ";
-          } else if (current_string_token.trim().equals("-" + Shell.userOption)) {
-            candidates.addAll(options.get(Shell.Command.CompletionSet.USERNAMES));
-            prefix += "-" + Shell.userOption + " ";
-          } else if (current_string_token.trim().equals("-" + Shell.namespaceOption)) {
-            candidates.addAll(options.get(Shell.Command.CompletionSet.NAMESPACES));
-            prefix += "-" + Shell.namespaceOption + " ";
-          } else if (current_command_token != null) {
-            Token next = current_command_token.getSubcommand(current_string_token);
-            if (next != null) {
-              current_command_token = next;
-
-              if (current_command_token.getCaseSensitive())
-                prefix += current_string_token + " ";
-              else
-                prefix += current_string_token.toUpperCase() + " ";
-
-              candidates.addAll(current_command_token.getSubcommandNames());
-            }
-          }
-          Collections.sort(candidates);
-          return (prefix.length());
-        }
-        // need to match current command
-        // if we're in -t <table>, -u <user>, or -tn <namespace> complete those
-        if (inTableFlag) {
-          for (String a : options.get(Shell.Command.CompletionSet.TABLENAMES))
-            if (a.startsWith(current_string_token))
-              candidates.add(a);
-        } else if (inUserFlag) {
-          for (String a : options.get(Shell.Command.CompletionSet.USERNAMES))
-            if (a.startsWith(current_string_token))
-              candidates.add(a);
-        } else if (inNamespaceFlag) {
-          for (String a : options.get(Shell.Command.CompletionSet.NAMESPACES))
-            if (a.startsWith(current_string_token))
-              candidates.add(a);
-        } else if (current_command_token != null)
-          candidates.addAll(current_command_token.getSubcommandNames(current_string_token));
-
-        Collections.sort(candidates);
-        return (prefix.length());
-      }
-
-      if (current_string_token.trim().equals("-" + Shell.tableOption))
-        inTableFlag = true;
-      else if (current_string_token.trim().equals("-" + Shell.userOption))
-        inUserFlag = true;
-      else if (current_string_token.trim().equals("-" + Shell.namespaceOption))
-        inNamespaceFlag = true;
-      else
-        inUserFlag = inTableFlag = inNamespaceFlag = false;
-
-      if (current_command_token != null && current_command_token.getCaseSensitive())
-        prefix += current_string_token + " ";
-      else
-        prefix += current_string_token.toUpperCase() + " ";
-
-      if (current_command_token != null && current_command_token.getSubcommandNames().contains(current_string_token))
-        current_command_token = current_command_token.getSubcommand(current_string_token);
-
-    }
-    return 0;
-  }
-}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/bcc9e7e4/core/src/main/java/org/apache/accumulo/core/util/shell/ShellExtension.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/util/shell/ShellExtension.java b/core/src/main/java/org/apache/accumulo/core/util/shell/ShellExtension.java
deleted file mode 100644
index 5deccef..0000000
--- a/core/src/main/java/org/apache/accumulo/core/util/shell/ShellExtension.java
+++ /dev/null
@@ -1,27 +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.accumulo.core.util.shell;
-
-import org.apache.accumulo.core.util.shell.Shell.Command;
-
-public abstract class ShellExtension {
-    
-    public abstract String getExtensionName();
-
-    public abstract Command[] getCommands();
-    
-}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/bcc9e7e4/core/src/main/java/org/apache/accumulo/core/util/shell/ShellOptions.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/util/shell/ShellOptions.java b/core/src/main/java/org/apache/accumulo/core/util/shell/ShellOptions.java
deleted file mode 100644
index 4e573ed..0000000
--- a/core/src/main/java/org/apache/accumulo/core/util/shell/ShellOptions.java
+++ /dev/null
@@ -1,33 +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.accumulo.core.util.shell;
-
-import org.apache.commons.cli.Option;
-
-/**
- * Abstract class to encompass the Options available on the Accumulo Shell
- */
-public abstract class ShellOptions {
-  // Global options flags
-  public static final String userOption = "u";
-  public static final String tableOption = "t";
-  public static final String namespaceOption = "ns";
-  public static final String helpOption = "?";
-  public static final String helpLongOption = "help";
-
-  final Option helpOpt = new Option(helpOption, helpLongOption, false, "display this help");
-}


Mime
View raw message