Merge "522277 - [REQU-80] Referencing" into dev
diff --git a/src/main/java/org/eclipse/mdm/api/base/model/ContextComponent.java b/src/main/java/org/eclipse/mdm/api/base/model/ContextComponent.java
index 58b6bbb..066e2ba 100644
--- a/src/main/java/org/eclipse/mdm/api/base/model/ContextComponent.java
+++ b/src/main/java/org/eclipse/mdm/api/base/model/ContextComponent.java
@@ -68,6 +68,15 @@
}
/**
+ * Returns the {@link ContextRoot} this context component belongs to.
+ *
+ * @return The parent {@link ContextRoot}.
+ */
+ public ContextRoot getContextRoot() {
+ return getCore().getPermanentStore().get(ContextRoot.class);
+ }
+
+ /**
* Removes the {@link ContextSensor} identified by given name.
*
* @param name
diff --git a/src/main/java/org/eclipse/mdm/api/base/model/ContextSensor.java b/src/main/java/org/eclipse/mdm/api/base/model/ContextSensor.java
index b633002..725ecc0 100644
--- a/src/main/java/org/eclipse/mdm/api/base/model/ContextSensor.java
+++ b/src/main/java/org/eclipse/mdm/api/base/model/ContextSensor.java
@@ -35,4 +35,12 @@
super(core);
}
+ /**
+ * Returns the {@link ContextComponent} this context sensor belongs to.
+ *
+ * @return The parent {@link ContextComponent}
+ */
+ public ContextComponent getContextComponent() {
+ return getCore().getPermanentStore().get(ContextComponent.class);
+ }
}
diff --git a/src/test/java/org/eclipse/mdm/api/base/model/ContextComponentTest.java b/src/test/java/org/eclipse/mdm/api/base/model/ContextComponentTest.java
new file mode 100644
index 0000000..d406dee
--- /dev/null
+++ b/src/test/java/org/eclipse/mdm/api/base/model/ContextComponentTest.java
@@ -0,0 +1,45 @@
+package org.eclipse.mdm.api.base.model;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.mdm.api.base.core.ChildrenStore;
+import org.eclipse.mdm.api.base.core.Core;
+import org.eclipse.mdm.api.base.core.EntityStore;
+
+public class ContextComponentTest {
+
+ @org.junit.Test
+ public void testGetContextRoot() {
+ BaseEntityFactory factory = spy(BaseEntityFactory.class);
+ Core rootCore = createCore("UNITUNDERTEST");
+ when(factory.createCore(ContextRoot.class, ContextType.UNITUNDERTEST)).thenReturn(rootCore);
+ Core componentCore = createCore("");
+ when(factory.createCore("Engine", ContextComponent.class)).thenReturn(componentCore);
+
+ ContextRoot contextRoot = factory.createContextRoot("Car", ContextType.UNITUNDERTEST);
+ ContextComponent contextComponent = factory.createContextComponent("Engine", contextRoot);
+
+ assertThat(contextComponent.getContextRoot()).isEqualTo(contextRoot);
+ }
+
+ private Core createCore(String type) {
+ Core core = mock(Core.class);
+
+ Map<String, Value> values = new HashMap<>();
+ values.put("Name", ValueType.STRING.create("Name"));
+ values.put("Version", ValueType.STRING.create("Version"));
+
+ when(core.getValues()).thenReturn(values);
+ when(core.getTypeName()).thenReturn(type);
+ when(core.getPermanentStore()).thenReturn(new EntityStore());
+ when(core.getChildrenStore()).thenReturn(new ChildrenStore());
+
+ return core;
+ }
+}
diff --git a/src/test/java/org/eclipse/mdm/api/base/model/ContextSensorTest.java b/src/test/java/org/eclipse/mdm/api/base/model/ContextSensorTest.java
new file mode 100644
index 0000000..aa088da
--- /dev/null
+++ b/src/test/java/org/eclipse/mdm/api/base/model/ContextSensorTest.java
@@ -0,0 +1,49 @@
+package org.eclipse.mdm.api.base.model;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.mdm.api.base.core.ChildrenStore;
+import org.eclipse.mdm.api.base.core.Core;
+import org.eclipse.mdm.api.base.core.EntityStore;
+
+
+public class ContextSensorTest {
+
+ @org.junit.Test
+ public void testGetContextComponent() {
+ BaseEntityFactory factory = spy(BaseEntityFactory.class);
+ Core rootCore = createCore("TESTEQUIPMENT");
+ when(factory.createCore(ContextRoot.class, ContextType.TESTEQUIPMENT)).thenReturn(rootCore);
+ Core componentCore = createCore("");
+ when(factory.createCore("SensorDevice", ContextComponent.class)).thenReturn(componentCore);
+ Core sensorCore = createCore("");
+ when(factory.createCore("Sensor", ContextSensor.class)).thenReturn(sensorCore);
+
+ ContextRoot contextRoot = factory.createContextRoot("SensorDevices", ContextType.TESTEQUIPMENT);
+ ContextComponent contextComponent = factory.createContextComponent("SensorDevice", contextRoot);
+ ContextSensor contextSensor = factory.createContextSensor("Sensor", contextComponent);
+
+ assertThat(contextSensor.getContextComponent()).isEqualTo(contextComponent);
+ }
+
+ private Core createCore(String type) {
+ Core core = mock(Core.class);
+
+ Map<String, Value> values = new HashMap<>();
+ values.put("Name", ValueType.STRING.create("Name"));
+ values.put("Version", ValueType.STRING.create("Version"));
+
+ when(core.getValues()).thenReturn(values);
+ when(core.getTypeName()).thenReturn(type);
+ when(core.getPermanentStore()).thenReturn(new EntityStore());
+ when(core.getChildrenStore()).thenReturn(new ChildrenStore());
+
+ return core;
+ }
+}