Beispiel #1
0
  public RootDispatcher(IGitblit gitblit, SshDaemonClient client, String cmdLine) {
    super();
    setContext(new SshCommandContext(gitblit, client, cmdLine));

    UserModel user = client.getUser();
    register(user, VersionCommand.class);
    register(user, GitDispatcher.class);
    register(user, KeysDispatcher.class);
    register(user, PluginDispatcher.class);

    List<DispatchCommand> exts = gitblit.getExtensions(DispatchCommand.class);
    for (DispatchCommand ext : exts) {
      Class<? extends DispatchCommand> extClass = ext.getClass();
      PluginWrapper wrapper = gitblit.whichPlugin(extClass);
      String plugin = wrapper.getDescriptor().getPluginId();
      CommandMetaData meta = extClass.getAnnotation(CommandMetaData.class);
      log.debug("Dispatcher {} is loaded from plugin {}", meta.name(), plugin);
      register(user, ext);
    }
  }
    private void onStart() throws IOException {
      synchronized (this) {
        final Context old = sshScope.set(ctx);
        try {
          cmd = dispatcher.get();
          cmd.setArguments(argv);
          cmd.setInputStream(in);
          cmd.setOutputStream(out);
          cmd.setErrorStream(err);
          cmd.setExitCallback(
              new ExitCallback() {
                @Override
                public void onExit(int rc, String exitMessage) {
                  exit.onExit(translateExit(rc), exitMessage);
                  log(rc);
                }

                @Override
                public void onExit(int rc) {
                  exit.onExit(translateExit(rc));
                  log(rc);
                }
              });
          cmd.start(env);
        } finally {
          sshScope.set(old);
        }
      }
    }
 private void onDestroy() {
   synchronized (this) {
     if (cmd != null) {
       final Context old = sshScope.set(ctx);
       try {
         cmd.destroy();
         log(BaseCommand.STATUS_CANCEL);
       } finally {
         ctx = null;
         cmd = null;
         sshScope.set(old);
       }
     }
   }
 }