View Javadoc

1   package com.sri.common.controller;
2   
3   import com.jcorporate.expresso.core.controller.ControllerException;
4   import com.jcorporate.expresso.core.controller.ExpressoRequest;
5   import com.jcorporate.expresso.core.controller.ExpressoResponse;
6   import com.jcorporate.expresso.core.db.DBException;
7   
8   /***
9    * This interface is an alternative for external state classes produced
10   * inside expresso. In the case of a state handler, all that happens is that
11   * this class is allocated and called within the function call to the state.
12   * It allows delegation to keep Expresso controllers from becoming behemoths,
13   * assists in grouping behavior together and is a step towards taming the
14   * wild 'all-in-one' class behavior that has become common in Expresso
15   * controllers.
16   *
17   * @author Michael Rimov
18   */
19  public interface StateHandler {
20  
21      /***
22       * Called to handle the request. Here's an example of the usage within
23       * an Expresso <code>Controller</code> state handler.  It is assumed
24       * that the class <code>MyHandler</code> implements the StateHandler
25       * interface.
26       * <p/>
27       * <code><pre>
28       * protected void runMyState(final ControllerRequest request,
29       *        final ControllerResponse response) throws ControllerException, DBException {
30       * <p/>
31       *     MyHander handler = new MyHandler();
32       *     handler.handleRequest(request,response);
33       * }
34       * </pre></code>
35       * </p>
36       *
37       * @param request  ControllerRequest The Function's ControllerRequest object.
38       * @param response ControllerResponse The Function's ControllerResponse object.
39       * @throws DBException            upon underlying database exception error.
40       * @throws ControllerException    upon underlying ControllerException error.
41       * @throws NonHandleableException if the state attempts a transition that
42       *                                throws a NonHandleableException
43       */
44      void handleRequest(ExpressoRequest request, ExpressoResponse response) throws DBException, ControllerException;
45  
46  
47  }