1 package org
.argeo
.slc
.web
.mvc
;
5 import javax
.servlet
.http
.HttpServletRequest
;
6 import javax
.servlet
.http
.HttpServletResponse
;
7 import javax
.xml
.transform
.stream
.StreamResult
;
9 import org
.argeo
.slc
.SlcException
;
10 import org
.springframework
.oxm
.Marshaller
;
11 import org
.springframework
.web
.servlet
.view
.AbstractView
;
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
;
18 public MarshallerView(Marshaller marshaller
) {
19 this.marshaller
= marshaller
;
22 public MarshallerView(Marshaller marshaller
, String modelKey
) {
24 this.modelKey
= modelKey
;
28 @SuppressWarnings(value
={"unchecked"})
29 protected void renderMergedOutputModel(Map model
,
30 HttpServletRequest request
, HttpServletResponse response
)
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
);
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();
45 StreamResult streamResult
= new StreamResult(response
.getOutputStream());
46 marshaller
.marshal(answer
, streamResult
);
49 public void setModelKey(String modelKey
) {
50 this.modelKey
= modelKey
;