// Copyright (C) 2009 The Android Open Source Project
//
// Licensed 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 com.google.gerrit.sshd.commands;

import com.google.gerrit.sshd.CommandModule;
import com.google.gerrit.sshd.CommandName;
import com.google.gerrit.sshd.Commands;


/** Register the commands a Gerrit server in master mode supports. */
public class MasterCommandModule extends CommandModule {
  @Override
  protected void configure() {
    final CommandName gerrit = Commands.named("gerrit");

    command(gerrit, "approve").to(ReviewCommand.class);
    command(gerrit, "create-account").to(CreateAccountCommand.class);
    command(gerrit, "create-group").to(CreateGroupCommand.class);
    command(gerrit, "rename-group").to(RenameGroupCommand.class);
    command(gerrit, "create-project").to(CreateProjectCommand.class);
    command(gerrit, "gsql").to(AdminQueryShell.class);
    command(gerrit, "test-submit-rule").to(TestSubmitRule.class);
    command(gerrit, "set-reviewers").to(SetReviewersCommand.class);
    command(gerrit, "receive-pack").to(Receive.class);
    command(gerrit, "set-project-parent").to(AdminSetParent.class);
    command(gerrit, "review").to(ReviewCommand.class);
    command(gerrit, "set-account").to(SetAccountCommand.class);
    command(gerrit, "set-project").to(SetProjectCommand.class);
  }
}

@@ -772,16 +772,71 @@
 mmands;%0A
+import com.google.gerrit.sshd.DispatchCommandProvider;%0A
 %0A%0A/** Re
@@ -1055,16 +1055,90 @@
 errit%22);
+%0A    final CommandName testSubmit = Commands.named(gerrit, %22test-submit%22);
 %0A%0A    co
@@ -1518,74 +1518,8 @@
 s);%0A
-    command(gerrit, %22test-submit-rule%22).to(TestSubmitRule.class);%0A
     
@@ -1816,32 +1816,32 @@
 Command.class);%0A
-
     command(gerr
@@ -1887,15 +1887,162 @@
 .class);
+%0A%0A    command(gerrit, %22test-submit%22).toProvider(new DispatchCommandProvider(testSubmit));%0A    command(testSubmit, %22rule%22).to(TestSubmitRule.class);
 %0A  %7D%0A%7D%0A

Split test-submit-rule command into "test-submit rule"