diff --git a/src/main/java/org/eclipse/basyx/aas/restapi/AASAPIFactory.java b/src/main/java/org/eclipse/basyx/aas/restapi/AASAPIFactory.java index 0e19b076..226dede7 100644 --- a/src/main/java/org/eclipse/basyx/aas/restapi/AASAPIFactory.java +++ b/src/main/java/org/eclipse/basyx/aas/restapi/AASAPIFactory.java @@ -28,6 +28,7 @@ import org.eclipse.basyx.aas.restapi.api.IAASAPI; import org.eclipse.basyx.aas.restapi.api.IAASAPIFactory; import org.eclipse.basyx.aas.restapi.vab.VABAASAPIFactory; +import org.eclipse.basyx.submodel.metamodel.api.identifier.IIdentifier; /** * AAS API provider that provides the default AAS API @@ -50,4 +51,9 @@ public IAASAPI getAASApi(AssetAdministrationShell aas) { return aasAPIFactory.create(aas); } + @Override + public IAASAPI create(IIdentifier aasId) { + return aasAPIFactory.create(aasId); + } + } diff --git a/src/main/java/org/eclipse/basyx/aas/restapi/api/IAASAPIFactory.java b/src/main/java/org/eclipse/basyx/aas/restapi/api/IAASAPIFactory.java index 1acff459..48030acd 100644 --- a/src/main/java/org/eclipse/basyx/aas/restapi/api/IAASAPIFactory.java +++ b/src/main/java/org/eclipse/basyx/aas/restapi/api/IAASAPIFactory.java @@ -25,6 +25,8 @@ package org.eclipse.basyx.aas.restapi.api; import org.eclipse.basyx.aas.metamodel.map.AssetAdministrationShell; +import org.eclipse.basyx.submodel.metamodel.api.identifier.IIdentifier; +import org.eclipse.basyx.vab.exception.FeatureNotImplementedException; /** * Interface for providing an AAS API @@ -44,7 +46,12 @@ public interface IAASAPIFactory { @Deprecated public IAASAPI getAASApi(AssetAdministrationShell aas); + public default IAASAPI create(AssetAdministrationShell aas) { return getAASApi(aas); } + + public default IAASAPI create(IIdentifier aasId) { + throw new FeatureNotImplementedException(); + } } diff --git a/src/main/java/org/eclipse/basyx/aas/restapi/vab/VABAASAPIFactory.java b/src/main/java/org/eclipse/basyx/aas/restapi/vab/VABAASAPIFactory.java index 5f45b2c5..bae7df78 100644 --- a/src/main/java/org/eclipse/basyx/aas/restapi/vab/VABAASAPIFactory.java +++ b/src/main/java/org/eclipse/basyx/aas/restapi/vab/VABAASAPIFactory.java @@ -27,6 +27,8 @@ 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.submodel.metamodel.api.identifier.IIdentifier; +import org.eclipse.basyx.vab.exception.FeatureNotImplementedException; import org.eclipse.basyx.vab.modelprovider.lambda.VABLambdaProvider; /** @@ -39,4 +41,10 @@ public class VABAASAPIFactory implements IAASAPIFactory { public IAASAPI getAASApi(AssetAdministrationShell aas) { return new VABAASAPI(new VABLambdaProvider(aas)); } + + @Override + public IAASAPI create(IIdentifier aasId) { + // This should not be used for VABAASAPI + throw new FeatureNotImplementedException(); + } } diff --git a/src/main/java/org/eclipse/basyx/extensions/aas/api/authorization/AuthorizedDecoratingAASAPIFactory.java b/src/main/java/org/eclipse/basyx/extensions/aas/api/authorization/AuthorizedDecoratingAASAPIFactory.java index a86f4e78..3f570057 100644 --- a/src/main/java/org/eclipse/basyx/extensions/aas/api/authorization/AuthorizedDecoratingAASAPIFactory.java +++ b/src/main/java/org/eclipse/basyx/extensions/aas/api/authorization/AuthorizedDecoratingAASAPIFactory.java @@ -12,6 +12,7 @@ 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.submodel.metamodel.api.identifier.IIdentifier; /** * Api provider for constructing a new AAS API that is authorized @@ -29,4 +30,9 @@ public AuthorizedDecoratingAASAPIFactory(IAASAPIFactory factoryToBeDecorated) { public IAASAPI getAASApi(AssetAdministrationShell aas) { return new AuthorizedAASAPI(apiFactory.create(aas)); } + + @Override + public IAASAPI create(IIdentifier aasId) { + return new AuthorizedAASAPI(apiFactory.create(aasId)); + } } \ No newline at end of file diff --git a/src/main/java/org/eclipse/basyx/extensions/aas/api/authorization/internal/AuthorizedDecoratingAASAPIFactory.java b/src/main/java/org/eclipse/basyx/extensions/aas/api/authorization/internal/AuthorizedDecoratingAASAPIFactory.java index 431798c5..ad00d0de 100644 --- a/src/main/java/org/eclipse/basyx/extensions/aas/api/authorization/internal/AuthorizedDecoratingAASAPIFactory.java +++ b/src/main/java/org/eclipse/basyx/extensions/aas/api/authorization/internal/AuthorizedDecoratingAASAPIFactory.java @@ -28,6 +28,7 @@ import org.eclipse.basyx.aas.restapi.api.IAASAPI; import org.eclipse.basyx.aas.restapi.api.IAASAPIFactory; import org.eclipse.basyx.extensions.shared.authorization.internal.ISubjectInformationProvider; +import org.eclipse.basyx.submodel.metamodel.api.identifier.IIdentifier; /** * Api provider for constructing a new AAS API that is authorized @@ -50,4 +51,9 @@ public AuthorizedDecoratingAASAPIFactory(final IAASAPIFactory factoryToBeDecorat public IAASAPI getAASApi(final AssetAdministrationShell aas) { return new AuthorizedAASAPI<>(apiFactory.create(aas), aasAPIAuthorizer, subjectInformationProvider); } + + @Override + public IAASAPI create(IIdentifier aasId) { + return new AuthorizedAASAPI<>(apiFactory.create(aasId), aasAPIAuthorizer, subjectInformationProvider); + } } \ No newline at end of file diff --git a/src/main/java/org/eclipse/basyx/extensions/aas/api/mqtt/MqttDecoratingAASAPIFactory.java b/src/main/java/org/eclipse/basyx/extensions/aas/api/mqtt/MqttDecoratingAASAPIFactory.java index 1923269c..a556a725 100644 --- a/src/main/java/org/eclipse/basyx/extensions/aas/api/mqtt/MqttDecoratingAASAPIFactory.java +++ b/src/main/java/org/eclipse/basyx/extensions/aas/api/mqtt/MqttDecoratingAASAPIFactory.java @@ -13,6 +13,7 @@ import org.eclipse.basyx.aas.restapi.api.IAASAPI; import org.eclipse.basyx.aas.restapi.api.IAASAPIFactory; import org.eclipse.basyx.aas.restapi.observing.ObservableAASAPI; +import org.eclipse.basyx.submodel.metamodel.api.identifier.IIdentifier; import org.eclipse.basyx.vab.exception.provider.ProviderException; import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttException; @@ -33,8 +34,12 @@ public MqttDecoratingAASAPIFactory(IAASAPIFactory factoryToBeDecorated, MqttClie @Override public IAASAPI getAASApi(AssetAdministrationShell aas) { + return createMqttDecoratingAASAPI(apiFactory.create(aas)); + } + + private IAASAPI createMqttDecoratingAASAPI(IAASAPI aasAPI) { try { - ObservableAASAPI observedAPI = new ObservableAASAPI(apiFactory.create(aas)); + ObservableAASAPI observedAPI = new ObservableAASAPI(aasAPI); MqttAASAPIObserver mqttAASAPIObserver = new MqttAASAPIObserver(client, MqttAASAPIHelper.getAASIdShort(observedAPI)); observedAPI.addObserver(mqttAASAPIObserver); return observedAPI; @@ -42,4 +47,9 @@ public IAASAPI getAASApi(AssetAdministrationShell aas) { throw new ProviderException(e); } } + + @Override + public IAASAPI create(IIdentifier aasId) { + return createMqttDecoratingAASAPI(apiFactory.create(aasId)); + } } \ No newline at end of file