sunlabs.brazil.properties

Class SubstPropsHandler

public class SubstPropsHandler extends Object implements Handler

Handler that performs value conversions on ${...} substitutions. For any property whose name matches the supplied regular expression, The source value is "converted" based on a token in the regular expression.

This Handler is a generalization of the convert attribute of the get tag of the SetTemplate. Unlike the implementation in the SetTemplate that implements a small, fixed set of conversions of property values in the context of get, this handler allows plug-able conversion filters, and performs the conversions any time ${...} substitutions are resolved, not just in the context of the get tag.

This requires the addition of new syntax in ${...} substitutions to specify the both the conversion (or filter) to apply, and the value to apply it to. This new syntax is configurable using the match, key, and token attributes, but defaults to: ${filter(value)} where filter represents the conversion filter, and value represents the property name whose contents is filtered.

Any class that implements the Convert interface can be loaded and called to perform filtering. Filters that implement all the options of the <get ... convert=xxx> conversion options are included.

See the examples, below for the details.

match
A regular expression that matches a property name that is a candidate for filtering. This expression should have at least 2 sets of ()'s in order to gather values for "key" and "token" below. The default value is ^([a-z]+)\([^)]+\)$
key
The regular expression substitution string used to represent the actual property name to filter. The default is \\2
token
The regular expression substitution string used to represent the filter name or "token". The default is \\1

Using the defaults for "match", "key", and "token", a property named "foo" would be represented as ${xxx(foo)} where "xxx" is the name of the conversion filter.

tokens
A witespace separated list of filter names or "token"s that map the conversion filters to conversion classes. For each token (e.g. foo), there should be a property of the form "foo.class" which specifies the name of the class that implements the filter, (and implements the Convert interface described below). Any additional properties (e.g. x, y, z) needed to initialize a filter should be present in the properties file as "foo.x, foo.y...".
[token].code
The name to match the "token" in the property name. The default is "[token]".

This class contains sample implementations of the convert interface. See below for their functions.

Version: 1.5

Author: Stephen Uhler

See Also: java.util.Properties

Nested Class Summary
interfaceSubstPropsHandler.Convert
Class that maps strings to strings.
static classSubstPropsHandler.Html
HTML escape a value.
static classSubstPropsHandler.LowerCase
Convert a value to lowercase.
static classSubstPropsHandler.Resub
Do a regexp substitution on a value.
classSubstPropsHandler.SubstProps
This class implements a properties object that knows how to extract the "name" and "filter" from a properly constructed name, and to invoke the filter on the value of the encoded name.
static classSubstPropsHandler.Url
URL encode a String.
Method Summary
booleaninit(Server server, String prefix)
booleanrespond(Request request)
StringtoString()

Method Detail

init

public boolean init(Server server, String prefix)

respond

public boolean respond(Request request)

toString

public String toString()