Skip to content

Commit cfb3bbe

Browse files
Fixes wrong setting of submodel references
- See #18 for original commit Co-authored-by: Daniel Espen <[email protected]> Signed-off-by: Frank Schnicke <[email protected]>
1 parent f04b264 commit cfb3bbe

File tree

2 files changed

+32
-4
lines changed
  • basyx.components/basyx.components.docker/basyx.components.AASServer/src

2 files changed

+32
-4
lines changed

basyx.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBAASAPI.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,8 @@ public void removeSubmodel(String id) {
157157
break;
158158
}
159159
}
160+
aas.setSubmodelReferences(smReferences);
161+
160162
// Update db entry
161163
mongoOps.findAndReplace(hasId, aas, collection);
162164
}

basyx.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestMongoDBServer.java

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import static org.junit.Assert.assertEquals;
1313

1414
import java.io.IOException;
15+
import java.util.Collection;
1516
import java.util.Map;
1617

1718
import javax.xml.parsers.ParserConfigurationException;
@@ -21,13 +22,15 @@
2122
import org.eclipse.basyx.components.aas.AASServerComponent;
2223
import org.eclipse.basyx.components.aas.configuration.AASServerBackend;
2324
import org.eclipse.basyx.components.aas.configuration.BaSyxAASServerConfiguration;
25+
import org.eclipse.basyx.components.aas.mongodb.MongoDBAASAPI;
2426
import org.eclipse.basyx.components.aas.mongodb.MongoDBAASAggregator;
2527
import org.eclipse.basyx.components.aas.mongodb.MongoDBSubmodelAPI;
2628
import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
2729
import org.eclipse.basyx.components.configuration.BaSyxMongoDBConfiguration;
2830
import org.eclipse.basyx.submodel.metamodel.api.ISubmodel;
2931
import org.eclipse.basyx.submodel.metamodel.api.identifier.IIdentifier;
3032
import org.eclipse.basyx.submodel.metamodel.api.identifier.IdentifierType;
33+
import org.eclipse.basyx.submodel.metamodel.api.reference.IReference;
3134
import org.eclipse.basyx.submodel.metamodel.map.Submodel;
3235
import org.eclipse.basyx.submodel.metamodel.map.identifier.Identifier;
3336
import org.eclipse.basyx.vab.modelprovider.api.IModelProvider;
@@ -82,10 +85,8 @@ public void testAddSubmodelPersistency() throws Exception {
8285
createAssetAdministrationShell();
8386
createSubmodel();
8487

85-
MongoDBSubmodelAPI api = new MongoDBSubmodelAPI(mongoDBConfig, SM_IDENTIFICATION.getId());
86-
ISubmodel persistentSM = api.getSubmodel();
87-
88-
assertEquals(SM_IDSHORT, persistentSM.getIdShort());
88+
checkIfSubmodelHasBeenPersisted(SM_IDENTIFICATION);
89+
checkSubmodelReferencesSize(1);
8990
}
9091

9192
@Test
@@ -99,6 +100,27 @@ public void testAggregatorPersistency() throws Exception {
99100
assertEquals(SM_IDSHORT, persistentSM.getIdShort());
100101
}
101102

103+
@Test
104+
public void testDeleteSubmodelPersistency() {
105+
createAssetAdministrationShell();
106+
createSubmodel();
107+
108+
deleteSubmodel();
109+
checkSubmodelReferencesSize(0);
110+
}
111+
112+
private void checkIfSubmodelHasBeenPersisted(Identifier smIdentification) {
113+
MongoDBSubmodelAPI smAPI = new MongoDBSubmodelAPI(mongoDBConfig, smIdentification.getId());
114+
ISubmodel persistentSM = smAPI.getSubmodel();
115+
assertEquals(SM_IDSHORT, persistentSM.getIdShort());
116+
}
117+
118+
private void checkSubmodelReferencesSize(int expectedSize) {
119+
MongoDBAASAPI aasAPI = new MongoDBAASAPI(mongoDBConfig, aasId);
120+
Collection<IReference> submodelReferences = aasAPI.getAAS().getSubmodelReferences();
121+
assertEquals(expectedSize, submodelReferences.size());
122+
}
123+
102124
@SuppressWarnings("unchecked")
103125
private ISubmodel getSubmodelFromAggregator(MongoDBAASAggregator aggregator) {
104126
IModelProvider aasProvider = aggregator.getAASProvider(new ModelUrn(aasId));
@@ -112,6 +134,10 @@ private void createSubmodel() {
112134
manager.createSubmodel(new ModelUrn(aasId), sm);
113135
}
114136

137+
private void deleteSubmodel() {
138+
manager.deleteSubmodel(new ModelUrn(aasId), SM_IDENTIFICATION);
139+
}
140+
115141
private void createAssetAdministrationShell() {
116142
AssetAdministrationShell shell = new AssetAdministrationShell();
117143
IIdentifier identifier = new ModelUrn(aasId);

0 commit comments

Comments
 (0)