package ru.vyarus.dropwizard.guice.module.jersey;
import com.google.inject.servlet.GuiceFilter;
import com.google.inject.servlet.ServletModule;
import io.dropwizard.setup.Environment;
import ru.vyarus.dropwizard.guice.module.installer.internal.AdminGuiceFilter;
import javax.servlet.DispatcherType;
import java.util.EnumSet;
/**
* Registers {@link GuiceFilter} for application and admin scopes. Also, initializes request and session scopes
* (as first registered servlet module).
* <p>
* Servlet modules support may be disabled, see
* {@link ru.vyarus.dropwizard.guice.GuiceyOptions#GuiceFilterRegistration}.
*
* @author Vyacheslav Rusakov
* @since 21.08.2016
*/
public class GuiceWebModule extends ServletModule {
/**
* Guice filter registration name.
*/
public static final String GUICE_FILTER = "Guice Filter";
private static final String ROOT_PATH = "/*";
private final Environment environment;
private final EnumSet<DispatcherType> dispatcherTypes;
public GuiceWebModule(final Environment environment, final EnumSet<DispatcherType> dispatcherTypes) {
this.environment = environment;
this.dispatcherTypes = dispatcherTypes;
}
@Override
protected void configureServlets() {
final GuiceFilter guiceFilter = new GuiceFilter();
environment.servlets().addFilter(GUICE_FILTER, guiceFilter)
.addMappingForUrlPatterns(dispatcherTypes, false, ROOT_PATH);
environment.admin().addFilter(GUICE_FILTER, new AdminGuiceFilter(guiceFilter))
.addMappingForUrlPatterns(dispatcherTypes, false, ROOT_PATH);
}
}