我正在寫一個gerrit插件並希望關閉插件重新啓動/關閉時的網絡連接。這可以使用LifecycleListener
完成。如何在gerrit插件中使用LifecycleListener?
據我所知,有關Guice的gerrit插件有兩種操作模式。一個是不要在清單中聲明任何內容,並使用自動註冊的所有內容,使用註釋@Listen
和@Export
。另一種是創建一個Guice模塊,並在該模塊中手動進行所有接線。
我想使用自動註冊,但我不能使它與LifecycleListener
一起使用。添加@Listen
註釋不起作用,Listener將被忽略。
我的代碼看起來是這樣的(最小):
@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
}
}
}
你註冊了@ @ Listen'註解的攔截器嗎? –
不,但'@ Listen'註釋由gerrit定義並用於插件'@ ExtensionPoint's的自動註冊。 – bseibold
你的插件加載成功嗎?我嘗試在你的例子中使用相同的方法在提交消息長度驗證插件(一個核心Gerrit插件)上添加一個'LifecycleListener',它無法加載插件「com.google.gerrit.server.plugins.InvalidPluginException:無法註冊com.googlesource.gerrit.plugins.validators.CommitMessageLengthValidation $ Lifecycle,server does not accept com.google.gerrit.extensions.events.LifecycleListener「。 –