class ManagedFilterPipeline extends java.lang.Object implements FilterPipeline
Modifier and Type | Field and Description |
---|---|
private static TypeLiteral<FilterDefinition> |
FILTER_DEFS |
private FilterDefinition[] |
filterDefinitions |
private boolean |
initialized |
private Injector |
injector |
private Provider<javax.servlet.ServletContext> |
servletContext |
private ManagedServletPipeline |
servletPipeline |
Constructor and Description |
---|
ManagedFilterPipeline(Injector injector,
ManagedServletPipeline servletPipeline,
Provider<javax.servlet.ServletContext> servletContext) |
Modifier and Type | Method and Description |
---|---|
private FilterDefinition[] |
collectFilterDefinitions(Injector injector)
Introspects the injector and collects all instances of bound
List<FilterDefinition>
into a master list. |
void |
destroyPipeline() |
void |
dispatch(javax.servlet.ServletRequest request,
javax.servlet.ServletResponse response,
javax.servlet.FilterChain proceedingFilterChain) |
void |
initPipeline(javax.servlet.ServletContext servletContext) |
private javax.servlet.ServletRequest |
withDispatcher(javax.servlet.ServletRequest servletRequest,
ManagedServletPipeline servletPipeline)
Used to create an proxy that dispatches either to the guice-servlet pipeline or the regular
pipeline based on uri-path match.
|
private final FilterDefinition[] filterDefinitions
private final ManagedServletPipeline servletPipeline
private final Provider<javax.servlet.ServletContext> servletContext
private final Injector injector
private volatile boolean initialized
private static final TypeLiteral<FilterDefinition> FILTER_DEFS
@Inject public ManagedFilterPipeline(Injector injector, ManagedServletPipeline servletPipeline, Provider<javax.servlet.ServletContext> servletContext)
private FilterDefinition[] collectFilterDefinitions(Injector injector)
List<FilterDefinition>
into a master list.
We have a guarantee that Injector.getBindings()
returns a map that
preserves insertion order in entry-set iterators.
public void initPipeline(javax.servlet.ServletContext servletContext) throws javax.servlet.ServletException
initPipeline
in interface FilterPipeline
javax.servlet.ServletException
public void dispatch(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain proceedingFilterChain) throws java.io.IOException, javax.servlet.ServletException
dispatch
in interface FilterPipeline
java.io.IOException
javax.servlet.ServletException
private javax.servlet.ServletRequest withDispatcher(javax.servlet.ServletRequest servletRequest, ManagedServletPipeline servletPipeline)
We cannot forward from a web.xml Servlet/JSP to a guice-servlet (because the filter pipeline is not called again). However, we can wrap requests with our own dispatcher to forward the *other* way. web.xml Servlets/JSPs can forward to themselves as per normal.
This is not a problem cuz we intend for people to migrate from web.xml to guice-servlet, incrementally, but not the other way around (which, we should actively discourage).
public void destroyPipeline()
destroyPipeline
in interface FilterPipeline