--- /dev/null
+package org.argeo.slc.web.mvc;\r
+\r
+import javax.xml.parsers.DocumentBuilderFactory;\r
+import javax.xml.transform.Source;\r
+import javax.xml.transform.dom.DOMResult;\r
+import javax.xml.transform.dom.DOMSource;\r
+\r
+import org.springframework.oxm.Marshaller;\r
+import org.springframework.web.servlet.view.xslt.XsltView;\r
+import org.w3c.dom.Document;\r
+\r
+import org.argeo.slc.core.test.tree.TreeTestResult;\r
+\r
+public class XsltMarshallerView extends XsltView {\r
+\r
+ private Marshaller marshaller;\r
+ \r
+ \r
+\r
+ @Override\r
+ protected Class<?>[] getSourceTypes() {\r
+ return new Class[]{TreeTestResult.class};\r
+ }\r
+\r
+ @Override\r
+ protected Source convertSource(Object source) throws Exception {\r
+ Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();\r
+ DOMResult result = new DOMResult(document);\r
+ marshaller.marshal(source, result);\r
+ return new DOMSource(result.getNode());\r
+ }\r
+\r
+\r
+\r
+ public void setMarshaller(Marshaller marshaller) {\r
+ this.marshaller = marshaller;\r
+ }\r
+\r
+ \r
+}\r
--- /dev/null
+package org.argeo.slc.web.mvc;\r
+\r
+import org.springframework.oxm.Marshaller;\r
+import org.springframework.web.servlet.view.AbstractUrlBasedView;\r
+import org.springframework.web.servlet.view.xslt.XsltViewResolver;\r
+\r
+public class XsltMarshallerViewResolver extends XsltViewResolver {\r
+\r
+ private Marshaller marshaller;\r
+ \r
+ @Override\r
+ protected AbstractUrlBasedView buildView(String viewName) throws Exception {\r
+ AbstractUrlBasedView viewT = super.buildView(viewName);\r
+ XsltMarshallerView view = (XsltMarshallerView) viewT;\r
+ view.setMarshaller(marshaller);\r
+ return view;\r
+ }\r
+\r
+ public void setMarshaller(Marshaller marshaller) {\r
+ this.marshaller = marshaller;\r
+ }\r
+\r
+ \r
+}\r