Skip to content

Commit 28353bb

Browse files
Remove observer notifying when creating submodel with the API (#378)
* Remove notifying when createSubmodel with the submodelAPI * Address review remarks * Add msgCounter to MqttTestListener
1 parent 265974d commit 28353bb

3 files changed

Lines changed: 33 additions & 8 deletions

File tree

src/main/java/org/eclipse/basyx/submodel/aggregator/observing/ObservableSubmodelAggregatorV2.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ public void createSubmodel(Submodel submodel) {
9494
@Override
9595
public void createSubmodel(ISubmodelAPI submodelAPI) {
9696
submodelAggregator.createSubmodel(submodelAPI);
97-
observers.stream().forEach(observer -> observer.submodelCreated(getParentAASId(submodelAPI.getSubmodel()), submodelAPI.getSubmodel(), this.aasServerId));
9897
}
9998

10099
@Override

src/test/java/org/eclipse/basyx/testsuite/regression/extensions/shared/mqtt/MqttTestListener.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ public class MqttTestListener implements InterceptHandler {
4848
public String lastTopic;
4949
public String lastPayload;
5050
private ArrayList<String> topics = new ArrayList<>();
51+
public int msgCounter;
5152

5253
@Override
5354
public String getID() {
@@ -80,6 +81,7 @@ public synchronized void onPublish(InterceptPublishMessage msg) {
8081
topics.add(msg.getTopicName());
8182
lastTopic = msg.getTopicName();
8283
lastPayload = msg.getPayload().toString(StandardCharsets.UTF_8);
84+
msgCounter++;
8385
}
8486

8587
@Override

src/test/java/org/eclipse/basyx/testsuite/regression/extensions/submodel/aggregator/mqtt/TestMqttV2SubmodelAggregatorObserver.java

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,13 @@
4242
import org.eclipse.basyx.submodel.metamodel.map.identifier.Identifier;
4343
import org.eclipse.basyx.submodel.metamodel.map.submodelelement.SubmodelElementCollection;
4444
import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
45+
import org.eclipse.basyx.submodel.restapi.api.ISubmodelAPI;
46+
import org.eclipse.basyx.submodel.restapi.vab.VABSubmodelAPI;
4547
import org.eclipse.basyx.testsuite.regression.extensions.shared.mqtt.MqttTestListener;
4648
import org.eclipse.basyx.vab.coder.json.serialization.DefaultTypeFactory;
4749
import org.eclipse.basyx.vab.coder.json.serialization.GSONTools;
50+
import org.eclipse.basyx.vab.modelprovider.generic.VABModelProvider;
51+
import org.eclipse.basyx.vab.modelprovider.map.VABMapHandler;
4852
import org.eclipse.paho.client.mqttv3.MqttClient;
4953
import org.eclipse.paho.client.mqttv3.MqttException;
5054
import org.junit.After;
@@ -62,7 +66,7 @@
6266
/**
6367
* Tests events emitting with the MqttSubmodelAggregatorObserver
6468
*
65-
* @author fischer, jungjan, siebert
69+
* @author fischer, jungjan, siebert, mateusmolina
6670
*
6771
*/
6872
public class TestMqttV2SubmodelAggregatorObserver {
@@ -120,18 +124,24 @@ public void tearDown() {
120124

121125
@Test
122126
public void testCreateSubmodel() {
123-
String newSubmodelIdShort = "newSubmodelIdShort";
124-
String newSubmodelId = "newSubmodelId";
125-
Identifier newSubmodelIdentifier = new Identifier(IdentifierType.IRDI, newSubmodelId);
126-
Submodel newSubmodel = new Submodel(newSubmodelIdShort, newSubmodelIdentifier);
127-
newSubmodel.addSubmodelElement(new SubmodelElementCollection("smeColl"));
128-
newSubmodel.addSubmodelElement(new Property("prop", false));
127+
Submodel newSubmodel = createTestSubmodel();
129128
observedSubmodelAggregator.createSubmodel(newSubmodel);
130129

131130
assertEquals(removeSubmodelElements(newSubmodel), deserializePayload(listener.lastPayload));
132131
assertEquals(payloadFactory.createCreateSubmodelTopic(null, observedSubmodelAggregator.getAasServerId()), listener.lastTopic);
133132
}
134133

134+
@Test
135+
public void noEventExpectedWhenSubmodelIsCreatedViaAPI() {
136+
ISubmodelAPI smApi = new VABSubmodelAPI(new VABModelProvider(createTestSubmodel(), new VABMapHandler()));
137+
138+
String lastPayload = listener.lastPayload;
139+
140+
observedSubmodelAggregator.createSubmodel(smApi);
141+
142+
assertEquals(lastPayload, listener.lastPayload);
143+
}
144+
135145
@Test
136146
public void testUpdateSubmodel() {
137147
submodel.setCategory("newCategory");
@@ -174,4 +184,18 @@ private Submodel removeSubmodelElements(Submodel submodel) {
174184

175185
return copy;
176186
}
187+
188+
private static Submodel createTestSubmodel() {
189+
String newSubmodelIdShort = "newSubmodelIdShort";
190+
String newSubmodelId = "newSubmodelId";
191+
Identifier newSubmodelIdentifier = new Identifier(IdentifierType.IRDI, newSubmodelId);
192+
193+
Submodel newSubmodel = new Submodel(newSubmodelIdShort, newSubmodelIdentifier);
194+
195+
newSubmodel.addSubmodelElement(new SubmodelElementCollection("smeColl"));
196+
newSubmodel.addSubmodelElement(new Property("prop", false));
197+
198+
return newSubmodel;
199+
}
200+
177201
}

0 commit comments

Comments
 (0)