package ru.vyarus.dropwizard.guice.module.support; import com.google.inject.AbstractModule; import io.dropwizard.Configuration; import io.dropwizard.setup.Bootstrap; import io.dropwizard.setup.Environment; /** * Base module to avoid boilerplate. It's not required to extend it, but * useful if dropwizard objects required in module: no need to manually implement interfaces. * * @param <C> configuration type * @author Vyacheslav Rusakov * @since 06.06.2015 */ @SuppressWarnings("PMD.AvoidFieldNameMatchingMethodName") public abstract class DropwizardAwareModule<C extends Configuration> extends AbstractModule implements EnvironmentAwareModule, BootstrapAwareModule<C>, ConfigurationAwareModule<C> { private C configuration; private Bootstrap<C> bootstrap; private Environment environment; @Override public void setConfiguration(final C configuration) { this.configuration = configuration; } @Override public void setBootstrap(final Bootstrap<C> bootstrap) { this.bootstrap = bootstrap; } @Override public void setEnvironment(final Environment environment) { this.environment = environment; } /** * @return application bootstrap object */ protected Bootstrap<C> bootstrap() { return bootstrap; } /** * @return application configuration */ protected C configuration() { return configuration; } /** * @return application environment */ protected Environment environment() { return environment; } /** * @return application class package (most likely root package for entire application) */ protected String appPackage() { return bootstrap().getApplication().getClass().getPackage().getName(); } }