diff options
Diffstat (limited to 'java/com/google/gerrit/lifecycle/LifecycleModule.java')
-rw-r--r-- | java/com/google/gerrit/lifecycle/LifecycleModule.java | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/java/com/google/gerrit/lifecycle/LifecycleModule.java b/java/com/google/gerrit/lifecycle/LifecycleModule.java new file mode 100644 index 0000000000..bfb61d2eda --- /dev/null +++ b/java/com/google/gerrit/lifecycle/LifecycleModule.java @@ -0,0 +1,25 @@ +package com.google.gerrit.lifecycle; + +import com.google.gerrit.extensions.config.FactoryModule; +import com.google.gerrit.extensions.events.LifecycleListener; +import com.google.inject.Singleton; +import com.google.inject.binder.LinkedBindingBuilder; +import com.google.inject.internal.UniqueAnnotations; +import java.lang.annotation.Annotation; + +/** Module to support registering a unique LifecyleListener. */ +public abstract class LifecycleModule extends FactoryModule { + /** + * @return a unique listener binding. + * <p>To create a listener binding use: + * <pre> + * listener().to(MyListener.class); + * </pre> + * where {@code MyListener} is a {@link Singleton} implementing the {@link LifecycleListener} + * interface. + */ + protected LinkedBindingBuilder<LifecycleListener> listener() { + final Annotation id = UniqueAnnotations.create(); + return bind(LifecycleListener.class).annotatedWith(id); + } +} |