View Javadoc

1   package com.sri.common.controller;
2   
3   import com.jcorporate.expresso.core.controller.Controller;
4   import com.jcorporate.expresso.core.controller.Transition;
5   
6   import java.util.Iterator;
7   import java.util.Map;
8   
9   /***
10   * Utility and convenience methods that are related to controllers.
11   *
12   * @author Michael Rimov
13   * @version 1.0
14   */
15  final public class ControllerUtil {
16  
17      /***
18       * Default constructor -- never call.
19       */
20      private ControllerUtil() {
21  
22      }
23  
24  
25      /***
26       * Generate a Transition that if invoked would result in a redirection directly
27       * back to self with identical parameters as when a transition was first invoked.
28       * This function is useful for generating 'returnToSender' referral URLs
29       *
30       * @param requestParameters      Call <tt>ControllerRequest.getParameters()</tt> to
31       *                               populate thie method.
32       * @param currentControllerClass The current controller class we're in. this.getClass()
33       *                               should mostly suffice
34       * @param invokedState           The currently invoked State  ControllerResponse.getState() should do
35       *                               the trick.
36       * @return Transition that is populated.  Must call setControllerResponse() if
37       *         <p/>
38       *         you just want to extract the URL.
39       */
40      public static Transition generateReflextiveTransition(final Map requestParameters,
41                                                            final Class currentControllerClass,
42                                                            final String invokedState) {
43          Transition returnTrans = new Transition();
44  
45          for (Iterator i = requestParameters.keySet().iterator(); i.hasNext();) {
46              String paramKey = (String) i.next();
47              if (!Controller.STATE_PARAM_KEY.equals(paramKey) && !Controller.CONTROLLER_PARAM_KEY.equals(paramKey)) {
48                  returnTrans.addParam(paramKey, (String) requestParameters.get(paramKey));
49              }
50          }
51          returnTrans.setState(invokedState);
52          returnTrans.setControllerObject(currentControllerClass);
53  
54          return returnTrans;
55      }
56  }