add process engine with tests
diff --git a/components/basys.components/.classpath b/components/basys.components/.classpath
index c0f53a3..84f19a0 100644
--- a/components/basys.components/.classpath
+++ b/components/basys.components/.classpath
@@ -4,23 +4,24 @@
<classpathentry kind="src" output="target/classes" path="src">
<attributes>
<attribute name="maven.pomderived" value="true"/>
+ <attribute name="optional" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/classes" path="servlets">
<attributes>
<attribute name="maven.pomderived" value="true"/>
+ <attribute name="optional" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/5"/>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
- <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
- <attribute name="owner.project.facets" value="java"/>
+ <attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
diff --git a/components/basys.components/.settings/org.eclipse.jdt.core.prefs b/components/basys.components/.settings/org.eclipse.jdt.core.prefs
index 529ef07..2d1de9d 100644
--- a/components/basys.components/.settings/org.eclipse.jdt.core.prefs
+++ b/components/basys.components/.settings/org.eclipse.jdt.core.prefs
@@ -10,4 +10,5 @@
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8
diff --git a/components/basys.components/.settings/org.eclipse.wst.common.component b/components/basys.components/.settings/org.eclipse.wst.common.component
index ea61ed3..2906b88 100644
--- a/components/basys.components/.settings/org.eclipse.wst.common.component
+++ b/components/basys.components/.settings/org.eclipse.wst.common.component
@@ -5,9 +5,6 @@
<wb-resource deploy-path="/WEB-INF/classes" source-path="/regression"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/servlets"/>
- <dependent-module archiveName="basys.sdk-0.0.1-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/basys.sdk/basys.sdk">
- <dependency-type>uses</dependency-type>
- </dependent-module>
<property name="context-root" value="basys.components"/>
<property name="java-output-path" value="/basys.components/build/classes"/>
</wb-module>
diff --git a/components/basys.components/WebContent/META-INF/MANIFEST.MF b/components/basys.components/WebContent/META-INF/MANIFEST.MF
index 5e94951..58630c0 100644
--- a/components/basys.components/WebContent/META-INF/MANIFEST.MF
+++ b/components/basys.components/WebContent/META-INF/MANIFEST.MF
@@ -1,3 +1,2 @@
Manifest-Version: 1.0
-Class-Path:
diff --git a/components/basys.components/WebContent/WEB-INF/config/processengine/SimpleTransportProcess.bpmn20.xml b/components/basys.components/WebContent/WEB-INF/config/processengine/SimpleTransportProcess.bpmn20.xml
index f0be872..843ca7f 100644
--- a/components/basys.components/WebContent/WEB-INF/config/processengine/SimpleTransportProcess.bpmn20.xml
+++ b/components/basys.components/WebContent/WEB-INF/config/processengine/SimpleTransportProcess.bpmn20.xml
@@ -1,172 +1,175 @@
<?xml version="1.0" encoding="UTF-8"?>
-<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" targetNamespace="http://www.activiti.org/test" exporter="Camunda Modeler" exporterVersion="1.16.2">
- <process id="smsProcess" name="SMS Coilcar Process" isExecutable="true">
- <startEvent id="startevent1" name="Start" />
- <serviceTask id="step5" name="pick up coil" activiti:class="org.activiti.javadelegate.CoilcarServiceDelegate">
+<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test" exporter="Camunda Modeler" exporterVersion="1.16.2">
+ <process id="SimpleTransportProcess" name="transport process using coil-car" isExecutable="true">
+ <startEvent id="startevent1" name="Start"></startEvent>
+ <serviceTask id="step5" name="pick up coil" activiti:class="org.eclipse.basyx.components.processengine.connector.DeviceServiceDelegate">
<extensionElements>
<activiti:field name="serviceName">
- <activiti:string>liftTo</activiti:string>
+ <activiti:string><![CDATA[liftTo]]></activiti:string>
</activiti:field>
<activiti:field name="serviceProvider">
- <activiti:string>coilcar</activiti:string>
- </activiti:field>
+ <activiti:string><![CDATA[coilcar]]></activiti:string></activiti:field>
<activiti:field name="serviceParameter">
- <activiti:string>json</activiti:string>
- </activiti:field>
- <camunda:executionListener class="" event="end" />
+ <activiti:string><![CDATA[{"_basyxTypes":"list","_value":[0]}]]></activiti:string></activiti:field>
</extensionElements>
</serviceTask>
- <serviceTask id="step6" name="bring coil before spindle" activiti:class="org.activiti.javadelegate.CoilcarServiceDelegate">
+ <serviceTask id="step6" name="bring coil before spindle" activiti:class="org.eclipse.basyx.components.processengine.connector.DeviceServiceDelegate">
<extensionElements>
<activiti:field name="serviceName">
- <activiti:string>driveTo</activiti:string>
+ <activiti:string><![CDATA[moveTo]]></activiti:string>
</activiti:field>
- <activiti:field name="position">
- <activiti:string>5</activiti:string>
- </activiti:field>
- <camunda:executionListener class="" event="start" />
+ <activiti:field name="serviceProvider">
+ <activiti:string><![CDATA[coilcar]]></activiti:string></activiti:field>
+ <activiti:field name="serviceParameter">
+ <activiti:string><![CDATA[{"_basyxTypes":"list","_value":[5]}]]></activiti:string></activiti:field>
</extensionElements>
</serviceTask>
- <sequenceFlow id="flow5" sourceRef="step5" targetRef="step6" />
+ <sequenceFlow id="flow5" sourceRef="step5" targetRef="step6"></sequenceFlow>
<sequenceFlow id="flow6" sourceRef="exclusivegateway1" targetRef="step5">
- <conditionExpression xsi:type="tFormalExpression">${coilposition == 1}</conditionExpression>
+ <conditionExpression xsi:type="tFormalExpression"><![CDATA[${coilposition == 1}]]></conditionExpression>
</sequenceFlow>
- <endEvent id="endevent1" name="End" />
- <serviceTask id="servicetask1" name="Lift coil until inline" activiti:class="org.activiti.javadelegate.CoilcarServiceDelegate">
+ <endEvent id="endevent1" name="End"></endEvent>
+ <serviceTask id="servicetask1" name="Lift coil until inline" activiti:class="org.eclipse.basyx.components.processengine.connector.DeviceServiceDelegate">
<extensionElements>
<activiti:field name="serviceName">
- <activiti:string>liftTo</activiti:string>
+ <activiti:string><![CDATA[liftTo]]></activiti:string>
</activiti:field>
- <activiti:field name="position">
- <activiti:string>4</activiti:string>
- </activiti:field>
+ <activiti:field name="serviceProvider">
+ <activiti:string><![CDATA[coilcar]]></activiti:string></activiti:field>
+ <activiti:field name="serviceParameter">
+ <activiti:string><![CDATA[ {"_basyxTypes":"list","_value":[5]}]]></activiti:string></activiti:field>
</extensionElements>
</serviceTask>
- <sequenceFlow id="flow7" sourceRef="step6" targetRef="servicetask1" />
- <sequenceFlow id="flow8" sourceRef="servicetask4" targetRef="endevent1" />
- <serviceTask id="servicetask2" name="put coil onto spindle" activiti:class="org.activiti.javadelegate.CoilcarServiceDelegate">
+ <sequenceFlow id="flow7" sourceRef="step6" targetRef="servicetask1"></sequenceFlow>
+ <sequenceFlow id="flow8" sourceRef="servicetask4" targetRef="endevent1"></sequenceFlow>
+ <serviceTask id="servicetask2" name="put coil onto spindle" activiti:class="org.eclipse.basyx.components.processengine.connector.DeviceServiceDelegate">
<extensionElements>
<activiti:field name="serviceName">
- <activiti:string>driveTo</activiti:string>
+ <activiti:string><![CDATA[moveTo]]></activiti:string>
</activiti:field>
- <activiti:field name="position">
- <activiti:string>6</activiti:string>
- </activiti:field>
+ <activiti:field name="serviceProvider">
+ <activiti:string><![CDATA[coilcar]]></activiti:string></activiti:field>
+ <activiti:field name="serviceParameter">
+ <activiti:string><![CDATA[ {"_basyxTypes":"list","_value":[6]}]]></activiti:string></activiti:field>
</extensionElements>
</serviceTask>
- <serviceTask id="servicetask3" name="lift down" activiti:class="org.activiti.javadelegate.CoilcarServiceDelegate">
+ <serviceTask id="servicetask3" name="lift down" activiti:class="org.eclipse.basyx.components.processengine.connector.DeviceServiceDelegate">
<extensionElements>
<activiti:field name="serviceName">
- <activiti:string>liftTo</activiti:string>
+ <activiti:string><![CDATA[liftTo]]></activiti:string>
</activiti:field>
- <activiti:field name="position">
- <activiti:string>1</activiti:string>
- </activiti:field>
+ <activiti:field name="serviceProvider">
+ <activiti:string><![CDATA[coilcar]]></activiti:string></activiti:field>
+ <activiti:field name="serviceParameter">
+ <activiti:string><![CDATA[ {"_basyxTypes":"list","_value":[0]}]]></activiti:string></activiti:field>
</extensionElements>
</serviceTask>
- <sequenceFlow id="flow12" sourceRef="servicetask2" targetRef="servicetask3" />
- <sequenceFlow id="flow13" sourceRef="servicetask1" targetRef="servicetask2" />
- <serviceTask id="servicetask4" name="move back" activiti:class="org.activiti.javadelegate.CoilcarServiceDelegate">
+ <sequenceFlow id="flow12" sourceRef="servicetask2" targetRef="servicetask3"></sequenceFlow>
+ <sequenceFlow id="flow13" sourceRef="servicetask1" targetRef="servicetask2"></sequenceFlow>
+ <serviceTask id="servicetask4" name="move back" activiti:class="org.eclipse.basyx.components.processengine.connector.DeviceServiceDelegate">
<extensionElements>
<activiti:field name="serviceName">
- <activiti:string>driveTo</activiti:string>
+ <activiti:string><![CDATA[moveTo]]></activiti:string>
</activiti:field>
- <activiti:field name="position">
- <activiti:string>1</activiti:string>
- </activiti:field>
+ <activiti:field name="serviceProvider">
+ <activiti:string><![CDATA[coilcar]]></activiti:string></activiti:field>
+ <activiti:field name="serviceParameter">
+ <activiti:string><![CDATA[ {"_basyxTypes":"list","_value":[0]}]]></activiti:string></activiti:field>
</extensionElements>
</serviceTask>
- <sequenceFlow id="flow14" sourceRef="servicetask3" targetRef="servicetask4" />
- <exclusiveGateway id="exclusivegateway1" name="check start position of coil" />
- <sequenceFlow id="flow15" sourceRef="startevent1" targetRef="exclusivegateway1" />
- <serviceTask id="servicetask5" name="move to coil" activiti:class="org.activiti.javadelegate.CoilcarServiceDelegate">
+ <sequenceFlow id="flow14" sourceRef="servicetask3" targetRef="servicetask4"></sequenceFlow>
+ <exclusiveGateway id="exclusivegateway1" name="check start position of coil"></exclusiveGateway>
+ <sequenceFlow id="flow15" sourceRef="startevent1" targetRef="exclusivegateway1"></sequenceFlow>
+ <serviceTask id="servicetask5" name="move to coil" activiti:class="org.eclipse.basyx.components.processengine.connector.DeviceServiceDelegate">
<extensionElements>
<activiti:field name="serviceName">
- <activiti:string>driveTo</activiti:string>
+ <activiti:string><![CDATA[moveTo]]></activiti:string>
</activiti:field>
- <activiti:field name="position">
- <activiti:string>1</activiti:string>
- </activiti:field>
+ <activiti:field name="serviceProvider">
+ <activiti:string><![CDATA[coilcar]]></activiti:string></activiti:field>
+ <activiti:field name="serviceParameter">
+ <activiti:string><![CDATA[{"_basyxTypes":"list","_value":[0]}]]></activiti:string></activiti:field>
</extensionElements>
</serviceTask>
<sequenceFlow id="flow16" sourceRef="exclusivegateway1" targetRef="servicetask5">
- <conditionExpression xsi:type="tFormalExpression">${coilposition==2}</conditionExpression>
+ <conditionExpression xsi:type="tFormalExpression"><![CDATA[${coilposition==2}]]></conditionExpression>
</sequenceFlow>
- <sequenceFlow id="flow17" sourceRef="servicetask5" targetRef="step5" />
+ <sequenceFlow id="flow17" sourceRef="servicetask5" targetRef="step5"></sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_smsProcess">
- <bpmndi:BPMNPlane id="BPMNPlane_smsProcess" bpmnElement="smsProcess">
- <bpmndi:BPMNShape id="BPMNShape_startevent1" bpmnElement="startevent1">
- <omgdc:Bounds x="12" y="128" width="35" height="35" />
+ <bpmndi:BPMNPlane bpmnElement="smsProcess" id="BPMNPlane_smsProcess">
+ <bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1">
+ <omgdc:Bounds height="35.0" width="35.0" x="12.0" y="128.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_step5" bpmnElement="step5">
- <omgdc:Bounds x="240" y="109" width="105" height="71" />
+ <bpmndi:BPMNShape bpmnElement="step5" id="BPMNShape_step5">
+ <omgdc:Bounds height="71.0" width="105.0" x="240.0" y="109.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_step6" bpmnElement="step6">
- <omgdc:Bounds x="380" y="109" width="105" height="71" />
+ <bpmndi:BPMNShape bpmnElement="step6" id="BPMNShape_step6">
+ <omgdc:Bounds height="71.0" width="105.0" x="380.0" y="109.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_endevent1" bpmnElement="endevent1">
- <omgdc:Bounds x="1140" y="127" width="35" height="35" />
+ <bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
+ <omgdc:Bounds height="35.0" width="35.0" x="1140.0" y="127.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_servicetask1" bpmnElement="servicetask1">
- <omgdc:Bounds x="530" y="109" width="105" height="71" />
+ <bpmndi:BPMNShape bpmnElement="servicetask1" id="BPMNShape_servicetask1">
+ <omgdc:Bounds height="71.0" width="105.0" x="530.0" y="109.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_servicetask2" bpmnElement="servicetask2">
- <omgdc:Bounds x="690" y="106" width="105" height="71" />
+ <bpmndi:BPMNShape bpmnElement="servicetask2" id="BPMNShape_servicetask2">
+ <omgdc:Bounds height="71.0" width="105.0" x="690.0" y="106.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_servicetask3" bpmnElement="servicetask3">
- <omgdc:Bounds x="840" y="107" width="105" height="71" />
+ <bpmndi:BPMNShape bpmnElement="servicetask3" id="BPMNShape_servicetask3">
+ <omgdc:Bounds height="71.0" width="105.0" x="840.0" y="107.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_servicetask4" bpmnElement="servicetask4">
- <omgdc:Bounds x="980" y="117" width="105" height="55" />
+ <bpmndi:BPMNShape bpmnElement="servicetask4" id="BPMNShape_servicetask4">
+ <omgdc:Bounds height="55.0" width="105.0" x="980.0" y="117.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_exclusivegateway1" bpmnElement="exclusivegateway1" isMarkerVisible="true">
- <omgdc:Bounds x="110" y="125" width="40" height="40" />
+ <bpmndi:BPMNShape bpmnElement="exclusivegateway1" id="BPMNShape_exclusivegateway1">
+ <omgdc:Bounds height="40.0" width="40.0" x="89.0" y="125.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
- <bpmndi:BPMNShape id="BPMNShape_servicetask5" bpmnElement="servicetask5">
- <omgdc:Bounds x="240" y="237" width="105" height="55" />
+ <bpmndi:BPMNShape bpmnElement="servicetask5" id="BPMNShape_servicetask5">
+ <omgdc:Bounds height="55.0" width="105.0" x="160.0" y="240.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
- <bpmndi:BPMNEdge id="BPMNEdge_flow5" bpmnElement="flow5">
- <omgdi:waypoint x="345" y="144" />
- <omgdi:waypoint x="380" y="144" />
+ <bpmndi:BPMNEdge bpmnElement="flow5" id="BPMNEdge_flow5">
+ <omgdi:waypoint x="345.0" y="144.0"></omgdi:waypoint>
+ <omgdi:waypoint x="380.0" y="144.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="BPMNEdge_flow6" bpmnElement="flow6">
- <omgdi:waypoint x="150" y="145" />
- <omgdi:waypoint x="240" y="144" />
+ <bpmndi:BPMNEdge bpmnElement="flow6" id="BPMNEdge_flow6">
+ <omgdi:waypoint x="129.0" y="145.0"></omgdi:waypoint>
+ <omgdi:waypoint x="240.0" y="144.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="BPMNEdge_flow7" bpmnElement="flow7">
- <omgdi:waypoint x="485" y="144" />
- <omgdi:waypoint x="530" y="144" />
+ <bpmndi:BPMNEdge bpmnElement="flow7" id="BPMNEdge_flow7">
+ <omgdi:waypoint x="485.0" y="144.0"></omgdi:waypoint>
+ <omgdi:waypoint x="530.0" y="144.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="BPMNEdge_flow8" bpmnElement="flow8">
- <omgdi:waypoint x="1085" y="144" />
- <omgdi:waypoint x="1140" y="144" />
+ <bpmndi:BPMNEdge bpmnElement="flow8" id="BPMNEdge_flow8">
+ <omgdi:waypoint x="1085.0" y="144.0"></omgdi:waypoint>
+ <omgdi:waypoint x="1140.0" y="144.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="BPMNEdge_flow12" bpmnElement="flow12">
- <omgdi:waypoint x="795" y="141" />
- <omgdi:waypoint x="840" y="142" />
+ <bpmndi:BPMNEdge bpmnElement="flow12" id="BPMNEdge_flow12">
+ <omgdi:waypoint x="795.0" y="141.0"></omgdi:waypoint>
+ <omgdi:waypoint x="840.0" y="142.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="BPMNEdge_flow13" bpmnElement="flow13">
- <omgdi:waypoint x="635" y="144" />
- <omgdi:waypoint x="690" y="141" />
+ <bpmndi:BPMNEdge bpmnElement="flow13" id="BPMNEdge_flow13">
+ <omgdi:waypoint x="635.0" y="144.0"></omgdi:waypoint>
+ <omgdi:waypoint x="690.0" y="141.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="BPMNEdge_flow14" bpmnElement="flow14">
- <omgdi:waypoint x="945" y="142" />
- <omgdi:waypoint x="980" y="144" />
+ <bpmndi:BPMNEdge bpmnElement="flow14" id="BPMNEdge_flow14">
+ <omgdi:waypoint x="945.0" y="142.0"></omgdi:waypoint>
+ <omgdi:waypoint x="980.0" y="144.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="BPMNEdge_flow15" bpmnElement="flow15">
- <omgdi:waypoint x="47" y="145" />
- <omgdi:waypoint x="110" y="145" />
+ <bpmndi:BPMNEdge bpmnElement="flow15" id="BPMNEdge_flow15">
+ <omgdi:waypoint x="29.0" y="163.0"></omgdi:waypoint>
+ <omgdi:waypoint x="47.0" y="197.0"></omgdi:waypoint>
+ <omgdi:waypoint x="109.0" y="165.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="BPMNEdge_flow16" bpmnElement="flow16">
- <omgdi:waypoint x="130" y="165" />
- <omgdi:waypoint x="129" y="265" />
- <omgdi:waypoint x="240" y="264" />
+ <bpmndi:BPMNEdge bpmnElement="flow16" id="BPMNEdge_flow16">
+ <omgdi:waypoint x="109.0" y="165.0"></omgdi:waypoint>
+ <omgdi:waypoint x="110.0" y="267.0"></omgdi:waypoint>
+ <omgdi:waypoint x="160.0" y="267.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
- <bpmndi:BPMNEdge id="BPMNEdge_flow17" bpmnElement="flow17">
- <omgdi:waypoint x="292" y="237" />
- <omgdi:waypoint x="292" y="180" />
+ <bpmndi:BPMNEdge bpmnElement="flow17" id="BPMNEdge_flow17">
+ <omgdi:waypoint x="212.0" y="240.0"></omgdi:waypoint>
+ <omgdi:waypoint x="292.0" y="180.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
-</definitions>
+</definitions>
\ No newline at end of file
diff --git a/components/basys.components/WebContent/WEB-INF/config/processengine/activiti.cfg.xml b/components/basys.components/WebContent/WEB-INF/config/processengine/activiti.cfg.xml
deleted file mode 100644
index 1948508..0000000
--- a/components/basys.components/WebContent/WEB-INF/config/processengine/activiti.cfg.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?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.xsd">
-
- <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
- <property name="databaseSchemaUpdate" value="true"/>
- <property name="asyncExecutorActivate" value="true" />
- </bean>
-</beans>
\ No newline at end of file
diff --git a/components/basys.components/pom.xml b/components/basys.components/pom.xml
index 131fe25..316bc4c 100644
--- a/components/basys.components/pom.xml
+++ b/components/basys.components/pom.xml
@@ -1,278 +1,382 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>basys.components</groupId>
- <artifactId>basys.components</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>jar</packaging>
- <name>BaSys Components</name>
-
- <repositories>
- <repository>
- <id>data-local</id>
- <name>data</name>
- <url>file://${project.basedir}/repo</url>
- </repository>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>basys.components</groupId>
+ <artifactId>basys.components</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>jar</packaging>
+ <name>BaSys Components</name>
+
+ <repositories>
+ <repository>
+ <id>data-local</id>
+ <name>data</name>
+ <url>file://${project.basedir}/repo</url>
+ </repository>
</repositories>
- <build>
- <sourceDirectory></sourceDirectory>
-
- <resources>
- <resource>
- <directory>src</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>servlets</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>regression/org/eclipse/basyx/regression/support</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
-
- <testSourceDirectory>
+ <build>
+ <sourceDirectory>src</sourceDirectory>
+
+ <testSourceDirectory>
${project.basedir}/regression/org/eclipse/basyx/regression
- </testSourceDirectory>
-
- <plugins>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>3.7.0</version>
- <configuration>
- <source>1.8</source>
- <target>1.8</target>
- <compilerArgument>-proc:none</compilerArgument>
- </configuration>
- </plugin>
-
- <plugin>
- <artifactId>maven-war-plugin</artifactId>
- <version>3.0.0</version>
- <!-- <configuration>
- <warSourceDirectory>WebContent</warSourceDirectory>
- </configuration> -->
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <!-- <version>2.12.1</version> -->
- <version>2.4.2</version>
- <configuration>
- <excludes>
- <exclude>**/*HTTP*</exclude>
- <exclude>**/*TCP*</exclude>
- </excludes>
- </configuration>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-failsafe-plugin</artifactId>
- <version>2.12.4</version>
- <configuration>
- <includes>
- <include>**/*HTTP*</include>
- <include>**/*TCP*</include>
- </includes>
- </configuration>
- <executions>
- <execution>
- <goals>
- <goal>integration-test</goal>
- <goal>verify</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
-
-
- <!-- Export Jar file to /examples package -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <version>2.3.1</version>
- <configuration>
- <outputDirectory>../../examples/basys.examples/repo/basys/components/basys.components/0.0.1-SNAPSHOT</outputDirectory>
- </configuration>
- </plugin>
-
- </plugins>
- </build>
-
- <dependencies>
-
-
- <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
- <!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api -->
- <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-client -->
- <!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
- <!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-catalina (Tomcat 8, not 9) -->
-
+ </testSourceDirectory>
+
+ <plugins>
+ <!-- Add sources for servlets and regression-support to sourceDirectory -->
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>3.0.0</version>
+ <executions>
+ <execution>
+ <id>attachServlets</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>servlets</source>
+ </sources>
+ </configuration>
+ </execution>
+ <execution>
+ <id>attachSupport</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>regression/org/eclipse/basyx/regression/support</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.7.0</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>3.0.0</version>
+ <!-- <configuration> <warSourceDirectory>WebContent</warSourceDirectory>
+ </configuration> -->
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <!-- <version>2.12.1</version> -->
+ <version>2.4.2</version>
+ <configuration>
+ <excludes>
+ <exclude>**/*HTTP*</exclude>
+ <exclude>**/*TCP*</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <version>2.12.4</version>
+ <configuration>
+ <includes>
+ <include>**/*HTTP*</include>
+ <include>**/*TCP*</include>
+ </includes>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <!-- Attach sources to jar file -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-source-plugin</artifactId>
+ <version>3.1.0</version>
+ <executions>
+ <execution>
+ <id>attach-sources</id>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <!-- Install jar file to /components and /examples package -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-install-plugin</artifactId>
+ <version>3.0.0-M1</version>
+ <configuration>
+ <artifactId>basys.components</artifactId>
+ <groupId>basys</groupId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>jar</packaging>
+ </configuration>
+ <executions>
+ <execution>
+ <id>installExamples</id>
+ <goals>
+ <goal>install-file</goal>
+ </goals>
+ <phase>install</phase>
+ <configuration>
+ <file>target/basys.components-0.0.1-SNAPSHOT.jar</file>
+ <localRepositoryPath>../../examples/basys.examples/repo/</localRepositoryPath>
+ </configuration>
+ </execution>
+ <execution>
+ <id>installExamplesSources</id>
+ <goals>
+ <goal>install-file</goal>
+ </goals>
+ <phase>install</phase>
+ <configuration>
+ <file>target/basys.components-0.0.1-SNAPSHOT-sources.jar</file>
+ <classifier>sources</classifier>
+ <localRepositoryPath>../../examples/basys.examples/repo/</localRepositoryPath>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+ </build>
+
+ <dependencies>
<dependency>
- <groupId>org.json</groupId>
- <artifactId>json</artifactId>
- <version>20180813</version>
- <!-- <scope>provided</scope> -->
- </dependency>
-
- <!-- Dependencies removed from Classpath -->
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.12</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
+ <!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-catalina
+ (Tomcat 8, not 9) -->
+ <dependency>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat-catalina</artifactId>
+ <version>8.0.32</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api -->
+ <dependency>
+ <groupId>javax.ws.rs</groupId>
+ <artifactId>javax.ws.rs-api</artifactId>
+ <version>2.1</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-client -->
+ <dependency>
+ <groupId>org.glassfish.jersey.core</groupId>
+ <artifactId>jersey-client</artifactId>
+ <version>2.26-b03</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
+ <dependency>
+ <groupId>org.json</groupId>
+ <artifactId>json</artifactId>
+ <version>20180813</version>
+ <!-- <scope>provided</scope> -->
+ </dependency>
+ <!-- Dependencies removed from Classpath -->
<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
<dependency>
- <groupId>org.postgresql</groupId>
- <artifactId>postgresql</artifactId>
- <version>42.2.2</version>
+ <groupId>org.postgresql</groupId>
+ <artifactId>postgresql</artifactId>
+ <version>42.2.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish.hk2.external/aopalliance-repackaged -->
<dependency>
- <groupId>org.glassfish.hk2.external</groupId>
- <artifactId>aopalliance-repackaged</artifactId>
- <version>2.5.0-b42</version>
+ <groupId>org.glassfish.hk2.external</groupId>
+ <artifactId>aopalliance-repackaged</artifactId>
+ <version>2.5.0-b42</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.enterprise/cdi-api -->
<dependency>
- <groupId>javax.enterprise</groupId>
- <artifactId>cdi-api</artifactId>
- <version>2.0</version>
- <scope>provided</scope>
+ <groupId>javax.enterprise</groupId>
+ <artifactId>cdi-api</artifactId>
+ <version>2.0</version>
+ <scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.el/el-api -->
<dependency>
- <groupId>javax.el</groupId>
- <artifactId>el-api</artifactId>
- <version>2.2</version>
+ <groupId>javax.el</groupId>
+ <artifactId>el-api</artifactId>
+ <version>2.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish.hk2/hk2-api -->
<dependency>
- <groupId>org.glassfish.hk2</groupId>
- <artifactId>hk2-api</artifactId>
- <version>2.5.0</version>
+ <groupId>org.glassfish.hk2</groupId>
+ <artifactId>hk2-api</artifactId>
+ <version>2.5.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javassist/javassist -->
<dependency>
- <groupId>javassist</groupId>
- <artifactId>javassist</artifactId>
- <version>3.12.1.GA</version>
+ <groupId>javassist</groupId>
+ <artifactId>javassist</artifactId>
+ <version>3.12.1.GA</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
<!-- https://mvnrepository.com/artifact/javax.inject/javax.inject -->
<dependency>
- <groupId>javax.inject</groupId>
- <artifactId>javax.inject</artifactId>
- <version>1</version>
+ <groupId>javax.inject</groupId>
+ <artifactId>javax.inject</artifactId>
+ <version>1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.json/javax.json-api -->
<dependency>
- <groupId>javax.json</groupId>
- <artifactId>javax.json-api</artifactId>
- <version>1.0</version>
+ <groupId>javax.json</groupId>
+ <artifactId>javax.json-api</artifactId>
+ <version>1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api -->
<dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- <version>2.3.0</version>
+ <groupId>javax.xml.bind</groupId>
+ <artifactId>jaxb-api</artifactId>
+ <version>2.3.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.jboss.spec.javax.interceptor/jboss-interceptors-api_1.1_spec -->
<dependency>
- <groupId>org.jboss.spec.javax.interceptor</groupId>
- <artifactId>jboss-interceptors-api_1.1_spec</artifactId>
- <version>1.0.1.Final</version>
+ <groupId>org.jboss.spec.javax.interceptor</groupId>
+ <artifactId>jboss-interceptors-api_1.1_spec</artifactId>
+ <version>1.0.1.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
<dependency>
- <groupId>javax.annotation</groupId>
- <artifactId>javax.annotation-api</artifactId>
- <version>1.3.2</version>
+ <groupId>javax.annotation</groupId>
+ <artifactId>javax.annotation-api</artifactId>
+ <version>1.3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.osgi/org.osgi.core -->
<dependency>
- <groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
- <version>4.2.0</version>
- <scope>provided</scope>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <version>4.2.0</version>
+ <scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish.hk2/osgi-resource-locator -->
<dependency>
- <groupId>org.glassfish.hk2</groupId>
- <artifactId>osgi-resource-locator</artifactId>
- <version>1.0.1</version>
+ <groupId>org.glassfish.hk2</groupId>
+ <artifactId>osgi-resource-locator</artifactId>
+ <version>1.0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.persistence/persistence-api -->
<dependency>
- <groupId>javax.persistence</groupId>
- <artifactId>persistence-api</artifactId>
- <version>1.0.2</version>
+ <groupId>javax.persistence</groupId>
+ <artifactId>persistence-api</artifactId>
+ <version>1.0.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
<dependency>
- <groupId>javax.validation</groupId>
- <artifactId>validation-api</artifactId>
- <version>2.0.1.Final</version>
+ <groupId>javax.validation</groupId>
+ <artifactId>validation-api</artifactId>
+ <version>2.0.1.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>3.1.0</version>
- <scope>provided</scope>
+ <groupId>javax.servlet</groupId>
+ <artifactId>javax.servlet-api</artifactId>
+ <version>3.1.0</version>
+ <scope>provided</scope>
</dependency>
-
+
<!-- https://mvnrepository.com/artifact/org.eclipse/yasson -->
<dependency>
- <groupId>org.eclipse</groupId>
- <artifactId>yasson</artifactId>
- <version>1.0.2</version>
+ <groupId>org.eclipse</groupId>
+ <artifactId>yasson</artifactId>
+ <version>1.0.2</version>
</dependency>
-
- <!-- https://mvnrepository.com/artifact/javax.xml.xquery/xqj-api (Add from local repository because jar cannot be found on maven central -->
+<!-- https://mvnrepository.com/artifact/org.activiti/activiti-engine -->
<dependency>
- <groupId>javax.xml.xquery</groupId>
- <artifactId>xqj-api</artifactId>
- <version>1.0</version>
+ <groupId>org.activiti</groupId>
+ <artifactId>activiti-engine</artifactId>
+ <version>6.0.0</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/org.activiti/activiti-bpmn-model -->
+ <dependency>
+ <groupId>org.activiti</groupId>
+ <artifactId>activiti-bpmn-model</artifactId>
+ <version>6.0.0</version>
</dependency>
+ <!-- https://mvnrepository.com/artifact/org.activiti/activiti-bpmn-layout -->
+ <dependency>
+ <groupId>org.activiti</groupId>
+ <artifactId>activiti-bpmn-layout</artifactId>
+ <version>6.0.0</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.4</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/com.h2database/h2 -->
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <version>1.4.197</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>1.7.5</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/javax.xml.xquery/xqj-api (Add from
+ local repository because jar cannot be found on maven central -->
+ <dependency>
+ <groupId>javax.xml.xquery</groupId>
+ <artifactId>xqj-api</artifactId>
+ <version>1.0</version>
+ </dependency>
+
<!-- https://mvnrepository.com/artifact/net.sf.saxon/saxon-xqj -->
- <!-- <dependency>
- <groupId>net.sf.saxon</groupId>
- <artifactId>saxon-xqj</artifactId>
- <version>9.x</version>
- </dependency> -->
-
+ <!-- <dependency> <groupId>net.sf.saxon</groupId> <artifactId>saxon-xqj</artifactId>
+ <version>9.x</version> </dependency> -->
+
<!-- https://mvnrepository.com/artifact/net.sf.saxon/saxon-xqj -->
<dependency>
- <groupId>net.sf.saxon</groupId>
- <artifactId>saxon-xqj</artifactId>
- <version>8.9</version>
+ <groupId>net.sf.saxon</groupId>
+ <artifactId>saxon-xqj</artifactId>
+ <version>8.9</version>
</dependency>
-
-
+
+
<!-- https://mvnrepository.com/artifact/net.sf.saxon/Saxon-HE -->
<dependency>
- <groupId>net.sf.saxon</groupId>
- <artifactId>Saxon-HE</artifactId>
- <version>9.5.1-5</version>
+ <groupId>net.sf.saxon</groupId>
+ <artifactId>Saxon-HE</artifactId>
+ <version>9.5.1-5</version>
</dependency>
-
+
<dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- <version>2.8.5</version>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.8.5</version>
</dependency>
-
- <!-- Add BaSys SDK from local repository. Maven build of SDK must generate a jar and place it into the repository to update -->
+
<dependency>
- <groupId>basys.sdk</groupId>
+ <groupId>basys</groupId>
<artifactId>basys.sdk</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
- </dependencies>
+ </dependencies>
</project>
\ No newline at end of file
diff --git a/components/basys.components/regression/org/eclipse/basyx/regression/processengineconnector/tests/TestAASServicecall.java b/components/basys.components/regression/org/eclipse/basyx/regression/processengineconnector/tests/TestAASServicecall.java
new file mode 100644
index 0000000..ad4f8f4
--- /dev/null
+++ b/components/basys.components/regression/org/eclipse/basyx/regression/processengineconnector/tests/TestAASServicecall.java
@@ -0,0 +1,64 @@
+package org.eclipse.basyx.regression.processengineconnector.tests;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+import org.eclipse.basyx.aas.backend.provider.VABMultiSubmodelProvider;
+import org.eclipse.basyx.aas.metamodel.hashmap.aas.AssetAdministrationShell;
+import org.eclipse.basyx.aas.metamodel.hashmap.aas.SubModel;
+import org.eclipse.basyx.components.processengine.connector.DeviceServiceExecutor;
+import org.eclipse.basyx.regression.support.processengine.aas.DeviceAdministrationShellFactory;
+import org.eclipse.basyx.regression.support.processengine.executor.CoilcarServiceExecutor;
+import org.eclipse.basyx.regression.support.processengine.stubs.CoilcarStub;
+import org.eclipse.basyx.regression.support.processengine.submodel.DeviceSubmodelFactory;
+import org.eclipse.basyx.testsuite.support.vab.stub.VABConnectionManagerStub;
+import org.eclipse.basyx.vab.provider.hashmap.VABHashmapProvider;
+import org.junit.Before;
+import org.junit.Test;
+
+
+
+public class TestAASServicecall {
+ private DeviceServiceExecutor serviceExecutor;
+ private VABConnectionManagerStub connectionStub;
+ private CoilcarStub coilcar;
+
+
+
+
+ @Before
+ public void setupDeviceServiceExecutor() {
+ AssetAdministrationShell aas = new DeviceAdministrationShellFactory().create( "coilcar", "submodel1");
+ coilcar = new CoilcarStub();
+ SubModel sm = new DeviceSubmodelFactory().create("submodel1", coilcar);
+ // TODO more comments
+ VABMultiSubmodelProvider<VABHashmapProvider> provider = new VABMultiSubmodelProvider<>();
+ provider.addSubmodel("submodel1", new VABHashmapProvider(sm));
+ provider.setAssetAdministrationShell(new VABHashmapProvider(aas));
+
+ // setup the connection-manager with the model-provider
+ connectionStub = new VABConnectionManagerStub();
+ connectionStub.addProvider("submodel1", "",provider);
+ connectionStub.addProvider("coilcar", "",provider);
+ serviceExecutor = new CoilcarServiceExecutor(connectionStub);
+
+ }
+
+ @Test
+ public void testServicecall() {
+ serviceExecutor.executeService("moveTo", "coilcar", "submodel1", new ArrayList<>(Arrays.asList( new Object[] {123})));
+ assertEquals(123, coilcar.getParameter());
+ assertTrue(coilcar.getServiceCalled().equals("moveTo"));
+
+ serviceExecutor.executeService("liftTo", "coilcar", "submodel1", new ArrayList<>(Arrays.asList( new Object[] {456})));
+ assertEquals(456, coilcar.getParameter());
+ assertTrue(coilcar.getServiceCalled().equals("liftTo"));
+
+ serviceExecutor.executeService("moveTo", "coilcar", "submodel1", new ArrayList<>(Arrays.asList( new Object[] {789})));
+ assertEquals(789, coilcar.getParameter());
+ assertTrue(coilcar.getServiceCalled().equals("moveTo"));
+ }
+}
diff --git a/components/basys.components/regression/org/eclipse/basyx/regression/processengineconnector/tests/TestDeviceAdministrationShell.java b/components/basys.components/regression/org/eclipse/basyx/regression/processengineconnector/tests/TestDeviceAdministrationShell.java
new file mode 100644
index 0000000..1599127
--- /dev/null
+++ b/components/basys.components/regression/org/eclipse/basyx/regression/processengineconnector/tests/TestDeviceAdministrationShell.java
@@ -0,0 +1,71 @@
+package org.eclipse.basyx.regression.processengineconnector.tests;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Map;
+
+import org.eclipse.basyx.aas.api.resources.IOperation;
+import org.eclipse.basyx.aas.api.resources.ISubModel;
+import org.eclipse.basyx.aas.backend.connected.ConnectedAssetAdministrationShellManager;
+import org.eclipse.basyx.aas.backend.connected.aas.ConnectedAssetAdministrationShell;
+import org.eclipse.basyx.aas.backend.connector.http.HTTPConnectorProvider;
+import org.eclipse.basyx.aas.backend.provider.VABMultiSubmodelProvider;
+import org.eclipse.basyx.aas.metamodel.hashmap.aas.AssetAdministrationShell;
+import org.eclipse.basyx.aas.metamodel.hashmap.aas.SubModel;
+import org.eclipse.basyx.regression.support.processengine.SetupHTTResource;
+import org.eclipse.basyx.testsuite.support.vab.stub.DirectoryServiceStub;
+import org.eclipse.basyx.testsuite.support.vab.stub.VABConnectionManagerStub;
+import org.eclipse.basyx.vab.core.VABConnectionManager;
+import org.eclipse.basyx.vab.provider.hashmap.VABHashmapProvider;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Test;
+
+
+
+public class TestDeviceAdministrationShell {
+ private ConnectedAssetAdministrationShellManager manager;
+ ConnectedAssetAdministrationShell connectedAAS;
+ /**
+ * Makes sure Tomcat Server is started
+ */
+ @ClassRule
+ public static SetupHTTResource res = new SetupHTTResource();
+ @Before
+ public void setupConnection() {
+
+
+ //set-up the administration shell manager to create connected aas
+ manager = new ConnectedAssetAdministrationShellManager(new VABConnectionManager(new DirectoryServiceStub()
+ .addMapping("coilcar", "http://localhost:8080/basys.sdk/Testsuite/coilcar/")
+ .addMapping("submodel1", "http://localhost:8080/basys.sdk/Testsuite/coilcar/"),
+ new HTTPConnectorProvider()));
+
+ // create the connected AAS using the manager
+ try {
+ connectedAAS = (ConnectedAssetAdministrationShell) manager.retrieveAAS("coilcar");
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Test
+ public void operationTest() throws Exception {
+ assertEquals(1, connectedAAS.getSubModels().size());
+
+ // Check if the contained SubModel id is as expected
+ assertTrue(connectedAAS.getSubModels().containsKey("submodel1"));
+ ISubModel sm = connectedAAS
+ .getSubModels()
+ .get("submodel1");
+
+ Map<String, IOperation> operations = sm.getOperations();
+ assertEquals(2, operations.size());
+
+ IOperation op1 = operations.get("liftTo");
+ op1.invoke(5);
+ IOperation op2 = operations.get("moveTo");
+ op2.invoke(55);
+ }
+}
diff --git a/components/basys.components/regression/org/eclipse/basyx/regression/processengineconnector/tests/TestJavaDelegate.java b/components/basys.components/regression/org/eclipse/basyx/regression/processengineconnector/tests/TestJavaDelegate.java
new file mode 100644
index 0000000..c591f73
--- /dev/null
+++ b/components/basys.components/regression/org/eclipse/basyx/regression/processengineconnector/tests/TestJavaDelegate.java
@@ -0,0 +1,53 @@
+package org.eclipse.basyx.regression.processengineconnector.tests;
+
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+import org.eclipse.basyx.aas.backend.http.tools.GSONTools;
+import org.eclipse.basyx.aas.backend.http.tools.factory.DefaultTypeFactory;
+import org.eclipse.basyx.components.processengine.connector.DeviceServiceDelegate;
+import org.eclipse.basyx.regression.support.processengine.stubs.BPMNEngineStub;
+import org.eclipse.basyx.regression.support.processengine.stubs.DeviceServiceExecutorStub;
+import org.junit.Test;
+
+
+public class TestJavaDelegate {
+ GSONTools gson = new GSONTools(new DefaultTypeFactory());
+
+ @Test
+ public void testMoveToCall() {
+ Object params[] = new Object[]{5};
+ BPMNEngineStub bpmnstub = new BPMNEngineStub("moveTo","coilcar",gson.serialize(new ArrayList<Object>(Arrays.asList(params))));
+ DeviceServiceDelegate.setDeviceServiceExecutor(new DeviceServiceExecutorStub());
+ try {
+ bpmnstub.callJavaDelegate();
+ assertEquals("moveTo", DeviceServiceDelegate.getExecutor().getServiceName());
+ assertEquals("coilcar", DeviceServiceDelegate.getExecutor().getServiceProvider());
+ assertArrayEquals(new Object[]{5}, DeviceServiceDelegate.getExecutor().getParams().toArray());
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Test
+ public void testLiftToCall() {
+ Object params[] = new Object[]{123};
+ BPMNEngineStub bpmnstub = new BPMNEngineStub("liftTo","coilcar",gson.serialize(new ArrayList<Object>(Arrays.asList(params))));
+ DeviceServiceDelegate.setDeviceServiceExecutor(new DeviceServiceExecutorStub());
+ try {
+ bpmnstub.callJavaDelegate();
+ assertEquals("liftTo", DeviceServiceDelegate.getExecutor().getServiceName());
+ assertEquals("coilcar", DeviceServiceDelegate.getExecutor().getServiceProvider());
+ assertArrayEquals(new Object[]{123}, DeviceServiceDelegate.getExecutor().getParams().toArray());
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/components/basys.components/regression/org/eclipse/basyx/regression/processengineconnector/tests/TestTransportProcess_ConfigureEngineProgramically.java b/components/basys.components/regression/org/eclipse/basyx/regression/processengineconnector/tests/TestTransportProcess_ConfigureEngineProgramically.java
new file mode 100644
index 0000000..787cb12
--- /dev/null
+++ b/components/basys.components/regression/org/eclipse/basyx/regression/processengineconnector/tests/TestTransportProcess_ConfigureEngineProgramically.java
@@ -0,0 +1,103 @@
+package org.eclipse.basyx.regression.processengineconnector.tests;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.activiti.engine.ProcessEngine;
+import org.activiti.engine.ProcessEngineConfiguration;
+import org.activiti.engine.RepositoryService;
+import org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration;
+import org.activiti.engine.runtime.ProcessInstance;
+import org.eclipse.basyx.aas.backend.connected.ConnectedAssetAdministrationShellManager;
+import org.eclipse.basyx.aas.backend.connector.http.HTTPConnectorProvider;
+import org.eclipse.basyx.components.processengine.connector.DeviceServiceDelegate;
+import org.eclipse.basyx.regression.support.processengine.SetupAAS;
+import org.eclipse.basyx.regression.support.processengine.SetupHTTResource;
+import org.eclipse.basyx.regression.support.processengine.executor.CoilcarServiceExecutor;
+import org.eclipse.basyx.testsuite.support.vab.stub.DirectoryServiceStub;
+import org.eclipse.basyx.vab.core.VABConnectionManager;
+import org.junit.Before;
+import org.junit.ClassRule;
+import org.junit.Test;
+
+
+
+/**
+ * Test case for executing BPMN-Model using BaSys SDK and Activiti-engine.
+ * The BPMN-process is defined in the file org/activiti/aas/SimpleTransportProcess.bpmn20.xml
+ * The process-model is graphically defined by SimpleTransportProcess.bpmn
+ *
+ * @author Zhang,Zai
+ * */
+public class TestTransportProcess_ConfigureEngineProgramically {
+
+ ConnectedAssetAdministrationShellManager manager;
+ VABConnectionManager connectionManager;
+ /**
+ * Makes sure Tomcat Server is started
+ */
+ @ClassRule
+ public static SetupHTTResource res = new SetupHTTResource();
+
+ /**
+ * Creates the manager to be used in the test cases
+ */
+ @Before
+ public void build() {
+ // Fill directory stub
+ DirectoryServiceStub directory = new DirectoryServiceStub();
+ directory.addMapping(SetupAAS.aasid, "http://localhost:8080/basys.sdk/Testsuite/coilcar/");
+ directory.addMapping(SetupAAS.submodelid, "http://localhost:8080/basys.sdk/Testsuite/coilcar/");
+ // Create manager using the directory stub an the HTTPConnectorProvider
+ connectionManager = new VABConnectionManager(directory, new HTTPConnectorProvider());
+ manager = new ConnectedAssetAdministrationShellManager(connectionManager);
+
+
+ }
+ @Test
+ public void deploy() {
+ /* create a configuration for the process engine with associated database configuration
+ For activating timer function, asynchronous executor must be set to true */
+ ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration()
+ .setJdbcUrl("jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000").setJdbcUsername("test").setJdbcPassword("test")
+ .setJdbcDriver("org.h2.Driver")
+ .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE)
+ .setAsyncExecutorActivate(false);
+
+ // create the process engien with defined configuration
+ ProcessEngine processEngine = cfg.buildProcessEngine();
+ // get the name of the process-engine and prints it out in the console
+ String pName = processEngine.getName();
+ String ver = ProcessEngine.VERSION;
+ System.out.println("ProcessEngine [" + pName + "] Version: [" + ver + "]");
+
+ // deploy the BPMN-model defined in the xml file on the process engine
+ RepositoryService repositoryService = processEngine.getRepositoryService();
+
+ try {
+ repositoryService.createDeployment().
+ addInputStream("SimpleTransportProcess.bpmn20.xml",new FileInputStream(new File(System.getProperty("user.dir")+"\\WebContent\\WEB-INF\\config\\processengine\\SimpleTransportProcess.bpmn20.xml"))).deploy();
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+
+ // define the variables in a list which are shared through the execution of the BPMN-process
+ Map<String, Object> variables = new HashMap<String, Object>();
+ variables.put("coilposition", 2);
+
+ //create asset administration shells
+ //new SetupAAS();
+ //DeviceServiceDelegate.setDeviceServiceExecutor(new DeviceServiceExecutor(SetupAAS.getConnectionStub()));
+ DeviceServiceDelegate.setDeviceServiceExecutor(new CoilcarServiceExecutor(connectionManager));
+
+ // Start a process instance
+ @SuppressWarnings("unused")
+ ProcessInstance processInstance1 = processEngine.getRuntimeService().startProcessInstanceByKey("SimpleTransportProcess", variables);
+
+ // close the engine after the process execution
+ processEngine.close();
+ }
+}
diff --git a/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/SetupAAS.java b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/SetupAAS.java
new file mode 100644
index 0000000..45e8a35
--- /dev/null
+++ b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/SetupAAS.java
@@ -0,0 +1,46 @@
+package org.eclipse.basyx.regression.support.processengine;
+
+
+import org.eclipse.basyx.aas.backend.provider.VABMultiSubmodelProvider;
+import org.eclipse.basyx.aas.metamodel.hashmap.aas.AssetAdministrationShell;
+import org.eclipse.basyx.aas.metamodel.hashmap.aas.SubModel;
+import org.eclipse.basyx.regression.support.processengine.aas.DeviceAdministrationShellFactory;
+import org.eclipse.basyx.regression.support.processengine.stubs.Coilcar;
+import org.eclipse.basyx.regression.support.processengine.submodel.DeviceSubmodelFactory;
+import org.eclipse.basyx.testsuite.support.vab.stub.VABConnectionManagerStub;
+import org.eclipse.basyx.vab.provider.hashmap.VABHashmapProvider;
+
+/**
+ * Create AAS and VAB connection stub (without communication protocol for test purpose)
+ * */
+
+public class SetupAAS {
+
+ public static String aasid = "coilcar";
+ public static String submodelid = "submodel1";
+ private static Coilcar coilcar = new Coilcar();
+ private static VABConnectionManagerStub connectionStub;
+
+ static {
+ AssetAdministrationShell aas = new DeviceAdministrationShellFactory().create( aasid, submodelid);
+ SubModel sm = new DeviceSubmodelFactory().create(submodelid, coilcar);
+
+ VABMultiSubmodelProvider<VABHashmapProvider> provider = new VABMultiSubmodelProvider<>();
+ provider.addSubmodel(submodelid, new VABHashmapProvider(sm));
+ provider.setAssetAdministrationShell(new VABHashmapProvider(aas));
+
+ // setup the connection-manager with the model-provider
+ connectionStub = new VABConnectionManagerStub();
+ connectionStub.addProvider(submodelid, "", provider);
+ connectionStub.addProvider(aasid, "", provider);
+ }
+
+ public static VABConnectionManagerStub getConnectionStub() {
+ return connectionStub;
+ }
+
+ public static String getSubmodelid() {
+ return submodelid;
+ }
+
+}
diff --git a/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/aas/DeviceAdministrationShellFactory.java b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/aas/DeviceAdministrationShellFactory.java
new file mode 100644
index 0000000..e92b07a
--- /dev/null
+++ b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/aas/DeviceAdministrationShellFactory.java
@@ -0,0 +1,22 @@
+package org.eclipse.basyx.regression.support.processengine.aas;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.basyx.aas.metamodel.factory.MetaModelElementFactory;
+import org.eclipse.basyx.aas.metamodel.hashmap.aas.AssetAdministrationShell;
+
+public class DeviceAdministrationShellFactory {
+
+ public AssetAdministrationShell create(String aasid, String submodelid){
+ MetaModelElementFactory factory = new MetaModelElementFactory();
+
+ //create the aas, add submodel to aas using VABMultiSubmodelProvider
+ Set<String> refs = new HashSet<>();
+ refs.add(submodelid);
+ AssetAdministrationShell aas = factory.create(new AssetAdministrationShell(), refs);
+ aas.put("idshort", aasid);
+
+ return aas;
+ }
+}
diff --git a/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/executor/CoilcarServiceExecutor.java b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/executor/CoilcarServiceExecutor.java
new file mode 100644
index 0000000..9a6aad3
--- /dev/null
+++ b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/executor/CoilcarServiceExecutor.java
@@ -0,0 +1,22 @@
+package org.eclipse.basyx.regression.support.processengine.executor;
+
+import java.util.List;
+
+import org.eclipse.basyx.components.processengine.connector.DeviceServiceExecutor;
+import org.eclipse.basyx.regression.support.processengine.SetupAAS;
+import org.eclipse.basyx.vab.core.VABConnectionManager;
+
+
+public class CoilcarServiceExecutor extends DeviceServiceExecutor {
+
+ public CoilcarServiceExecutor(VABConnectionManager connectionmanager) {
+ super(connectionmanager);
+ }
+
+ @Override
+ public Object executeService(String serviceName, String deviceid, List<Object> params) throws Exception {
+
+ return super.executeService(serviceName, deviceid, SetupAAS.submodelid, params);
+ }
+
+}
diff --git a/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/executor/ExecutionSequence.java b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/executor/ExecutionSequence.java
new file mode 100644
index 0000000..2999e62
--- /dev/null
+++ b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/executor/ExecutionSequence.java
@@ -0,0 +1,22 @@
+package org.eclipse.basyx.regression.support.processengine.executor;
+
+public class ExecutionSequence {
+ public static String[] expectedSequence1 = new String[]{
+ "t1",
+ "t3",
+ "t4",
+ "t5",
+ "t6",
+ "t7",
+ "end"};
+ public static String[] expectedSequence2 = new String[]{
+ "t2",
+ "t1",
+ "t3",
+ "t4",
+ "t5",
+ "t6",
+ "t7",
+ "end"};
+
+}
diff --git a/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/servlet/CoilcarAASServlet.java b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/servlet/CoilcarAASServlet.java
new file mode 100644
index 0000000..2116a41
--- /dev/null
+++ b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/servlet/CoilcarAASServlet.java
@@ -0,0 +1,32 @@
+package org.eclipse.basyx.regression.support.processengine.servlet;
+
+
+import org.eclipse.basyx.aas.backend.provider.VABMultiSubmodelProvider;
+import org.eclipse.basyx.aas.metamodel.hashmap.aas.AssetAdministrationShell;
+import org.eclipse.basyx.aas.metamodel.hashmap.aas.SubModel;
+import org.eclipse.basyx.regression.support.processengine.aas.DeviceAdministrationShellFactory;
+import org.eclipse.basyx.regression.support.processengine.stubs.Coilcar;
+import org.eclipse.basyx.regression.support.processengine.submodel.DeviceSubmodelFactory;
+import org.eclipse.basyx.vab.backend.server.http.VABHTTPInterface;
+import org.eclipse.basyx.vab.provider.hashmap.VABHashmapProvider;
+
+
+
+public class CoilcarAASServlet extends VABHTTPInterface<VABMultiSubmodelProvider<VABHashmapProvider>> {
+ private static final long serialVersionUID = 1L;
+ private String aasid = "coilcar";
+ private String submodelid = "submodel1";
+
+ public CoilcarAASServlet() {
+ super(new VABMultiSubmodelProvider<>());
+
+ AssetAdministrationShell coilcarAAS = new DeviceAdministrationShellFactory().create(aasid, submodelid);
+ // Set Id
+ coilcarAAS.setId(aasid);
+ SubModel coilcarSubmodel = new DeviceSubmodelFactory().create(submodelid, new Coilcar());
+
+ getModelProvider().setAssetAdministrationShell(new VABHashmapProvider(coilcarAAS));
+ getModelProvider().addSubmodel(submodelid, new VABHashmapProvider(coilcarSubmodel));
+ }
+
+}
\ No newline at end of file
diff --git a/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/stubs/BPMNEngineStub.java b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/stubs/BPMNEngineStub.java
new file mode 100644
index 0000000..0ce66e6
--- /dev/null
+++ b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/stubs/BPMNEngineStub.java
@@ -0,0 +1,81 @@
+package org.eclipse.basyx.regression.support.processengine.stubs;
+
+import java.lang.reflect.Field;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.activiti.bpmn.model.ServiceTask;
+import org.activiti.engine.delegate.DelegateExecution;
+import org.activiti.engine.delegate.Expression;
+import org.activiti.engine.impl.el.FixedValue;
+import org.activiti.engine.impl.persistence.entity.ExecutionEntityImpl;
+import org.eclipse.basyx.components.processengine.connector.DeviceServiceDelegate;
+
+
+/**
+ * BPMNStub that invokes the JavaDelegate through the reflection
+ * A test that ensure the right parameters are given to the DeviceServiceExecutor
+ *
+ * @author Zhang, Zai
+ * */
+public class BPMNEngineStub {
+
+ private Map<String, String> fieldInjections = new HashMap<>();
+
+ private String classPath = "org.eclipse.basyx.components.processengine.connector.DeviceServiceDelegate";
+
+
+ /**
+ * Constructor
+ * parameters are value of the injected fields in String
+ * @param serviceParameter all requested parameters in a serialized Json-String
+ * */
+ public BPMNEngineStub(String serviceName, String serviceProvider, String serviceParameter) {
+ fieldInjections.put("serviceName", serviceName);
+ fieldInjections.put("serviceProvider", serviceProvider);
+ fieldInjections.put("serviceParameter", serviceParameter);
+ }
+
+ public void callJavaDelegate() throws Exception {
+ // create the class of the java-delegate
+ @SuppressWarnings("rawtypes")
+ Class clazz = Class.forName(classPath);
+ DeviceServiceDelegate delegate = (DeviceServiceDelegate) clazz.newInstance();
+ // get all declare field of the class, including private fields
+ Field fields[] = clazz.getDeclaredFields();
+ // set expected value defined in the hashMap to each fields
+ for(Field f : fields) {
+ if(fieldInjections.containsKey(f.getName())) {
+ // get expected value
+ String value = fieldInjections.get(f.getName());
+ // create expression for this field
+ Expression serviceName_expression = createExpressionObejct(value);
+ // set the private field accesable
+ f.setAccessible(true);
+ // set value to the field
+ f.set(delegate, serviceName_expression);
+ }
+ }
+ //create execution-stub
+ DelegateExecution execution = ExecutionEntityImpl.createWithEmptyRelationshipCollections();
+ // create a flow-element for the execution
+ ServiceTask serviceTask = new ServiceTask();
+ // set id of the flow element
+ serviceTask.setId("t1");
+ // set name of the flow element
+ serviceTask.setName("task1");
+ // set thsi flow-element to the current element of the execution
+ execution.setCurrentFlowElement(serviceTask);
+ // call the delegate function
+ delegate.execute(execution);
+ }
+
+ /**
+ * create the Expression-instance for the delegate
+ * */
+ private Expression createExpressionObejct(String value) {
+ Expression ep = new FixedValue(value);
+ return ep;
+ }
+
+}
diff --git a/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/stubs/BPMNModelFactory.java b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/stubs/BPMNModelFactory.java
new file mode 100644
index 0000000..ecce96c
--- /dev/null
+++ b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/stubs/BPMNModelFactory.java
@@ -0,0 +1,168 @@
+package org.eclipse.basyx.regression.support.processengine.stubs;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.activiti.bpmn.model.ActivitiListener;
+import org.activiti.bpmn.model.BpmnModel;
+import org.activiti.bpmn.model.EndEvent;
+import org.activiti.bpmn.model.ExclusiveGateway;
+import org.activiti.bpmn.model.FieldExtension;
+import org.activiti.bpmn.model.Gateway;
+import org.activiti.bpmn.model.ImplementationType;
+import org.activiti.bpmn.model.SequenceFlow;
+import org.activiti.bpmn.model.ServiceTask;
+import org.activiti.bpmn.model.StartEvent;
+import org.activiti.bpmn.model.UserTask;
+import org.eclipse.basyx.aas.backend.http.tools.GSONTools;
+import org.eclipse.basyx.aas.backend.http.tools.factory.DefaultTypeFactory;
+import org.eclipse.basyx.components.processengine.connector.DeviceServiceDelegate;
+import org.activiti.bpmn.model.Process;
+
+
+public class BPMNModelFactory {
+
+ private static final String TASKI_MPL = "org.eclipse.basyx.components.processengine.connector.DeviceServiceDelegate";
+
+ private List<ServiceTask> services = new ArrayList<>();
+
+ public BpmnModel create(String processId) {
+ return create( processId, TASKI_MPL);
+ }
+
+
+
+ private BpmnModel create(String processId, String impl) {
+ BpmnModel model = new BpmnModel();
+ Process process = new Process();
+ model.addProcess(process);
+ process.setId(processId);
+
+
+
+
+
+ process.addFlowElement(createStartEvent());
+
+ ServiceTask task1 = createServiceTask("t1", "pickup the coil", impl, "liftTo", "coilcar", new Object[]{1});
+ services.add(task1);
+
+
+ ServiceTask task2 =createServiceTask("t2", "move to the coil", impl, "moveTo", "coilcar", new Object[]{1});
+ services.add(task2);
+
+ ServiceTask task3 = createServiceTask("t3", "drive the coil to the milling machine", impl, "moveTo", "coilcar", new Object[]{5});
+ services.add(task3);
+
+ ServiceTask task4 = createServiceTask("t4", "lift the coil to the expected position", impl, "liftTo", "coilcar", new Object[]{6});
+ services.add(task4);
+
+ ServiceTask task5 =createServiceTask("t5", "put the coil on the mandrel", impl, "moveTo", "coilcar", new Object[]{6});
+ services.add(task5);
+
+ ServiceTask task6 = createServiceTask("t6", "set the lifter to the start position", impl, "liftTo", "coilcar", new Object[]{0});
+ services.add(task6);
+
+ ServiceTask task7 =createServiceTask("t7", "drive the coilcar back to the start position", impl, "moveTo", "coilcar", new Object[]{0});
+ services.add(task7);
+
+
+ for(ServiceTask t : services) {
+ process.addFlowElement(t);
+ //t.setExecutionListeners(executionListeners);
+ }
+
+
+ process.addFlowElement(createGateway("gateway1", "check the current position of the coil"));
+
+ process.addFlowElement(createEndEvent());
+
+
+
+ process.addFlowElement(createSequenceFlow("start", "gateway1"));
+ process.addFlowElement(createSequenceFlowWithCondition("gateway1", "t1", "${coilposition==1}"));
+ process.addFlowElement(createSequenceFlowWithCondition("gateway1", "t2", "${coilposition==2}"));
+ process.addFlowElement(createSequenceFlow("t1", "t3"));
+ process.addFlowElement(createSequenceFlow("t2", "t1"));
+ process.addFlowElement(createSequenceFlow("t3", "t4"));
+ process.addFlowElement(createSequenceFlow("t4", "t5"));
+ process.addFlowElement(createSequenceFlow("t5", "t6"));
+ process.addFlowElement(createSequenceFlow("t6", "t7"));
+ process.addFlowElement(createSequenceFlow("t7", "end"));
+
+
+ return model;
+ }
+
+ protected Gateway createGateway(String gwid, String gwname) {
+ Gateway gw = new ExclusiveGateway();
+ gw.setId(gwid);
+ gw.setName(gwname);
+ return gw;
+ }
+
+ protected SequenceFlow createSequenceFlowWithCondition(String from, String to, String conditionExpression) {
+ SequenceFlow flow = new SequenceFlow();
+ flow.setSourceRef(from);
+ flow.setTargetRef(to);
+ flow.setConditionExpression(conditionExpression);
+ return flow;
+ }
+ protected UserTask createUserTask(String id, String name, String assignee) {
+ UserTask userTask = new UserTask();
+ userTask.setName(name);
+ userTask.setId(id);
+ userTask.setAssignee(assignee);
+ return userTask;
+ }
+
+ protected SequenceFlow createSequenceFlow(String from, String to) {
+ SequenceFlow flow = new SequenceFlow();
+ flow.setSourceRef(from);
+ flow.setTargetRef(to);
+ return flow;
+ }
+
+ protected StartEvent createStartEvent() {
+ StartEvent startEvent = new StartEvent();
+ startEvent.setId("start");
+ return startEvent;
+ }
+
+ protected EndEvent createEndEvent() {
+ EndEvent endEvent = new EndEvent();
+ endEvent.setId("end");
+ return endEvent;
+ }
+ public ServiceTask createServiceTask(String taskid, String taskName, String impl, String serviceName, String serviceProvider, Object[] params) {
+ ServiceTask serviceTask = new ServiceTask();
+ serviceTask.setImplementation(impl);
+ serviceTask.setImplementationType("class");
+ serviceTask.setId(taskid);
+ serviceTask.setName(taskName);
+
+ List<FieldExtension> fes = new ArrayList<>();
+ fes.add(createFieldExtension("serviceName", serviceName));
+ fes.add(createFieldExtension("serviceProvider", serviceProvider));
+ fes.add(createFieldExtension("serviceParameter", generateJsonString(params)));
+ serviceTask.setFieldExtensions(fes);
+
+ return serviceTask;
+ }
+
+
+
+ private FieldExtension createFieldExtension(String fname, String fexpression) {
+ FieldExtension snf = new FieldExtension();
+ snf.setFieldName(fname);
+ snf.setExpression(fexpression);
+ return snf;
+ }
+
+ private String generateJsonString(Object[] params) {
+ GSONTools gson = new GSONTools(new DefaultTypeFactory());
+ String to = gson.serialize(new ArrayList<Object>(Arrays.asList(params)));
+ return to;
+ }
+}
diff --git a/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/stubs/Coilcar.java b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/stubs/Coilcar.java
new file mode 100644
index 0000000..30a65cb
--- /dev/null
+++ b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/stubs/Coilcar.java
@@ -0,0 +1,60 @@
+package org.eclipse.basyx.regression.support.processengine.stubs;
+
+
+public class Coilcar implements ICoilcar {
+ private int currentPosition = 0;
+ private int currentLifterPosition = 0;
+
+
+ @Override
+ public int moveTo(int position) {
+ System.out.printf("#submodel# invoke service +MoveTo+ with parameter: %d \n\n", position);
+ Double steps[] = generateCurve(currentPosition, position);
+ for(Double step : steps) {
+ System.out.println(step);
+ try {
+ Thread.sleep(10);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ currentPosition = position;
+ return currentPosition;
+ }
+
+ @Override
+ public int liftTo(int position) {
+ System.out.printf("#submodel# Call service LiftTo with Parameter: %d \n\n", position);
+ Double steps[] = generateCurve(currentLifterPosition, position);
+ for(Double step : steps) {
+ System.out.println(step);
+ try {
+ Thread.sleep(10);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ currentLifterPosition = position;
+ return currentLifterPosition;
+ }
+
+ public int getCurrentPosition() {
+ return currentPosition;
+ }
+
+ public int getCurrentLifterPosition() {
+ return currentLifterPosition;
+ }
+
+
+ private Double[] generateCurve(double current, double goal){
+ Double stepList[] = new Double[20];
+ double delta = (goal-current)/20;
+ for(int i= 0; i< 20; i++) {
+ stepList[i]= current+delta*(i+1);
+ }
+ return stepList;
+ }
+
+}
diff --git a/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/stubs/CoilcarStub.java b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/stubs/CoilcarStub.java
new file mode 100644
index 0000000..10ee907
--- /dev/null
+++ b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/stubs/CoilcarStub.java
@@ -0,0 +1,30 @@
+package org.eclipse.basyx.regression.support.processengine.stubs;
+
+
+public class CoilcarStub implements ICoilcar {
+
+ private String serviceCalled;
+ private Object parameter;
+
+ @Override
+ public int moveTo(int position) {
+ serviceCalled = "moveTo";
+ parameter = position;
+ return position;
+ }
+
+ @Override
+ public int liftTo(int position) {
+ serviceCalled = "liftTo";
+ parameter = position;
+ return position;
+ }
+
+ public String getServiceCalled() {
+ return serviceCalled;
+ }
+
+ public Object getParameter() {
+ return parameter;
+ }
+}
diff --git a/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/stubs/DeviceServiceExecutorStub.java b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/stubs/DeviceServiceExecutorStub.java
new file mode 100644
index 0000000..e8c88d2
--- /dev/null
+++ b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/stubs/DeviceServiceExecutorStub.java
@@ -0,0 +1,67 @@
+package org.eclipse.basyx.regression.support.processengine.stubs;
+
+import java.util.List;
+
+import org.eclipse.basyx.components.processengine.connector.IDeviceServiceExecutor;
+
+
+public class DeviceServiceExecutorStub implements IDeviceServiceExecutor{
+ private String serviceName;
+ private String serviceProvider;
+ @SuppressWarnings("unused")
+ private String serviceSubmodelid;
+ private List<Object> params;
+
+
+ // whether the right service is invoked
+ @Override
+ public Object executeService(String servicename, String serviceProvider, List<Object> params){
+ this.serviceName = servicename;
+ this.serviceProvider = serviceProvider;
+ this.serviceSubmodelid = "SERVICES";
+ this.params = params;
+ try {
+ System.out.printf("service: %s, executed by device: %s , parameters: ", servicename, serviceProvider);
+ if(params.size() == 0) {
+ System.out.println("[]");
+ }else {
+ for(Object p : params) {
+ System.out.printf("%s, ", p);
+ }
+ System.out.println("");
+
+ }
+ Thread.sleep((int)(Math.random()*3000));
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ return 1;
+ }
+
+ @Override
+ public String getServiceName() {
+ return serviceName;
+ }
+
+ @Override
+ public String getServiceProvider() {
+ return serviceProvider;
+ }
+
+ @Override
+ public List<Object> getParams() {
+ return params;
+ }
+
+ @Override
+ public Object executeService(String servicename, String serviceProvider, String submodelid, List<Object> params)
+ throws Exception {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+
+
+}
diff --git a/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/stubs/ICoilcar.java b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/stubs/ICoilcar.java
new file mode 100644
index 0000000..76d0e8b
--- /dev/null
+++ b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/stubs/ICoilcar.java
@@ -0,0 +1,15 @@
+package org.eclipse.basyx.regression.support.processengine.stubs;
+
+public interface ICoilcar {
+ /**
+ * a service that moves the coil-car to the expected position
+ * @param position expected position
+ * */
+ public int moveTo(int position);
+
+ /**
+ * a service that rises the lifter of the coil-car to the expected position
+ * @param position expected position
+ * */
+ public int liftTo(int position);
+}
diff --git a/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/submodel/DeviceSubmodelFactory.java b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/submodel/DeviceSubmodelFactory.java
new file mode 100644
index 0000000..fd29ae6
--- /dev/null
+++ b/components/basys.components/regression/org/eclipse/basyx/regression/support/processengine/submodel/DeviceSubmodelFactory.java
@@ -0,0 +1,53 @@
+package org.eclipse.basyx.regression.support.processengine.submodel;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Function;
+
+import org.eclipse.basyx.aas.metamodel.factory.MetaModelElementFactory;
+import org.eclipse.basyx.aas.metamodel.hashmap.aas.SubModel;
+import org.eclipse.basyx.aas.metamodel.hashmap.aas.submodelelement.operation.Operation;
+import org.eclipse.basyx.aas.metamodel.hashmap.aas.submodelelement.property.Property;
+import org.eclipse.basyx.regression.support.processengine.stubs.ICoilcar;
+
+
+public class DeviceSubmodelFactory {
+ public SubModel create(String id, ICoilcar coilcar) {
+ MetaModelElementFactory factory = new MetaModelElementFactory();
+ // create a single value property
+ Property property1 = factory.create(new Property(), 0);
+ property1.setId("currentPosition");
+
+ Property property2 = factory.create(new Property(), 0);
+ property2.setId("lifterPosition");
+
+ Property property3 = factory.create(new Property(), false);
+ property3.setId("physicalSpeed");
+
+ // create 2 opertations
+ Operation op1 = factory.createOperation(new Operation(), (Function<Object[], Object>) (obj) -> {
+ return coilcar.liftTo((int)obj[0]);
+ });
+ op1.setId("liftTo");
+
+ Operation op2 = factory.createOperation(new Operation(), (Function<Object[], Object> )(obj)->{
+ coilcar.moveTo((int)obj[0]);
+ return true;
+ });
+ op2.setId("moveTo");
+
+ // create a list for defined operations
+ List<Operation> oplist = new ArrayList<>();
+ oplist.add(op1);
+ oplist.add(op2);
+ // create a list for defined properties
+ List<Property> propList = new ArrayList<>();
+ propList.add(property1);
+ propList.add(property2);
+ propList.add(property3);
+ // create the sub-model and add the property and operations to the sub-model
+ SubModel sm = factory.create(new SubModel(), propList, oplist);
+ sm.setId(id);
+ return sm;
+ }
+}
diff --git a/components/basys.components/src/org/eclipse/basyx/components/processengine/connector/DeviceServiceDelegate.java b/components/basys.components/src/org/eclipse/basyx/components/processengine/connector/DeviceServiceDelegate.java
new file mode 100644
index 0000000..03da65f
--- /dev/null
+++ b/components/basys.components/src/org/eclipse/basyx/components/processengine/connector/DeviceServiceDelegate.java
@@ -0,0 +1,80 @@
+package org.eclipse.basyx.components.processengine.connector;
+
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.activiti.engine.delegate.DelegateExecution;
+import org.activiti.engine.delegate.Expression;
+import org.activiti.engine.delegate.JavaDelegate;
+import org.eclipse.basyx.aas.backend.http.tools.GSONTools;
+import org.eclipse.basyx.aas.backend.http.tools.factory.DefaultTypeFactory;
+
+/**
+ * Java-Delegate is involved when the corresponding service-task of the BPMN-Model is executed.
+ * It invokes the service-call of the defined service in the aas.
+ *
+ * @author Zhang, Zai
+ * */
+public class DeviceServiceDelegate implements JavaDelegate {
+
+ // name of the service that is used to navigate the service in the aas
+ private Expression serviceName;
+
+ // Identify the device that provides the service
+ private Expression serviceProvider;
+
+ // parameters required by the service.
+ // All parameters are serialized as an array and stored in a Json string
+ private Expression serviceParameter;
+
+ /* Device service-executor invokes the services defined in the aas
+ * Only one instance is allowed
+ * */
+ private static IDeviceServiceExecutor executor;
+
+ // Instance of GSONTools used for JSON-serialisation
+ private GSONTools gson = new GSONTools(new DefaultTypeFactory());
+
+ @Override
+ public void execute(DelegateExecution execution) {
+
+ // get name of the service
+ String servicename = (String)serviceName.getValue(execution);
+
+ // get the Json string of service parameters
+ String params = (String) serviceParameter.getValue(execution);
+
+ // deserialize the Json-string to get the parameters in an array
+ @SuppressWarnings("unchecked")
+
+ List<Object> paramarray = new ArrayList<>();
+ paramarray.addAll((Collection<Object>)gson.deserialize(params));
+ // get name of the current process step in the BPMN-Model
+ String processName = execution.getCurrentFlowElement().getName();
+ String deviceAASId = (String)serviceProvider.getValue(execution);
+ System.out.println("#######process instance: "+ execution.getProcessInstanceId()+" current activity: " + processName +" is executed by "+ deviceAASId);
+
+
+ try {
+ // invoke the specified service using service-executor
+ executor.executeService(servicename, deviceAASId, paramarray);
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+
+ public static void setDeviceServiceExecutor(IDeviceServiceExecutor ex) {
+ executor = ex;
+ }
+
+
+ public static IDeviceServiceExecutor getExecutor() {
+ return executor;
+ }
+
+
+}
diff --git a/components/basys.components/src/org/eclipse/basyx/components/processengine/connector/IDeviceServiceExecutor.java b/components/basys.components/src/org/eclipse/basyx/components/processengine/connector/IDeviceServiceExecutor.java
new file mode 100644
index 0000000..214db23
--- /dev/null
+++ b/components/basys.components/src/org/eclipse/basyx/components/processengine/connector/IDeviceServiceExecutor.java
@@ -0,0 +1,11 @@
+package org.eclipse.basyx.components.processengine.connector;
+
+import java.util.List;
+
+public interface IDeviceServiceExecutor {
+ public Object executeService( String servicename, String serviceProvider,String submodelid, List<Object> params) throws Exception;
+ public Object executeService( String serviceName, String deviceid, List<Object> params) throws Exception;
+ public String getServiceName();
+ public String getServiceProvider();
+ public List<Object> getParams();
+}
diff --git a/examples/basys.examples/.settings/org.eclipse.wst.common.component b/examples/basys.examples/.settings/org.eclipse.wst.common.component
index e9654ef..e36038a 100644
--- a/examples/basys.examples/.settings/org.eclipse.wst.common.component
+++ b/examples/basys.examples/.settings/org.eclipse.wst.common.component
@@ -6,9 +6,6 @@
<wb-resource deploy-path="/WEB-INF/classes" source-path="/examples"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/servlets"/>
<wb-resource deploy-path="/WEB-INF/classes" source-path="/support"/>
- <dependent-module archiveName="basys.sdk-0.0.1-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/basys.sdk/basys.sdk">
- <dependency-type>uses</dependency-type>
- </dependent-module>
<dependent-module archiveName="basys.components-0.0.1-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/basys.components/basys.components">
<dependency-type>uses</dependency-type>
</dependent-module>
diff --git a/examples/basys.examples/WebContent/META-INF/MANIFEST.MF b/examples/basys.examples/WebContent/META-INF/MANIFEST.MF
index 5e94951..58630c0 100644
--- a/examples/basys.examples/WebContent/META-INF/MANIFEST.MF
+++ b/examples/basys.examples/WebContent/META-INF/MANIFEST.MF
@@ -1,3 +1,2 @@
Manifest-Version: 1.0
-Class-Path:
diff --git a/examples/basys.examples/pom.xml b/examples/basys.examples/pom.xml
index 2f05b53..4715653 100644
--- a/examples/basys.examples/pom.xml
+++ b/examples/basys.examples/pom.xml
@@ -1,294 +1,286 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>basys.examples</groupId>
- <artifactId>basys.examples</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>jar</packaging>
- <name>BaSys Examples</name>
-
- <repositories>
- <repository>
- <id>data-local</id>
- <name>data</name>
- <url>file://${project.basedir}/repo</url>
- </repository>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>basys.examples</groupId>
+ <artifactId>basys.examples</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>jar</packaging>
+ <name>BaSys Examples</name>
+
+ <repositories>
+ <repository>
+ <id>data-local</id>
+ <name>data</name>
+ <url>file://${project.basedir}/repo</url>
+ </repository>
</repositories>
- <build>
- <sourceDirectory></sourceDirectory>
-
- <resources>
- <resource>
- <directory>src</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>servlets</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>examples</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- <resource>
- <directory>directory</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
-
- <testSourceDirectory>
+ <build>
+ <sourceDirectory>src</sourceDirectory>
+
+ <testSourceDirectory>
${project.basedir}/examples
- </testSourceDirectory>
-
- <plugins>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>3.7.0</version>
- <configuration>
- <source>1.8</source>
- <target>1.8</target>
- <compilerArgument>-proc:none</compilerArgument>
- </configuration>
- </plugin>
-
- <plugin>
- <artifactId>maven-war-plugin</artifactId>
- <version>3.0.0</version>
- <!-- <configuration>
- <warSourceDirectory>WebContent</warSourceDirectory>
- </configuration> -->
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <!-- <version>2.12.1</version> -->
- <version>2.4.2</version>
- <configuration>
- <excludes>
- <exclude>**/*HTTP*</exclude>
- <exclude>**/*TCP*</exclude>
- </excludes>
- </configuration>
- </plugin>
-
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-failsafe-plugin</artifactId>
- <version>2.12.4</version>
- <configuration>
- <includes>
- <include>**/*HTTP*</include>
- <include>**/*TCP*</include>
- </includes>
- </configuration>
- <executions>
- <execution>
- <goals>
- <goal>integration-test</goal>
- <goal>verify</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
-
-
- <!-- Export Jar file to /examples package -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <version>2.3.1</version>
- <configuration>
- <outputDirectory>../../examples/basys.examples/repo/basys/examples/basys.examples/0.0.1-SNAPSHOT</outputDirectory>
- </configuration>
- </plugin>
-
- </plugins>
- </build>
-
- <dependencies>
-
-
+ </testSourceDirectory>
+
+ <plugins>
+ <!-- Add sources for servlets and examples to sourceDirectory -->
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>3.0.0</version>
+ <executions>
+ <execution>
+ <id>attachServlets</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>servlets</source>
+ </sources>
+ </configuration>
+ </execution>
+ <execution>
+ <id>attachSupport</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>examples</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.7.0</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ <compilerArgument>-proc:none</compilerArgument>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>3.0.0</version>
+ <!-- <configuration> <warSourceDirectory>WebContent</warSourceDirectory>
+ </configuration> -->
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <!-- <version>2.12.1</version> -->
+ <version>2.4.2</version>
+ <configuration>
+ <excludes>
+ <exclude>**/*HTTP*</exclude>
+ <exclude>**/*TCP*</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <version>2.12.4</version>
+ <configuration>
+ <includes>
+ <include>**/*HTTP*</include>
+ <include>**/*TCP*</include>
+ </includes>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencies>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
- <!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api -->
- <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-client -->
+ <!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api -->
+ <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-client -->
<!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
- <!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-catalina (Tomcat 8, not 9) -->
-
+ <!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-catalina
+ (Tomcat 8, not 9) -->
<dependency>
- <groupId>org.json</groupId>
- <artifactId>json</artifactId>
- <version>20180813</version>
- <!-- <scope>provided</scope> -->
- </dependency>
-
- <!-- Dependencies removed from Classpath -->
+ <groupId>org.json</groupId>
+ <artifactId>json</artifactId>
+ <version>20180813</version>
+ <!-- <scope>provided</scope> -->
+ </dependency>
+ <!-- Dependencies removed from Classpath -->
<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
<dependency>
- <groupId>org.postgresql</groupId>
- <artifactId>postgresql</artifactId>
- <version>42.2.2</version>
+ <groupId>org.postgresql</groupId>
+ <artifactId>postgresql</artifactId>
+ <version>42.2.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish.hk2.external/aopalliance-repackaged -->
<dependency>
- <groupId>org.glassfish.hk2.external</groupId>
- <artifactId>aopalliance-repackaged</artifactId>
- <version>2.5.0-b42</version>
+ <groupId>org.glassfish.hk2.external</groupId>
+ <artifactId>aopalliance-repackaged</artifactId>
+ <version>2.5.0-b42</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.enterprise/cdi-api -->
<dependency>
- <groupId>javax.enterprise</groupId>
- <artifactId>cdi-api</artifactId>
- <version>2.0</version>
- <scope>provided</scope>
+ <groupId>javax.enterprise</groupId>
+ <artifactId>cdi-api</artifactId>
+ <version>2.0</version>
+ <scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.el/el-api -->
<dependency>
- <groupId>javax.el</groupId>
- <artifactId>el-api</artifactId>
- <version>2.2</version>
+ <groupId>javax.el</groupId>
+ <artifactId>el-api</artifactId>
+ <version>2.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish.hk2/hk2-api -->
<dependency>
- <groupId>org.glassfish.hk2</groupId>
- <artifactId>hk2-api</artifactId>
- <version>2.5.0</version>
+ <groupId>org.glassfish.hk2</groupId>
+ <artifactId>hk2-api</artifactId>
+ <version>2.5.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javassist/javassist -->
<dependency>
- <groupId>javassist</groupId>
- <artifactId>javassist</artifactId>
- <version>3.12.1.GA</version>
+ <groupId>javassist</groupId>
+ <artifactId>javassist</artifactId>
+ <version>3.12.1.GA</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
<!-- https://mvnrepository.com/artifact/javax.inject/javax.inject -->
<dependency>
- <groupId>javax.inject</groupId>
- <artifactId>javax.inject</artifactId>
- <version>1</version>
+ <groupId>javax.inject</groupId>
+ <artifactId>javax.inject</artifactId>
+ <version>1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.json/javax.json-api -->
<dependency>
- <groupId>javax.json</groupId>
- <artifactId>javax.json-api</artifactId>
- <version>1.0</version>
+ <groupId>javax.json</groupId>
+ <artifactId>javax.json-api</artifactId>
+ <version>1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api -->
<dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- <version>2.3.0</version>
+ <groupId>javax.xml.bind</groupId>
+ <artifactId>jaxb-api</artifactId>
+ <version>2.3.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.jboss.spec.javax.interceptor/jboss-interceptors-api_1.1_spec -->
<dependency>
- <groupId>org.jboss.spec.javax.interceptor</groupId>
- <artifactId>jboss-interceptors-api_1.1_spec</artifactId>
- <version>1.0.1.Final</version>
+ <groupId>org.jboss.spec.javax.interceptor</groupId>
+ <artifactId>jboss-interceptors-api_1.1_spec</artifactId>
+ <version>1.0.1.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
<dependency>
- <groupId>javax.annotation</groupId>
- <artifactId>javax.annotation-api</artifactId>
- <version>1.3.2</version>
+ <groupId>javax.annotation</groupId>
+ <artifactId>javax.annotation-api</artifactId>
+ <version>1.3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.osgi/org.osgi.core -->
<dependency>
- <groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
- <version>4.2.0</version>
- <scope>provided</scope>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <version>4.2.0</version>
+ <scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.glassfish.hk2/osgi-resource-locator -->
<dependency>
- <groupId>org.glassfish.hk2</groupId>
- <artifactId>osgi-resource-locator</artifactId>
- <version>1.0.1</version>
+ <groupId>org.glassfish.hk2</groupId>
+ <artifactId>osgi-resource-locator</artifactId>
+ <version>1.0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.persistence/persistence-api -->
<dependency>
- <groupId>javax.persistence</groupId>
- <artifactId>persistence-api</artifactId>
- <version>1.0.2</version>
+ <groupId>javax.persistence</groupId>
+ <artifactId>persistence-api</artifactId>
+ <version>1.0.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
<dependency>
- <groupId>javax.validation</groupId>
- <artifactId>validation-api</artifactId>
- <version>2.0.1.Final</version>
+ <groupId>javax.validation</groupId>
+ <artifactId>validation-api</artifactId>
+ <version>2.0.1.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>3.1.0</version>
- <scope>provided</scope>
+ <groupId>javax.servlet</groupId>
+ <artifactId>javax.servlet-api</artifactId>
+ <version>3.1.0</version>
+ <scope>provided</scope>
</dependency>
-
+
<!-- https://mvnrepository.com/artifact/org.eclipse/yasson -->
<dependency>
- <groupId>org.eclipse</groupId>
- <artifactId>yasson</artifactId>
- <version>1.0.2</version>
+ <groupId>org.eclipse</groupId>
+ <artifactId>yasson</artifactId>
+ <version>1.0.2</version>
</dependency>
-
- <!-- https://mvnrepository.com/artifact/javax.xml.xquery/xqj-api (Add from local repository because jar cannot be found on maven central -->
+
+ <!-- https://mvnrepository.com/artifact/javax.xml.xquery/xqj-api (Add from
+ local repository because jar cannot be found on maven central -->
<dependency>
- <groupId>javax.xml.xquery</groupId>
- <artifactId>xqj-api</artifactId>
- <version>1.0</version>
+ <groupId>javax.xml.xquery</groupId>
+ <artifactId>xqj-api</artifactId>
+ <version>1.0</version>
</dependency>
-
+
<!-- https://mvnrepository.com/artifact/net.sf.saxon/saxon-xqj -->
- <!-- <dependency>
- <groupId>net.sf.saxon</groupId>
- <artifactId>saxon-xqj</artifactId>
- <version>9.x</version>
- </dependency> -->
-
+ <!-- <dependency> <groupId>net.sf.saxon</groupId> <artifactId>saxon-xqj</artifactId>
+ <version>9.x</version> </dependency> -->
+
<!-- https://mvnrepository.com/artifact/net.sf.saxon/saxon-xqj -->
<dependency>
- <groupId>net.sf.saxon</groupId>
- <artifactId>saxon-xqj</artifactId>
- <version>8.9</version>
+ <groupId>net.sf.saxon</groupId>
+ <artifactId>saxon-xqj</artifactId>
+ <version>8.9</version>
</dependency>
-
-
+
+
<!-- https://mvnrepository.com/artifact/net.sf.saxon/Saxon-HE -->
<dependency>
- <groupId>net.sf.saxon</groupId>
- <artifactId>Saxon-HE</artifactId>
- <version>9.5.1-5</version>
+ <groupId>net.sf.saxon</groupId>
+ <artifactId>Saxon-HE</artifactId>
+ <version>9.5.1-5</version>
</dependency>
-
-
+
+
<dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- <version>2.8.5</version>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.8.5</version>
</dependency>
-
-
- <!-- Add BaSys SDK from local repository. Maven build of SDK must generate a jar and place it into the repository to update -->
+
+
+ <!-- Add BaSys SDK from local repository. Maven build of SDK must generate
+ a jar and place it into the repository to update -->
<dependency>
<groupId>basys.sdk</groupId>
<artifactId>basys.sdk</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
-
- <!-- Add BaSys components from local repository. Maven build of SDK must generate a jar and place it into the repository to update -->
+
+ <!-- Add BaSys components from local repository. Maven build of SDK must
+ generate a jar and place it into the repository to update -->
<dependency>
<groupId>basys.components</groupId>
<artifactId>basys.components</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
-
- </dependencies>
+ </dependencies>
</project>
\ No newline at end of file
diff --git a/examples/basys.examples/repo/basys/basys.components/0.0.1-SNAPSHOT/_remote.repositories b/examples/basys.examples/repo/basys/basys.components/0.0.1-SNAPSHOT/_remote.repositories
new file mode 100644
index 0000000..f72247f
--- /dev/null
+++ b/examples/basys.examples/repo/basys/basys.components/0.0.1-SNAPSHOT/_remote.repositories
@@ -0,0 +1,5 @@
+#NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice.
+#Thu Jul 18 09:15:58 CEST 2019
+basys.components-0.0.1-SNAPSHOT.jar>=
+basys.components-0.0.1-SNAPSHOT.pom>=
+basys.components-0.0.1-SNAPSHOT-sources.jar>=
diff --git a/examples/basys.examples/repo/basys/basys.components/0.0.1-SNAPSHOT/basys.components-0.0.1-SNAPSHOT-sources.jar b/examples/basys.examples/repo/basys/basys.components/0.0.1-SNAPSHOT/basys.components-0.0.1-SNAPSHOT-sources.jar
new file mode 100644
index 0000000..893801d
--- /dev/null
+++ b/examples/basys.examples/repo/basys/basys.components/0.0.1-SNAPSHOT/basys.components-0.0.1-SNAPSHOT-sources.jar
Binary files differ
diff --git a/examples/basys.examples/repo/basys/basys.components/0.0.1-SNAPSHOT/basys.components-0.0.1-SNAPSHOT.jar b/examples/basys.examples/repo/basys/basys.components/0.0.1-SNAPSHOT/basys.components-0.0.1-SNAPSHOT.jar
new file mode 100644
index 0000000..0be50ee
--- /dev/null
+++ b/examples/basys.examples/repo/basys/basys.components/0.0.1-SNAPSHOT/basys.components-0.0.1-SNAPSHOT.jar
Binary files differ
diff --git a/examples/basys.examples/repo/basys/basys.components/0.0.1-SNAPSHOT/basys.components-0.0.1-SNAPSHOT.pom b/examples/basys.examples/repo/basys/basys.components/0.0.1-SNAPSHOT/basys.components-0.0.1-SNAPSHOT.pom
new file mode 100644
index 0000000..f689340
--- /dev/null
+++ b/examples/basys.examples/repo/basys/basys.components/0.0.1-SNAPSHOT/basys.components-0.0.1-SNAPSHOT.pom
@@ -0,0 +1,382 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>basys.components</groupId>
+ <artifactId>basys.components</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>jar</packaging>
+ <name>BaSys Components</name>
+
+ <repositories>
+ <repository>
+ <id>data-local</id>
+ <name>data</name>
+ <url>file://${project.basedir}/repo</url>
+ </repository>
+ </repositories>
+
+ <build>
+ <sourceDirectory>src</sourceDirectory>
+
+ <testSourceDirectory>
+ ${project.basedir}/regression/org/eclipse/basyx/regression
+ </testSourceDirectory>
+
+ <plugins>
+ <!-- Add sources for servlets and regression-support to sourceDirectory -->
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>3.0.0</version>
+ <executions>
+ <execution>
+ <id>attachServlets</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>servlets</source>
+ </sources>
+ </configuration>
+ </execution>
+ <execution>
+ <id>attachSupport</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>regression/org/eclipse/basyx/regression/support</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.7.0</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>3.0.0</version>
+ <!-- <configuration> <warSourceDirectory>WebContent</warSourceDirectory>
+ </configuration> -->
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <!-- <version>2.12.1</version> -->
+ <version>2.4.2</version>
+ <configuration>
+ <excludes>
+ <exclude>**/*HTTP*</exclude>
+ <exclude>**/*TCP*</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <version>2.12.4</version>
+ <configuration>
+ <includes>
+ <include>**/*HTTP*</include>
+ <include>**/*TCP*</include>
+ </includes>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <!-- Attach sources to jar file -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-source-plugin</artifactId>
+ <version>3.1.0</version>
+ <executions>
+ <execution>
+ <id>attach-sources</id>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <!-- Install jar file to /components and /examples package -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-install-plugin</artifactId>
+ <version>3.0.0-M1</version>
+ <configuration>
+ <artifactId>basys.components</artifactId>
+ <groupId>basys</groupId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>jar</packaging>
+ </configuration>
+ <executions>
+ <execution>
+ <id>installExamples</id>
+ <goals>
+ <goal>install-file</goal>
+ </goals>
+ <phase>install</phase>
+ <configuration>
+ <file>target/basys.components-0.0.1-SNAPSHOT.jar</file>
+ <localRepositoryPath>../../examples/basys.examples/repo/</localRepositoryPath>
+ </configuration>
+ </execution>
+ <execution>
+ <id>installExamplesSources</id>
+ <goals>
+ <goal>install-file</goal>
+ </goals>
+ <phase>install</phase>
+ <configuration>
+ <file>target/basys.components-0.0.1-SNAPSHOT-sources.jar</file>
+ <classifier>sources</classifier>
+ <localRepositoryPath>../../examples/basys.examples/repo/</localRepositoryPath>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+ </build>
+
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.12</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
+ <!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-catalina
+ (Tomcat 8, not 9) -->
+ <dependency>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat-catalina</artifactId>
+ <version>8.0.32</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api -->
+ <dependency>
+ <groupId>javax.ws.rs</groupId>
+ <artifactId>javax.ws.rs-api</artifactId>
+ <version>2.1</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-client -->
+ <dependency>
+ <groupId>org.glassfish.jersey.core</groupId>
+ <artifactId>jersey-client</artifactId>
+ <version>2.26-b03</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
+ <dependency>
+ <groupId>org.json</groupId>
+ <artifactId>json</artifactId>
+ <version>20180813</version>
+ <!-- <scope>provided</scope> -->
+ </dependency>
+ <!-- Dependencies removed from Classpath -->
+ <!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
+ <dependency>
+ <groupId>org.postgresql</groupId>
+ <artifactId>postgresql</artifactId>
+ <version>42.2.2</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/org.glassfish.hk2.external/aopalliance-repackaged -->
+ <dependency>
+ <groupId>org.glassfish.hk2.external</groupId>
+ <artifactId>aopalliance-repackaged</artifactId>
+ <version>2.5.0-b42</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/javax.enterprise/cdi-api -->
+ <dependency>
+ <groupId>javax.enterprise</groupId>
+ <artifactId>cdi-api</artifactId>
+ <version>2.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/javax.el/el-api -->
+ <dependency>
+ <groupId>javax.el</groupId>
+ <artifactId>el-api</artifactId>
+ <version>2.2</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/org.glassfish.hk2/hk2-api -->
+ <dependency>
+ <groupId>org.glassfish.hk2</groupId>
+ <artifactId>hk2-api</artifactId>
+ <version>2.5.0</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/javassist/javassist -->
+ <dependency>
+ <groupId>javassist</groupId>
+ <artifactId>javassist</artifactId>
+ <version>3.12.1.GA</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
+ <!-- https://mvnrepository.com/artifact/javax.inject/javax.inject -->
+ <dependency>
+ <groupId>javax.inject</groupId>
+ <artifactId>javax.inject</artifactId>
+ <version>1</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/javax.json/javax.json-api -->
+ <dependency>
+ <groupId>javax.json</groupId>
+ <artifactId>javax.json-api</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/javax.xml.bind/jaxb-api -->
+ <dependency>
+ <groupId>javax.xml.bind</groupId>
+ <artifactId>jaxb-api</artifactId>
+ <version>2.3.0</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/org.jboss.spec.javax.interceptor/jboss-interceptors-api_1.1_spec -->
+ <dependency>
+ <groupId>org.jboss.spec.javax.interceptor</groupId>
+ <artifactId>jboss-interceptors-api_1.1_spec</artifactId>
+ <version>1.0.1.Final</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
+ <dependency>
+ <groupId>javax.annotation</groupId>
+ <artifactId>javax.annotation-api</artifactId>
+ <version>1.3.2</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/org.osgi/org.osgi.core -->
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <version>4.2.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/org.glassfish.hk2/osgi-resource-locator -->
+ <dependency>
+ <groupId>org.glassfish.hk2</groupId>
+ <artifactId>osgi-resource-locator</artifactId>
+ <version>1.0.1</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/javax.persistence/persistence-api -->
+ <dependency>
+ <groupId>javax.persistence</groupId>
+ <artifactId>persistence-api</artifactId>
+ <version>1.0.2</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/javax.validation/validation-api -->
+ <dependency>
+ <groupId>javax.validation</groupId>
+ <artifactId>validation-api</artifactId>
+ <version>2.0.1.Final</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>javax.servlet-api</artifactId>
+ <version>3.1.0</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <!-- https://mvnrepository.com/artifact/org.eclipse/yasson -->
+ <dependency>
+ <groupId>org.eclipse</groupId>
+ <artifactId>yasson</artifactId>
+ <version>1.0.2</version>
+ </dependency>
+<!-- https://mvnrepository.com/artifact/org.activiti/activiti-engine -->
+ <dependency>
+ <groupId>org.activiti</groupId>
+ <artifactId>activiti-engine</artifactId>
+ <version>6.0.0</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/org.activiti/activiti-bpmn-model -->
+ <dependency>
+ <groupId>org.activiti</groupId>
+ <artifactId>activiti-bpmn-model</artifactId>
+ <version>6.0.0</version>
+ </dependency>
+
+ <!-- https://mvnrepository.com/artifact/org.activiti/activiti-bpmn-layout -->
+ <dependency>
+ <groupId>org.activiti</groupId>
+ <artifactId>activiti-bpmn-layout</artifactId>
+ <version>6.0.0</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.4</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/com.h2database/h2 -->
+ <dependency>
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ <version>1.4.197</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>1.7.5</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/javax.xml.xquery/xqj-api (Add from
+ local repository because jar cannot be found on maven central -->
+ <dependency>
+ <groupId>javax.xml.xquery</groupId>
+ <artifactId>xqj-api</artifactId>
+ <version>1.0</version>
+ </dependency>
+
+ <!-- https://mvnrepository.com/artifact/net.sf.saxon/saxon-xqj -->
+ <!-- <dependency> <groupId>net.sf.saxon</groupId> <artifactId>saxon-xqj</artifactId>
+ <version>9.x</version> </dependency> -->
+
+ <!-- https://mvnrepository.com/artifact/net.sf.saxon/saxon-xqj -->
+ <dependency>
+ <groupId>net.sf.saxon</groupId>
+ <artifactId>saxon-xqj</artifactId>
+ <version>8.9</version>
+ </dependency>
+
+
+ <!-- https://mvnrepository.com/artifact/net.sf.saxon/Saxon-HE -->
+ <dependency>
+ <groupId>net.sf.saxon</groupId>
+ <artifactId>Saxon-HE</artifactId>
+ <version>9.5.1-5</version>
+ </dependency>
+
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.8.5</version>
+ </dependency>
+
+ <dependency>
+ <groupId>basys</groupId>
+ <artifactId>basys.sdk</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
diff --git a/examples/basys.examples/repo/basys/basys.components/0.0.1-SNAPSHOT/maven-metadata-local.xml b/examples/basys.examples/repo/basys/basys.components/0.0.1-SNAPSHOT/maven-metadata-local.xml
new file mode 100644
index 0000000..b6e5ff2
--- /dev/null
+++ b/examples/basys.examples/repo/basys/basys.components/0.0.1-SNAPSHOT/maven-metadata-local.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata modelVersion="1.1.0">
+ <groupId>basys</groupId>
+ <artifactId>basys.components</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <versioning>
+ <snapshot>
+ <localCopy>true</localCopy>
+ </snapshot>
+ <lastUpdated>20190718071558</lastUpdated>
+ <snapshotVersions>
+ <snapshotVersion>
+ <classifier>sources</classifier>
+ <extension>jar</extension>
+ <value>0.0.1-SNAPSHOT</value>
+ <updated>20190718071558</updated>
+ </snapshotVersion>
+ <snapshotVersion>
+ <extension>pom</extension>
+ <value>0.0.1-SNAPSHOT</value>
+ <updated>20190718071558</updated>
+ </snapshotVersion>
+ <snapshotVersion>
+ <extension>jar</extension>
+ <value>0.0.1-SNAPSHOT</value>
+ <updated>20190718071558</updated>
+ </snapshotVersion>
+ </snapshotVersions>
+ </versioning>
+</metadata>
diff --git a/examples/basys.examples/repo/basys/basys.components/maven-metadata-local.xml b/examples/basys.examples/repo/basys/basys.components/maven-metadata-local.xml
new file mode 100644
index 0000000..da19064
--- /dev/null
+++ b/examples/basys.examples/repo/basys/basys.components/maven-metadata-local.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<metadata>
+ <groupId>basys</groupId>
+ <artifactId>basys.components</artifactId>
+ <versioning>
+ <versions>
+ <version>0.0.1-SNAPSHOT</version>
+ </versions>
+ <lastUpdated>20190718071558</lastUpdated>
+ </versioning>
+</metadata>
diff --git a/sdks/java/basys.sdk/build/classes/org/json/LICENSE b/sdks/java/basys.sdk/build/classes/org/json/LICENSE
new file mode 100644
index 0000000..02ee0ef
--- /dev/null
+++ b/sdks/java/basys.sdk/build/classes/org/json/LICENSE
@@ -0,0 +1,23 @@
+============================================================================
+
+Copyright (c) 2002 JSON.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+The Software shall be used for Good, not Evil.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/sdks/java/basys.sdk/build/classes/org/json/README b/sdks/java/basys.sdk/build/classes/org/json/README
new file mode 100644
index 0000000..9783046
--- /dev/null
+++ b/sdks/java/basys.sdk/build/classes/org/json/README
@@ -0,0 +1,114 @@
+JSON in Java [package org.json]
+
+JSON is a light-weight, language independent, data interchange format.
+See http://www.JSON.org/
+
+The files in this package implement JSON encoders/decoders in Java.
+It also includes the capability to convert between JSON and XML, HTTP
+headers, Cookies, and CDL.
+
+This is a reference implementation. There is a large number of JSON packages
+in Java. Perhaps someday the Java community will standardize on one. Until
+then, choose carefully.
+
+The license includes this restriction: "The software shall be used for good,
+not evil." If your conscience cannot live with that, then choose a different
+package.
+
+The package compiles on Java 1.6-1.8.
+
+
+JSONObject.java: The JSONObject can parse text from a String or a JSONTokener
+to produce a map-like object. The object provides methods for manipulating its
+contents, and for producing a JSON compliant object serialization.
+
+JSONArray.java: The JSONArray can parse text from a String or a JSONTokener
+to produce a vector-like object. The object provides methods for manipulating
+its contents, and for producing a JSON compliant array serialization.
+
+JSONTokener.java: The JSONTokener breaks a text into a sequence of individual
+tokens. It can be constructed from a String, Reader, or InputStream.
+
+JSONException.java: The JSONException is the standard exception type thrown
+by this package.
+
+JSONPointer.java: Implementation of
+[JSON Pointer (RFC 6901)](https://tools.ietf.org/html/rfc6901). Supports
+JSON Pointers both in the form of string representation and URI fragment
+representation.
+
+JSONString.java: The JSONString interface requires a toJSONString method,
+allowing an object to provide its own serialization.
+
+JSONStringer.java: The JSONStringer provides a convenient facility for
+building JSON strings.
+
+JSONWriter.java: The JSONWriter provides a convenient facility for building
+JSON text through a writer.
+
+
+CDL.java: CDL provides support for converting between JSON and comma
+delimited lists.
+
+Cookie.java: Cookie provides support for converting between JSON and cookies.
+
+CookieList.java: CookieList provides support for converting between JSON and
+cookie lists.
+
+HTTP.java: HTTP provides support for converting between JSON and HTTP headers.
+
+HTTPTokener.java: HTTPTokener extends JSONTokener for parsing HTTP headers.
+
+XML.java: XML provides support for converting between JSON and XML.
+
+JSONML.java: JSONML provides support for converting between JSONML and XML.
+
+XMLTokener.java: XMLTokener extends JSONTokener for parsing XML text.
+
+Unit tests are maintained in a separate project. Contributing developers can test
+JSON-java pull requests with the code in this project:
+https://github.com/stleary/JSON-Java-unit-test
+
+Numeric types in this package comply with ECMA-404: The JSON Data Interchange Format
+(http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf) and
+RFC 7159: The JavaScript Object Notation (JSON) Data Interchange Format
+(https://tools.ietf.org/html/rfc7159#section-6).
+This package fully supports Integer, Long, and Double Java types. Partial support
+for BigInteger and BigDecimal values in JSONObject and JSONArray objects is provided
+in the form of get(), opt(), and put() API methods.
+
+Although 1.6 compatibility is currently supported, it is not a project goal and may be
+removed in some future release.
+
+In compliance with RFC7159 page 10 section 9, the parser is more lax with what is valid
+JSON than the Generator. For Example, the tab character (U+0009) is allowed when reading
+JSON Text strings, but when output by the Generator, tab is properly converted to \t in
+the string. Other instances may occur where reading invalid JSON text does not cause an
+error to be generated. Malformed JSON Texts such as missing end " (quote) on strings or
+invalid number formats (1.2e6.3) will cause errors as such documents can not be read
+ reliably.
+
+Release history:
+20171018 Checkpoint for recent commits.
+
+20170516 Roll up recent commits.
+
+20160810 Revert code that was breaking opt*() methods.
+
+20160807 This release contains a bug in the JSONObject.opt*() and JSONArray.opt*() methods,
+it is not recommended for use.
+Java 1.6 compatability fixed, JSONArray.toList() and JSONObject.toMap(),
+RFC4180 compatibility, JSONPointer, some exception fixes, optional XML type conversion.
+Contains the latest code as of 7 Aug, 2016
+
+20160212 Java 1.6 compatibility, OSGi bundle. Contains the latest code as of 12 Feb, 2016.
+
+20151123 JSONObject and JSONArray initialization with generics. Contains the
+latest code as of 23 Nov, 2015.
+
+20150729 Checkpoint for Maven central repository release. Contains the latest code
+as of 29 July, 2015.
+
+JSON-java releases can be found by searching the Maven repository for groupId "org.json"
+and artifactId "json". For example:
+https://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.json%22%20AND%20a%3A%22json%22
diff --git a/sdks/java/basys.sdk/pom.xml b/sdks/java/basys.sdk/pom.xml
index f1e2eba..4b652db 100644
--- a/sdks/java/basys.sdk/pom.xml
+++ b/sdks/java/basys.sdk/pom.xml
@@ -1,140 +1,223 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>basys.sdk</groupId>
- <artifactId>basys.sdk</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>jar</packaging>
- <name>BaSyx SDK</name>
-
- <build>
- <sourceDirectory>src</sourceDirectory>
- <resources>
- <resource>
- <directory>src</directory>
- <excludes>
- <exclude>**/*.java</exclude>
- </excludes>
- </resource>
- </resources>
-
- <testSourceDirectory>
- regression
- </testSourceDirectory>
-
-
- <!-- Compile Sources -->
- <plugins>
- <plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>3.7.0</version>
- <configuration>
- <source>1.8</source>
- <target>1.8</target>
- </configuration>
- </plugin>
-
-
-
- <!-- Run Unit Tests -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <version>2.12.1</version>
- <configuration>
- <excludes>
- <exclude>**/*HTTP*</exclude>
- <exclude>**/*TCP*</exclude>
- </excludes>
- </configuration>
- </plugin>
-
- <!-- Run Integration Tests -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-failsafe-plugin</artifactId>
- <version>2.12.4</version>
- <configuration>
- <includes>
- <include>**/*HTTP*</include>
- <include>**/*TCP*</include>
- </includes>
- </configuration>
- <executions>
- <execution>
- <goals>
- <goal>integration-test</goal>
- <goal>verify</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
-
- </plugins>
-
- </build>
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.12</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
-
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- <version>2.8.5</version>
- </dependency>
- <dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter-api</artifactId>
- <version>5.3.1</version>
- </dependency>
- <dependency>
- <groupId>org.apache.derby</groupId>
- <artifactId>derby</artifactId>
- <version>10.14.2.0</version>
- </dependency>
- <dependency>
- <groupId>javax.mail</groupId>
- <artifactId>mail</artifactId>
- <version>1.4</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api -->
- <dependency>
- <groupId>javax.ws.rs</groupId>
- <artifactId>javax.ws.rs-api</artifactId>
- <version>2.1</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-client -->
- <dependency>
- <groupId>org.glassfish.jersey.core</groupId>
- <artifactId>jersey-client</artifactId>
- <version>2.26-b03</version>
- </dependency>
- <!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>4.0.1</version>
- <scope>provided</scope>
- </dependency>
- <!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-catalina (Tomcat 8, not 9) -->
- <dependency>
- <groupId>org.apache.tomcat</groupId>
- <artifactId>tomcat-catalina</artifactId>
- <version>8.0.32</version>
-
- </dependency>
- <dependency>
- <groupId>org.eclipse.milo</groupId>
- <artifactId>sdk-client</artifactId>
- <version>0.3.1</version>
- </dependency>
- <dependency>
- <groupId>org.eclipse.milo</groupId>
- <artifactId>sdk-server</artifactId>
- <version>0.3.1</version>
- </dependency>
- </dependencies>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>basys.sdk</groupId>
+ <artifactId>basys.sdk</artifactId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>jar</packaging>
+ <name>BaSyx SDK</name>
+
+
+ <build>
+ <sourceDirectory>src</sourceDirectory>
+
+ <testSourceDirectory>
+ regression
+ </testSourceDirectory>
+
+ <plugins>
+ <!-- Add sources for regression-support to sourceDirectory -->
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <version>3.0.0</version>
+ <executions>
+ <execution>
+ <id>attachSupport</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>add-source</goal>
+ </goals>
+ <configuration>
+ <sources>
+ <source>regression/org/eclipse/basyx/testsuite/support</source>
+ </sources>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <!-- Compile Sources with Java 8 -->
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>3.7.0</version>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ </configuration>
+ </plugin>
+
+ <!-- Run Unit Tests -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <version>2.12.1</version>
+ </plugin>
+
+ <!-- Run Integration Tests -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <version>2.12.4</version>
+ <configuration>
+ <includes>
+ <include>**/*HTTP*</include>
+ <include>**/*TCP*</include>
+ </includes>
+ </configuration>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <!-- Attach sources to jar file -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-source-plugin</artifactId>
+ <version>3.1.0</version>
+ <executions>
+ <execution>
+ <id>attach-sources</id>
+ <goals>
+ <goal>jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
+ <!-- Install jar file to /components and /examples package -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-install-plugin</artifactId>
+ <version>3.0.0-M1</version>
+ <configuration>
+ <artifactId>basys.sdk</artifactId>
+ <groupId>basys</groupId>
+ <version>0.0.1-SNAPSHOT</version>
+ <packaging>jar</packaging>
+ </configuration>
+ <executions>
+ <execution>
+ <id>installComponents</id>
+ <goals>
+ <goal>install-file</goal>
+ </goals>
+ <phase>install</phase>
+ <configuration>
+ <file>target/basys.sdk-0.0.1-SNAPSHOT.jar</file>
+ <localRepositoryPath>../../../components/basys.components/repo/</localRepositoryPath>
+ </configuration>
+ </execution>
+ <execution>
+ <id>installComponentsSources</id>
+ <goals>
+ <goal>install-file</goal>
+ </goals>
+ <phase>install</phase>
+ <configuration>
+ <file>target/basys.sdk-0.0.1-SNAPSHOT-sources.jar</file>
+ <classifier>sources</classifier>
+ <localRepositoryPath>../../../components/basys.components/repo/</localRepositoryPath>
+ </configuration>
+ </execution>
+ <execution>
+ <id>installExamples</id>
+ <goals>
+ <goal>install-file</goal>
+ </goals>
+ <phase>install</phase>
+ <configuration>
+ <file>target/basys.sdk-0.0.1-SNAPSHOT.jar</file>
+ <localRepositoryPath>../../../examples/basys.examples/repo/</localRepositoryPath>
+ </configuration>
+ </execution>
+ <execution>
+ <id>installExamplesSources</id>
+ <goals>
+ <goal>install-file</goal>
+ </goals>
+ <phase>install</phase>
+ <configuration>
+ <file>target/basys.sdk-0.0.1-SNAPSHOT-sources.jar</file>
+ <classifier>sources</classifier>
+ <localRepositoryPath>../../../examples/basys.examples/repo/</localRepositoryPath>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ </plugins>
+ </build>
+
+
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.12</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.8.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.junit.jupiter</groupId>
+ <artifactId>junit-jupiter-api</artifactId>
+ <version>5.3.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ <version>10.14.2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.mail</groupId>
+ <artifactId>mail</artifactId>
+ <version>1.4</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/javax.ws.rs/javax.ws.rs-api -->
+ <dependency>
+ <groupId>javax.ws.rs</groupId>
+ <artifactId>javax.ws.rs-api</artifactId>
+ <version>2.1</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/org.glassfish.jersey.core/jersey-client -->
+ <dependency>
+ <groupId>org.glassfish.jersey.core</groupId>
+ <artifactId>jersey-client</artifactId>
+ <version>2.26-b03</version>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>javax.servlet-api</artifactId>
+ <version>4.0.1</version>
+ <scope>provided</scope>
+ </dependency>
+ <!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-catalina
+ (Tomcat 8, not 9) -->
+ <dependency>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>tomcat-catalina</artifactId>
+ <version>8.0.32</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.milo</groupId>
+ <artifactId>sdk-client</artifactId>
+ <version>0.3.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.eclipse.milo</groupId>
+ <artifactId>sdk-server</artifactId>
+ <version>0.3.1</version>
+ </dependency>
+ </dependencies>
</project>
\ No newline at end of file