public interface FilterChainManager
FilterChainManager
manages the creation and modification of Filter
chains from an available pool
of Filter
instances.Modifier and Type | Method and Description |
---|---|
void |
addFilter(String name,
Filter filter)
Adds a filter to the 'pool' of available filters that can be used when
creating filter chains . |
void |
addFilter(String name,
Filter filter,
boolean init)
Adds a filter to the 'pool' of available filters that can be used when
creating filter chains . |
void |
addToChain(String chainName,
String filterName)
Adds (appends) a filter to the filter chain identified by the given
chainName . |
void |
addToChain(String chainName,
String filterName,
String chainSpecificFilterConfig)
Adds (appends) a filter to the filter chain identified by the given
chainName . |
void |
createChain(String chainName,
String chainDefinition)
Creates a filter chain for the given
chainName with the specified chainDefinition
String. |
NamedFilterList |
getChain(String chainName)
Returns the filter chain identified by the specified
chainName or null if there is no chain with
that name. |
Set<String> |
getChainNames()
Returns the names of all configured chains or an empty
Set if no chains have been configured. |
Map<String,Filter> |
getFilters()
Returns the pool of available
Filter s managed by this manager, keyed by name . |
boolean |
hasChains()
Returns
true if one or more configured chains are available, false if none are configured. |
FilterChain |
proxy(FilterChain original,
String chainName)
Proxies the specified
original FilterChain with the named chain. |
Map<String,Filter> getFilters()
Filter
s managed by this manager, keyed by name
.Filter
s managed by this manager, keyed by name
.NamedFilterList getChain(String chainName)
chainName
or null
if there is no chain with
that name.chainName
- the name identifying the filter chain.chainName
or null
if there is no chain with
that name.boolean hasChains()
true
if one or more configured chains are available, false
if none are configured.true
if one or more configured chains are available, false
if none are configured.Set<String> getChainNames()
Set
if no chains have been configured.Set
if no chains have been configured.FilterChain proxy(FilterChain original, String chainName)
original
FilterChain with the named chain. The returned
FilterChain
instance will first execute the configured named chain and then lastly invoke the given
original
chain.original
- the original FilterChain to proxychainName
- the name of the internal configured filter chain that should 'sit in front' of the specified
original chain.FilterChain
instance that will execute the named chain and then finally the
specified original
FilterChain instance.IllegalArgumentException
- if there is no configured chain with the given chainName
.void addFilter(String name, Filter filter)
creating filter chains
.
Calling this method is effectively the same as calling
addFilter
(name, filter, false);
name
- the name to assign to the filter, used to reference the filter in chain definitionsfilter
- the filter to initialize and then add to the pool of available filters that can be usedvoid addFilter(String name, Filter filter, boolean init)
creating filter chains
.name
- the name to assign to the filter, used to reference the filter in chain definitionsfilter
- the filter to assign to the filter poolinit
- whether or not the Filter
should be
initialized
first before being added to the pool.void createChain(String chainName, String chainDefinition)
chainName
with the specified chainDefinition
String.
FilterChainManager
interface does not impose any restrictions on filter chain names,
(it expects only Strings), a convenient convention is to make the chain name an actual URL path expression
(such as an Ant path expression
). For example:
createChain(path_expression, path_specific_filter_chain_definition);
This convention can be used by a FilterChainResolver
to inspect request URL paths
against the chain name (path) and, if a match is found, return the corresponding chain for runtime filtering.
chainDefinition
method argument is expected to conform to the following format:
filter1[optional_config1], filter2[optional_config2], ..., filterN[optional_configN]where
filterN
is the name of a filter previously
registered
with the manager, and[optional_configN]
is an optional bracketed string that has meaning for that particular filter for
this particular chainfilterN[]
just becomes filterN
.
And because this method does create a chain, remember that order matters! The comma-delimited filter tokens in
the chainDefinition
specify the chain's execution order.
/account/** = authcBasicThis example says "Create a filter named '
/account/**
' consisting of only the 'authcBasic
'
filter". Also because the authcBasic
filter does not need any path-specific
config, it doesn't have any config brackets []
.
/remoting/** = authcBasic, roles[b2bClient], perms["remote:invoke:wan,lan"]This example by contrast uses the 'roles' and 'perms' filters which do use bracket notation. This definition says: Construct a filter chain named '
/remoting/**
' which
authcBasic
) thenb2bClient
role, and then finallyremote:invoke:lan,wan
permission.chainName
- the name to associate with the chain, conventionally a URL path pattern.chainDefinition
- the string-formatted chain definition used to construct an actual
NamedFilterList
chain instance.FilterChainResolver
,
AntPathMatcher
void addToChain(String chainName, String filterName)
chainName
. If there is no chain
with the given name, a new one is created and the filter will be the first in the chain.chainName
- the name of the chain where the filter will be appended.filterName
- the name of the registered
filter to add to the chain.IllegalArgumentException
- if there is not a registered
filter under the given filterName
void addToChain(String chainName, String filterName, String chainSpecificFilterConfig) throws ConfigurationException
chainName
. If there is no chain
with the given name, a new one is created and the filter will be the first in the chain.
Note that the final argument expects the associated filter to be an instance of
a PathConfigProcessor
to accept per-chain configuration.
If it is not, a IllegalArgumentException
will be thrown.chainName
- the name of the chain where the filter will be appended.filterName
- the name of the registered
filter to add to the chain.chainSpecificFilterConfig
- the filter-specific configuration that should be applied for only the specified
filter chain.IllegalArgumentException
- if there is not a registered
filter under the given filterName
ConfigurationException
- if the filter is not capable of accepting chainSpecificFilterConfig
(usually such filters implement the
PathConfigProcessor
interface).Copyright © 2004–2020 The Apache Software Foundation. All rights reserved.