1 package org
.argeo
.slc
.web
.mvc
;
3 import java
.io
.PrintWriter
;
4 import java
.io
.StringWriter
;
6 import javax
.servlet
.http
.HttpServletRequest
;
7 import javax
.servlet
.http
.HttpServletResponse
;
9 import org
.argeo
.slc
.msg
.ExecutionAnswer
;
10 import org
.springframework
.web
.servlet
.ModelAndView
;
11 import org
.springframework
.web
.servlet
.mvc
.AbstractController
;
13 public abstract class AbstractServiceController
extends AbstractController
{
14 public final static String KEY_ANSWER
= "__answer";
16 private String viewName
= null;
19 protected final ModelAndView
handleRequestInternal(
20 HttpServletRequest request
, HttpServletResponse response
)
22 ModelAndView mv
= new ModelAndView();
23 mv
.setViewName(getViewName());
25 handleServiceRequest(request
, response
, mv
);
26 } catch (Exception e
) {
27 StringWriter writer
= new StringWriter();
28 e
.printStackTrace(new PrintWriter(writer
));
29 ExecutionAnswer answer
= ExecutionAnswer
.error(writer
.toString());
30 ModelAndView errorMv
= new ModelAndView();
31 errorMv
.addObject(KEY_ANSWER
, answer
);
32 errorMv
.setViewName(KEY_ANSWER
);
36 if (mv
.getModel().size() == 0) {
37 mv
.addObject(KEY_ANSWER
, ExecutionAnswer
38 .ok("Execution completed properly"));
41 if (mv
.getViewName() == null && mv
.getModel().size() == 1)
42 mv
.setViewName(mv
.getModel().keySet().iterator().next().toString());
47 protected abstract void handleServiceRequest(HttpServletRequest request
,
48 HttpServletResponse response
, ModelAndView modelAndView
)
51 public void setViewName(String viewName
) {
52 this.viewName
= viewName
;
55 public String
getViewName() {