]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/MarshallerView.java
Remove service, fake getRealizedFlow service
[gpl/argeo-slc.git] / runtime / org.argeo.slc.server / src / main / java / org / argeo / slc / web / mvc / MarshallerView.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 import javax.xml.transform.stream.StreamResult;
8
9 import org.argeo.slc.SlcException;
10 import org.springframework.oxm.Marshaller;
11 import org.springframework.web.servlet.view.AbstractView;
12
13 /** Marshal one of the object of the map to the output. */
14 public class MarshallerView extends AbstractView {
15 private String modelKey = null;
16 private final Marshaller marshaller;
17
18 public MarshallerView(Marshaller marshaller) {
19 this.marshaller = marshaller;
20 }
21
22 public MarshallerView(Marshaller marshaller, String modelKey) {
23 this(marshaller);
24 this.modelKey = modelKey;
25 }
26
27 @Override
28 @SuppressWarnings(value={"unchecked"})
29 protected void renderMergedOutputModel(Map model,
30 HttpServletRequest request, HttpServletResponse response)
31 throws Exception {
32 final Object answer;
33 if (modelKey != null) {
34 if (!model.containsKey(modelKey))
35 throw new SlcException("Key " + modelKey
36 + " not found in model.");
37 answer = model.get(modelKey);
38 } else {
39 if (model.size() != 1)
40 throw new SlcException(
41 "Model has a size different from 1. Specify a modelKey.");
42 answer = model.values().iterator().next();
43 }
44
45 StreamResult streamResult = new StreamResult(response.getOutputStream());
46 marshaller.marshal(answer, streamResult);
47 }
48
49 public void setModelKey(String modelKey) {
50 this.modelKey = modelKey;
51 }
52
53 }