-package org.argeo.slc.web.mvc;
-
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.springframework.web.servlet.view.AbstractView;
-
-/** Marshal one of the object of the map to the output. */
-public class JsonView extends AbstractView {
- private String modelKey = null;
-
- public JsonView() {
- }
-
- @Override
- @SuppressWarnings(value = { "unchecked" })
- protected void renderMergedOutputModel(Map model,
- HttpServletRequest request, HttpServletResponse response)
- throws Exception {
- final Object answer;
- if (modelKey != null) {
- if (!model.containsKey(modelKey))
- throw new SlcException("Key " + modelKey
- + " not found in model.");
- answer = model.get(modelKey);
- } else {
- if (model.size() != 1)
- throw new SlcException(
- "Model has a size different from 1. Specify a modelKey.");
- answer = model.values().iterator().next();
- }
-
- if (answer instanceof JSONObject) {
- ((JSONObject) answer).write(response.getWriter());
- } else {
- JSONObject jsonObject = new JSONObject(answer);
- jsonObject.write(response.getWriter());
- }
- }
-
- public void setModelKey(String modelKey) {
- this.modelKey = modelKey;
- }
-
-}