Package net.officefloor.servlet.tomcat
Class TomcatServletManager
- java.lang.Object
-
- net.officefloor.servlet.tomcat.TomcatServletManager
-
- All Implemented Interfaces:
ServletManager,ServletServicer
public class TomcatServletManager extends java.lang.Object implements ServletManager, ServletServicer
TomcatServletServicer.- Author:
- Daniel Sagenschneider
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classTomcatServletManager.FilterChainHttpServletHttpServletto handleFilterChain.static interfaceTomcatServletManager.Operation<R,T extends java.lang.Throwable>Operation to run.static classTomcatServletManager.SetupApplicationListener
-
Constructor Summary
Constructors Constructor Description TomcatServletManager(java.lang.String contextPath, InjectionRegistry injectionRegistry, OfficeExtensionContext sourceContext, java.lang.String webAppPath)Instantiate.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description FilterServiceraddFilter(java.lang.String name, java.lang.Class<? extends javax.servlet.Filter> filterClass, java.util.function.Consumer<org.apache.tomcat.util.descriptor.web.FilterDef> decorator)Adds aFilter.ServletServiceraddServlet(java.lang.String name, java.lang.Class<? extends javax.servlet.Servlet> servletClass, java.util.function.Consumer<org.apache.catalina.Wrapper> decorator)Adds aServlet.ServletServiceraddServlet(java.lang.String name, javax.servlet.Servlet servlet, boolean isInjectDependencies, java.util.function.Consumer<org.apache.catalina.Wrapper> decorator)Adds aServletinstance.voidchainInServletManager()Chains in thisServletManagerto service HTTP requests.AvailableType[]getAvailableTypes()Obtains theAvailableTypeinstances fromOfficeFloor.org.apache.catalina.ContextgetContext()Obtains theContext.<T> TgetDependency(java.lang.String qualifier, java.lang.Class<? extends T> type)Obtains a dependency.OfficeExtensionContextgetSourceContext()Obtains theOfficeExtensionContext.booleanisChainServletManager()Indicates if chain in theServletManager.static <R,T extends java.lang.Throwable>
RrunInMavenWarProject(TomcatServletManager.Operation<R,T> operation)Runs theTomcatServletManager.Operationassuming within Mavenwarproject.voidservice(ServerHttpConnection connection, java.util.concurrent.Executor executor, AsynchronousFlow asynchronousFlow, AsynchronousFlowCompletion asynchronousFlowCompletion, java.util.Map<java.lang.String,? extends java.lang.Object> attributes)Services theServerHttpConnection.voidsetSupplierSourceContext(SupplierSourceContext supplierSourceContext)Specifies theSupplierSourceContext.voidstart(AvailableType[] availableTypes)Starts theServletcontainer.voidstop()Stops theServletcontainer.
-
-
-
Constructor Detail
-
TomcatServletManager
public TomcatServletManager(java.lang.String contextPath, InjectionRegistry injectionRegistry, OfficeExtensionContext sourceContext, java.lang.String webAppPath) throws java.io.IOExceptionInstantiate.- Parameters:
contextPath- Context path.injectionRegistry-InjectionRegistry.sourceContext-OfficeExtensionContext.webAppPath- Path to web application (WAR). May benull.- Throws:
java.io.IOException- If fails to setup container.
-
-
Method Detail
-
runInMavenWarProject
public static <R,T extends java.lang.Throwable> R runInMavenWarProject(TomcatServletManager.Operation<R,T> operation) throws T extends java.lang.Throwable
Runs theTomcatServletManager.Operationassuming within Mavenwarproject.- Type Parameters:
R- Return type.T- Possible exception type.- Parameters:
operation-TomcatServletManager.Operation.- Returns:
- Result.
- Throws:
T- Possible failure.T extends java.lang.Throwable
-
setSupplierSourceContext
public void setSupplierSourceContext(SupplierSourceContext supplierSourceContext)
Specifies theSupplierSourceContext.- Parameters:
supplierSourceContext-SupplierSourceContext.
-
isChainServletManager
public boolean isChainServletManager()
Indicates if chain in theServletManager.- Returns:
trueto chain in theServletManager.
-
start
public void start(AvailableType[] availableTypes) throws java.lang.Exception
Starts theServletcontainer.- Parameters:
availableTypes-AvailableTypeinstances.- Throws:
java.lang.Exception- If fails to start.
-
stop
public void stop() throws java.lang.ExceptionStops theServletcontainer.- Throws:
java.lang.Exception- If fails to stop.
-
service
public void service(ServerHttpConnection connection, java.util.concurrent.Executor executor, AsynchronousFlow asynchronousFlow, AsynchronousFlowCompletion asynchronousFlowCompletion, java.util.Map<java.lang.String,? extends java.lang.Object> attributes) throws java.lang.Exception
Description copied from interface:ServletServicerServices theServerHttpConnection.- Specified by:
servicein interfaceServletServicer- Parameters:
connection-ServerHttpConnection.executor-Executor.asynchronousFlow-AsynchronousFlowto allow forAsyncContext.asynchronousFlowCompletion-AsynchronousFlowCompletionfor handling completion of servicing.attributes- Optional attributes to load to theHttpServletRequest. May benull.- Throws:
java.lang.Exception- If fails to service.
-
getContext
public org.apache.catalina.Context getContext()
Description copied from interface:ServletManagerObtains theContext.- Specified by:
getContextin interfaceServletManager- Returns:
Context.
-
addServlet
public ServletServicer addServlet(java.lang.String name, java.lang.Class<? extends javax.servlet.Servlet> servletClass, java.util.function.Consumer<org.apache.catalina.Wrapper> decorator)
Description copied from interface:ServletManagerAdds aServlet.- Specified by:
addServletin interfaceServletManager- Parameters:
name- Name ofServlet.servletClass-ServletClass.decorator- Decorates theServlet. May benull.- Returns:
ServletServicer.
-
addServlet
public ServletServicer addServlet(java.lang.String name, javax.servlet.Servlet servlet, boolean isInjectDependencies, java.util.function.Consumer<org.apache.catalina.Wrapper> decorator)
Description copied from interface:ServletManagerAdds aServletinstance.- Specified by:
addServletin interfaceServletManager- Parameters:
name- Name ofServlet.servlet-Servlet.isInjectDependencies- Flags to inject dependencies into theServletinstance.decorator- Decorates theServlet. May benull.- Returns:
ServletServicer.
-
addFilter
public FilterServicer addFilter(java.lang.String name, java.lang.Class<? extends javax.servlet.Filter> filterClass, java.util.function.Consumer<org.apache.tomcat.util.descriptor.web.FilterDef> decorator)
Description copied from interface:ServletManagerAdds aFilter.- Specified by:
addFilterin interfaceServletManager- Parameters:
name- Name ofFilter.filterClass-FilterClass.decorator- Decorates theFilter. May benull.- Returns:
FilterServicer.
-
getDependency
public <T> T getDependency(java.lang.String qualifier, java.lang.Class<? extends T> type)Description copied from interface:ServletManagerObtains a dependency.
The dependency is via a
SupplierThreadLocalthat is always available in servicing aServlet/Filter.- Specified by:
getDependencyin interfaceServletManager- Type Parameters:
T- Type of dependency.- Parameters:
qualifier- Qualifier. May benull.type- Type.- Returns:
- Dependency.
-
getAvailableTypes
public AvailableType[] getAvailableTypes()
Description copied from interface:ServletManagerObtains the
AvailableTypeinstances fromOfficeFloor.This should only be invoked during
Servletcontainer startup.- Specified by:
getAvailableTypesin interfaceServletManager- Returns:
AvailableTypeinstances fromOfficeFloor.
-
chainInServletManager
public void chainInServletManager()
Description copied from interface:ServletManagerChains in thisServletManagerto service HTTP requests. This allows the backingServletcontainer to route requests to the appropriateFilter/Servletto service the HTTP request.- Specified by:
chainInServletManagerin interfaceServletManager
-
getSourceContext
public OfficeExtensionContext getSourceContext()
Description copied from interface:ServletManagerObtains theOfficeExtensionContext.- Specified by:
getSourceContextin interfaceServletManager- Returns:
OfficeExtensionContext.
-
-