From fc9a16d70ff54e06581e19be7073e24ec4561fbb Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Mon, 5 May 2008 15:05:04 +0000 Subject: [PATCH] Introduce XSLT view git-svn-id: https://svn.argeo.org/slc/trunk@1128 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../argeo/slc/web/mvc/XsltMarshallerView.java | 40 +++++++++++++++++++ .../web/mvc/XsltMarshallerViewResolver.java | 24 +++++++++++ 2 files changed, 64 insertions(+) create mode 100644 org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/XsltMarshallerView.java create mode 100644 org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/XsltMarshallerViewResolver.java 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 index 000000000..ce14848d0 --- /dev/null +++ b/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/XsltMarshallerView.java @@ -0,0 +1,40 @@ +package org.argeo.slc.web.mvc; + +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.transform.Source; +import javax.xml.transform.dom.DOMResult; +import javax.xml.transform.dom.DOMSource; + +import org.springframework.oxm.Marshaller; +import org.springframework.web.servlet.view.xslt.XsltView; +import org.w3c.dom.Document; + +import org.argeo.slc.core.test.tree.TreeTestResult; + +public class XsltMarshallerView extends XsltView { + + private Marshaller marshaller; + + + + @Override + protected Class[] getSourceTypes() { + return new Class[]{TreeTestResult.class}; + } + + @Override + protected Source convertSource(Object source) throws Exception { + Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); + DOMResult result = new DOMResult(document); + marshaller.marshal(source, result); + return new DOMSource(result.getNode()); + } + + + + public void setMarshaller(Marshaller marshaller) { + this.marshaller = marshaller; + } + + +} 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 index 000000000..831a517ab --- /dev/null +++ b/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/XsltMarshallerViewResolver.java @@ -0,0 +1,24 @@ +package org.argeo.slc.web.mvc; + +import org.springframework.oxm.Marshaller; +import org.springframework.web.servlet.view.AbstractUrlBasedView; +import org.springframework.web.servlet.view.xslt.XsltViewResolver; + +public class XsltMarshallerViewResolver extends XsltViewResolver { + + private Marshaller marshaller; + + @Override + protected AbstractUrlBasedView buildView(String viewName) throws Exception { + AbstractUrlBasedView viewT = super.buildView(viewName); + XsltMarshallerView view = (XsltMarshallerView) viewT; + view.setMarshaller(marshaller); + return view; + } + + public void setMarshaller(Marshaller marshaller) { + this.marshaller = marshaller; + } + + +} -- 2.39.2