package io.dropwizard.java8.auth; import com.codahale.metrics.MetricRegistry; import io.dropwizard.auth.AuthValueFactoryProvider; import io.dropwizard.jersey.DropwizardResourceConfig; import org.glassfish.jersey.server.filter.RolesAllowedDynamicFeature; import javax.ws.rs.container.ContainerRequestFilter; import java.security.Principal; public abstract class AbstractAuthResourceConfig extends DropwizardResourceConfig { public AbstractAuthResourceConfig() { super(true, new MetricRegistry()); register(new AuthDynamicFeature(getAuthFilter())); register(new AuthValueFactoryProvider.Binder<>(getPrincipalClass())); register(RolesAllowedDynamicFeature.class); } /** * @return type of injected principal instance */ protected abstract Class<? extends Principal> getPrincipalClass(); protected abstract ContainerRequestFilter getAuthFilter(); }