FileDocCategorySizeDatePackage
EditRegistrationAction.javaAPI DocExample7894Sun Mar 07 19:48:42 GMT 2004org.apache.struts.webapp.example

EditRegistrationAction

public final class EditRegistrationAction extends org.apache.struts.action.Action
Implementation of Action that populates an instance of RegistrationForm from the profile of the currently logged on User (if any).
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";
        if (log.isDebugEnabled()) {
            log.debug("EditRegistrationAction:  Processing " + action +
                        " action");
        }

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

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

        // Set a transactional control token to prevent double posting
        if (log.isTraceEnabled()) {
            log.trace(" Setting transactional control token");
        }
        saveToken(request);

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