FileDocCategorySizeDatePackage
EditSubscriptionAction.javaAPI DocExample8574Sun Mar 21 19:30:32 GMT 2004org.apache.struts.webapp.example

EditSubscriptionAction

public final class EditSubscriptionAction extends org.apache.struts.action.Action
Implementation of Action that populates an instance of SubscriptionForm from the currently specified subscription.
struts.action
path="/editSubscription" type="org.apache.struts.webapp.example.EditSubscriptionAction" attribute="subscriptionForm" scope="request" validate="false"
struts.action-forward
name="failure" path="/mainMenu.jsp"
struts.action-forward
name="success" path="/subscription.jsp"
author
Craig R. McClanahan
version
$Revision: 1.10 $ $Date: 2003/01/11 03:08:23 $

Fields Summary
private Log
log
The Log instance for this application.
Constructors Summary
Methods Summary
public org.apache.struts.action.ActionForwardexecute(org.apache.struts.action.ActionMapping mapping, org.apache.struts.action.ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
Process the specified HTTP request, and create the corresponding HTTP response (or forward to another web component that will create it). Return an ActionForward instance describing where and how control should be forwarded, or null if the response has already been completed.

param
mapping The ActionMapping used to select this instance
param
actionForm 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
exception
Exception if the application business logic throws an exception



    // --------------------------------------------------------- Public Methods


                                                                                                  
       
				  
				  
				  
	  

	// Extract attributes we will need
	Locale locale = getLocale(request);
	MessageResources messages = getResources(request);
	HttpSession session = request.getSession();
	String action = request.getParameter("action");
	if (action == null) {
	    action = "Create";
        }
	String host = request.getParameter("host");
        if (log.isDebugEnabled()) {
            log.debug("EditSubscriptionAction:  Processing " + action +
                      " action");
        }

	// Is there a currently logged on user?
	User user = (User) session.getAttribute(Constants.USER_KEY);
	if (user == null) {
            if (log.isTraceEnabled()) {
                log.trace(" User is not logged on in session "
                          + session.getId());
            }
	    return (mapping.findForward("logon"));
	}

	// Identify the relevant subscription
	Subscription subscription =
            user.findSubscription(request.getParameter("host"));
	if ((subscription == null) && !action.equals("Create")) {
            if (log.isTraceEnabled()) {
                log.trace(" No subscription for user " +
                          user.getUsername() + " and host " + host);
            }
	    return (mapping.findForward("failure"));
	}
        if (subscription != null) {
            session.setAttribute(Constants.SUBSCRIPTION_KEY, subscription);
        }

	// Populate the subscription form
	if (form == null) {
            if (log.isTraceEnabled()) {
                log.trace(" Creating new SubscriptionForm bean under key "
                          + mapping.getAttribute());
            }
	    form = new SubscriptionForm();
            if ("request".equals(mapping.getScope())) {
                request.setAttribute(mapping.getAttribute(), form);
            } else {
                session.setAttribute(mapping.getAttribute(), form);
            }
	}
	SubscriptionForm subform = (SubscriptionForm) form;
	subform.setAction(action);
        if (!action.equals("Create")) {
            if (log.isTraceEnabled()) {
                log.trace(" Populating form from " + subscription);
            }
            try {
                PropertyUtils.copyProperties(subform, subscription);
                subform.setAction(action);
            } catch (InvocationTargetException e) {
                Throwable t = e.getTargetException();
                if (t == null)
                    t = e;
                log.error("SubscriptionForm.populate", t);
                throw new ServletException("SubscriptionForm.populate", t);
            } catch (Throwable t) {
                log.error("SubscriptionForm.populate", t);
                throw new ServletException("SubscriptionForm.populate", t);
            }
        }

	// Forward control to the edit subscription page
        if (log.isTraceEnabled()) {
            log.trace(" Forwarding to 'success' page");
        }
	return (mapping.findForward("success"));