Package com.google.inject.servlet
Class ManagedFilterPipeline
- java.lang.Object
-
- com.google.inject.servlet.ManagedFilterPipeline
-
- All Implemented Interfaces:
FilterPipeline
class ManagedFilterPipeline extends java.lang.Object implements FilterPipeline
Central routing/dispatch class handles lifecycle of managed filters, and delegates to the servlet pipeline.
-
-
Field Summary
Fields Modifier and Type Field 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 Summary
Constructors Constructor Description ManagedFilterPipeline(Injector injector, ManagedServletPipeline servletPipeline, Provider<javax.servlet.ServletContext> servletContext)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private FilterDefinition[]
collectFilterDefinitions(Injector injector)
Introspects the injector and collects all instances of boundList<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.
-
-
-
Field Detail
-
filterDefinitions
private final FilterDefinition[] filterDefinitions
-
servletPipeline
private final ManagedServletPipeline servletPipeline
-
servletContext
private final Provider<javax.servlet.ServletContext> servletContext
-
injector
private final Injector injector
-
initialized
private volatile boolean initialized
-
FILTER_DEFS
private static final TypeLiteral<FilterDefinition> FILTER_DEFS
-
-
Constructor Detail
-
ManagedFilterPipeline
@Inject public ManagedFilterPipeline(Injector injector, ManagedServletPipeline servletPipeline, Provider<javax.servlet.ServletContext> servletContext)
-
-
Method Detail
-
collectFilterDefinitions
private FilterDefinition[] collectFilterDefinitions(Injector injector)
Introspects the injector and collects all instances of boundList<FilterDefinition>
into a master list.We have a guarantee that
Injector.getBindings()
returns a map that preserves insertion order in entry-set iterators.
-
initPipeline
public void initPipeline(javax.servlet.ServletContext servletContext) throws javax.servlet.ServletException
- Specified by:
initPipeline
in interfaceFilterPipeline
- Throws:
javax.servlet.ServletException
-
dispatch
public void dispatch(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response, javax.servlet.FilterChain proceedingFilterChain) throws java.io.IOException, javax.servlet.ServletException
- Specified by:
dispatch
in interfaceFilterPipeline
- Throws:
java.io.IOException
javax.servlet.ServletException
-
withDispatcher
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. This proxy also provides minimal forwarding support.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).
-
destroyPipeline
public void destroyPipeline()
- Specified by:
destroyPipeline
in interfaceFilterPipeline
-
-