]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/JsonView.java
Introduction of annotation to handle MVC flows // Class cleaning
[gpl/argeo-slc.git] / runtime / org.argeo.slc.server / src / main / java / org / argeo / slc / web / mvc / JsonView.java
1 package org.argeo.slc.web.mvc;
2
3 import java.util.Map;
4
5 import javax.servlet.http.HttpServletRequest;
6 import javax.servlet.http.HttpServletResponse;
7
8 import org.argeo.slc.SlcException;
9 import org.springframework.web.servlet.view.AbstractView;
10
11 import com.springsource.json.writer.JSONObject;
12
13 /** Marshal one of the object of the map to the output. */
14 public class JsonView extends AbstractView {
15 private String modelKey = null;
16
17 public JsonView() {
18 }
19
20 @Override
21 @SuppressWarnings(value = { "unchecked" })
22 protected void renderMergedOutputModel(Map model,
23 HttpServletRequest request, HttpServletResponse response)
24 throws Exception {
25 final Object answer;
26 if (modelKey != null) {
27 if (!model.containsKey(modelKey))
28 throw new SlcException("Key " + modelKey
29 + " not found in model.");
30 answer = model.get(modelKey);
31 } else {
32 if (model.size() != 1)
33 throw new SlcException(
34 "Model has a size different from 1. Specify a modelKey.");
35 answer = model.values().iterator().next();
36 }
37
38 if (answer instanceof JSONObject) {
39 ((JSONObject) answer).write(response.getWriter());
40 } else {
41 JSONObject jsonObject = new JSONObject(answer);
42 jsonObject.write(response.getWriter());
43 }
44 }
45
46 public void setModelKey(String modelKey) {
47 this.modelKey = modelKey;
48 }
49
50 }