]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/ServiceMsgHandler.java
Fix issue with the ordering of event on the server side.
[gpl/argeo-slc.git] / runtime / org.argeo.slc.server / src / main / java / org / argeo / slc / services / ServiceMsgHandler.java
diff --git a/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/ServiceMsgHandler.java b/runtime/org.argeo.slc.server/src/main/java/org/argeo/slc/services/ServiceMsgHandler.java
new file mode 100644 (file)
index 0000000..87579ea
--- /dev/null
@@ -0,0 +1,43 @@
+package org.argeo.slc.services;
+
+import org.argeo.slc.SlcException;
+import org.argeo.slc.msg.MsgHandler;
+import org.argeo.slc.msg.process.SlcExecutionStatusRequest;
+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.process.SlcExecution;
+import org.argeo.slc.services.process.SlcExecutionService;
+import org.argeo.slc.services.test.TestManagerService;
+
+public class ServiceMsgHandler implements MsgHandler {
+       private TestManagerService testManagerService;
+       private SlcExecutionService slcExecutionService;
+
+       public Object handleMsg(Object msg) {
+               if (msg instanceof SlcExecution)
+                       slcExecutionService.newExecution((SlcExecution) msg);
+               else if (msg instanceof SlcExecutionStatusRequest)
+                       slcExecutionService.updateStatus((SlcExecutionStatusRequest) msg);
+               else if (msg instanceof CreateTreeTestResultRequest)
+                       testManagerService
+                                       .createTreeTestResult((CreateTreeTestResultRequest) msg);
+               else if (msg instanceof ResultPartRequest)
+                       testManagerService.addResultPart((ResultPartRequest) msg);
+               else if (msg instanceof CloseTreeTestResultRequest)
+                       testManagerService
+                                       .closeTreeTestResult((CloseTreeTestResultRequest) msg);
+               else
+                       throw new SlcException("Unrecognized message type " + msg);
+               return null;
+       }
+
+       public void setTestManagerService(TestManagerService testManagerService) {
+               this.testManagerService = testManagerService;
+       }
+
+       public void setSlcExecutionService(SlcExecutionService slcExecutionService) {
+               this.slcExecutionService = slcExecutionService;
+       }
+
+}