在gerrit插件中使用手动注册

时间:2013-09-04 09:35:37

标签: guice gerrit

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

自动注册显示在this幻灯片集中,但有关如何使用手动注册的文档很少。那怎么办?

1 个答案:

答案 0 :(得分:1)

让我们说我们想将commit-message-length-validator插件转换为手动注册。它的精简版看起来像这样:

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

<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命令,通过扩展PluginCommandModule

来创建Guice模块
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);
  }
}