sunlabs.brazil.handler

Class UrlMapperHandler

public class UrlMapperHandler extends Object implements Handler

Handler for mapping URL's or HTTP headers, or redirecting URLs based on the contents of the current HTTP request. Matches URL's (or arbitrary request properties) against a regexp pattern. If there is a match, the URL (or specified HTTP header) is rewritten or the URL is redirected.

Properties:

match
The regexp to match a url. May contain constructs of the form ${xxx}, which are replaced by the value of request.props for the key xxx
replace
The url to replace it with. This may contain both regular expression sub-patterns, such as "\1", or variables of the form ${..} which are replaced with the equivalent request properties.
export
If set, use this as a properties prefix, and set request properties for each sub-expression in "match". (E.g. [export]1 [export]2 ...).
redirect
If set, the request is redirected instead of being rewritten
ignoreCase
If set, the case of the expression is ignored.
source
If set, then this string is used instead of the url as the source of the match. Variable substitution using ${xxx} is performed on source, which, if unset, defaults to "${url}". If set, ${} substitutions "method", "url", "protocol", "query", and "serverUrl" are taken from the current Request object. Then names in the Http Request headers are used, then names from the Request.props. The source property is obtained at init time, but evaluated (for ${...}) at every request.

As an example, the configuration:
prefix.source=${user-agent}!${url}
prefix.match=Lynx.*!(.*)
prefix.replace=/text\\1
could cause all browsers with "Lynx" in their user agent header to the "text" sub-directory.

target
By default, this handler modifies the request URL. If target is specified, it names an HTTP header to be replaced instead of the URL. The "target" is ignored if "redirect" is specified, and a new header is created if the "target" header doesn't already exist.

Version: 2.6, 07/03/26

Author: Stephen Uhler

Nested Class Summary
classUrlMapperHandler.MapProperties
Look in a dictionary first, then the provided properties.
Method Summary
booleaninit(Server server, String prefix)
booleanrespond(Request request)
If this request matches the expression, rewrite it.

Method Detail

init

public boolean init(Server server, String prefix)

respond

public boolean respond(Request request)
If this request matches the expression, rewrite it.