public org.apache.struts.action.ActionForward | execute(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.
// --------------------------------------------------------- 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"));
|