Package org.g4studio.core.mvc.xstruts.actions

Source Code of org.g4studio.core.mvc.xstruts.actions.SwitchAction

package org.g4studio.core.mvc.xstruts.actions;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.g4studio.core.mvc.xstruts.Globals;
import org.g4studio.core.mvc.xstruts.action.ActionForm;
import org.g4studio.core.mvc.xstruts.action.ActionForward;
import org.g4studio.core.mvc.xstruts.action.ActionMapping;
import org.g4studio.core.mvc.xstruts.util.ModuleUtils;

/**
* <p>
* A standard <strong>Action</strong> that switches to a new module and then
* forwards control to a URI (specified in a number of possible ways) within the
* new module.
* </p>
*
* <p>
* Valid request parameters for this Action are:
* </p>
*
* <ul>
*
* <li><strong>page</strong> - Module-relative URI (beginning with "/") to which
* control should be forwarded after switching.</li>
*
* <li><strong>prefix</strong> - The module prefix (beginning with "/") of the
* module to which control should be switched. Use a zero-length string for the
* default module. The appropriate <code>ModuleConfig</code> object will be
* stored as a request attribute, so any subsequent logic will assume the new
* module.</li>
*
* </ul>
*
* @version $Rev: 376812 $ $Date: 2005-05-14 21:27:02 -0400 (Sat, 14 May 2005) $
* @since Struts 1.1
*/
public class SwitchAction extends BaseAction {
  // ----------------------------------------------------- Instance Variables

  /**
   * Commons Logging instance.
   */
  protected static Log log = LogFactory.getLog(SwitchAction.class);

  /**
   * Process the specified HTTP request, and create the corresponding HTTP
   * response (or forward to another web component that will create it).
   * Return an <code>ActionForward</code> instance describing where and how
   * control should be forwarded, or <code>null</code> if the response has
   * already been completed.
   *
   * @param mapping
   *            The ActionMapping used to select this instance
   * @param form
   *            The optional ActionForm bean for this request (if any)
   * @param request
   *            The HTTP request we are processing
   * @param response
   *            The HTTP response we are creating
   * @return Return an <code>ActionForward</code> instance describing where
   *         and how control should be forwarded, or <code>null</code> if the
   *         response has already been completed.
   * @throws Exception
   *             if an exception occurs
   */
  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
      HttpServletResponse response) throws Exception {
    // Identify the request parameters controlling our actions
    String page = request.getParameter("page");
    String prefix = request.getParameter("prefix");

    if ((page == null) || (prefix == null)) {
      String message = messages.getMessage("switch.required");

      log.error(message);
      throw new ServletException(message);
    }

    // Switch to the requested module
    ModuleUtils.getInstance().selectModule(prefix, request, getServlet().getServletContext());

    if (request.getAttribute(Globals.MODULE_KEY) == null) {
      String message = messages.getMessage("switch.prefix", prefix);

      log.error(message);
      throw new ServletException(message);
    }

    // Forward control to the specified module-relative URI
    return (new ActionForward(page));
  }
}
TOP

Related Classes of org.g4studio.core.mvc.xstruts.actions.SwitchAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.