]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/XsltMarshallerView.java
NEW - bug 105: Pass parameters to XsltReportGenerator
[gpl/argeo-slc.git] / runtime / org.argeo.slc.server / src / main / java / org / argeo / slc / web / mvc / XsltMarshallerView.java
1 package org.argeo.slc.web.mvc;
2
3 import javax.xml.parsers.DocumentBuilderFactory;
4 import javax.xml.transform.Source;
5 import javax.xml.transform.dom.DOMResult;
6 import javax.xml.transform.dom.DOMSource;
7
8 import org.argeo.slc.SlcException;
9 import org.argeo.slc.core.test.tree.TreeTestResult;
10 import org.argeo.slc.core.test.tree.TreeTestResultCollection;
11 import org.argeo.slc.process.SlcExecution;
12 import org.springframework.oxm.Marshaller;
13 import org.springframework.web.servlet.view.xslt.XsltView;
14 import org.w3c.dom.Document;
15
16 public class XsltMarshallerView extends XsltView {
17
18 private Marshaller marshaller;
19
20 @Override
21 protected Class<?>[] getSourceTypes() {
22 return new Class[] { TreeTestResult.class,
23 TreeTestResultCollection.class, SlcExecution.class };
24 }
25
26 @Override
27 protected Source convertSource(Object source) throws Exception {
28 Document document = DocumentBuilderFactory.newInstance()
29 .newDocumentBuilder().newDocument();
30 DOMResult result = new DOMResult(document);
31 if (!marshaller.supports(source.getClass()))
32 throw new SlcException("Object of type " + source.getClass()
33 + " not supported.");
34 marshaller.marshal(source, result);
35 return new DOMSource(result.getNode());
36 }
37
38 public void setMarshaller(Marshaller marshaller) {
39 this.marshaller = marshaller;
40 }
41
42 }