package com.airbnb.airpal; import com.airbnb.airpal.AirpalApplicationBase; import com.airbnb.airpal.modules.AirpalModule; import com.airbnb.airpal.modules.DropwizardModule; import com.google.common.collect.ImmutableList; import com.google.inject.AbstractModule; import io.dropwizard.ConfiguredBundle; import io.dropwizard.setup.Bootstrap; import io.dropwizard.setup.Environment; import io.dropwizard.views.ViewBundle; import org.secnod.dropwizard.shiro.ShiroBundle; import org.secnod.dropwizard.shiro.ShiroConfiguration; import java.util.Arrays; public class AirpalApplication extends AirpalApplicationBase<AirpalConfiguration> { @Override public Iterable<AbstractModule> getModules(AirpalConfiguration config, Environment environment) { return Arrays.asList(new DropwizardModule(config, environment), new AirpalModule(config, environment)); } @Override public Iterable<ConfiguredBundle<AirpalConfiguration>> getConfiguredBundles() { Iterable<ConfiguredBundle<AirpalConfiguration>> bundles = super.getConfiguredBundles(); ImmutableList.Builder<ConfiguredBundle<AirpalConfiguration>> builder = ImmutableList.builder(); for (ConfiguredBundle<AirpalConfiguration> bundle : bundles) { builder.add(bundle); } builder.add(new ShiroBundle<AirpalConfiguration>() { @Override protected ShiroConfiguration narrow(AirpalConfiguration configuration) { return configuration.getShiro(); } }); return builder.build(); } public static void main(final String[] args) throws Exception { final AirpalApplication application = new AirpalApplication(); application.run(args); } }