package com.netflix.governator.guice.annotations;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import com.google.inject.Binder;
import com.google.inject.Module;
import com.netflix.governator.guice.BootstrapBinder;
import com.netflix.governator.guice.BootstrapModule;
import com.netflix.governator.guice.LifecycleInjectorBuilder;
import com.netflix.governator.guice.LifecycleInjectorBuilderSuite;
@Documented
@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface Bootstrap {
/**
* For most cases module() should suffice. LifecycleInjectorBuilderSuite is being
* deprecated in favor of plain guice Module's or BootstrapMoudle where absolutely
* necessary.
* @deprecated
*/
Class<? extends LifecycleInjectorBuilderSuite> value() default NullLifecycleInjectorBuilderSuite.class;
Class<? extends BootstrapModule> bootstrap() default NullBootstrapModule.class;
Class<? extends Module> module() default NullModule.class;
public static class NullBootstrapModule implements BootstrapModule {
@Override
public void configure(BootstrapBinder binder) {
}
}
public static class NullLifecycleInjectorBuilderSuite implements LifecycleInjectorBuilderSuite {
@Override
public void configure(LifecycleInjectorBuilder builder) {
}
}
public static class NullModule implements Module {
@Override
public void configure(Binder binder) {
}
}
}