|
![]() |
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectsunlabs.brazil.server.ChainHandler (view source)
public class ChainHandler
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
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 init(sunlabs.brazil.server.Server, java.lang.String)
. 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
exitOnError
initFailure
will set
any of the handlers fail to
initialize. No handler prefix is required.
prefix, suffix, glob, match
Handler
Field Summary | |
---|---|
boolean |
exitOnError
A flag to require the successfull initialization of all handlers. |
Handler[] |
handlers
The array of handlers that will be invoked to handle the request. |
MatchString |
isMine
The URL that must match for this handler to run |
String[] |
names
The names of the above handlers as specified by the
configuration parameters. |
String |
prefix
The prefix used to initialize this ChainHandler , used
for logging. |
String |
report
The name (if any) of the property to receive the name of the handler that handled the request. |
Constructor Summary | |
---|---|
ChainHandler()
|
Method Summary | |
---|---|
boolean |
init(Server server,
String prefix)
Initializes this ChainHandler by initializing all the
"wrapped" handlers in the list of handlers. |
static Handler |
initHandler(Server server,
String prefix,
String name)
Helper function that allocates and initializes a new Handler , given its name. |
boolean |
respond(Request request)
Calls each of the Handler s in turn until one of them
returns true . |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public Handler[] handlers
public String[] names
handlers
as specified by the
configuration parameters. Used for logging the names of each
Handler
as it is invoked.
public String prefix
ChainHandler
, used
for logging.
public MatchString isMine
public String report
public boolean exitOnError
Constructor Detail |
---|
public ChainHandler()
Method Detail |
---|
public boolean init(Server server, String prefix)
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.
init
in interface Handler
server
- The HTTP server that created this ChainHandler
.prefix
- The prefix for this ChainHandler
's properties.
true
if at least one of the wrapped handlers
was successfully initialized.public static Handler initHandler(Server server, String prefix, String name)
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.
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: Handler
.
This Handler
will be initialized using the
prefix
specified above.
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 ".").
Handler
, or null
if the Handler
could not be allocated.public boolean respond(Request request) throws IOException
Handler
s in turn until one of them
returns true
.
respond
in interface Handler
request
- The HTTP request.
true
if one of the Handler
s returns
true
, false
otherwise.
IOException
- if one of the Handler
s throws an
IOException
while responding.
|
Version Kenai-svn-r24, Generated 08/18/09 Copyright (c) 2001-2009, Sun Microsystems. |
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |