/* */ package org.oddjob.webapp.struts.actions; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.log4j.Logger; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.oddjob.state.StateEvent; import org.oddjob.webapp.WebappConstants; import org.oddjob.webapp.model.JobInfoLookup; import org.oddjob.webapp.struts.forms.DetailForm; /** * The Struts Action which handles the state tab. * * @author Rob Gordon. */ public class StateTabAction extends Action { private static final Logger logger = Logger.getLogger(StateTabAction.class); /* * (non-Javadoc) * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */ public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { DetailForm detailForm = (DetailForm) form; logger.debug("Retrieving state for [" + detailForm.getRefId() + "]" ); ServletContext context = request.getSession().getServletContext(); JobInfoLookup lookup = (JobInfoLookup) context.getAttribute(WebappConstants.DETAIL_LOOKUP); StateEvent jobStateEvent = lookup.stateFor(detailForm.getRefId()); String state; String time; Throwable t; if (jobStateEvent == null) { state = "Not Stateful"; time = " - - - - -"; t = null; } else { state = jobStateEvent.getState().toString(); time = jobStateEvent.getTime().toString(); t = jobStateEvent.getException(); } detailForm.setJobState(state); detailForm.setTime(time); if (t == null) { detailForm.setException(""); } else { // TODO: full stack trace. detailForm.setException(t.getMessage()); } /* forward to the tab state jsp */ return (mapping.getInputForward()); } }