Add web service notification of results.
authorMathieu Baudier <mbaudier@argeo.org>
Sun, 4 May 2008 18:36:10 +0000 (18:36 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sun, 4 May 2008 18:36:10 +0000 (18:36 +0000)
Restructure unit tests.

git-svn-id: https://svn.argeo.org/slc/trunk@1111 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

26 files changed:
org.argeo.slc.core/src/main/java/org/argeo/slc/core/process/WebServiceSlcExecutionNotifier.java
org.argeo.slc.core/src/main/java/org/argeo/slc/core/structure/tree/TreeSPath.java
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/SimpleTestRun.java
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/TestRunDescriptor.java
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/TreeTestResultLogger.java
org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/WebServiceSlcExecutionNotifier.java [new file with mode: 0644]
org.argeo.slc.core/src/main/java/org/argeo/slc/msg/test/tree/CloseTreeTestResultRequest.java
org.argeo.slc.core/src/main/java/org/argeo/slc/msg/test/tree/ResultPartRequest.java
org.argeo.slc.core/src/main/java/org/argeo/slc/ws/client/ValidatingClientInterceptor.java
org.argeo.slc.core/src/main/java/org/argeo/slc/ws/client/WebServiceUtils.java [new file with mode: 0644]
org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcAntWsIntegrationTest.java [deleted file]
org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionWsIntegrationTest.java [deleted file]
org.argeo.slc.core/src/test/java/org/argeo/slc/core/structure/tree/TreeSPathTest.java [new file with mode: 0644]
org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultWsIntegrationTest.java [deleted file]
org.argeo.slc.core/src/test/java/org/argeo/slc/ws/SlcAntWsIntegrationTest.java [new file with mode: 0644]
org.argeo.slc.core/src/test/java/org/argeo/slc/ws/SlcExecutionWsIntegrationTest.java [new file with mode: 0644]
org.argeo.slc.core/src/test/java/org/argeo/slc/ws/TreeTestResultWsIntegrationTest.java [new file with mode: 0644]
org.argeo.slc.core/src/test/resources/org/argeo/slc/ant/applicationContext.xml
org.argeo.slc.core/src/test/resources/org/argeo/slc/ant/nonDepContext.xml [new file with mode: 0644]
org.argeo.slc.core/src/test/resources/org/argeo/slc/castor/applicationContext.xml
org.argeo.slc.core/src/test/resources/org/argeo/slc/core/process/applicationContext.xml
org.argeo.slc.core/src/test/resources/org/argeo/slc/core/process/execution.xml [deleted file]
org.argeo.slc.core/src/test/resources/org/argeo/slc/core/test/tree/applicationContext.xml
org.argeo.slc.core/src/test/resources/org/argeo/slc/ws/applicationContext.xml [new file with mode: 0644]
org.argeo.slc.core/src/test/resources/org/argeo/slc/ws/execution.xml [new file with mode: 0644]
org.argeo.slc.core/src/test/resources/org/argeo/slc/ws/result.xml [new file with mode: 0644]

index 2c6c8883b16164661306a2dbe0ab77a4629edb5b..887a014ceab33c998b61afef6f04ed627bec665c 100644 (file)
@@ -1,27 +1,16 @@
 package org.argeo.slc.core.process;\r
 \r
-import java.io.IOException;\r
-import java.util.Iterator;\r
 import java.util.List;\r
 \r
-import javax.xml.transform.Source;\r
-import javax.xml.transform.dom.DOMSource;\r
-\r
-import org.springframework.oxm.XmlMappingException;\r
 import org.springframework.ws.client.core.WebServiceTemplate;\r
-import org.springframework.ws.soap.SoapFaultDetail;\r
-import org.springframework.ws.soap.SoapFaultDetailElement;\r
 import org.springframework.ws.soap.client.SoapFaultClientException;\r
-import org.springframework.xml.transform.StringResult;\r
-import org.w3c.dom.Node;\r
-\r
-import com.ibm.wsdl.util.IOUtils;\r
 \r
 import org.apache.commons.logging.Log;\r
 import org.apache.commons.logging.LogFactory;\r
 \r
 import org.argeo.slc.msg.process.SlcExecutionRequest;\r
 import org.argeo.slc.msg.process.SlcExecutionStepsRequest;\r
+import org.argeo.slc.ws.client.WebServiceUtils;\r
 \r
 public class WebServiceSlcExecutionNotifier implements SlcExecutionNotifier {\r
        private WebServiceTemplate template;\r
@@ -40,12 +29,12 @@ public class WebServiceSlcExecutionNotifier implements SlcExecutionNotifier {
                }\r
 \r
                try {\r
-                       marshalSendAndReceive(req);\r
+                       WebServiceUtils.marshalSendAndReceive(template, req);\r
                        if (log.isDebugEnabled())\r
                                log.debug("Added steps to slc execution "\r
                                                + slcExecution.getUuid());\r
                } catch (SoapFaultClientException e) {\r
-                       manageSoapException(e);\r
+                       WebServiceUtils.manageSoapException(e);\r
                }\r
        }\r
 \r
@@ -53,12 +42,12 @@ public class WebServiceSlcExecutionNotifier implements SlcExecutionNotifier {
                SlcExecutionRequest req = new SlcExecutionRequest();\r
                req.setSlcExecution(slcExecution);\r
                try {\r
-                       marshalSendAndReceive(req);\r
+                       WebServiceUtils.marshalSendAndReceive(template, req);\r
                        if (log.isDebugEnabled())\r
                                log.debug("Notified creation of slc execution "\r
                                                + slcExecution.getUuid());\r
                } catch (SoapFaultClientException e) {\r
-                       manageSoapException(e);\r
+                       WebServiceUtils.manageSoapException(e);\r
                }\r
        }\r
 \r
@@ -66,12 +55,12 @@ public class WebServiceSlcExecutionNotifier implements SlcExecutionNotifier {
                SlcExecutionRequest req = new SlcExecutionRequest();\r
                req.setSlcExecution(slcExecution);\r
                try {\r
-                       marshalSendAndReceive(req);\r
+                       WebServiceUtils.marshalSendAndReceive(template, req);\r
                        if (log.isDebugEnabled())\r
                                log.debug("Notified update of slc execution "\r
                                                + slcExecution.getUuid());\r
                } catch (SoapFaultClientException e) {\r
-                       manageSoapException(e);\r
+                       WebServiceUtils.manageSoapException(e);\r
                }\r
        }\r
 \r
@@ -79,42 +68,4 @@ public class WebServiceSlcExecutionNotifier implements SlcExecutionNotifier {
                this.template = template;\r
        }\r
 \r
-       protected void manageSoapException(SoapFaultClientException e) {\r
-               log\r
-                               .error("WS root cause: "\r
-                                               + e.getSoapFault().getFaultStringOrReason());\r
-               StringBuffer stack = new StringBuffer("");\r
-               SoapFaultDetail detail = e.getSoapFault().getFaultDetail();\r
-               if (detail != null) {\r
-                       Iterator<SoapFaultDetailElement> it = (Iterator<SoapFaultDetailElement>) detail\r
-                                       .getDetailEntries();\r
-                       while (it.hasNext()) {\r
-                               SoapFaultDetailElement elem = it.next();\r
-                               if (elem.getName().getLocalPart().equals("StackElement")) {\r
-                                       Source source = elem.getSource();\r
-                                       if (source instanceof DOMSource) {\r
-                                               Node node = ((DOMSource) source).getNode();\r
-                                               stack.append(node.getTextContent()).append('\n');\r
-                                       }\r
-                               }\r
-                       }\r
-\r
-                       if (stack.length() > 0 && log.isTraceEnabled())\r
-                               log.error("WS root cause stack: " + stack);\r
-               }\r
-       }\r
-\r
-       protected Object marshalSendAndReceive(Object req) {\r
-               if (log.isTraceEnabled()) {\r
-                       try {\r
-                               StringResult result = new StringResult();\r
-                               template.getMarshaller().marshal(req, result);\r
-                               log.trace("About to send " + result);\r
-                       } catch (Exception e) {\r
-                               log.error("Cannot marshall " + req + " for logging", e);\r
-                       }\r
-               }\r
-               Object resp = template.marshalSendAndReceive(req);\r
-               return resp;\r
-       }\r
 }\r
index f02fbda5d8969ffcd757da72fd4c8bebbcdbac3d..a31239f83d6de4655a1da808d629bb3cda15dc27 100644 (file)
@@ -62,7 +62,7 @@ public class TreeSPath implements StructurePath, Comparable<StructurePath> {
        /** Gets the name part of the path. */\r
        public String getName() {\r
                int lastSep = getAsUniqueString().lastIndexOf(separator);\r
-               return getAsUniqueString().substring(lastSep);\r
+               return getAsUniqueString().substring(lastSep+1);\r
        }\r
 \r
        /** Create a path without parent. */\r
index 388e1f2dc69c25b227389dde6783a44b1e773fe6..e2ab043cfc7a209c189b4e2e432ce4cd0d1e3c9d 100644 (file)
@@ -1,5 +1,7 @@
 package org.argeo.slc.core.test;\r
 \r
+import java.util.UUID;\r
+\r
 import org.argeo.slc.core.deploy.DeployedSystem;\r
 import org.argeo.slc.core.process.SlcExecution;\r
 import org.argeo.slc.core.process.SlcExecutionStep;\r
@@ -21,6 +23,7 @@ public class SimpleTestRun implements WritableTestRun, ExecutableTestRun {
 \r
        /** Executes the underlying test definition. */\r
        public void execute() {\r
+               uuid = UUID.randomUUID().toString();\r
                if (testResult != null)\r
                        testResult.notifyTestRun(this);\r
                testDefinition.execute(this);\r
index d136e802c3b365f1ec8cd5ed830a712005a244b7..d48ea2db9fbe5a4a58079e4f68c5f2662d86e781 100644 (file)
@@ -1,6 +1,7 @@
 package org.argeo.slc.core.test;\r
 \r
 import org.argeo.slc.core.deploy.DeployedSystem;\r
+import org.argeo.slc.core.process.SlcExecution;\r
 \r
 public class TestRunDescriptor {\r
        private String testRunUuid;\r
index 667e2e5a911f6612d9f7328c97b40d37e439a3a4..e20614f905f59f3a1fd7e3f34c97eb159c377c47 100644 (file)
@@ -36,6 +36,7 @@ public class TreeTestResultLogger implements TestResultListener<TreeTestResult>
        }\r
 \r
        public void close(TreeTestResult testResult) {\r
+               log.info("Test result " + testResult.getUuid() + " closed.");\r
        }\r
 \r
 }\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/WebServiceSlcExecutionNotifier.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/core/test/tree/WebServiceSlcExecutionNotifier.java
new file mode 100644 (file)
index 0000000..0d51d22
--- /dev/null
@@ -0,0 +1,89 @@
+package org.argeo.slc.core.test.tree;\r
+\r
+import java.util.List;\r
+\r
+import org.springframework.ws.client.core.WebServiceTemplate;\r
+import org.springframework.ws.soap.client.SoapFaultClientException;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+import org.argeo.slc.core.test.TestResultListener;\r
+import org.argeo.slc.core.test.TestResultPart;\r
+import org.argeo.slc.dao.test.tree.TreeTestResultDao;\r
+import org.argeo.slc.msg.process.SlcExecutionRequest;\r
+import org.argeo.slc.msg.process.SlcExecutionStepsRequest;\r
+import org.argeo.slc.msg.test.tree.CloseTreeTestResultRequest;\r
+import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest;\r
+import org.argeo.slc.msg.test.tree.ResultPartRequest;\r
+import org.argeo.slc.ws.client.WebServiceUtils;\r
+\r
+public class WebServiceSlcExecutionNotifier implements\r
+               TestResultListener<TreeTestResult> {\r
+       private WebServiceTemplate template;\r
+       private Boolean onlyOnClose = false;\r
+\r
+       private Log log = LogFactory.getLog(getClass());\r
+\r
+       public void resultPartAdded(TreeTestResult testResult,\r
+                       TestResultPart testResultPart) {\r
+               try {\r
+                       if (testResult.getResultParts().size() == 1) {\r
+                               CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(\r
+                                               testResult);\r
+\r
+                               if (log.isDebugEnabled())\r
+                                       log.debug("Send create result request for result "\r
+                                                       + testResult.getUuid());\r
+\r
+                               WebServiceUtils.marshalSendAndReceive(template, req);\r
+                       } else {\r
+                               ResultPartRequest req = new ResultPartRequest(testResult);\r
+\r
+                               if (log.isDebugEnabled())\r
+                                       log.debug("Send result parts for result "\r
+                                                       + testResult.getUuid());\r
+\r
+                               WebServiceUtils.marshalSendAndReceive(template, req);\r
+                       }\r
+               } catch (SoapFaultClientException e) {\r
+                       WebServiceUtils.manageSoapException(e);\r
+               }\r
+       }\r
+\r
+       public void close(TreeTestResult testResult) {\r
+               try {\r
+                       if (onlyOnClose) {\r
+                               CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(\r
+                                               testResult);\r
+\r
+                               if (log.isDebugEnabled())\r
+                                       log.debug("Send create result request for result "\r
+                                                       + testResult.getUuid());\r
+\r
+                               WebServiceUtils.marshalSendAndReceive(template, req);\r
+                       } else {\r
+                               CloseTreeTestResultRequest req = new CloseTreeTestResultRequest(\r
+                                               testResult);\r
+\r
+                               if (log.isDebugEnabled())\r
+                                       log.debug("Send close result request for result "\r
+                                                       + testResult.getUuid());\r
+\r
+                               WebServiceUtils.marshalSendAndReceive(template, req);\r
+\r
+                       }\r
+               } catch (SoapFaultClientException e) {\r
+                       WebServiceUtils.manageSoapException(e);\r
+               }\r
+\r
+       }\r
+\r
+       public void setTemplate(WebServiceTemplate template) {\r
+               this.template = template;\r
+       }\r
+\r
+       public void setOnlyOnClose(Boolean onlyOnClose) {\r
+               this.onlyOnClose = onlyOnClose;\r
+       }\r
+}\r
index 4aa229df82ce8d57375bb1e4b6960d15009f37b1..c0b74e36e1866a7e75e1194778e33dceb8a93210 100644 (file)
@@ -2,6 +2,8 @@ package org.argeo.slc.msg.test.tree;
 \r
 import java.util.Date;\r
 \r
+import org.argeo.slc.core.test.tree.TreeTestResult;\r
+\r
 public class CloseTreeTestResultRequest {\r
        private String resultUuid;\r
        private Date closeDate;\r
@@ -11,11 +13,15 @@ public class CloseTreeTestResultRequest {
        }\r
 \r
        public CloseTreeTestResultRequest(String resultUuid, Date closeDate) {\r
-               super();\r
                this.resultUuid = resultUuid;\r
                this.closeDate = closeDate;\r
        }\r
 \r
+       public CloseTreeTestResultRequest(TreeTestResult ttr) {\r
+               this.resultUuid = ttr.getUuid();\r
+               this.closeDate = ttr.getCloseDate();\r
+       }\r
+\r
        public String getResultUuid() {\r
                return resultUuid;\r
        }\r
index 71d0fd694165107fe2ed3c5634d955a41f7808c9..ac09087114e7d4bd8f60b3c3305aaf7a88d8c1d3 100644 (file)
@@ -2,10 +2,13 @@ package org.argeo.slc.msg.test.tree;
 \r
 import java.util.Map;\r
 \r
+import org.argeo.slc.core.SlcException;\r
+import org.argeo.slc.core.process.SlcExecution;\r
 import org.argeo.slc.core.structure.StructureElement;\r
 import org.argeo.slc.core.structure.tree.TreeSPath;\r
 import org.argeo.slc.core.test.SimpleResultPart;\r
 import org.argeo.slc.core.test.TestRunDescriptor;\r
+import org.argeo.slc.core.test.tree.PartSubList;\r
 import org.argeo.slc.core.test.tree.TreeTestResult;\r
 \r
 public class ResultPartRequest {\r
@@ -29,6 +32,23 @@ public class ResultPartRequest {
                        testRunDescriptor = new TestRunDescriptor(ttr.getCurrentTestRun());\r
        }\r
 \r
+       public ResultPartRequest(TreeTestResult ttr) {\r
+               resultUuid = ttr.getUuid();\r
+               this.path = ttr.getCurrentPath();\r
+\r
+               PartSubList lst = ttr.getResultParts().get(path);\r
+               if (lst.getParts().size() < 1) {\r
+                       throw new SlcException("Cannot find part for path " + path\r
+                                       + " in result " + resultUuid);\r
+               }\r
+\r
+               this.resultPart = (SimpleResultPart) lst.getParts().get(\r
+                               lst.getParts().size() - 1);\r
+               relatedElements = ttr.getRelatedElements(path);\r
+               if (ttr.getCurrentTestRun() != null)\r
+                       testRunDescriptor = new TestRunDescriptor(ttr.getCurrentTestRun());\r
+       }\r
+\r
        public String getResultUuid() {\r
                return resultUuid;\r
        }\r
@@ -45,8 +65,6 @@ public class ResultPartRequest {
                this.resultPart = resultPart;\r
        }\r
 \r
-       \r
-       \r
        public TreeSPath getPath() {\r
                return path;\r
        }\r
index ff439d824b9e4c9de8175dae1e43c4192da16ef4..cd3add67c5c00a5f189fc05b52c806a58644c0db 100644 (file)
@@ -4,8 +4,6 @@ import java.io.IOException;
 \r
 import javax.xml.transform.Source;\r
 \r
-import junit.framework.TestCase;\r
-\r
 import org.springframework.ws.client.WebServiceClientException;\r
 import org.springframework.ws.client.WebServiceIOException;\r
 import org.springframework.ws.client.support.interceptor.ClientInterceptor;\r
diff --git a/org.argeo.slc.core/src/main/java/org/argeo/slc/ws/client/WebServiceUtils.java b/org.argeo.slc.core/src/main/java/org/argeo/slc/ws/client/WebServiceUtils.java
new file mode 100644 (file)
index 0000000..9bcd6e3
--- /dev/null
@@ -0,0 +1,64 @@
+package org.argeo.slc.ws.client;\r
+\r
+import java.util.Iterator;\r
+\r
+import javax.xml.transform.Source;\r
+import javax.xml.transform.dom.DOMSource;\r
+\r
+import org.springframework.ws.client.core.WebServiceTemplate;\r
+import org.springframework.ws.soap.SoapFaultDetail;\r
+import org.springframework.ws.soap.SoapFaultDetailElement;\r
+import org.springframework.ws.soap.client.SoapFaultClientException;\r
+import org.springframework.xml.transform.StringResult;\r
+import org.w3c.dom.Node;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+public abstract class WebServiceUtils {\r
+       private final static Log log = LogFactory.getLog(WebServiceUtils.class);\r
+\r
+       public static Object marshalSendAndReceive(WebServiceTemplate template,\r
+                       Object req) {\r
+               if (log.isTraceEnabled()) {\r
+                       try {\r
+                               StringResult result = new StringResult();\r
+                               template.getMarshaller().marshal(req, result);\r
+                               log.trace("About to send " + result);\r
+                       } catch (Exception e) {\r
+                               log.error("Cannot marshall " + req + " for logging", e);\r
+                       }\r
+               }\r
+               Object resp = template.marshalSendAndReceive(req);\r
+               return resp;\r
+       }\r
+\r
+       public static void manageSoapException(SoapFaultClientException e) {\r
+               log\r
+                               .error("WS root cause: "\r
+                                               + e.getSoapFault().getFaultStringOrReason());\r
+               StringBuffer stack = new StringBuffer("");\r
+               SoapFaultDetail detail = e.getSoapFault().getFaultDetail();\r
+               if (detail != null) {\r
+                       Iterator<SoapFaultDetailElement> it = (Iterator<SoapFaultDetailElement>) detail\r
+                                       .getDetailEntries();\r
+                       while (it.hasNext()) {\r
+                               SoapFaultDetailElement elem = it.next();\r
+                               if (elem.getName().getLocalPart().equals("StackElement")) {\r
+                                       Source source = elem.getSource();\r
+                                       if (source instanceof DOMSource) {\r
+                                               Node node = ((DOMSource) source).getNode();\r
+                                               stack.append(node.getTextContent()).append('\n');\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       if (stack.length() > 0 && log.isTraceEnabled())\r
+                               log.error("WS root cause stack: " + stack);\r
+               }\r
+       }\r
+\r
+       private WebServiceUtils() {\r
+\r
+       }\r
+}\r
diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcAntWsIntegrationTest.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcAntWsIntegrationTest.java
deleted file mode 100644 (file)
index 2c1395f..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.argeo.slc.core.process;\r
-\r
-import java.net.URL;\r
-\r
-import org.apache.commons.logging.Log;\r
-import org.apache.commons.logging.LogFactory;\r
-\r
-import org.argeo.slc.ant.AntRunner;\r
-import org.argeo.slc.unit.AbstractSpringTestCase;\r
-\r
-public class SlcAntWsIntegrationTest extends AbstractSpringTestCase {\r
-       private Log log = LogFactory.getLog(getClass());\r
-\r
-       public void testSimpleRun() {\r
-               // AntRegistryUtil.runAll(getClass().getResource(\r
-               // "/org/argeo/slc/ant/build.xml"), "test", null);\r
-\r
-               URL url = getClass().getResource("/org/argeo/slc/ant/build.xml");\r
-               log.info("Run Ant file from URL: " + url);\r
-               AntRunner antRunner = new AntRunner(getContext(), url, "test");\r
-\r
-               antRunner.run();\r
-       }\r
-\r
-}\r
diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionWsIntegrationTest.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/core/process/SlcExecutionWsIntegrationTest.java
deleted file mode 100644 (file)
index 95bc048..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.argeo.slc.core.process;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.slc.msg.process.SlcExecutionRequest;
-import org.argeo.slc.unit.AbstractSpringTestCase;
-import org.springframework.ws.client.core.WebServiceTemplate;
-
-public class SlcExecutionWsIntegrationTest extends AbstractSpringTestCase {
-       private Log log = LogFactory.getLog(getClass());
-
-       public void testSendSlcExecutionrequest() {
-               WebServiceTemplate template = getBean(WebServiceTemplate.class);
-               SlcExecution slcExec = SlcExecutionTestUtils.createSimpleSlcExecution();
-
-               SlcExecutionRequest req = new SlcExecutionRequest();
-               req.setSlcExecution(slcExec);
-
-               log.info("Send SlcExecutionRequest for SlcExecution "
-                               + slcExec.getUuid());
-
-               Object resp = template.marshalSendAndReceive(req);
-               log.info("Resp: " + resp);
-       }
-}
diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/core/structure/tree/TreeSPathTest.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/core/structure/tree/TreeSPathTest.java
new file mode 100644 (file)
index 0000000..fab6831
--- /dev/null
@@ -0,0 +1,57 @@
+package org.argeo.slc.core.structure.tree;\r
+\r
+import junit.framework.TestCase;\r
+\r
+public class TreeSPathTest extends TestCase {\r
+\r
+       public void testNew() {\r
+               TreeSPath path = new TreeSPath("/test");\r
+               assertEquals("test", path.getName());\r
+               assertNull(path.getParent());\r
+\r
+               path = new TreeSPath("/root/subdir");\r
+               assertEquals("subdir", path.getName());\r
+               assertEquals(new TreeSPath("/root"), path.getParent());\r
+       }\r
+\r
+       public void testEquals() {\r
+               TreeSPath path1 = new TreeSPath("/test");\r
+               TreeSPath path2 = new TreeSPath("/test");\r
+               assertEquals(path1, path2);\r
+               \r
+               path1 = new TreeSPath("/test/subdir/anotherdir");\r
+               path2 = new TreeSPath("/test/subdir/anotherdir");\r
+               assertEquals(path1, path2);\r
+               \r
+               path1 = new TreeSPath("/test/subdir/anotherd");\r
+               path2 = new TreeSPath("/test/subdir/anotherdir");\r
+               assertNotSame(path1, path2);\r
+               \r
+               path1 = new TreeSPath("/test/subdir");\r
+               path2 = new TreeSPath("/test/subdir/anotherdir");\r
+               assertNotSame(path1, path2);\r
+               \r
+               path1 = new TreeSPath("/test/subd/anotherdir");\r
+               path2 = new TreeSPath("/test/subdir/anotherdir");\r
+               assertNotSame(path1, path2);\r
+       }\r
+       \r
+       public void testCheckFormat(){\r
+               try{\r
+                       new TreeSPath("hello");\r
+                       fail("Bad format should be rejected");\r
+               }catch(Exception e){\r
+                       // exception expected\r
+               }\r
+               \r
+               try{\r
+                       new TreeSPath("/");\r
+                       fail("Bad format should be rejected");\r
+               }catch(Exception e){\r
+                       // exception expected\r
+               }\r
+               \r
+               assertEquals(new TreeSPath("/test"), new TreeSPath("/test/"));\r
+               assertEquals(new TreeSPath("/test/dir"), new TreeSPath("//test///dir////"));\r
+       }\r
+}\r
diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultWsIntegrationTest.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/core/test/tree/TreeTestResultWsIntegrationTest.java
deleted file mode 100644 (file)
index d6abfea..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-package org.argeo.slc.core.test.tree;
-
-import org.springframework.ws.client.core.WebServiceTemplate;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import static org.argeo.slc.core.test.tree.TreeTestResultTestUtils.createCompleteTreeTestResult;
-import static org.argeo.slc.core.test.tree.TreeTestResultTestUtils.createSimpleResultPartRequest;
-
-import org.argeo.slc.msg.test.tree.CloseTreeTestResultRequest;
-import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest;
-import org.argeo.slc.msg.test.tree.ResultPartRequest;
-import org.argeo.slc.unit.AbstractSpringTestCase;
-
-public class TreeTestResultWsIntegrationTest extends AbstractSpringTestCase {
-       private Log log = LogFactory.getLog(getClass());
-
-       public void testCreateTreeTestResultRequest() {
-               WebServiceTemplate template = getBean(WebServiceTemplate.class);
-               CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(
-                               createCompleteTreeTestResult());
-
-               log.info("Send CreateTreeTestResultRequest for result "
-                               + req.getTreeTestResult().getUuid());
-
-               Object resp = template.marshalSendAndReceive(req);
-               log.info("Resp: " + resp);
-       }
-
-       public void testResultPartRequest() {
-               WebServiceTemplate template = getBean(WebServiceTemplate.class);
-               TreeTestResult ttr = createCompleteTreeTestResult();
-               CreateTreeTestResultRequest reqCreate = new CreateTreeTestResultRequest(
-                               ttr);
-               log.info("Send CreateTreeTestResultRequest for result "
-                               + reqCreate.getTreeTestResult().getUuid());
-               template.marshalSendAndReceive(reqCreate);
-
-               ResultPartRequest req = createSimpleResultPartRequest(ttr);
-
-               log.info("Send ResultPartRequest for result " + req.getResultUuid());
-               Object resp = template.marshalSendAndReceive(req);
-               log.info("Resp: " + resp);
-       }
-
-       public void testCloseTreeTestResultRequest() {
-               WebServiceTemplate template = getBean(WebServiceTemplate.class);
-
-               TreeTestResult ttr = createCompleteTreeTestResult();
-               CreateTreeTestResultRequest reqCreate = new CreateTreeTestResultRequest(
-                               ttr);
-               log.info("Send CreateTreeTestResultRequest for result "
-                               + reqCreate.getTreeTestResult().getUuid());
-               template.marshalSendAndReceive(reqCreate);
-
-               ttr.close();
-               CloseTreeTestResultRequest req = new CloseTreeTestResultRequest(ttr
-                               .getUuid(), ttr.getCloseDate());
-
-               log.info("Send CloseTreeTestResultRequest for result "
-                               + req.getResultUuid());
-
-               Object resp = template.marshalSendAndReceive(req);
-               log.info("Resp: " + resp);
-       }
-}
diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/ws/SlcAntWsIntegrationTest.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/ws/SlcAntWsIntegrationTest.java
new file mode 100644 (file)
index 0000000..7b3d662
--- /dev/null
@@ -0,0 +1,25 @@
+package org.argeo.slc.ws;\r
+\r
+import java.net.URL;\r
+\r
+import org.apache.commons.logging.Log;\r
+import org.apache.commons.logging.LogFactory;\r
+\r
+import org.argeo.slc.ant.AntRunner;\r
+import org.argeo.slc.unit.AbstractSpringTestCase;\r
+\r
+public class SlcAntWsIntegrationTest extends AbstractSpringTestCase {\r
+       private Log log = LogFactory.getLog(getClass());\r
+\r
+       public void testSimpleRun() {\r
+               // AntRegistryUtil.runAll(getClass().getResource(\r
+               // "/org/argeo/slc/ant/build.xml"), "test", null);\r
+\r
+               URL url = getClass().getResource("/org/argeo/slc/ant/build.xml");\r
+               log.info("Run Ant file from URL: " + url);\r
+               AntRunner antRunner = new AntRunner(getContext(), url, "test");\r
+\r
+               antRunner.run();\r
+       }\r
+\r
+}\r
diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/ws/SlcExecutionWsIntegrationTest.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/ws/SlcExecutionWsIntegrationTest.java
new file mode 100644 (file)
index 0000000..2aa29e2
--- /dev/null
@@ -0,0 +1,29 @@
+package org.argeo.slc.ws;
+
+import org.springframework.ws.client.core.WebServiceTemplate;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.argeo.slc.core.process.SlcExecution;
+import org.argeo.slc.core.process.SlcExecutionTestUtils;
+import org.argeo.slc.msg.process.SlcExecutionRequest;
+import org.argeo.slc.unit.AbstractSpringTestCase;
+
+public class SlcExecutionWsIntegrationTest extends AbstractSpringTestCase {
+       private Log log = LogFactory.getLog(getClass());
+
+       public void testSendSlcExecutionrequest() {
+               WebServiceTemplate template = getBean(WebServiceTemplate.class);
+               SlcExecution slcExec = SlcExecutionTestUtils.createSimpleSlcExecution();
+
+               SlcExecutionRequest req = new SlcExecutionRequest();
+               req.setSlcExecution(slcExec);
+
+               log.info("Send SlcExecutionRequest for SlcExecution "
+                               + slcExec.getUuid());
+
+               Object resp = template.marshalSendAndReceive(req);
+               log.info("Resp: " + resp);
+       }
+}
diff --git a/org.argeo.slc.core/src/test/java/org/argeo/slc/ws/TreeTestResultWsIntegrationTest.java b/org.argeo.slc.core/src/test/java/org/argeo/slc/ws/TreeTestResultWsIntegrationTest.java
new file mode 100644 (file)
index 0000000..55819e6
--- /dev/null
@@ -0,0 +1,68 @@
+package org.argeo.slc.ws;
+
+import org.springframework.ws.client.core.WebServiceTemplate;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import static org.argeo.slc.core.test.tree.TreeTestResultTestUtils.createCompleteTreeTestResult;
+import static org.argeo.slc.core.test.tree.TreeTestResultTestUtils.createSimpleResultPartRequest;
+
+import org.argeo.slc.core.test.tree.TreeTestResult;
+import org.argeo.slc.msg.test.tree.CloseTreeTestResultRequest;
+import org.argeo.slc.msg.test.tree.CreateTreeTestResultRequest;
+import org.argeo.slc.msg.test.tree.ResultPartRequest;
+import org.argeo.slc.unit.AbstractSpringTestCase;
+
+public class TreeTestResultWsIntegrationTest extends AbstractSpringTestCase {
+       private Log log = LogFactory.getLog(getClass());
+
+       public void testCreateTreeTestResultRequest() {
+               WebServiceTemplate template = getBean(WebServiceTemplate.class);
+               CreateTreeTestResultRequest req = new CreateTreeTestResultRequest(
+                               createCompleteTreeTestResult());
+
+               log.info("Send CreateTreeTestResultRequest for result "
+                               + req.getTreeTestResult().getUuid());
+
+               Object resp = template.marshalSendAndReceive(req);
+               log.info("Resp: " + resp);
+       }
+
+       public void testResultPartRequest() {
+               WebServiceTemplate template = getBean(WebServiceTemplate.class);
+               TreeTestResult ttr = createCompleteTreeTestResult();
+               CreateTreeTestResultRequest reqCreate = new CreateTreeTestResultRequest(
+                               ttr);
+               log.info("Send CreateTreeTestResultRequest for result "
+                               + reqCreate.getTreeTestResult().getUuid());
+               template.marshalSendAndReceive(reqCreate);
+
+               ResultPartRequest req = createSimpleResultPartRequest(ttr);
+
+               log.info("Send ResultPartRequest for result " + req.getResultUuid());
+               Object resp = template.marshalSendAndReceive(req);
+               log.info("Resp: " + resp);
+       }
+
+       public void testCloseTreeTestResultRequest() {
+               WebServiceTemplate template = getBean(WebServiceTemplate.class);
+
+               TreeTestResult ttr = createCompleteTreeTestResult();
+               CreateTreeTestResultRequest reqCreate = new CreateTreeTestResultRequest(
+                               ttr);
+               log.info("Send CreateTreeTestResultRequest for result "
+                               + reqCreate.getTreeTestResult().getUuid());
+               template.marshalSendAndReceive(reqCreate);
+
+               ttr.close();
+               CloseTreeTestResultRequest req = new CloseTreeTestResultRequest(ttr
+                               .getUuid(), ttr.getCloseDate());
+
+               log.info("Send CloseTreeTestResultRequest for result "
+                               + req.getResultUuid());
+
+               Object resp = template.marshalSendAndReceive(req);
+               log.info("Resp: " + resp);
+       }
+}
index 3f8f15f6fd748de35a105ab9a3a9b9f7ec046e66..d988d2022ad71d9fb377115ca7090e58e314a510 100644 (file)
@@ -3,9 +3,7 @@
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
 \r
-       <bean name="testRun"\r
-               class="org.argeo.slc.core.test.SimpleTestRun">\r
-       </bean>\r
+       <import resource="classpath:/org/argeo/slc/ant/nonDepContext.xml" />\r
 \r
        <bean id="testResult"\r
                class="org.argeo.slc.core.test.tree.TreeTestResult">\r
                </property>\r
        </bean>\r
 \r
-       <bean name="uuid" class="java.util.UUID" factory-method="randomUUID"\r
-               scope="prototype">\r
-       </bean>\r
-\r
-       <bean id="resultLogger"\r
-               class="org.argeo.slc.core.test.tree.TreeTestResultLogger">\r
-       </bean>\r
-\r
-       <bean name="testDef"\r
-               class="org.argeo.slc.core.test.BasicTestDefinition" scope="prototype" />\r
-\r
-       <bean name="testData1"\r
-               class="org.argeo.slc.core.test.BasicTestData">\r
-               <property name="expected">\r
-                       <value>toto</value>\r
-               </property>\r
-               <property name="reached">\r
-                       <value>toto</value>\r
-               </property>\r
-       </bean>\r
-\r
-       <bean id="testData.context1" parent="context.template">\r
-               <property name="values">\r
-                       <map>\r
-                               <entry key="reference" value="20" />\r
-                               <entry key="varIntern" value="60" />\r
-                       </map>\r
-               </property>\r
-               <property name="expectedValues">\r
-                       <map>\r
-                               <entry key="reference" value="21" />\r
-                               <entry key="varIntern" value="60" />\r
-                       </map>\r
-               </property>\r
-       </bean>\r
-\r
-       <bean id="context.template"\r
-               class="org.argeo.slc.core.test.context.DefaultContextTestData"\r
-               abstract="true">\r
-       </bean>\r
-\r
 </beans>
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/test/resources/org/argeo/slc/ant/nonDepContext.xml b/org.argeo.slc.core/src/test/resources/org/argeo/slc/ant/nonDepContext.xml
new file mode 100644 (file)
index 0000000..3f8f15f
--- /dev/null
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
+\r
+       <bean name="testRun"\r
+               class="org.argeo.slc.core.test.SimpleTestRun">\r
+       </bean>\r
+\r
+       <bean id="testResult"\r
+               class="org.argeo.slc.core.test.tree.TreeTestResult">\r
+               <property name="uuid">\r
+                       <bean factory-bean="uuid" factory-method="toString"></bean>\r
+               </property>\r
+               <property name="listeners">\r
+                       <list>\r
+                               <ref bean="resultLogger" />\r
+                       </list>\r
+               </property>\r
+       </bean>\r
+\r
+       <bean name="uuid" class="java.util.UUID" factory-method="randomUUID"\r
+               scope="prototype">\r
+       </bean>\r
+\r
+       <bean id="resultLogger"\r
+               class="org.argeo.slc.core.test.tree.TreeTestResultLogger">\r
+       </bean>\r
+\r
+       <bean name="testDef"\r
+               class="org.argeo.slc.core.test.BasicTestDefinition" scope="prototype" />\r
+\r
+       <bean name="testData1"\r
+               class="org.argeo.slc.core.test.BasicTestData">\r
+               <property name="expected">\r
+                       <value>toto</value>\r
+               </property>\r
+               <property name="reached">\r
+                       <value>toto</value>\r
+               </property>\r
+       </bean>\r
+\r
+       <bean id="testData.context1" parent="context.template">\r
+               <property name="values">\r
+                       <map>\r
+                               <entry key="reference" value="20" />\r
+                               <entry key="varIntern" value="60" />\r
+                       </map>\r
+               </property>\r
+               <property name="expectedValues">\r
+                       <map>\r
+                               <entry key="reference" value="21" />\r
+                               <entry key="varIntern" value="60" />\r
+                       </map>\r
+               </property>\r
+       </bean>\r
+\r
+       <bean id="context.template"\r
+               class="org.argeo.slc.core.test.context.DefaultContextTestData"\r
+               abstract="true">\r
+       </bean>\r
+\r
+</beans>
\ No newline at end of file
index eb0b2c3d62807238d3c226db2e4f19d911f28ee1..7a89af927b53b15d9dc4e646438344721faf0e67 100644 (file)
@@ -2,9 +2,10 @@
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
 \r
+<!-- TODO: remove this file\r
        <import\r
                resource="classpath:/org/argeo/slc/castor/spring/applicationContext.xml" />\r
        <import\r
                resource="classpath:/org/argeo/slc/ws/client/spring/applicationContext.xml" />\r
-\r
+-->\r
 </beans>\r
index f08d3853df649ecd8f368714cf61758d216b5c1c..899daf548a3a5517e24a206afd19c4f8d3208142 100644 (file)
@@ -1,9 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
 \r
-       <import resource="classpath:/org/argeo/slc/ant/applicationContext.xml" />\r
-       <import resource="execution.xml" />\r
-
+\r
+       <import\r
+               resource="classpath:/org/argeo/slc/xml/spring/applicationContext.xml" />\r
+       <import\r
+               resource="classpath:/org/argeo/slc/castor/spring/applicationContext.xml" />\r
 </beans>
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/test/resources/org/argeo/slc/core/process/execution.xml b/org.argeo.slc.core/src/test/resources/org/argeo/slc/core/process/execution.xml
deleted file mode 100644 (file)
index bdb071b..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<beans xmlns="http://www.springframework.org/schema/beans"\r
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
-       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
-\r
-       <import\r
-               resource="classpath:/org/argeo/slc/ws/client/spring/applicationContext.xml" />\r
-\r
-       <bean name="executionBuildListener"\r
-               class="org.argeo.slc.ant.SlcExecutionBuildListener">\r
-               <property name="notifiers">\r
-                       <list>\r
-                               <ref bean="webServiceNotifier" />\r
-                       </list>\r
-               </property>\r
-       </bean>\r
-\r
-       <bean name="fileNotifier"\r
-               class="org.argeo.slc.core.process.FileSlcExecutionNotifier">\r
-               <property name="basePath" value="${slc.workDir}/process" />\r
-               <property name="marshaller" ref="slcDefault.castor.marshaller" />\r
-       </bean>\r
-\r
-       <bean name="webServiceNotifier"\r
-               class="org.argeo.slc.core.process.WebServiceSlcExecutionNotifier">\r
-               <property name="template"\r
-                       ref="slcDefault.ws.client.webServiceTemplate" />\r
-       </bean>\r
-\r
-</beans>
\ No newline at end of file
index 2ebde04483bb7504400aedaf23dda0d61d321739..9601c3301d8d0fb55ab424a4332eae9fa6717ec8 100644 (file)
@@ -4,6 +4,8 @@
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
 \r
        <import\r
-               resource="classpath:/org/argeo/slc/castor/applicationContext.xml" />\r
+               resource="classpath:/org/argeo/slc/xml/spring/applicationContext.xml" />\r
+       <import\r
+               resource="classpath:/org/argeo/slc/castor/spring/applicationContext.xml" />\r
 \r
 </beans>
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/test/resources/org/argeo/slc/ws/applicationContext.xml b/org.argeo.slc.core/src/test/resources/org/argeo/slc/ws/applicationContext.xml
new file mode 100644 (file)
index 0000000..a94d128
--- /dev/null
@@ -0,0 +1,11 @@
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
+\r
+       <import\r
+               resource="classpath:/org/argeo/slc/ws/client/spring/applicationContext.xml" />\r
+       <import resource="classpath:/org/argeo/slc/ant/nonDepContext.xml" />\r
+       <import resource="execution.xml" />\r
+       <import resource="result.xml" />\r
+\r
+</beans>\r
diff --git a/org.argeo.slc.core/src/test/resources/org/argeo/slc/ws/execution.xml b/org.argeo.slc.core/src/test/resources/org/argeo/slc/ws/execution.xml
new file mode 100644 (file)
index 0000000..bdb071b
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
+\r
+       <import\r
+               resource="classpath:/org/argeo/slc/ws/client/spring/applicationContext.xml" />\r
+\r
+       <bean name="executionBuildListener"\r
+               class="org.argeo.slc.ant.SlcExecutionBuildListener">\r
+               <property name="notifiers">\r
+                       <list>\r
+                               <ref bean="webServiceNotifier" />\r
+                       </list>\r
+               </property>\r
+       </bean>\r
+\r
+       <bean name="fileNotifier"\r
+               class="org.argeo.slc.core.process.FileSlcExecutionNotifier">\r
+               <property name="basePath" value="${slc.workDir}/process" />\r
+               <property name="marshaller" ref="slcDefault.castor.marshaller" />\r
+       </bean>\r
+\r
+       <bean name="webServiceNotifier"\r
+               class="org.argeo.slc.core.process.WebServiceSlcExecutionNotifier">\r
+               <property name="template"\r
+                       ref="slcDefault.ws.client.webServiceTemplate" />\r
+       </bean>\r
+\r
+</beans>
\ No newline at end of file
diff --git a/org.argeo.slc.core/src/test/resources/org/argeo/slc/ws/result.xml b/org.argeo.slc.core/src/test/resources/org/argeo/slc/ws/result.xml
new file mode 100644 (file)
index 0000000..27eb955
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans xmlns="http://www.springframework.org/schema/beans"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
+\r
+       <import\r
+               resource="classpath:/org/argeo/slc/ws/client/spring/applicationContext.xml" />\r
+\r
+       <bean id="testResult"\r
+               class="org.argeo.slc.core.test.tree.TreeTestResult">\r
+               <property name="uuid">\r
+                       <bean factory-bean="uuid" factory-method="toString"></bean>\r
+               </property>\r
+               <property name="listeners">\r
+                       <list>\r
+                               <ref bean="resultLogger" />\r
+                               <ref bean="resultWsNotfier" />\r
+                       </list>\r
+               </property>\r
+       </bean>\r
+\r
+       <bean name="resultWsNotfier"\r
+               class="org.argeo.slc.core.test.tree.WebServiceSlcExecutionNotifier">\r
+               <property name="template"\r
+                       ref="slcDefault.ws.client.webServiceTemplate" />\r
+       </bean>\r
+\r
+</beans>
\ No newline at end of file