0

在编写 gerrit 插件时,您可以选择使用自动注册(使用@Listen@Export注释)或通过定义<GerritModule><Gerrit-SshModule>/或<Gerrit-HttpModule>pom.xml.

幻灯片集中显示了自动注册,但有关如何使用手动注册的文档很少。那么它是如何完成的呢?

4

1 回答 1

1

假设我们要将commit-message-length-validator插件转换为手动注册。它的精简版本如下所示:

@Listen
@Singleton
public class CommitMessageLengthValidation implements CommitValidationListener {
  public List<CommitValidationMessage> onCommitReceived(CommitReceivedEvent receiveEvent)
      throws CommitValidationException {
    // do something
  }
}

or buck build 脚本中的<GerritModule>条目pom.xml必须指向一个 Guice 模块,所以我们必须创建一个。

class MyModule extends AbstractModule {
  @Override
  protected void configure() {
     // this does manual registration of CommitMessageLengthValidation
     DynamicSet.bind(binder(), CommitValidationListener.class)
         .to(CommitMessageLengthValidation.class);
  }
}

替换@Export注释稍微复杂一些。对于 SSH 命令,通过扩展创建 Guice 模块PluginCommandModule

class MySshModule extends PluginCommandModule {
  @Override
  protected void configureCommands() {
    command(PrintHelloWorldCommand.class);
    alias("say-hello", PrintHelloWorldCommand.class);
  }
}

对于 HTTP Servlet,请使用ServletModule

public class Git2MksHttpModule extends ServletModule {
  @Override
  protected void configureServlets() {
    serve("/servertime").with(ServerTime.class);
  }
}
于 2013-09-04T09:35:37.110 回答