| 
 |   | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Object | +--sunlabs.brazil.server.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
 
Handler| Field Summary | |
|  boolean | exitOnErrorA flag to require the successfull initialization of all handlers. | 
|  Handler[] | handlersThe array of handlers that will be invoked to handle the request. | 
|  String[] | namesThe names of the above handlersas specified by the
 configuration parameters. | 
|  String | prefixThe prefix used to initialize this ChainHandler, used
 for logging. | 
|  String | reportThe name (if any) of the property to receive the name of the handler that handled the request. | 
|  String | urlPrefixThe URL prefix that must match for this handler to run | 
| Constructor Summary | |
| ChainHandler() | |
| Method Summary | |
|  boolean | init(Server server,
     String prefix)Initializes this ChainHandlerby 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 Handlers in turn until one of them
 returnstrue. | 
| 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 String urlPrefix
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 Handlerserver - 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 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.
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
Handlers in turn until one of them
 returns true.
respond in interface Handlerrequest - The HTTP request.
true if one of the Handlers returns
		true, false otherwise.
IOException - if one of the Handlers throws an
		IOException while responding.| 
 | Version 2.1, Generated 12/30/04 Copyright (c) 2001-2004, Sun Microsystems. | ||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||