Introduce XSLT view
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 5 May 2008 15:05:04 +0000 (15:05 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 5 May 2008 15:05:04 +0000 (15:05 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@1128 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/XsltMarshallerView.java [new file with mode: 0644]
org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/XsltMarshallerViewResolver.java [new file with mode: 0644]

diff --git a/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/XsltMarshallerView.java b/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/XsltMarshallerView.java
new file mode 100644 (file)
index 0000000..ce14848
--- /dev/null
@@ -0,0 +1,40 @@
+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
diff --git a/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/XsltMarshallerViewResolver.java b/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/XsltMarshallerViewResolver.java
new file mode 100644 (file)
index 0000000..831a517
--- /dev/null
@@ -0,0 +1,24 @@
+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