Top Description Inners Fields Constructors Methods
io.undertow.servlet.handlers

public Class ServletPathMatches

extends Object
Class Inheritance
Static Imports
io.undertow.servlet.handlers.ServletPathMatch.Type.REDIRECT, .ServletPathMatch.Type.REWRITE

Facade around ServletPathMatchesData. This facade is responsible for re-generating the matches if anything changes.
Author
Stuart Douglas

Nested and Inner Type Summary

Modifier and TypeClass and Description
private static class

Field Summary

Modifier and TypeField and Description
private volatile ServletPathMatchesData
public static final String
private final Deployment
private final LRUCache<String, ServletPathMatch>
private final LRUCache<String, ServletPathMatch>
private final ResourceManager
private volatile String[]

Constructor Summary

AccessConstructor and Description
public
ServletPathMatches(final Deployment deployment)

Method Summary

Modifier and TypeMethod and Description
private static <K, V> void
addToListMap(final Map<K, List<V>> map, final K key, final V value)

private ServletChain
createHandler(final DeploymentInfo deploymentInfo, final ServletHandler targetServlet, final Map<DispatcherType, List<ManagedFilter>> noExtension, final String servletPath, final boolean defaultServlet, MappingMatch mappingMatch, String pattern)

private ServletPathMatch
findWelcomeFile(final String path, boolean requiresRedirect)

private ServletPathMatch
findWelcomeServlet(final String path, boolean requiresRedirect)

private ServletPathMatchesData
public ServletChain
public ServletPathMatch
public void
public void
private static boolean
isFilterApplicable(final String path, final String filterPath)

private static ServletPathMatches.MatchData
resolveServletForPath(final String path, final Map<String, ServletHandler> pathServlets, final Map<String, ServletHandler> extensionServlets, ServletHandler defaultServlet)

private static ServletChain
servletChain(HttpHandler next, final ManagedServlet managedServlet, Map<DispatcherType, List<ManagedFilter>> filters, final String servletPath, final DeploymentInfo deploymentInfo, boolean defaultServlet, MappingMatch mappingMatch, String pattern)

private ServletPathMatchesData
setupServletChains()

Sets up the handlers in the servlet chain.

public void
setWelcomePages(List<String> welcomePages)

private static HttpHandler
wrapHandlers(final HttpHandler wrapee, final List<HandlerWrapper> wrappers)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

databack to summary
private volatile ServletPathMatchesData data
DEFAULT_SERVLET_NAMEback to summary
public static final String DEFAULT_SERVLET_NAME
deploymentback to summary
private final Deployment deployment
pathMatchCacheFixedback to summary
private final LRUCache<String, ServletPathMatch> pathMatchCacheFixed
pathMatchCacheResourcesback to summary
private final LRUCache<String, ServletPathMatch> pathMatchCacheResources
resourceManagerback to summary
private final ResourceManager resourceManager
welcomePagesback to summary
private volatile String[] welcomePages

Constructor Detail

ServletPathMatchesback to summary
public ServletPathMatches(final Deployment deployment)

Method Detail

addToListMapback to summary
private static <K, V> void addToListMap(final Map<K, List<V>> map, final K key, final V value)
createHandlerback to summary
private ServletChain createHandler(final DeploymentInfo deploymentInfo, final ServletHandler targetServlet, final Map<DispatcherType, List<ManagedFilter>> noExtension, final String servletPath, final boolean defaultServlet, MappingMatch mappingMatch, String pattern)
findWelcomeFileback to summary
private ServletPathMatch findWelcomeFile(final String path, boolean requiresRedirect)
findWelcomeServletback to summary
private ServletPathMatch findWelcomeServlet(final String path, boolean requiresRedirect)
getDataback to summary
private ServletPathMatchesData getData()
getServletHandlerByNameback to summary
public ServletChain getServletHandlerByName(final String name)
getServletHandlerByPathback to summary
public ServletPathMatch getServletHandlerByPath(final String path)
initDataback to summary
public void initData()
invalidateback to summary
public void invalidate()
isFilterApplicableback to summary
private static boolean isFilterApplicable(final String path, final String filterPath)
resolveServletForPathback to summary
private static ServletPathMatches.MatchData resolveServletForPath(final String path, final Map<String, ServletHandler> pathServlets, final Map<String, ServletHandler> extensionServlets, ServletHandler defaultServlet)
servletChainback to summary
private static ServletChain servletChain(HttpHandler next, final ManagedServlet managedServlet, Map<DispatcherType, List<ManagedFilter>> filters, final String servletPath, final DeploymentInfo deploymentInfo, boolean defaultServlet, MappingMatch mappingMatch, String pattern)
setupServletChainsback to summary
private ServletPathMatchesData setupServletChains()

Sets up the handlers in the servlet chain. We setup a chain for every path + extension match possibility. (i.e. if there a m path mappings and n extension mappings we have n*m chains).

If a chain consists of only the default servlet then we add it as an async handler, so that resources can be served up directly without using blocking operations.

Todo

this logic is a bit convoluted at the moment, we should look at simplifying it

setWelcomePagesback to summary
public void setWelcomePages(List<String> welcomePages)
wrapHandlersback to summary
private static HttpHandler wrapHandlers(final HttpHandler wrapee, final List<HandlerWrapper> wrappers)
io.undertow.servlet.handlers back to summary

private Class ServletPathMatches.MatchData

extends Object
Class Inheritance

Field Summary

Modifier and TypeField and Description
pack-priv final boolean
pack-priv final ServletHandler
pack-priv final MappingMatch
pack-priv final String
pack-priv final String

Constructor Summary

AccessConstructor and Description
private
MatchData(final ServletHandler handler, final String matchedPath, String userPath, MappingMatch mappingMatch, boolean defaultServlet)

Method Summary

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

defaultServletback to summary
pack-priv final boolean defaultServlet
handlerback to summary
pack-priv final ServletHandler handler
mappingMatchback to summary
pack-priv final MappingMatch mappingMatch
matchedPathback to summary
pack-priv final String matchedPath
userPathback to summary
pack-priv final String userPath

Constructor Detail

MatchDataback to summary
private MatchData(final ServletHandler handler, final String matchedPath, String userPath, MappingMatch mappingMatch, boolean defaultServlet)