]> git.argeo.org Git - gpl/argeo-slc.git/blob - legacy/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/JsonView.java
Restructure SLC
[gpl/argeo-slc.git] / legacy / runtime / org.argeo.slc.server / src / main / java / org / argeo / slc / web / mvc / JsonView.java
1 /*
2 * Copyright (C) 2007-2012 Mathieu Baudier
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package org.argeo.slc.web.mvc;
17
18 import java.util.Map;
19
20 import javax.servlet.http.HttpServletRequest;
21 import javax.servlet.http.HttpServletResponse;
22
23 import org.argeo.slc.SlcException;
24 import org.springframework.web.servlet.view.AbstractView;
25
26 import com.springsource.json.writer.JSONObject;
27
28 /** Marshal one of the object of the map to the output. */
29 public class JsonView extends AbstractView {
30 private String modelKey = null;
31
32 public JsonView() {
33 }
34
35 @Override
36 @SuppressWarnings(value = { "unchecked" })
37 protected void renderMergedOutputModel(Map model,
38 HttpServletRequest request, HttpServletResponse response)
39 throws Exception {
40 final Object answer;
41 if (modelKey != null) {
42 if (!model.containsKey(modelKey))
43 throw new SlcException("Key " + modelKey
44 + " not found in model.");
45 answer = model.get(modelKey);
46 } else {
47 if (model.size() != 1)
48 throw new SlcException(
49 "Model has a size different from 1. Specify a modelKey.");
50 answer = model.values().iterator().next();
51 }
52
53 if (answer instanceof JSONObject) {
54 ((JSONObject) answer).write(response.getWriter());
55 } else {
56 JSONObject jsonObject = new JSONObject(answer);
57 jsonObject.write(response.getWriter());
58 }
59 }
60
61 public void setModelKey(String modelKey) {
62 this.modelKey = modelKey;
63 }
64
65 }