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)
// --------------------------------------------------------- Public Methods
// See superclass for Javadoc
// Extract attributes we will need
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);
}
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"));
|