読者です 読者をやめる 読者になる 読者になる

Cassandraのコマンドラインツール (cassandra-cli)の実装

パッケージでいうと、org.apache.cassandra.cli

CliMainがメイン。commons.cliつかったCLI実装。Args4jとかのほうがシンプルでいいなーというのはさておき、commons系で実装。実行部分は、CliClientでCliCompilerを使ってstatementをパースして実行。CliCompilerでは、antlr使ってCli.gというAntlrのGrammerファイルでパースして、statementを解釈。

後は、thrift clientでサーバーにつないで、上記のstatementを解釈して実行。
case文のところだけ抜き出すと、以下のような感じ。データの追加、削除などなどができるようになっている。

                case CliParser.NODE_EXIT:
                case CliParser.NODE_THRIFT_GET:
                case CliParser.NODE_HELP:
                case CliParser.NODE_THRIFT_SET:
                case CliParser.NODE_THRIFT_DEL:
                case CliParser.NODE_THRIFT_COUNT:
                case CliParser.NODE_SHOW_CLUSTER_NAME:
                case CliParser.NODE_SHOW_CONFIG_FILE:
                case CliParser.NODE_SHOW_VERSION:
                case CliParser.NODE_SHOW_TABLES:
                case CliParser.NODE_DESCRIBE_TABLE:
                case CliParser.NODE_CONNECT:
                case CliParser.NODE_NO_OP:

また、jlineで補完ができるようにしたり、historyの管理とかもしてます。