Allows multiple handlers to be invoked sequentially for a single HTTP
request. A list of handlers is supplied when this
ChainHandler is initialized. When an HTTP request is
received by this ChainHandler, each of the handlers from the
list is called in turn until one of them responds and returns
true.
A useful trick is that some handlers can be run by a
ChainHandler for their side effects. The handler can modify
the Request object and then return false; the
next handler in the list will get a crack at the modified request.
The following configuration parameter is used to initialize this
Handler:
handlers
A list of Handler names that will be invoked in the
given order to handle the request. These are considered the
"wrapped" handlers. These handlers will all be initialized at
startup by ChainHandler.init.
Initializes this ChainHandler by initializing all the
"wrapped" handlers in the list of handlers. If a wrapped handler
cannot be initialized, this method logs a message and skips it. If no
handlers were specified, or no handlers were successfully initialized,
then the initialization of this ChainHandler is
considered to have failed.
Helper function that allocates and initializes a new
Handler, given its name. In addition to the
ChainHandler, several other handlers
contain embedded Handlers -- this method can be
used to initialize those embedded Handlers.
If there is an error initializing the specified Handler,
this method will log a dignostic message to the server and return
null. This happens if the specified class cannot be
found or instantiated, if the specified class is not actually a
Handler, if the Handler.init method
returns false, or if there is any other exception.
Parameters:
server - The server that will own the new Handler.
Mainly used for the server's properties, which contain
the configuration parameters for the new handler.
prefix - The prefix in the server's properties for the new
Handler's configuration parameters. The prefix
is prepended to the configuation parameters used by the
Handler.
name - The name of the new Handler. The name can
be one of two forms:
The name of the Java class for the Handler.
This Handler will be initialized using the
prefix specified above.
A symbolic name. The configuration
parameter name.class is the name of the
Java class for the Handler. The above
prefix will be ignored and this
Handler will be initialized with the prefix
"name." (the symbolic name followed by
a ".").
Returns:
The newly allocated Handler, or null
if the Handler could not be allocated.