package ru.vyarus.dropwizard.guice.module.installer.feature;
import io.dropwizard.setup.Environment;
import org.eclipse.jetty.util.component.LifeCycle;
import ru.vyarus.dropwizard.guice.module.installer.FeatureInstaller;
import ru.vyarus.dropwizard.guice.module.installer.install.InstanceInstaller;
import ru.vyarus.dropwizard.guice.module.installer.order.Order;
import ru.vyarus.dropwizard.guice.module.installer.order.Ordered;
import ru.vyarus.dropwizard.guice.module.installer.util.FeatureUtils;
import ru.vyarus.dropwizard.guice.module.installer.util.Reporter;
/**
* Lifecycle objects installer.
* Looks for classes implementing {@code org.eclipse.jetty.util.component.LifeCycle} and register them in environment.
*
* @author Vyacheslav Rusakov
* @since 01.09.2014
*/
@Order(10)
public class LifeCycleInstaller implements
FeatureInstaller<LifeCycle>, InstanceInstaller<LifeCycle>, Ordered {
private final Reporter reporter = new Reporter(LifeCycleInstaller.class, "life cycles =");
@Override
public boolean matches(final Class<?> type) {
return FeatureUtils.is(type, LifeCycle.class);
}
@Override
public void install(final Environment environment, final LifeCycle instance) {
reporter.line("(%s)", FeatureUtils.getInstanceClass(instance).getName());
environment.lifecycle().manage(instance);
}
@Override
public void report() {
reporter.report();
}
}