| java.lang.Object sunlabs.brazil.server.ChainHandler
All known Subclasses: sunlabs.brazil.handler.ChainSawHandler,
ChainHandler | public class ChainHandler implements Handler(Code) | | 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 parameters eare 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 . For each name in the list, the property
name.class is examined to determine which class
to use for this handler. Then name is used as the prefix
in the handler's init() method.
-
report
- If set, this property will be set to the name of the handler
that handled the request (e.g. returned true).
-
exitOnError
- If set, the server's
initFailure will set
any of the handlers fail to
initialize. No handler prefix is required.
See Also: Handler author: Stephen Uhler (stephen.uhler@sun.com) author: Colin Stevens (colin.stevens@sun.com) version: 1.25, 00/12/11 |
Field Summary | |
public boolean | exitOnError A flag to require the successfull initialization of all
handlers. | public Handler[] | handlers The array of handlers that will be invoked to handle
the request. | public String[] | names The names of the above handlers as specified by the
configuration parameters. | public String | prefix The prefix used to initialize this ChainHandler , used
for logging. | public String | report The name (if any) of the property to receive the name of the handler
that handled the request. |
Method Summary | |
public boolean | init(Server server, String prefix) Initializes this ChainHandler by initializing all the
"wrapped" handlers in the list of handlers. | public static Handler | initHandler(Server server, String prefix, String name) Helper function that allocates and initializes a new
Handler , given its name. | public boolean | respond(Request request) Calls each of the Handler s in turn until one of them
returns true . |
exitOnError | public boolean exitOnError(Code) | | A flag to require the successfull initialization of all
handlers.
|
handlers | public Handler[] handlers(Code) | | The array of handlers that will be invoked to handle
the request.
|
names | public String[] names(Code) | | The names of the above handlers as specified by the
configuration parameters. Used for logging the names of each
Handler as it is invoked.
|
prefix | public String prefix(Code) | | The prefix used to initialize this ChainHandler , used
for logging.
|
report | public String report(Code) | | The name (if any) of the property to receive the name of the handler
that handled the request.
|
init | public boolean init(Server server, String prefix)(Code) | | 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.
Parameters: server - The HTTP server that created this ChainHandler . Parameters: prefix - The prefix for this ChainHandler 's properties. true if at least one of the wrapped handlerswas successfully initialized. |
initHandler | public static Handler initHandler(Server server, String prefix, String name)(Code) | | Helper function that allocates and initializes a new
Handler , given its name. In addition to the
ChainHandler , several other handlers
contain embedded Handler s -- this method can be
used to initialize those embedded Handler s.
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 containthe configuration parameters for the new handler. Parameters: prefix - The prefix in the server's properties for the newHandler 's configuration parameters. The prefixis prepended to the configuation parameters used by the Handler . Parameters: name - The name of the new Handler . The name canbe one of two forms: - The name of the Java class for the
Handler .This Handler will be initialized using theprefix specified above. - A symbolic
name . The configurationparameter name.class is the name of theJava class for the Handler . The aboveprefix will be ignored and thisHandler will be initialized with the prefix"name. " (the symbolic name followed bya "."). The newly allocated Handler , or null if the Handler could not be allocated. |
respond | public boolean respond(Request request) throws IOException(Code) | | Calls each of the Handler s in turn until one of them
returns true .
Parameters: request - The HTTP request. true if one of the Handler s returnstrue , false otherwise. throws: IOException - if one of the Handler s throws anIOException while responding. |
|
|