From 805f03392d3e1a561257614db979f0c2c82c1328 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Sat, 22 Nov 2008 13:46:19 +0000 Subject: [PATCH] Move org.argeo.slc.server git-svn-id: https://svn.argeo.org/slc/trunk@1853 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- runtime/org.argeo.slc.server/.classpath | 10 ++ runtime/org.argeo.slc.server/.project | 23 +++ .../.settings/org.eclipse.jdt.core.prefs | 12 ++ runtime/org.argeo.slc.server/pom.xml | 125 ++++++++++++++ .../slc/services/test/TestManagerService.java | 12 ++ .../test/impl/TestManagerServiceImpl.java | 74 +++++++++ .../argeo/slc/web/mvc/XsltMarshallerView.java | 42 +++++ .../web/mvc/XsltMarshallerViewResolver.java | 85 ++++++++++ .../slc/web/mvc/admin/HomeController.java | 16 ++ .../process/SlcExecutionListController.java | 37 +++++ .../process/SlcExecutionViewController.java | 57 +++++++ .../AddResultToCollectionController.java | 31 ++++ .../RemoveResultFromCollectionController.java | 32 ++++ .../ResultCollectionListController.java | 34 ++++ .../ResultCollectionViewController.java | 34 ++++ .../slc/web/mvc/result/ResultExcelView.java | 51 ++++++ .../slc/web/mvc/result/ResultInterceptor.java | 27 +++ .../web/mvc/result/ResultListController.java | 34 ++++ .../slc/web/mvc/result/ResultPdfView.java | 59 +++++++ .../web/mvc/result/ResultViewController.java | 114 +++++++++++++ .../web/mvc/result/TestRunViewController.java | 33 ++++ .../slc/ws/CustomSoapExceptionResolver.java | 28 ++++ .../slc/ws/process/SlcExecutionRequestEp.java | 69 ++++++++ .../process/SlcExecutionStepsRequestEp.java | 47 ++++++ .../tree/CloseTreeTestResultRequestEp.java | 35 ++++ .../tree/CreateTreeTestResultRequestEp.java | 45 +++++ .../slc/ws/test/tree/ResultPartRequestEp.java | 46 ++++++ .../src/main/resources/META-INF/MANIFEST.MF | 81 +++++++++ .../org/argeo/slc/server/spring/jmx.xml | 42 +++++ .../slc/server/spring/servletContext.xml | 154 ++++++++++++++++++ .../slc/server/spring/slc-doc-servlet.xml | 42 +++++ .../slc/server/spring/slc-ui-servlet.xml | 42 +++++ .../slc/server/spring/slc-web-servlet.xml | 95 +++++++++++ .../slc/server/spring/slc-ws-servlet.xml | 119 ++++++++++++++ .../slc/server/spring/slc-xslt-servlet.xml | 35 ++++ .../argeo/slc/server/spring/transaction.xml | 51 ++++++ 36 files changed, 1873 insertions(+) create mode 100644 runtime/org.argeo.slc.server/.classpath create mode 100644 runtime/org.argeo.slc.server/.project create mode 100644 runtime/org.argeo.slc.server/.settings/org.eclipse.jdt.core.prefs create mode 100644 runtime/org.argeo.slc.server/pom.xml create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/TestManagerService.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/impl/TestManagerServiceImpl.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/XsltMarshallerView.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/XsltMarshallerViewResolver.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/admin/HomeController.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/process/SlcExecutionListController.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/process/SlcExecutionViewController.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/AddResultToCollectionController.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/RemoveResultFromCollectionController.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultCollectionListController.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultCollectionViewController.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultExcelView.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultInterceptor.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultListController.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultPdfView.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultViewController.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/TestRunViewController.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/CustomSoapExceptionResolver.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/process/SlcExecutionRequestEp.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/process/SlcExecutionStepsRequestEp.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/test/tree/CloseTreeTestResultRequestEp.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/test/tree/CreateTreeTestResultRequestEp.java create mode 100644 runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/test/tree/ResultPartRequestEp.java create mode 100644 runtime/org.argeo.slc.server/src/main/resources/META-INF/MANIFEST.MF create mode 100644 runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/jmx.xml create mode 100644 runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/servletContext.xml create mode 100644 runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/slc-doc-servlet.xml create mode 100644 runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/slc-ui-servlet.xml create mode 100644 runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/slc-web-servlet.xml create mode 100644 runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/slc-ws-servlet.xml create mode 100644 runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/slc-xslt-servlet.xml create mode 100644 runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/transaction.xml diff --git a/runtime/org.argeo.slc.server/.classpath b/runtime/org.argeo.slc.server/.classpath new file mode 100644 index 000000000..9653ef0ac --- /dev/null +++ b/runtime/org.argeo.slc.server/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/runtime/org.argeo.slc.server/.project b/runtime/org.argeo.slc.server/.project new file mode 100644 index 000000000..26efbecd6 --- /dev/null +++ b/runtime/org.argeo.slc.server/.project @@ -0,0 +1,23 @@ + + + org.argeo.slc.server + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.maven.ide.eclipse.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.maven.ide.eclipse.maven2Nature + + diff --git a/runtime/org.argeo.slc.server/.settings/org.eclipse.jdt.core.prefs b/runtime/org.argeo.slc.server/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..e71a107e6 --- /dev/null +++ b/runtime/org.argeo.slc.server/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +#Fri Aug 29 11:25:17 CEST 2008 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/runtime/org.argeo.slc.server/pom.xml b/runtime/org.argeo.slc.server/pom.xml new file mode 100644 index 000000000..0f629a7fd --- /dev/null +++ b/runtime/org.argeo.slc.server/pom.xml @@ -0,0 +1,125 @@ + + 4.0.0 + + org.argeo.slc + argeo-slc + 0.11.2-SNAPSHOT + ../org.argeo.slc + + org.argeo.slc.server + Argeo SLC Server + SLC Server + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.apache.maven.plugins + maven-source-plugin + + + org.apache.maven.plugins + maven-jar-plugin + + + org.apache.felix + maven-bundle-plugin + + + + org.argeo.slc.* + + + + + + org.mortbay.jetty + maven-jetty-plugin + + + ../org.argeo.slc.webapp/src/main/webapp + + + ../org.argeo.slc.webapp/src/main/config/jetty/jetty-test.xml + + + + + + + + org.argeo.slc + org.argeo.slc.core + ${project.version} + + + xerces + xercesImpl + + + + + org.argeo.slc + org.argeo.slc.hibernate + ${project.version} + + + xerces + xercesImpl + + + + + + javax.servlet + + com.springsource.javax.servlet.jsp.jstl + + + + org.apache.taglibs + + com.springsource.org.apache.taglibs.standard + + + + javax.servlet + com.springsource.javax.servlet + provided + + + org.springframework.ws + org.springframework.ws + + + org.springframework + org.springframework.web.servlet + + + org.springframework + org.springframework.aop + + + org.aspectj + com.springsource.org.aspectj.weaver + + + net.sourceforge.jexcelapi + com.springsource.jxl + + + com.lowagie.text + com.springsource.com.lowagie.text + + + javax.wsdl + com.springsource.javax.wsdl + + + + diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/TestManagerService.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/TestManagerService.java new file mode 100644 index 000000000..8e58fd2a4 --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/TestManagerService.java @@ -0,0 +1,12 @@ +package org.argeo.slc.services.test; + +import org.argeo.slc.core.test.TestRunDescriptor; + +public interface TestManagerService { + public void registerTestRunDescriptor(TestRunDescriptor testRunDescriptor); + + public void addResultToCollection(String collectionId, String resultUuid); + + public void removeResultFromCollection(String collectionId, + String resultUuid); +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/impl/TestManagerServiceImpl.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/impl/TestManagerServiceImpl.java new file mode 100644 index 000000000..b9a3a7045 --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/test/impl/TestManagerServiceImpl.java @@ -0,0 +1,74 @@ +package org.argeo.slc.services.test.impl; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.argeo.slc.core.process.SlcExecution; +import org.argeo.slc.core.test.TestRunDescriptor; +import org.argeo.slc.core.test.tree.TreeTestResultCollection; +import org.argeo.slc.dao.process.SlcExecutionDao; +import org.argeo.slc.dao.test.TestRunDescriptorDao; +import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao; +import org.argeo.slc.dao.test.tree.TreeTestResultDao; +import org.argeo.slc.services.test.TestManagerService; + +public class TestManagerServiceImpl implements TestManagerService { + private Log log = LogFactory.getLog(getClass()); + + private final TreeTestResultDao treeTestResultDao; + private final TestRunDescriptorDao testRunDescriptorDao; + private final SlcExecutionDao slcExecutionDao; + private final TreeTestResultCollectionDao treeTestResultCollectionDao; + + public TestManagerServiceImpl(TreeTestResultDao treeTestResultDao, + TestRunDescriptorDao testRunDescriptorDao, + SlcExecutionDao slcExecutionDao, + TreeTestResultCollectionDao treeTestResultCollectionDao) { + this.treeTestResultDao = treeTestResultDao; + this.testRunDescriptorDao = testRunDescriptorDao; + this.slcExecutionDao = slcExecutionDao; + this.treeTestResultCollectionDao = treeTestResultCollectionDao; + } + + public void registerTestRunDescriptor(TestRunDescriptor testRunDescriptor) { + if (testRunDescriptor != null) { + testRunDescriptorDao.saveOrUpdate(testRunDescriptor); + + // Update tree test result collection + // TODO: optimize + + if (testRunDescriptor.getSlcExecutionUuid() != null) { + SlcExecution slcExecution = slcExecutionDao + .getSlcExecution(testRunDescriptor + .getSlcExecutionUuid()); + if (slcExecution != null) { + String collectionId = slcExecution.getUser() != null ? slcExecution + .getUser() + : "default"; + addResultToCollection(collectionId, testRunDescriptor + .getTestResultUuid()); + } + } + } + } + + public void addResultToCollection(String collectionId, String resultUuid) { + TreeTestResultCollection ttrc = treeTestResultCollectionDao + .getTestResultCollection(collectionId); + if (ttrc == null) { + ttrc = new TreeTestResultCollection(collectionId); + treeTestResultCollectionDao.create(ttrc); + } + treeTestResultCollectionDao.addResultToCollection(ttrc, resultUuid); + } + + public void removeResultFromCollection(String collectionId, + String resultUuid) { + TreeTestResultCollection ttrc = treeTestResultCollectionDao + .getTestResultCollection(collectionId); + if (ttrc != null) { + treeTestResultCollectionDao.removeResultFromCollection(ttrc, + resultUuid); + } + } + +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/XsltMarshallerView.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/XsltMarshallerView.java new file mode 100644 index 000000000..bec44e8d1 --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/XsltMarshallerView.java @@ -0,0 +1,42 @@ +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.argeo.slc.core.SlcException; +import org.argeo.slc.core.process.SlcExecution; +import org.argeo.slc.core.test.tree.TreeTestResult; +import org.argeo.slc.core.test.tree.TreeTestResultCollection; +import org.springframework.oxm.Marshaller; +import org.springframework.web.servlet.view.xslt.XsltView; +import org.w3c.dom.Document; + +public class XsltMarshallerView extends XsltView { + + private Marshaller marshaller; + + @Override + protected Class[] getSourceTypes() { + return new Class[] { TreeTestResult.class, + TreeTestResultCollection.class, SlcExecution.class }; + } + + @Override + protected Source convertSource(Object source) throws Exception { + Document document = DocumentBuilderFactory.newInstance() + .newDocumentBuilder().newDocument(); + DOMResult result = new DOMResult(document); + if (!marshaller.supports(source.getClass())) + throw new SlcException("Object of type " + source.getClass() + + " not supported."); + marshaller.marshal(source, result); + return new DOMSource(result.getNode()); + } + + public void setMarshaller(Marshaller marshaller) { + this.marshaller = marshaller; + } + +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/XsltMarshallerViewResolver.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/XsltMarshallerViewResolver.java new file mode 100644 index 000000000..62af08ea6 --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/XsltMarshallerViewResolver.java @@ -0,0 +1,85 @@ +package org.argeo.slc.web.mvc; + +import java.io.IOException; +import java.util.Map; +import java.util.TreeMap; + +import javax.xml.transform.Source; +import javax.xml.transform.TransformerException; +import javax.xml.transform.URIResolver; +import javax.xml.transform.stream.StreamSource; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.argeo.slc.core.SlcException; +import org.springframework.core.io.Resource; +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 implements + URIResolver { + private final static Log log = LogFactory + .getLog(XsltMarshallerViewResolver.class); + + private Marshaller marshaller; + private Map cacheUriResolver = new TreeMap(); + + public XsltMarshallerViewResolver() { + setUriResolver(this); + } + + @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; + } + + public Source resolve(String href, String base) throws TransformerException { + if (log.isTraceEnabled()) + log.trace("Resolve URI for href=" + href + " base=" + base); + + Source res = null; + if (isCache()) + res = cacheUriResolver.get(href); + + if (res == null) + res = getStylesheetSource(href); + + if (res == null) + res = getStylesheetSource(getPrefix() + href); + + if (res == null) + throw new SlcException("Can't resolve URI for href=" + href + + " base=" + base); + + if (isCache() && !cacheUriResolver.containsKey(href)) + cacheUriResolver.put(href, res); + + return res; + } + + protected Source getStylesheetSource(String url) { + if (log.isDebugEnabled()) { + log.debug("Loading XSLT stylesheet from '" + url + "'"); + } + try { + final Resource stylesheetResource = getApplicationContext() + .getResource(url); + String systemId = url.substring(0, url.lastIndexOf('/') + 1); + return new StreamSource(stylesheetResource.getInputStream(), + systemId); + } catch (IOException e) { + if (log.isTraceEnabled()) + log.trace("Cannot load stylesheet " + url, e); + return null; + } + } + +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/admin/HomeController.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/admin/HomeController.java new file mode 100644 index 000000000..7d294d594 --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/admin/HomeController.java @@ -0,0 +1,16 @@ +package org.argeo.slc.web.mvc.admin; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.ParameterizableViewController; + +public class HomeController extends ParameterizableViewController { + @Override + protected ModelAndView handleRequestInternal(HttpServletRequest request, + HttpServletResponse response) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + return modelAndView; + } +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/process/SlcExecutionListController.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/process/SlcExecutionListController.java new file mode 100644 index 000000000..e5cbbeece --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/process/SlcExecutionListController.java @@ -0,0 +1,37 @@ +package org.argeo.slc.web.mvc.process; + +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.ParameterizableViewController; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import org.argeo.slc.core.process.SlcExecution; +import org.argeo.slc.dao.process.SlcExecutionDao; + +public class SlcExecutionListController extends ParameterizableViewController { + private Log log = LogFactory.getLog(getClass()); + + private final SlcExecutionDao slcExecutionDao; + + public SlcExecutionListController(SlcExecutionDao slcExecutionDao) { + this.slcExecutionDao = slcExecutionDao; + } + + @Override + protected ModelAndView handleRequestInternal(HttpServletRequest request, + HttpServletResponse response) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + + List slcExecutions = slcExecutionDao.listSlcExecutions(); + modelAndView.addObject("slcExecutions", slcExecutions); + modelAndView.setViewName(getViewName()); + return modelAndView; + } + +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/process/SlcExecutionViewController.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/process/SlcExecutionViewController.java new file mode 100644 index 000000000..8867d85ce --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/process/SlcExecutionViewController.java @@ -0,0 +1,57 @@ +package org.argeo.slc.web.mvc.process; + +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.ParameterizableViewController; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import org.argeo.slc.core.SlcException; +import org.argeo.slc.core.process.SlcExecution; +import org.argeo.slc.core.process.SlcExecutionStep; +import org.argeo.slc.dao.process.SlcExecutionDao; + +public class SlcExecutionViewController extends ParameterizableViewController { + private Log log = LogFactory.getLog(getClass()); + + private final SlcExecutionDao slcExecutionDao; + + public SlcExecutionViewController(SlcExecutionDao slcExecutionDao) { + this.slcExecutionDao = slcExecutionDao; + } + + @Override + protected ModelAndView handleRequestInternal(HttpServletRequest request, + HttpServletResponse response) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + + // List slcExecutions = + // slcExecutionDao.listSlcExecutions(); + String uuid = request.getParameter("uuid"); + if (uuid == null) + throw new SlcException("Parameter uuid required."); + + SlcExecution slcExecution = slcExecutionDao.getSlcExecution(uuid); + + if (slcExecution == null) + throw new SlcException("Could not find slc execution with uuid " + + uuid + "."); + + if (log.isDebugEnabled()) { + log.debug("SlcExecution " + slcExecution.getUuid()); + } + + List slcExecutionSteps = slcExecution.getSteps(); + + modelAndView.addObject("slcExecutionSteps", slcExecutionSteps); + modelAndView.addObject("slcExecution", slcExecution); + modelAndView.setViewName(getViewName()); + return modelAndView; + } + +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/AddResultToCollectionController.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/AddResultToCollectionController.java new file mode 100644 index 000000000..a61101a10 --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/AddResultToCollectionController.java @@ -0,0 +1,31 @@ +package org.argeo.slc.web.mvc.result; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.argeo.slc.services.test.TestManagerService; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.ParameterizableViewController; + +public class AddResultToCollectionController extends + ParameterizableViewController { + private final TestManagerService testManagerService; + + public AddResultToCollectionController(TestManagerService testManagerService) { + this.testManagerService = testManagerService; + } + + @Override + protected ModelAndView handleRequestInternal(HttpServletRequest request, + HttpServletResponse response) throws Exception { + + String collectionId = request.getParameter("collectionId"); + String resultUuid = request.getParameter("resultUuid"); + + testManagerService.addResultToCollection(collectionId, resultUuid); + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName(getViewName()); + return modelAndView; + } +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/RemoveResultFromCollectionController.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/RemoveResultFromCollectionController.java new file mode 100644 index 000000000..1ab784e1f --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/RemoveResultFromCollectionController.java @@ -0,0 +1,32 @@ +package org.argeo.slc.web.mvc.result; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.argeo.slc.services.test.TestManagerService; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.ParameterizableViewController; + +public class RemoveResultFromCollectionController extends + ParameterizableViewController { + private final TestManagerService testManagerService; + + public RemoveResultFromCollectionController( + TestManagerService testManagerService) { + this.testManagerService = testManagerService; + } + + @Override + protected ModelAndView handleRequestInternal(HttpServletRequest request, + HttpServletResponse response) throws Exception { + + String collectionId = request.getParameter("collectionId"); + String resultUuid = request.getParameter("resultUuid"); + + testManagerService.removeResultFromCollection(collectionId, resultUuid); + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName(getViewName()); + return modelAndView; + } +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultCollectionListController.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultCollectionListController.java new file mode 100644 index 000000000..6867062f2 --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultCollectionListController.java @@ -0,0 +1,34 @@ +package org.argeo.slc.web.mvc.result; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.ParameterizableViewController; + +import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao; + +public class ResultCollectionListController extends + ParameterizableViewController { + private final TreeTestResultCollectionDao testResultCollectionDao; + + public ResultCollectionListController( + TreeTestResultCollectionDao testResultCollectionDao) { + this.testResultCollectionDao = testResultCollectionDao; + } + + @Override + protected ModelAndView handleRequestInternal(HttpServletRequest request, + HttpServletResponse response) throws Exception { + ModelAndView modelAndView = new ModelAndView(); + + // no need to retrieve since collection list is always in session + + // SortedSet results = testResultCollectionDao + // .listCollections(); + // modelAndView.addObject("resultCollections", results); + + modelAndView.setViewName(getViewName()); + return modelAndView; + } +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultCollectionViewController.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultCollectionViewController.java new file mode 100644 index 000000000..52950fdae --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultCollectionViewController.java @@ -0,0 +1,34 @@ +package org.argeo.slc.web.mvc.result; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.argeo.slc.core.test.tree.TreeTestResultCollection; +import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.ParameterizableViewController; + +public class ResultCollectionViewController extends + ParameterizableViewController { + private final TreeTestResultCollectionDao testResultCollectionDao; + + public ResultCollectionViewController( + TreeTestResultCollectionDao testResultCollectionDao) { + this.testResultCollectionDao = testResultCollectionDao; + } + + @Override + protected ModelAndView handleRequestInternal(HttpServletRequest request, + HttpServletResponse response) throws Exception { + + String id = request.getParameter("id"); + + TreeTestResultCollection resultCollection = testResultCollectionDao + .getTestResultCollection(id); + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.addObject("resultCollection", resultCollection); + modelAndView.setViewName(getViewName()); + return modelAndView; + } +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultExcelView.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultExcelView.java new file mode 100644 index 000000000..5f2c9ef78 --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultExcelView.java @@ -0,0 +1,51 @@ +package org.argeo.slc.web.mvc.result; + +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import jxl.write.Label; +import jxl.write.WritableSheet; +import jxl.write.WritableWorkbook; + +import org.argeo.slc.core.SlcException; +import org.argeo.slc.core.structure.tree.TreeSPath; +import org.argeo.slc.core.test.SlcTestUtils; +import org.argeo.slc.core.test.TestResultPart; +import org.argeo.slc.core.test.tree.PartSubList; +import org.argeo.slc.core.test.tree.TreeTestResult; +import org.springframework.web.servlet.view.document.AbstractJExcelView; + +public class ResultExcelView extends AbstractJExcelView { + protected void buildExcelDocument(Map model, WritableWorkbook workbook, + HttpServletRequest request, HttpServletResponse response) { + try { + if (workbook.getNumberOfSheets() == 0) { + workbook.createSheet("SLC", 0); + } + WritableSheet sheet = workbook.getSheet("SLC"); + + TreeTestResult ttr = (TreeTestResult) model + .get(ResultViewController.MODELKEY_RESULT); + + sheet.addCell(new Label(0, 0, "Result " + ttr.getUuid())); + + int currentRow = 1; + for (TreeSPath path : ttr.getResultParts().keySet()) { + PartSubList lst = ttr.getResultParts().get(path); + sheet.addCell(new Label(0, currentRow, "Path " + path)); + currentRow++; + for (TestResultPart part : lst.getParts()) { + sheet.addCell(new Label(0, currentRow, SlcTestUtils + .statusToString(part.getStatus()))); + sheet.addCell(new Label(1, currentRow, part.getMessage())); + currentRow++; + } + currentRow++;// add an empty line between paths + } + } catch (Exception e) { + throw new SlcException("Could not write spreadsheet.", e); + } + } +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultInterceptor.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultInterceptor.java new file mode 100644 index 000000000..51484133f --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultInterceptor.java @@ -0,0 +1,27 @@ +package org.argeo.slc.web.mvc.result; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; + +import org.argeo.slc.dao.test.tree.TreeTestResultCollectionDao; + +public class ResultInterceptor extends HandlerInterceptorAdapter { + private final TreeTestResultCollectionDao testResultCollectionDao; + + public ResultInterceptor(TreeTestResultCollectionDao testResultCollectionDao) { + this.testResultCollectionDao = testResultCollectionDao; + } + + @Override + public void postHandle(HttpServletRequest request, + HttpServletResponse response, Object handler, + ModelAndView modelAndView) throws Exception { + request.setAttribute("resultCollections", testResultCollectionDao + .listCollections()); + super.postHandle(request, response, handler, modelAndView); + } + +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultListController.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultListController.java new file mode 100644 index 000000000..c522642e5 --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultListController.java @@ -0,0 +1,34 @@ +package org.argeo.slc.web.mvc.result; + +import java.util.SortedSet; +import java.util.TreeSet; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.ParameterizableViewController; + +import org.argeo.slc.core.test.tree.TreeTestResult; +import org.argeo.slc.dao.test.tree.TreeTestResultDao; + +public class ResultListController extends ParameterizableViewController { + private final TreeTestResultDao testResultDao; + + public ResultListController(TreeTestResultDao testResultDao) { + this.testResultDao = testResultDao; + } + + @Override + protected ModelAndView handleRequestInternal(HttpServletRequest request, + HttpServletResponse response) throws Exception { + + ModelAndView modelAndView = new ModelAndView(); + + SortedSet results = new TreeSet(); + results.addAll(testResultDao.listTestResults()); + modelAndView.addObject("results", results); + modelAndView.setViewName(getViewName()); + return modelAndView; + } +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultPdfView.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultPdfView.java new file mode 100644 index 000000000..36d3b8922 --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultPdfView.java @@ -0,0 +1,59 @@ +package org.argeo.slc.web.mvc.result; + +import java.awt.Color; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.argeo.slc.core.structure.tree.TreeSPath; +import org.argeo.slc.core.test.SlcTestUtils; +import org.argeo.slc.core.test.TestResultPart; +import org.argeo.slc.core.test.TestStatus; +import org.argeo.slc.core.test.tree.PartSubList; +import org.argeo.slc.core.test.tree.TreeTestResult; +import org.springframework.web.servlet.view.document.AbstractPdfView; + +import com.lowagie.text.Cell; +import com.lowagie.text.Document; +import com.lowagie.text.Paragraph; +import com.lowagie.text.Table; +import com.lowagie.text.pdf.PdfWriter; + +public class ResultPdfView extends AbstractPdfView { + + @Override + protected void buildPdfDocument(Map model, Document document, + PdfWriter writer, HttpServletRequest request, + HttpServletResponse response) throws Exception { + TreeTestResult ttr = (TreeTestResult) model + .get(ResultViewController.MODELKEY_RESULT); + + document.addTitle("Result " + ttr.getUuid()); + document.add(new Paragraph("Result " + ttr.getUuid())); + + for (TreeSPath path : ttr.getResultParts().keySet()) { + PartSubList lst = ttr.getResultParts().get(path); + document.add(new Paragraph("Path " + path)); + Table table = new Table(2, lst.getParts().size()); + for (TestResultPart part : lst.getParts()) { + Integer status = part.getStatus(); + Cell statusCell = new Cell(SlcTestUtils.statusToString(status)); + final Color color; + if (status.equals(TestStatus.PASSED)) + color = Color.GREEN; + else if (status.equals(TestStatus.FAILED)) + color = Color.RED; + else + color = Color.MAGENTA; + + statusCell.setBackgroundColor(color); + table.addCell(statusCell); + table.addCell(part.getMessage()); + } + document.add(table); + } + + } + +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultViewController.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultViewController.java new file mode 100644 index 000000000..f87f3acc6 --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/ResultViewController.java @@ -0,0 +1,114 @@ +package org.argeo.slc.web.mvc.result; + +import java.util.SortedMap; +import java.util.TreeMap; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.ParameterizableViewController; + +import org.argeo.slc.core.structure.StructureElement; +import org.argeo.slc.core.structure.tree.TreeSPath; +import org.argeo.slc.core.test.TestResultPart; +import org.argeo.slc.core.test.TestStatus; +import org.argeo.slc.core.test.tree.PartSubList; +import org.argeo.slc.core.test.tree.TreeTestResult; +import org.argeo.slc.dao.test.tree.TreeTestResultDao; + +public class ResultViewController extends ParameterizableViewController { + public final static String MODELKEY_RESULT = "result"; + + private final TreeTestResultDao testResultDao; + + public ResultViewController(TreeTestResultDao testResultDao) { + this.testResultDao = testResultDao; + } + + @Override + protected ModelAndView handleRequestInternal(HttpServletRequest request, + HttpServletResponse response) throws Exception { + + String uuid = request.getParameter("uuid"); + TreeTestResult result = testResultDao.getTestResult(uuid); + + SortedMap toc = generateToc(result); + + SortedMap describedPaths = new TreeMap(); + for (TreeSPath path : toc.keySet()) { + describedPaths.put(path, describedPath(path, result)); + } + + SortedMap anchors = new TreeMap(); + for (TreeSPath path : toc.keySet()) { + anchors.put(path, anchor(path)); + } + + ModelAndView modelAndView = new ModelAndView(); + + modelAndView.addObject(MODELKEY_RESULT, result); + modelAndView.addObject("toc", toc); + modelAndView.addObject("describedPaths", describedPaths); + modelAndView.addObject("anchors", anchors); + modelAndView.setViewName(getViewName()); + return modelAndView; + } + + private SortedMap generateToc(TreeTestResult result) { + SortedMap toc = new TreeMap(); + for (TreeSPath path : result.getResultParts().keySet()) { + PartSubList subList = (PartSubList) result.getResultParts().get( + path); + boolean isFailed = false; + for (TestResultPart part : subList.getParts()) { + if (!part.getStatus().equals(TestStatus.PASSED)) { + isFailed = true; + break; + } + } + fillToc(toc, path, isFailed); + } + return toc; + } + + private void fillToc(SortedMap toc, TreeSPath path, + boolean isFailed) { + if (isFailed) { + toc.put(path, "failed"); + } else { + if (!toc.containsKey(path)) { + toc.put(path, "passed"); + } + } + + if (path.getParent() != null) { + fillToc(toc, path.getParent(), isFailed); + } + } + + private static String anchor(TreeSPath path) { + return path.getAsUniqueString().replace(path.getSeparator(), '_'); + } + + private static String describedPath(TreeSPath path, TreeTestResult ttr) { + StringBuffer buf = new StringBuffer(""); + // TODO :optimize with hierarchy + describedPath(path, buf, ttr); + return buf.toString(); + } + + private static void describedPath(TreeSPath path, StringBuffer buf, + TreeTestResult ttr) { + if (path.getParent() != null) { + describedPath(path.getParent(), buf, ttr); + } + String description = path.getName(); + StructureElement element = ttr.getElements().get(path); + if (element != null) { + description = element.getLabel(); + } + buf.append('/').append(description); + } + +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/TestRunViewController.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/TestRunViewController.java new file mode 100644 index 000000000..8665ffecf --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/web/mvc/result/TestRunViewController.java @@ -0,0 +1,33 @@ +package org.argeo.slc.web.mvc.result; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.mvc.ParameterizableViewController; + +import org.argeo.slc.core.test.TestRunDescriptor; +import org.argeo.slc.dao.test.TestRunDescriptorDao; + +public class TestRunViewController extends ParameterizableViewController { + private final TestRunDescriptorDao testRunDescriptorDao; + + public TestRunViewController(TestRunDescriptorDao testRunDescriptorDao) { + this.testRunDescriptorDao = testRunDescriptorDao; + } + + @Override + protected ModelAndView handleRequestInternal(HttpServletRequest request, + HttpServletResponse response) throws Exception { + + String uuid = request.getParameter("uuid"); + TestRunDescriptor testRunDescriptor = testRunDescriptorDao + .getTestRunDescriptor(uuid); + + ModelAndView modelAndView = new ModelAndView(); + modelAndView.addObject("testRunDescriptor", testRunDescriptor); + modelAndView.setViewName(getViewName()); + return modelAndView; + } + +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/CustomSoapExceptionResolver.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/CustomSoapExceptionResolver.java new file mode 100644 index 000000000..0c59c1c6d --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/CustomSoapExceptionResolver.java @@ -0,0 +1,28 @@ +package org.argeo.slc.ws; + +import javax.xml.namespace.QName; + +import org.springframework.ws.context.MessageContext; +import org.springframework.ws.soap.SoapFault; +import org.springframework.ws.soap.SoapFaultDetail; +import org.springframework.ws.soap.server.endpoint.SimpleSoapExceptionResolver; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public class CustomSoapExceptionResolver extends SimpleSoapExceptionResolver { + private Log log = LogFactory.getLog(getClass()); + + @Override + protected void customizeFault(MessageContext messageContext, + Object endpoint, Exception ex, SoapFault fault) { + log.error("Exception " + ex.getMessage() + " in end point " + endpoint, + ex); + SoapFaultDetail detail = fault.addFaultDetail(); + for (StackTraceElement elem : ex.getStackTrace()) { + detail.addFaultDetailElement(new QName("StackElement")).addText( + elem.toString()); + } + } + +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/process/SlcExecutionRequestEp.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/process/SlcExecutionRequestEp.java new file mode 100644 index 000000000..21239893d --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/process/SlcExecutionRequestEp.java @@ -0,0 +1,69 @@ +package org.argeo.slc.ws.process; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import org.argeo.slc.core.SlcException; +import org.argeo.slc.core.process.SlcExecution; +import org.argeo.slc.dao.process.SlcExecutionDao; +import org.argeo.slc.msg.process.SlcExecutionRequest; +import org.argeo.slc.msg.process.SlcExecutionStatusRequest; + +import org.springframework.ws.server.endpoint.AbstractMarshallingPayloadEndpoint; + +public class SlcExecutionRequestEp extends AbstractMarshallingPayloadEndpoint { + + private Log log = LogFactory.getLog(getClass()); + + private final SlcExecutionDao slcExecutionDao; + + public SlcExecutionRequestEp(SlcExecutionDao slcExecutionDao) { + this.slcExecutionDao = slcExecutionDao; + } + + @Override + protected Object invokeInternal(Object requestObject) throws Exception { + if (requestObject instanceof SlcExecutionRequest) { + + SlcExecutionRequest msg = (SlcExecutionRequest) requestObject; + SlcExecution slcExecutionMsg = msg.getSlcExecution(); + + SlcExecution slcExecutionPersisted = slcExecutionDao + .getSlcExecution(slcExecutionMsg.getUuid()); + if (slcExecutionPersisted == null) { + if (log.isTraceEnabled()) + log.trace("Creating SLC execution #" + + slcExecutionMsg.getUuid()); + + slcExecutionDao.create(slcExecutionMsg); + } else { + if (log.isTraceEnabled()) + log.trace("Updating SLC execution #" + + slcExecutionMsg.getUuid()); + + slcExecutionDao.merge(slcExecutionMsg); + } + return null; + + } else if (requestObject instanceof SlcExecutionStatusRequest) { + SlcExecutionStatusRequest msg = (SlcExecutionStatusRequest) requestObject; + SlcExecution slcExecution = slcExecutionDao.getSlcExecution(msg + .getSlcExecutionUuid()); + if (slcExecution == null) + throw new SlcException("Could not find SLC execution #" + + msg.getSlcExecutionUuid()); + + slcExecution.setStatus(msg.getNewStatus()); + + if (log.isTraceEnabled()) + log.trace("Updating status for SLC execution #" + + slcExecution.getUuid()); + + slcExecutionDao.update(slcExecution); + return null; + } else { + throw new SlcException("Unrecognized request format: " + + requestObject.getClass()); + } + } +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/process/SlcExecutionStepsRequestEp.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/process/SlcExecutionStepsRequestEp.java new file mode 100644 index 000000000..c15b4de75 --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/process/SlcExecutionStepsRequestEp.java @@ -0,0 +1,47 @@ +package org.argeo.slc.ws.process; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.argeo.slc.core.process.SlcExecutionStep; +import org.argeo.slc.dao.process.SlcExecutionDao; +import org.argeo.slc.msg.process.SlcExecutionStepsRequest; +import org.springframework.ws.server.endpoint.AbstractMarshallingPayloadEndpoint; + +public class SlcExecutionStepsRequestEp extends + AbstractMarshallingPayloadEndpoint { + + private Log log = LogFactory.getLog(getClass()); + + private final SlcExecutionDao slcExecutionDao; + + public SlcExecutionStepsRequestEp(SlcExecutionDao slcExecutionDao) { + this.slcExecutionDao = slcExecutionDao; + } + + @Override + protected Object invokeInternal(Object requestObject) throws Exception { + String uuid = null; + try { + SlcExecutionStepsRequest msg = (SlcExecutionStepsRequest) requestObject; + uuid = msg.getSlcExecutionUuid(); + if (log.isTraceEnabled()) { + log.trace("Trying to add additional steps to SLC execution #" + + uuid + ":"); + for (SlcExecutionStep step : msg.getSteps()) { + log.trace("Step " + step.getUuid() + " (in SLC execution #" + + uuid + ")"); + } + log.trace("Adding " + msg.getSteps().size() + + " steps to SLC execution #" + uuid); + } + + slcExecutionDao.addSteps(uuid, msg.getSteps()); + return null; + } catch (Exception e) { + log.error("Could not update SLC execution #" + uuid + + " with additional steps", e); + throw e; + } + } + +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/test/tree/CloseTreeTestResultRequestEp.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/test/tree/CloseTreeTestResultRequestEp.java new file mode 100644 index 000000000..507dc3440 --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/test/tree/CloseTreeTestResultRequestEp.java @@ -0,0 +1,35 @@ +package org.argeo.slc.ws.test.tree; + +import org.springframework.ws.server.endpoint.AbstractMarshallingPayloadEndpoint; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import org.argeo.slc.dao.test.tree.TreeTestResultDao; +import org.argeo.slc.msg.test.tree.CloseTreeTestResultRequest; + +public class CloseTreeTestResultRequestEp extends + AbstractMarshallingPayloadEndpoint { + + private Log log = LogFactory.getLog(getClass()); + + private final TreeTestResultDao treeTestResultDao; + + public CloseTreeTestResultRequestEp(TreeTestResultDao treeTestResultDao) { + this.treeTestResultDao = treeTestResultDao; + } + + @Override + protected Object invokeInternal(Object requestObject) throws Exception { + CloseTreeTestResultRequest msg = (CloseTreeTestResultRequest) requestObject; + + if (log.isTraceEnabled()) + log.trace("Closing result #" + msg.getResultUuid() + " at date " + + msg.getCloseDate()); + + treeTestResultDao.close(msg.getResultUuid(), msg.getCloseDate()); + + return null; + } + +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/test/tree/CreateTreeTestResultRequestEp.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/test/tree/CreateTreeTestResultRequestEp.java new file mode 100644 index 000000000..f61d86666 --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/test/tree/CreateTreeTestResultRequestEp.java @@ -0,0 +1,45 @@ +package org.argeo.slc.ws.test.tree; + +import org.springframework.ws.server.endpoint.AbstractMarshallingPayloadEndpoint; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import org.argeo.slc.core.test.tree.TreeTestResult; +import org.argeo.slc.dao.test.tree.TreeTestResultDao; +import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest; +import org.argeo.slc.services.test.TestManagerService; + +public class CreateTreeTestResultRequestEp extends + AbstractMarshallingPayloadEndpoint { + + private Log log = LogFactory.getLog(getClass()); + + private final TreeTestResultDao treeTestResultDao; + private final TestManagerService testManagerService; + + public CreateTreeTestResultRequestEp(TreeTestResultDao treeTestResultDao, + TestManagerService testManagerService) { + this.treeTestResultDao = treeTestResultDao; + this.testManagerService = testManagerService; + } + + @Override + protected Object invokeInternal(Object requestObject) throws Exception { + CreateTreeTestResultRequest msg = (CreateTreeTestResultRequest) requestObject; + TreeTestResult treeTestResult = msg.getTreeTestResult(); + + if (log.isTraceEnabled()) + log.trace("Creating result #" + treeTestResult.getUuid()); + treeTestResultDao.create(treeTestResult); + + if (log.isTraceEnabled()) + log.trace("Registering test run descriptor #" + + msg.getTestRunDescriptor().getTestRunUuid()); + testManagerService + .registerTestRunDescriptor(msg.getTestRunDescriptor()); + + return null; + } + +} diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/test/tree/ResultPartRequestEp.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/test/tree/ResultPartRequestEp.java new file mode 100644 index 000000000..d8ebbfd9f --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/ws/test/tree/ResultPartRequestEp.java @@ -0,0 +1,46 @@ +package org.argeo.slc.ws.test.tree; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.argeo.slc.dao.test.tree.TreeTestResultDao; +import org.argeo.slc.msg.test.tree.ResultPartRequest; +import org.argeo.slc.services.test.TestManagerService; +import org.springframework.ws.server.endpoint.AbstractMarshallingPayloadEndpoint; + +public class ResultPartRequestEp extends AbstractMarshallingPayloadEndpoint { + + private Log log = LogFactory.getLog(getClass()); + + private final TreeTestResultDao treeTestResultDao; + private final TestManagerService testManagerService; + + public ResultPartRequestEp(TreeTestResultDao treeTestResultDao, + TestManagerService testManagerService) { + this.treeTestResultDao = treeTestResultDao; + this.testManagerService = testManagerService; + } + + @Override + protected Object invokeInternal(Object requestObject) throws Exception { + ResultPartRequest msg = (ResultPartRequest) requestObject; + + if (log.isTraceEnabled()) + log.trace("Registering test run descriptor #" + + msg.getTestRunDescriptor().getTestRunUuid()); + + testManagerService + .registerTestRunDescriptor(msg.getTestRunDescriptor()); + + if (log.isTraceEnabled()) + log.trace("Adding result part to test result #" + + msg.getResultUuid()); + + treeTestResultDao.addResultPart(msg.getResultUuid(), msg.getPath(), msg + .getResultPart(), msg.getRelatedElements()); +// treeTestResultDao.updateAttributes(msg.getResultUuid(), msg +// .getAttributes()); + + return null; + } + +} diff --git a/runtime/org.argeo.slc.server/src/main/resources/META-INF/MANIFEST.MF b/runtime/org.argeo.slc.server/src/main/resources/META-INF/MANIFEST.MF new file mode 100644 index 000000000..929d52fd6 --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/resources/META-INF/MANIFEST.MF @@ -0,0 +1,81 @@ +Manifest-Version: 1.0 +Export-Package: org.argeo.slc.web.mvc;uses:="org.springframework.oxm,o + rg.apache.commons.logging,org.springframework.web.servlet.view,org.sp + ringframework.core.io,org.springframework.context,org.argeo.slc.core. + test.tree,javax.xml.parsers,javax.xml.transform.dom,org.w3c.dom,org.a + rgeo.slc.core,javax.xml.transform,org.springframework.web.servlet.vie + w.xslt,javax.xml.transform.stream,org.argeo.slc.core.process";version + ="0.11.2.SNAPSHOT",org.argeo.slc.ws.process;uses:="org.springframewor + k.ws.server.endpoint,org.apache.commons.logging,org.argeo.slc.core,or + g.argeo.slc.core.process,org.argeo.slc.msg.process,org.argeo.slc.dao. + process";version="0.11.2.SNAPSHOT",org.argeo.slc.web.mvc.process;uses + :="org.springframework.web.servlet.mvc,org.apache.commons.logging,org + .argeo.slc.core,org.springframework.web.servlet,org.argeo.slc.core.pr + ocess,org.argeo.slc.dao.process,javax.servlet.http";version="0.11.2.S + NAPSHOT",org.argeo.slc.web.mvc.admin;uses:="org.springframework.web.s + ervlet.mvc,org.springframework.web.servlet,javax.servlet.http";versio + n="0.11.2.SNAPSHOT",org.argeo.slc.ws.test.tree;uses:="org.springframe + work.ws.server.endpoint,org.apache.commons.logging,org.argeo.slc.msg. + test.tree,org.argeo.slc.core.test.tree,org.argeo.slc.services.test,or + g.argeo.slc.dao.test.tree,org.argeo.slc.core.structure.tree,org.argeo + .slc.core.test";version="0.11.2.SNAPSHOT",org.argeo.slc.web.mvc.resul + t;uses:="org.springframework.web.servlet,com.lowagie.text.pdf,org.arg + eo.slc.services.test,org.argeo.slc.core.test.tree,com.lowagie.text,or + g.argeo.slc.dao.test.tree,org.argeo.slc.core.test,org.argeo.slc.core. + structure,jxl.write,org.springframework.web.servlet.mvc,org.argeo.slc + .dao.test,org.argeo.slc.core,org.springframework.web.servlet.handler, + org.springframework.web.servlet.view.document,org.argeo.slc.core.stru + cture.tree,javax.servlet.http";version="0.11.2.SNAPSHOT",org.argeo.sl + c.services.test.impl;uses:="org.argeo.slc.dao.test,org.apache.commons + .logging,org.argeo.slc.services.test,org.argeo.slc.core.test.tree,org + .argeo.slc.core.process,org.argeo.slc.dao.process,org.argeo.slc.dao.t + est.tree,org.argeo.slc.core.test";version="0.11.2.SNAPSHOT",org.argeo + .slc.services.test;uses:="org.argeo.slc.core.test";version="0.11.2.SN + APSHOT",org.argeo.slc.ws;uses:="org.apache.commons.logging,org.spring + framework.ws.soap,org.springframework.ws.soap.server.endpoint,org.spr + ingframework.ws.context,javax.xml.namespace";version="0.11.2.SNAPSHOT + ",org.argeo.slc.server.spring;version="0.11.2.SNAPSHOT" +Tool: Bnd-0.0.255 +Bundle-Name: Argeo SLC Server +Created-By: 1.6.0 (Sun Microsystems Inc.) +Bundle-Vendor: Argeo +Bundle-Version: 0.11.2.SNAPSHOT +Bundle-ManifestVersion: 2 +Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt +Bundle-Description: SLC Server +Import-Package: com.lowagie.text;version="2.0",com.lowagie.text.pdf;ve + rsion="2.0",javax.servlet.http,javax.xml.namespace;version="1.3",java + x.xml.parsers;version="1.3",javax.xml.transform;version="1.3",javax.x + ml.transform.dom;version="1.3",javax.xml.transform.stream;version="1. + 3",jxl.write;version="2.6",org.apache.commons.logging;version="1.1",o + rg.argeo.slc.core;version="0.11.2.SNAPSHOT",org.argeo.slc.core.proces + s;version="0.11.2.SNAPSHOT",org.argeo.slc.core.structure;version="0.1 + 1.2.SNAPSHOT",org.argeo.slc.core.structure.tree;version="0.11.2.SNAPS + HOT",org.argeo.slc.core.test;version="0.11.2.SNAPSHOT",org.argeo.slc. + core.test.tree;version="0.11.2.SNAPSHOT",org.argeo.slc.dao.process;ve + rsion="0.11.2.SNAPSHOT",org.argeo.slc.dao.test;version="0.11.2.SNAPSH + OT",org.argeo.slc.dao.test.tree;version="0.11.2.SNAPSHOT",org.argeo.s + lc.msg.process;version="0.11.2.SNAPSHOT",org.argeo.slc.msg.test.tree; + version="0.11.2.SNAPSHOT",org.argeo.slc.server.spring;version="0.11.2 + .SNAPSHOT",org.argeo.slc.services.test;version="0.11.2.SNAPSHOT",org. + argeo.slc.services.test.impl;version="0.11.2.SNAPSHOT",org.argeo.slc. + web.mvc;version="0.11.2.SNAPSHOT",org.argeo.slc.web.mvc.admin;version + ="0.11.2.SNAPSHOT",org.argeo.slc.web.mvc.process;version="0.11.2.SNAP + SHOT",org.argeo.slc.web.mvc.result;version="0.11.2.SNAPSHOT",org.arge + o.slc.ws;version="0.11.2.SNAPSHOT",org.argeo.slc.ws.process;version=" + 0.11.2.SNAPSHOT",org.argeo.slc.ws.test.tree;version="0.11.2.SNAPSHOT" + ,org.springframework.context;version="2.5.6.A",org.springframework.co + re.io;version="2.5.6.A",org.springframework.oxm;version="1.5.5.A",org + .springframework.web.servlet;version="2.5.6.A",org.springframework.we + b.servlet.handler;version="2.5.6.A",org.springframework.web.servlet.m + vc;version="2.5.6.A",org.springframework.web.servlet.view;version="2. + 5.6.A",org.springframework.web.servlet.view.document;version="2.5.6.A + ",org.springframework.web.servlet.view.xslt;version="2.5.6.A",org.spr + ingframework.ws.context;version="1.5.5.A",org.springframework.ws.serv + er.endpoint;version="1.5.5.A",org.springframework.ws.soap;version="1. + 5.5.A",org.springframework.ws.soap.server.endpoint;version="1.5.5.A", + org.w3c.dom;version="1.3" +Bundle-SymbolicName: org.argeo.slc.server +Bundle-DocURL: http://www.argeo.org +Originally-Created-By: 1.6.0 (Sun Microsystems Inc.) + diff --git a/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/jmx.xml b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/jmx.xml new file mode 100644 index 000000000..267b5980b --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/jmx.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/servletContext.xml b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/servletContext.xml new file mode 100644 index 000000000..69dffa73f --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/servletContext.xml @@ -0,0 +1,154 @@ + + + + + + + + + + + + + slcServerDefault.sessionFactory.HSQLTest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/slc-doc-servlet.xml b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/slc-doc-servlet.xml new file mode 100644 index 000000000..18e5f6f5d --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/slc-doc-servlet.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/slc-ui-servlet.xml b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/slc-ui-servlet.xml new file mode 100644 index 000000000..43766210e --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/slc-ui-servlet.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + org.springframework.web.servlet.view.JstlView + + + WEB-INF/slc-ui/ + + + .jsp + + + + + \ No newline at end of file diff --git a/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/slc-web-servlet.xml b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/slc-web-servlet.xml new file mode 100644 index 000000000..06d7cebf4 --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/slc-web-servlet.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + org.springframework.web.servlet.view.JstlView + + + WEB-INF/slc-jsp/ + + + .jsp + + + + + \ No newline at end of file diff --git a/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/slc-ws-servlet.xml b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/slc-ws-servlet.xml new file mode 100644 index 000000000..e5300af7a --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/slc-ws-servlet.xml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + slcExecutionRequestEp + + + slcExecutionRequestEp + + + slcExecutionStepsRequestEp + + + createTreeTestResultRequestEp + + + closeTreeTestResultRequestEp + + + resultPartRequestEp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/slc-xslt-servlet.xml b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/slc-xslt-servlet.xml new file mode 100644 index 000000000..35afb02f6 --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/slc-xslt-servlet.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + org.argeo.slc.web.mvc.XsltMarshallerView + + + WEB-INF/xslt/ + + + .xsl + + + + + \ No newline at end of file diff --git a/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/transaction.xml b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/transaction.xml new file mode 100644 index 000000000..43cabb8ea --- /dev/null +++ b/runtime/org.argeo.slc.server/src/main/resources/org/argeo/slc/server/spring/transaction.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file -- 2.39.2