如何在gerrit插件中使用LifecycleListener?

时间:2013-08-20 15:21:38

标签: java guice gerrit

我正在编写一个gerrit插件,想要在插件重启/关闭时关闭网络连接。这可以使用LifecycleListener完成。

据我所知,关于Guice的gerrit插件有两种操作模式。一种是不在Manifest中声明任何内容,并使用@Listen@Export等注释对所有内容使用自动注册。另一种是创建一个Guice模块,并在该模块中手动完成所有接线。

我想使用自动注册,但我无法使用LifecycleListener。添加@Listen注释无效,监听器将被忽略。

我的代码看起来像这样(最小化):

@Listen
@Singleton
public class CommitValidationTest implements CommitValidationListener {
        @Listen
        public static class Lifecycle implements LifecycleListener {
                @Override
                public void start() {
                    // write to log
                }

                @Override
                public void stop() {
                    // write to log
                }
        }
}

1 个答案:

答案 0 :(得分:1)

我认为LifecycleListener无法与自动注册结合使用。

这就是原因:为了使@Listen注释起作用,由类实现的@ExtensionPoint接口(在本例中为LifecycleListener)必须具有{ Guice模块中的{1}},DynamicItemDynamicSet定义,DynamicMap并非如此。