Fixes persistency problem with MongoDB in AASServerComponent
Change-Id: I2022f792de0b97163e015d823af324f6933cf467
Signed-off-by: Daniel Espen <Daniel.Espen@iese.fraunhofer.de>
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBAASAPI.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBAASAPI.java
index 99ae7c4..9dbc2c7 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBAASAPI.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBAASAPI.java
@@ -122,7 +122,7 @@
// Add reference
aas.addSubmodelReference(submodel);
// Update db entry
- mongoOps.findAndReplace(hasId, aas);
+ mongoOps.findAndReplace(hasId, aas, collection);
}
@Override
@@ -149,7 +149,7 @@
}
}
// Update db entry
- mongoOps.findAndReplace(hasId, aas);
+ mongoOps.findAndReplace(hasId, aas, collection);
}
}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBAASAggregator.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBAASAggregator.java
index 5c37004..8f8903c 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBAASAggregator.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBAASAggregator.java
@@ -18,6 +18,7 @@
import org.eclipse.basyx.aas.restapi.AASModelProvider;
import org.eclipse.basyx.aas.restapi.VABMultiSubmodelProvider;
import org.eclipse.basyx.aas.restapi.api.IAASAPI;
+import org.eclipse.basyx.aas.restapi.api.IAASAPIFactory;
import org.eclipse.basyx.components.configuration.BaSyxMongoDBConfiguration;
import org.eclipse.basyx.submodel.metamodel.api.identifier.IIdentifier;
import org.eclipse.basyx.submodel.metamodel.api.reference.IKey;
@@ -29,8 +30,10 @@
import org.eclipse.basyx.submodel.metamodel.map.qualifier.Referable;
import org.eclipse.basyx.submodel.restapi.SubModelProvider;
import org.eclipse.basyx.submodel.restapi.api.ISubmodelAPI;
+import org.eclipse.basyx.submodel.restapi.api.ISubmodelAPIFactory;
import org.eclipse.basyx.vab.exception.provider.ResourceNotFoundException;
import org.eclipse.basyx.vab.modelprovider.api.IModelProvider;
+import org.eclipse.basyx.vab.protocol.api.IConnectorProvider;
import org.eclipse.basyx.vab.protocol.http.connector.HTTPConnectorProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -65,6 +68,16 @@
private IAASRegistryService registry;
/**
+ * Store AAS API Provider. By default, uses the MongoDB API Provider
+ */
+ protected IAASAPIFactory aasApiProvider;
+
+ /**
+ * Store Submodel API Provider. By default, uses a MongoDB Submodel Provider
+ */
+ protected ISubmodelAPIFactory smApiProvider;
+
+ /**
* Receives the path of the configuration.properties file in it's constructor.
*
* @param configFilePath
@@ -101,11 +114,24 @@
* @param config
*/
public void setConfiguration(BaSyxMongoDBConfiguration config) {
+ // set mongoDB configuration
this.config = config;
MongoClient client = MongoClients.create(config.getConnectionUrl());
this.mongoOps = new MongoTemplate(client, config.getDatabase());
this.aasCollection = config.getAASCollection();
this.smCollection = config.getSubmodelCollection();
+
+ // Create API factories with the given configuration
+ this.aasApiProvider = aas -> {
+ MongoDBAASAPI api = new MongoDBAASAPI(config, aas.getIdentification().getId());
+ api.setAAS(aas);
+ return api;
+ };
+ this.smApiProvider = sm -> {
+ MongoDBSubmodelAPI api = new MongoDBSubmodelAPI(config, sm.getIdentification().getId());
+ api.setSubModel(sm);
+ return api;
+ };
}
/**
@@ -120,17 +146,31 @@
private void init() {
List<AssetAdministrationShell> data = mongoOps.findAll(AssetAdministrationShell.class, aasCollection);
for (AssetAdministrationShell aas : data) {
- logger.info("Adding AAS from DB: " + aas.getIdentification().getId());
- VABMultiSubmodelProvider provider = createMultiSubmodelProvider(aas);
+ String aasId = aas.getIdentification().getId();
+ logger.info("Adding AAS from DB: " + aasId);
+ MongoDBAASAPI aasApi = new MongoDBAASAPI(config, aasId);
+ VABMultiSubmodelProvider provider = initMultiSubmodelProvider(aasApi);
+ addSubmodelsFromDB(provider, aas);
aasProviderMap.put(aas.getIdentification().getId(), provider);
}
}
- private VABMultiSubmodelProvider createMultiSubmodelProvider(AssetAdministrationShell aas) {
- IAASAPI aasApi = new MongoDBAASAPI(config, aas.getIdentification().getId());
+ /**
+ * Initializes and returns a VABMultiSubmodelProvider with only the AssetAdministrationShell
+ */
+ private VABMultiSubmodelProvider initMultiSubmodelProvider(IAASAPI aasApi) {
AASModelProvider aasProvider = new AASModelProvider(aasApi);
- VABMultiSubmodelProvider provider = new VABMultiSubmodelProvider(aasProvider, registry, new HTTPConnectorProvider());
+ IConnectorProvider connProvider = new HTTPConnectorProvider();
+ VABMultiSubmodelProvider provider = new VABMultiSubmodelProvider(aasProvider, registry, connProvider,
+ smApiProvider, aasApiProvider);
+ provider.setAssetAdministrationShell(aasProvider);
+ return provider;
+ }
+ /**
+ * Adds submodel providers for submodels in the MongoDB
+ */
+ private void addSubmodelsFromDB(VABMultiSubmodelProvider provider, AssetAdministrationShell aas) {
// Get ids and idShorts from aas
Collection<IReference> submodelRefs = aas.getSubmodelReferences();
List<String> smIds = new ArrayList<>();
@@ -158,8 +198,6 @@
logger.info("Adding Submodel from DB: " + id);
addSubmodelProvidersById(id, provider);
}
-
- return provider;
}
private String getSubmodelId(String idShort) {
@@ -205,10 +243,9 @@
@Override
public void createAAS(AssetAdministrationShell aas) {
- MongoDBAASAPI aasApi = new MongoDBAASAPI(config, aas.getIdentification().getId());
- aasApi.setAAS(aas);
- AASModelProvider provider = new AASModelProvider(aasApi);
- aasProviderMap.put(aas.getIdentification().getId(), new VABMultiSubmodelProvider(provider));
+ IAASAPI aasApi = this.aasApiProvider.getAASApi(aas);
+ VABMultiSubmodelProvider provider = initMultiSubmodelProvider(aasApi);
+ aasProviderMap.put(aas.getIdentification().getId(), provider);
}
@Override
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mqtt/MqttSubmodelAPIFactory.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mqtt/MqttSubmodelAPIFactory.java
index bc944aa..41dd9dc 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mqtt/MqttSubmodelAPIFactory.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mqtt/MqttSubmodelAPIFactory.java
@@ -4,13 +4,12 @@
import org.eclipse.basyx.components.configuration.BaSyxMqttConfiguration;
import org.eclipse.basyx.extensions.submodel.mqtt.MqttSubmodelAPI;
-import org.eclipse.basyx.submodel.metamodel.map.identifier.Identifier;
-import org.eclipse.basyx.submodel.metamodel.map.qualifier.Identifiable;
+import org.eclipse.basyx.submodel.metamodel.map.SubModel;
import org.eclipse.basyx.submodel.restapi.api.ISubmodelAPI;
import org.eclipse.basyx.submodel.restapi.api.ISubmodelAPIFactory;
import org.eclipse.basyx.submodel.restapi.vab.VABSubmodelAPI;
-import org.eclipse.basyx.vab.modelprovider.VABPathTools;
import org.eclipse.basyx.vab.modelprovider.api.IModelProvider;
+import org.eclipse.basyx.vab.modelprovider.lambda.VABLambdaProvider;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -35,13 +34,13 @@
}
@Override
- public ISubmodelAPI getSubmodelAPI(IModelProvider smProvider) {
+ public ISubmodelAPI getSubmodelAPI(SubModel sm) {
// Get the submodel's id from the given provider
- String idPath = VABPathTools.concatenatePaths(Identifiable.IDENTIFICATION, Identifier.ID);
- String smId = (String) smProvider.getModelPropertyValue(idPath);
+ String smId = sm.getIdentification().getId();
// Create the API
- VABSubmodelAPI observedApi = new VABSubmodelAPI(smProvider);
+ IModelProvider provider = new VABLambdaProvider(sm);
+ VABSubmodelAPI observedApi = new VABSubmodelAPI(provider);
// Configure the API according to the given configs
String brokerEndpoint = config.getServer();
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/AASServerSuite.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/AASServerSuite.java
index cf485e6..d7d47b0 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/AASServerSuite.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/AASServerSuite.java
@@ -23,9 +23,9 @@
*/
public abstract class AASServerSuite {
protected IAASRegistryService aasRegistry;
- private ConnectedAssetAdministrationShellManager manager;
+ protected ConnectedAssetAdministrationShellManager manager;
- private String aasId = "testId";
+ protected String aasId = "testId";
protected abstract String getURL();
@@ -50,5 +50,4 @@
IAssetAdministrationShell remote = manager.retrieveAAS(identifier);
assertEquals(shell.getIdShort(), remote.getIdShort());
}
-
}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestMongoDBServer.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestMongoDBServer.java
index f82fcd7..8537f19 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestMongoDBServer.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestMongoDBServer.java
@@ -1,17 +1,26 @@
package org.eclipse.basyx.regression.AASServer;
+import static org.junit.Assert.assertEquals;
+
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
+import org.eclipse.basyx.aas.metamodel.map.descriptor.ModelUrn;
import org.eclipse.basyx.components.aas.AASServerComponent;
import org.eclipse.basyx.components.aas.configuration.AASServerBackend;
import org.eclipse.basyx.components.aas.configuration.BaSyxAASServerConfiguration;
import org.eclipse.basyx.components.aas.mongodb.MongoDBAASAggregator;
+import org.eclipse.basyx.components.aas.mongodb.MongoDBSubmodelAPI;
import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
import org.eclipse.basyx.components.configuration.BaSyxMongoDBConfiguration;
+import org.eclipse.basyx.submodel.metamodel.api.ISubModel;
+import org.eclipse.basyx.submodel.metamodel.api.identifier.IdentifierType;
+import org.eclipse.basyx.submodel.metamodel.map.SubModel;
+import org.eclipse.basyx.submodel.metamodel.map.identifier.Identifier;
import org.junit.AfterClass;
import org.junit.BeforeClass;
+import org.junit.Test;
import org.xml.sax.SAXException;
/**
@@ -23,6 +32,7 @@
public class TestMongoDBServer extends AASServerSuite {
private static AASServerComponent component;
+ private static BaSyxMongoDBConfiguration mongoDBConfig;
@Override
protected String getURL() {
@@ -37,7 +47,7 @@
// Setup component configuration
BaSyxContextConfiguration contextConfig = new BaSyxContextConfiguration();
contextConfig.loadFromResource(BaSyxContextConfiguration.DEFAULT_CONFIG_PATH);
- BaSyxMongoDBConfiguration mongoDBConfig = new BaSyxMongoDBConfiguration();
+ mongoDBConfig = new BaSyxMongoDBConfiguration();
BaSyxAASServerConfiguration aasConfig = new BaSyxAASServerConfiguration(AASServerBackend.MONGODB, "");
// Start component
@@ -45,6 +55,18 @@
component.startComponent();
}
+ @Test
+ public void testAddSubmodelPersistency() throws Exception {
+ testAddAAS();
+
+ SubModel sm = new SubModel("MongoDB", new Identifier(IdentifierType.CUSTOM, "MongoDBId"));
+ manager.createSubModel(new ModelUrn(aasId), sm);
+
+ MongoDBSubmodelAPI api = new MongoDBSubmodelAPI(mongoDBConfig, sm.getIdentification().getId());
+ ISubModel persistentSM = api.getSubmodel();
+ assertEquals("MongoDB", persistentSM.getIdShort());
+ }
+
@AfterClass
public static void tearDownClass() {
component.stopComponent();
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/aggregator/AASAggregator.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/aggregator/AASAggregator.java
index f76947c..0a3a97d 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/aggregator/AASAggregator.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/aggregator/AASAggregator.java
@@ -19,7 +19,6 @@
import org.eclipse.basyx.submodel.restapi.vab.VABSubmodelAPIFactory;
import org.eclipse.basyx.vab.exception.provider.ResourceNotFoundException;
import org.eclipse.basyx.vab.modelprovider.api.IModelProvider;
-import org.eclipse.basyx.vab.modelprovider.lambda.VABLambdaProvider;
import org.eclipse.basyx.vab.protocol.api.IConnectorProvider;
import org.eclipse.basyx.vab.protocol.http.connector.HTTPConnectorProvider;
@@ -125,10 +124,10 @@
private VABMultiSubmodelProvider createMultiSubmodelProvider(AssetAdministrationShell aas) {
IConnectorProvider connProvider = new HTTPConnectorProvider();
- VABMultiSubmodelProvider multiAASProvider = new VABMultiSubmodelProvider(registry, connProvider, smApiProvider, aasApiProvider);
- IAASAPI aasApi = aasApiProvider.getAASApi(new VABLambdaProvider(aas));
+ IAASAPI aasApi = aasApiProvider.getAASApi(aas);
AASModelProvider contentProvider = new AASModelProvider(aasApi);
- multiAASProvider.setAssetAdministrationShell(contentProvider);
+ VABMultiSubmodelProvider multiAASProvider = new VABMultiSubmodelProvider(contentProvider, registry,
+ connProvider, smApiProvider, aasApiProvider);
return multiAASProvider;
}
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/VABAASAPIFactory.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/VABAASAPIFactory.java
index 3535f28..e92da2f 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/VABAASAPIFactory.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/VABAASAPIFactory.java
@@ -1,8 +1,9 @@
package org.eclipse.basyx.aas.restapi;
+import org.eclipse.basyx.aas.metamodel.map.AssetAdministrationShell;
import org.eclipse.basyx.aas.restapi.api.IAASAPI;
import org.eclipse.basyx.aas.restapi.api.IAASAPIFactory;
-import org.eclipse.basyx.vab.modelprovider.api.IModelProvider;
+import org.eclipse.basyx.vab.modelprovider.lambda.VABLambdaProvider;
/**
* AAS API provider that provides the default VAB AAS API
@@ -11,7 +12,7 @@
*/
public class VABAASAPIFactory implements IAASAPIFactory {
@Override
- public IAASAPI getAASApi(IModelProvider aasProvider) {
- return new VABAASAPI(aasProvider);
+ public IAASAPI getAASApi(AssetAdministrationShell aas) {
+ return new VABAASAPI(new VABLambdaProvider(aas));
}
}
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/VABMultiSubmodelProvider.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/VABMultiSubmodelProvider.java
index ddc547c..ae88553 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/VABMultiSubmodelProvider.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/VABMultiSubmodelProvider.java
@@ -24,7 +24,6 @@
import org.eclipse.basyx.vab.exception.provider.ResourceNotFoundException;
import org.eclipse.basyx.vab.modelprovider.VABPathTools;
import org.eclipse.basyx.vab.modelprovider.api.IModelProvider;
-import org.eclipse.basyx.vab.modelprovider.lambda.VABLambdaProvider;
import org.eclipse.basyx.vab.protocol.api.IConnectorProvider;
import org.eclipse.basyx.vab.protocol.http.connector.HTTPConnectorProvider;
@@ -125,18 +124,20 @@
* Constructor with empty default aas and default VAB APIs
*/
public VABMultiSubmodelProvider() {
- this(new VABAASAPIFactory(), new VABSubmodelAPIFactory());
+ this.aasApiProvider = new VABAASAPIFactory();
+ this.smApiProvider = new VABSubmodelAPIFactory();
+ IAASAPI aasApi = aasApiProvider.getAASApi(new AssetAdministrationShell());
+ setAssetAdministrationShell(new AASModelProvider(aasApi));
}
/**
* Constructor for using custom APIs
*/
- public VABMultiSubmodelProvider(IAASAPIFactory aasApiProvider, ISubmodelAPIFactory smApiProvider) {
+ public VABMultiSubmodelProvider(AASModelProvider contentProvider, IAASAPIFactory aasApiProvider,
+ ISubmodelAPIFactory smApiProvider) {
this.aasApiProvider = aasApiProvider;
this.smApiProvider = smApiProvider;
- IModelProvider aasLambdaProvider = new VABLambdaProvider(new AssetAdministrationShell());
- IAASAPI aasApi = aasApiProvider.getAASApi(aasLambdaProvider);
- setAssetAdministrationShell(new AASModelProvider(aasApi));
+ setAssetAdministrationShell(contentProvider);
}
/**
@@ -172,9 +173,9 @@
/**
* Constructor that accepts a registry, a connection provider and API providers
*/
- public VABMultiSubmodelProvider(IAASRegistryService registry, IConnectorProvider connectorProvider,
- ISubmodelAPIFactory smApiProvider, IAASAPIFactory aasApiProvider) {
- this(aasApiProvider, smApiProvider);
+ public VABMultiSubmodelProvider(AASModelProvider contentProvider, IAASRegistryService registry,
+ IConnectorProvider connectorProvider, ISubmodelAPIFactory smApiProvider, IAASAPIFactory aasApiProvider) {
+ this(contentProvider, aasApiProvider, smApiProvider);
this.registry = registry;
this.connectorProvider = connectorProvider;
}
@@ -382,7 +383,7 @@
private void createAssetAdministrationShell(Object newAAS) {
Map<String, Object> aas = (Map<String, Object>) newAAS;
AssetAdministrationShell shell = AssetAdministrationShell.createAsFacade(aas);
- IAASAPI aasApi = aasApiProvider.getAASApi(new VABLambdaProvider(shell));
+ IAASAPI aasApi = aasApiProvider.getAASApi(shell);
aas_provider = new AASModelProvider(aasApi);
}
@@ -391,7 +392,7 @@
// Adds a new submodel to the registered AAS
SubModel sm = SubModel.createAsFacade((Map<String, Object>) newSM);
- ISubmodelAPI smApi = smApiProvider.getSubmodelAPI(new VABLambdaProvider(sm));
+ ISubmodelAPI smApi = smApiProvider.getSubmodelAPI(sm);
addSubmodel(new SubModelProvider(smApi));
}
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/api/IAASAPIFactory.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/api/IAASAPIFactory.java
index eeea356..76f70c8 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/api/IAASAPIFactory.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/restapi/api/IAASAPIFactory.java
@@ -1,6 +1,6 @@
package org.eclipse.basyx.aas.restapi.api;
-import org.eclipse.basyx.vab.modelprovider.api.IModelProvider;
+import org.eclipse.basyx.aas.metamodel.map.AssetAdministrationShell;
/**
* Interface for providing an AAS API
@@ -14,5 +14,5 @@
*
* @return
*/
- public IAASAPI getAASApi(IModelProvider aasProvider);
+ public IAASAPI getAASApi(AssetAdministrationShell aas);
}
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/api/ISubmodelAPIFactory.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/api/ISubmodelAPIFactory.java
index c27cce1..09f5017 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/api/ISubmodelAPIFactory.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/api/ISubmodelAPIFactory.java
@@ -1,6 +1,6 @@
package org.eclipse.basyx.submodel.restapi.api;
-import org.eclipse.basyx.vab.modelprovider.api.IModelProvider;
+import org.eclipse.basyx.submodel.metamodel.map.SubModel;
/**
* Interface for providing an Submodel API
@@ -14,5 +14,5 @@
*
* @return
*/
- public ISubmodelAPI getSubmodelAPI(IModelProvider submodelProvider);
+ public ISubmodelAPI getSubmodelAPI(SubModel submodel);
}
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/vab/VABSubmodelAPIFactory.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/vab/VABSubmodelAPIFactory.java
index 30f7bce..6f20f3d 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/vab/VABSubmodelAPIFactory.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/vab/VABSubmodelAPIFactory.java
@@ -1,8 +1,9 @@
package org.eclipse.basyx.submodel.restapi.vab;
+import org.eclipse.basyx.submodel.metamodel.map.SubModel;
import org.eclipse.basyx.submodel.restapi.api.ISubmodelAPI;
import org.eclipse.basyx.submodel.restapi.api.ISubmodelAPIFactory;
-import org.eclipse.basyx.vab.modelprovider.api.IModelProvider;
+import org.eclipse.basyx.vab.modelprovider.lambda.VABLambdaProvider;
/**
* Submodel API provider that provides the default VAB Submodel API
@@ -12,7 +13,7 @@
*/
public class VABSubmodelAPIFactory implements ISubmodelAPIFactory {
@Override
- public ISubmodelAPI getSubmodelAPI(IModelProvider submodelProvider) {
- return new VABSubmodelAPI(submodelProvider);
+ public ISubmodelAPI getSubmodelAPI(SubModel submodel) {
+ return new VABSubmodelAPI(new VABLambdaProvider(submodel));
}
}