2 * Copyright (C) 2010 Mathieu Baudier <mbaudier@argeo.org>
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package org
.argeo
.slc
.web
.mvc
;
19 import java
.util
.Iterator
;
22 import javax
.servlet
.http
.HttpServletRequest
;
23 import javax
.servlet
.http
.HttpServletResponse
;
24 import javax
.xml
.transform
.stream
.StreamResult
;
26 import org
.apache
.commons
.logging
.Log
;
27 import org
.apache
.commons
.logging
.LogFactory
;
28 import org
.argeo
.slc
.SlcException
;
29 import org
.springframework
.oxm
.Marshaller
;
30 import org
.springframework
.web
.servlet
.view
.AbstractView
;
32 /** Marshal one of the object of the map to the output. */
33 public class MarshallerView
extends AbstractView
{
35 private final static Log log
= LogFactory
36 .getLog(MarshallerView
.class);
39 private String modelKey
= null;
40 private final Marshaller marshaller
;
42 public MarshallerView(Marshaller marshaller
) {
43 this.marshaller
= marshaller
;
46 public MarshallerView(Marshaller marshaller
, String modelKey
) {
48 this.modelKey
= modelKey
;
52 @SuppressWarnings(value
={"unchecked"})
53 protected void renderMergedOutputModel(Map model
,
54 HttpServletRequest request
, HttpServletResponse response
)
58 if (log
.isDebugEnabled()){
59 //log.debug("In MarshallerView :: renderMergedOutputModel");
60 if (modelKey
!= null )
61 log
.debug("Model key : ["+modelKey
+"]");
62 else log
.debug("ModelKey is null");
65 //TODO : remove this loop
66 if (log
.isDebugEnabled()){
67 Iterator it
= model
.keySet().iterator();
70 log
.debug(i
++ + " [" + it
.next().toString()+ "]");
73 if (modelKey
!= null) {
74 if (!model
.containsKey(modelKey
)){
75 /** //TODO : remove this loop
76 if (log.isDebugEnabled()){
77 log.debug("Key not found in Model. Available keys are : ");
78 for (Object key : model.keySet()){
79 log.debug(key.toString());
83 throw new SlcException("Key " + modelKey
84 + " not found in model.");
86 answer
= model
.get(modelKey
);
88 if (model
.size() != 1)
89 throw new SlcException(
90 "Model has a size different from 1. Specify a modelKey.");
91 answer
= model
.values().iterator().next();
94 StreamResult streamResult
= new StreamResult(response
.getOutputStream());
95 marshaller
.marshal(answer
, streamResult
);
98 public void setModelKey(String modelKey
) {
99 this.modelKey
= modelKey
;