1
2
3
4
5
6
7
8
9
10
11 package org.kuali.rice.krad.web.bind;
12
13 import org.apache.log4j.Logger;
14 import org.kuali.rice.krad.UserSession;
15 import org.kuali.rice.krad.service.KRADServiceLocatorWeb;
16 import org.kuali.rice.krad.service.SessionDocumentService;
17 import org.kuali.rice.krad.uif.view.History;
18 import org.kuali.rice.krad.uif.view.HistoryEntry;
19 import org.kuali.rice.krad.uif.service.ViewService;
20 import org.kuali.rice.krad.uif.util.UifWebUtils;
21 import org.kuali.rice.krad.util.KRADConstants;
22 import org.kuali.rice.krad.util.KRADUtils;
23 import org.kuali.rice.krad.web.form.DocumentFormBase;
24 import org.kuali.rice.krad.web.form.IncidentReportForm;
25 import org.kuali.rice.krad.web.form.UifFormBase;
26 import org.springframework.web.servlet.ModelAndView;
27
28 import javax.servlet.http.HttpServletRequest;
29 import javax.servlet.http.HttpServletResponse;
30
31
32
33
34
35
36
37
38
39
40
41
42 public class UifHandlerExceptionResolver implements org.springframework.web.servlet.HandlerExceptionResolver {
43
44 private static final Logger LOG = Logger.getLogger(UifHandlerExceptionResolver.class);
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 @Override
64 public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
65 Exception ex) {
66 LOG.error("The following error was caught by the UifHandlerExceptionResolver : ", ex);
67 String incidentDocId = request.getParameter(KRADConstants.DOCUMENT_DOCUMENT_NUMBER);
68 String incidentViewId = "";
69
70
71 LOG.error(ex.getMessage(), ex);
72
73 UifFormBase form = UifWebUtils.getFormFromRequest(request);
74 if (form instanceof DocumentFormBase) {
75 incidentDocId = ((DocumentFormBase) form).getDocument().getDocumentNumber();
76 incidentViewId = ((DocumentFormBase) form).getViewId();
77 }
78
79 UserSession userSession = (UserSession) request.getSession().getAttribute(KRADConstants.USER_SESSION_KEY);
80 IncidentReportForm incidentReportForm = new IncidentReportForm();
81
82
83 String postUrl = request.getRequestURL().toString();
84 postUrl = postUrl.substring(0, postUrl.lastIndexOf("/")) + "/incidentReport";
85 incidentReportForm.setFormPostUrl(postUrl);
86 incidentReportForm.setException(ex);
87 incidentReportForm.setIncidentDocId(incidentDocId);
88 incidentReportForm.setIncidentViewId(incidentViewId);
89 incidentReportForm.setController(handler.getClass().toString());
90 incidentReportForm.setUserId(userSession.getPrincipalId());
91 incidentReportForm.setUserName(userSession.getPrincipalName());
92 incidentReportForm.setUserEmail(userSession.getPerson().getEmailAddress());
93 incidentReportForm.setDevMode(!KRADUtils.isProductionEnvironment());
94
95
96 incidentReportForm.setView(getViewService().getView("Incident-Report",
97 incidentReportForm.getViewRequestParameters()));
98
99
100 History history = new History();
101 HistoryEntry entry = new HistoryEntry("", "", "Incident Report", "", "");
102 history.setCurrent(entry);
103 incidentReportForm.setFormHistory(history);
104
105
106 incidentReportForm.setRenderFullView(true);
107
108 ModelAndView modelAndView = UifWebUtils.getUIFModelAndView(incidentReportForm, "Incident-Report", "");
109 try {
110 UifWebUtils.postControllerHandle(request, response, handler, modelAndView);
111 } catch (Exception e) {
112 LOG.error("An error stopped the incident form from loading", e);
113 }
114
115 return modelAndView;
116 }
117
118 protected ViewService getViewService() {
119 return KRADServiceLocatorWeb.getViewService();
120 }
121
122 protected SessionDocumentService getSessionDocumentService() {
123 return KRADServiceLocatorWeb.getSessionDocumentService();
124 }
125
126 }