package ru.vyarus.dropwizard.guice.module.installer.feature.jersey; 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.util.FeatureUtils; import ru.vyarus.dropwizard.guice.module.installer.util.Reporter; import javax.ws.rs.core.Feature; /** * Jersey feature installer. * Search classes implementing {@link Feature}. Directly register instance in jersey context. * <p> * Installer is useful when guice component need to configure * * @author Vyacheslav Rusakov * @since 13.01.2016 */ @Order(30) public class JerseyFeatureInstaller implements FeatureInstaller<Feature>, InstanceInstaller<Feature> { private final Reporter reporter = new Reporter(JerseyFeatureInstaller.class, "features ="); @Override public boolean matches(final Class<?> type) { return FeatureUtils.is(type, Feature.class); } @Override public void report() { reporter.report(); } @Override public void install(final Environment environment, final Feature instance) { reporter.line("(%s)", FeatureUtils.getInstanceClass(instance).getName()); environment.jersey().register(instance); } }