package ru.vyarus.dropwizard.guice.module.installer.feature; import io.dropwizard.lifecycle.Managed; import io.dropwizard.setup.Environment; 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; /** * Managed objects installer. * Looks for classes implementing {@code io.dropwizard.lifecycle.Managed} and register them in environment. * * @author Vyacheslav Rusakov * @since 01.09.2014 */ @Order(20) public class ManagedInstaller implements FeatureInstaller<Managed>, InstanceInstaller<Managed>, Ordered { private final Reporter reporter = new Reporter(ManagedInstaller.class, "managed ="); @Override public boolean matches(final Class<?> type) { return FeatureUtils.is(type, Managed.class); } @Override public void install(final Environment environment, final Managed instance) { reporter.line("(%s)", FeatureUtils.getInstanceClass(instance).getName()); environment.lifecycle().manage(instance); } @Override public void report() { reporter.report(); } }