View Javadoc

1   package org.astrogrid.portal.acting;
2   
3   import java.util.HashMap;
4   import java.util.Map;
5   import java.util.StringTokenizer;
6   
7   import org.apache.avalon.framework.parameters.Parameters;
8   import org.apache.cocoon.acting.AbstractAction;
9   import org.apache.cocoon.environment.ObjectModelHelper;
10  import org.apache.cocoon.environment.Redirector;
11  import org.apache.cocoon.environment.Request;
12  import org.apache.cocoon.environment.Session;
13  import org.apache.cocoon.environment.SourceResolver;
14  import org.astrogrid.portal.utils.acting.ActionUtils;
15  import org.astrogrid.portal.utils.acting.ActionUtilsFactory;
16  
17  /***
18   * Given a list of parameter names, return the values to the sitemap from either in priority order:
19   *   <ul>
20   *     <li>request</li>
21   *     <li>session</li>
22   *     <li>sitemap</li>
23   *   </ul>
24   * If any of the parameters does not exist, action fails.
25   * <p/>
26   * SiteMap parameters:
27   *   <ol>
28   *     <dt>parameter-names</dt>
29   *     <dd>space-separated list of parameter names to return</dd>
30   *   </ol>
31   */
32  public class ReturnAnyParameterAction extends AbstractAction {
33  
34    public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String source, Parameters params)
35        throws Exception {
36      Map sitemapParams = new HashMap();
37      
38      ActionUtils utils = ActionUtilsFactory.getActionUtils();
39      Request request = ObjectModelHelper.getRequest(objectModel);
40      Session session = request.getSession(true);
41      
42      String parameterNames = params.getParameter("parameter-names", "");
43      if(parameterNames != null && parameterNames.length() > 0) {
44        String parameterName = null;
45        String parameterValue = null;
46        StringTokenizer tokens = new StringTokenizer(parameterNames);
47        while(tokens.hasMoreTokens()) {
48          parameterName = tokens.nextToken();
49          parameterValue = utils.getAnyParameter(parameterName, params, request, session);
50          
51          if(parameterValue != null && parameterValue.length() > 0) {
52            sitemapParams.put(parameterName, parameterValue); 
53          }
54          else {
55            return null;
56          }
57        }
58      }
59      else {
60        return null;
61      }
62      
63      return sitemapParams;
64    }
65  
66  }