Adds single, configurable AASServer component
- Backend can be InMemory and MongoDB
- Source can be a .xml or .aasx file
Change-Id: I8c8ec1a442b1a8cd2573e6357e59a2014e52efc7
Signed-off-by: Daniel Espen <Daniel.Espen@iese.fraunhofer.de>
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/Dockerfile b/components/basys.components/basyx.components.docker/basyx.components.AASServer/Dockerfile
index 0c58366..e199c91 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.AASServer/Dockerfile
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/Dockerfile
@@ -5,15 +5,25 @@
ARG JAR_FILE
COPY target/${JAR_FILE} /usr/share/basyxExecutable.jar
COPY target/lib /usr/share/lib
+COPY src/main/resources/aas.properties /usr/share/config/aas.properties
COPY src/main/resources/context.properties /usr/share/config/context.properties
+COPY src/test/resources/dockerMongodb.properties /usr/share/config/mongodb.properties
# Expose the appropriate port. In case of Tomcat, this is 8080.
ARG PORT
EXPOSE ${PORT}
+# Set the path for the aas configuration file
+ARG AAS_CONFIG_KEY
+ENV ${AAS_CONFIG_KEY} "/usr/share/config/aas.properties"
+
# Set the path for the context configuration file
ARG CONTEXT_CONFIG_KEY
ENV ${CONTEXT_CONFIG_KEY} "/usr/share/config/context.properties"
+# Set the path for the mongodb configuration file
+ARG MONGODB_CONFIG_KEY
+ENV ${MONGODB_CONFIG_KEY} "/usr/share/config/mongodb.properties"
+
# Start the jar
CMD java -jar "/usr/share/basyxExecutable.jar"
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/docker-compose.yml b/components/basys.components/basyx.components.docker/basyx.components.AASServer/docker-compose.yml
index b68ce05..b55d107 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.AASServer/docker-compose.yml
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/docker-compose.yml
@@ -1,8 +1,26 @@
-version: '3'
+version: '2.1'
services:
aas:
image: ${BASYX_IMAGE_NAME}:${BASYX_IMAGE_TAG}
container_name: ${BASYX_CONTAINER_NAME}
ports:
- - ${BASYX_HOST_PORT}:${BASYX_CONTAINER_PORT}
\ No newline at end of file
+ - ${BASYX_HOST_PORT}:${BASYX_CONTAINER_PORT}
+ depends_on:
+ mongodb:
+ condition: service_healthy
+ links:
+ - mongodb
+
+ mongodb:
+ image: mongo:latest
+ container_name: mongodb
+ healthcheck:
+ test: echo 'db.runCommand("ping").ok' | mongo mongodb:27017/test --quiet
+ interval: 3s
+ timeout: 3s
+ retries: 5
+# Possibility to enable authentication
+# environment:
+# MONGO_INITDB_ROOT_USERNAME: root
+# MONGO_INITDB_ROOT_PASSWORD: example
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/pom.xml b/components/basys.components/basyx.components.docker/basyx.components.AASServer/pom.xml
index f1c885a..085bb50 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.AASServer/pom.xml
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/pom.xml
@@ -16,7 +16,7 @@
basyx.components.executable is the executable class with the definition of the public void main(String[]).
It is needed when building the jar in the maven-jar-plugin (see basyx.components.docker/pom.xml)
-->
- <basyx.components.executable>org.eclipse.basyx.components.executable.AASServerExecutable</basyx.components.executable>
+ <basyx.components.executable>org.eclipse.basyx.components.aas.executable.AASServerExecutable</basyx.components.executable>
</properties>
<packaging>jar</packaging>
@@ -33,6 +33,29 @@
</plugins>
</build>
+ <dependencies>
+ <!-- Use MongoDB Java Drivers for db connections -->
+ <dependency>
+ <groupId>org.mongodb</groupId>
+ <artifactId>mongodb-driver-sync</artifactId>
+ <version>4.0.5</version>
+ </dependency>
+
+ <!-- Use Spring Data MongoDB for db data management -->
+ <dependency>
+ <groupId>org.springframework.data</groupId>
+ <artifactId>spring-data-mongodb</artifactId>
+ <version>3.0.1.RELEASE</version>
+ </dependency>
+
+ <!-- Adds additional classes of the BaSys SDK for tests -->
+ <dependency>
+ <groupId>org.eclipse.basyx</groupId>
+ <artifactId>basyx.sdk</artifactId>
+ <classifier>tests</classifier>
+ </dependency>
+ </dependencies>
+
<profiles>
<profile>
<!--
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/AASServerComponent.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/AASServerComponent.java
deleted file mode 100644
index 35cf501..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/AASServerComponent.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package org.eclipse.basyx.components;
-
-import java.io.IOException;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
-import org.eclipse.basyx.components.servlet.AASServerServlet;
-import org.eclipse.basyx.vab.protocol.http.server.AASHTTPServer;
-import org.eclipse.basyx.vab.protocol.http.server.BaSyxContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xml.sax.SAXException;
-
-/**
- * Component providing an empty AAS server that is able to receive AAS/SMs from
- * remote. It uses the Aggregator API, i.e. AAS should be pushed to
- * ${URL}/shells
- *
- * @author schnicke
- *
- */
-public class AASServerComponent implements IComponent {
- private static Logger logger = LoggerFactory.getLogger(AASServerComponent.class);
-
- // The server with the servlet that will be created
- private AASHTTPServer server;
-
- private BaSyxContextConfiguration contextConfig;
-
- /**
- * Constructs an empty AAS server using the passed arguments
- *
- * @param hostName
- * @param port
- * @param path
- * @param docBasePath
- */
- public AASServerComponent(BaSyxContextConfiguration contextConfig) {
- this.contextConfig = contextConfig;
- }
-
- /**
- * Starts the AASX component at http://${hostName}:${port}/${path}
- *
- * @param hostName
- * @param port
- * @param path
- * @param docBasePath
- * @throws IOException
- * @throws SAXException
- * @throws ParserConfigurationException
- */
- @Override
- public void startComponent() {
- logger.info("Create the server...");
- // Init HTTP context and add an XMLAAServlet according to the configuration
- BaSyxContext context = contextConfig.createBaSyxContext();
- // Create the Servlet for aas
- context.addServletMapping("/*", new AASServerServlet());
- server = new AASHTTPServer(context);
-
- logger.info("Start the server...");
- server.start();
- }
-
- /**
- * Retrieves the URL on which the component is providing its HTTP server
- *
- * @return
- */
- public String getURL() {
- return contextConfig.getUrl();
- }
-
- @Override
- public void stopComponent() {
- server.shutdown();
- }
-}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/AASServerComponent.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/AASServerComponent.java
new file mode 100644
index 0000000..c6accef
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/AASServerComponent.java
@@ -0,0 +1,259 @@
+package org.eclipse.basyx.components.aas;
+
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.util.Collection;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.apache.catalina.servlets.DefaultServlet;
+import org.eclipse.basyx.aas.aggregator.AASAggregator;
+import org.eclipse.basyx.aas.aggregator.api.IAASAggregator;
+import org.eclipse.basyx.aas.aggregator.restapi.AASAggregatorProvider;
+import org.eclipse.basyx.aas.metamodel.map.descriptor.AASDescriptor;
+import org.eclipse.basyx.aas.registration.proxy.AASRegistryProxy;
+import org.eclipse.basyx.components.IComponent;
+import org.eclipse.basyx.components.aas.aasx.AASXPackageManager;
+import org.eclipse.basyx.components.aas.aasx.SubmodelFileEndpointLoader;
+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.servlet.AASAggregatorServlet;
+import org.eclipse.basyx.components.configuration.BaSyxConfiguration;
+import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
+import org.eclipse.basyx.components.configuration.BaSyxMongoDBConfiguration;
+import org.eclipse.basyx.components.xml.XMLAASBundleFactory;
+import org.eclipse.basyx.submodel.metamodel.api.ISubModel;
+import org.eclipse.basyx.support.bundle.AASBundle;
+import org.eclipse.basyx.support.bundle.AASBundleDescriptorFactory;
+import org.eclipse.basyx.support.bundle.AASBundleIntegrator;
+import org.eclipse.basyx.vab.protocol.http.server.AASHTTPServer;
+import org.eclipse.basyx.vab.protocol.http.server.BaSyxContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.xml.sax.SAXException;
+
+/**
+ * Component providing an empty AAS server that is able to receive AAS/SMs from
+ * remote. It uses the Aggregator API, i.e. AAS should be pushed to
+ * ${URL}/shells
+ *
+ * @author schnicke, espen
+ *
+ */
+public class AASServerComponent implements IComponent {
+ private static Logger logger = LoggerFactory.getLogger(AASServerComponent.class);
+
+ // The server with the servlet that will be created
+ private AASHTTPServer server;
+
+ // Configurations
+ private BaSyxContextConfiguration contextConfig;
+ private BaSyxAASServerConfiguration aasConfig;
+ private BaSyxMongoDBConfiguration mongoDBConfig;
+
+ // Initial AASBundle
+ protected Collection<AASBundle> aasBundles;
+
+ /**
+ * Constructs an empty AAS server using the passed context
+ */
+ public AASServerComponent(BaSyxContextConfiguration contextConfig) {
+ this.contextConfig = contextConfig;
+ this.aasConfig = new BaSyxAASServerConfiguration();
+ }
+
+ /**
+ * Constructs an empty AAS server using the passed configuration
+ */
+ public AASServerComponent(BaSyxContextConfiguration contextConfig, BaSyxAASServerConfiguration aasConfig) {
+ this.contextConfig = contextConfig;
+ this.aasConfig = aasConfig;
+ }
+
+ /**
+ * Constructs an empty AAS server using the passed configuration
+ */
+ public AASServerComponent(BaSyxContextConfiguration contextConfig, BaSyxAASServerConfiguration aasConfig,
+ BaSyxMongoDBConfiguration mongoDBConfig) {
+ this.contextConfig = contextConfig;
+ this.aasConfig = aasConfig;
+ this.aasConfig.setAASBackend(AASServerBackend.MONGODB);
+ this.mongoDBConfig = mongoDBConfig;
+ }
+
+ /**
+ * Starts the AASX component at http://${hostName}:${port}/${path}
+ */
+ @Override
+ public void startComponent() {
+ logger.info("Create the server...");
+ // Load the aggregator servlet
+ AASAggregatorServlet aggregatorServlet = loadAggregatorServlet();
+
+ // Init HTTP context and add an XMLAAServlet according to the configuration
+ BaSyxContext context = contextConfig.createBaSyxContext();
+ context.addServletMapping("/*", aggregatorServlet);
+
+ // An initial AAS has been loaded from the drive?
+ if (aasBundles != null) {
+ // 1. Also provide the files
+ context.addServletMapping("/aasx/*", new DefaultServlet());
+
+ // 2. Fix the file paths according to the servlet configuration
+ modifyFilePaths(contextConfig.getHostname(), contextConfig.getPort(), contextConfig.getContextPath());
+
+ // 3. Register the initial AAS
+ registerAAS();
+ }
+
+ logger.info("Start the server");
+ server = new AASHTTPServer(context);
+ server.start();
+ }
+
+ /**
+ * Retrieves the URL on which the component is providing its HTTP server
+ *
+ * @return
+ */
+ public String getURL() {
+ return contextConfig.getUrl();
+ }
+
+ @Override
+ public void stopComponent() {
+ server.shutdown();
+ }
+
+ private void loadBundleFromXML(String xmlPath) throws IOException, ParserConfigurationException, SAXException {
+ logger.info("Loading aas from xml \"" + xmlPath + "\"");
+ String xmlContent = BaSyxConfiguration.getResourceString(xmlPath);
+ this.aasBundles = new XMLAASBundleFactory(xmlContent).create();
+ }
+
+ private void loadBundleFromAASX(String aasxPath)
+ throws IOException, ParserConfigurationException, SAXException, URISyntaxException {
+ logger.info("Loading aas from aasx \"" + aasxPath + "\"");
+
+ // Instantiate the aasx package manager
+ AASXPackageManager packageManager = new AASXPackageManager(aasxPath);
+
+ // Unpack the files referenced by the aas
+ packageManager.unzipRelatedFiles(aasxPath);
+
+ // Retrieve the aas from the package
+ this.aasBundles = packageManager.retrieveAASBundles();
+
+ // this.aasBundles.forEach(b -> Identifiable
+ // .createAsFacade((AssetAdministrationShell) b.getAAS(), KeyElements.ASSETADMINISTRATIONSHELL)
+ // .setIdentification(IdentifierType.CUSTOM, b.getAAS().getIdentification().getId().split("/")[0]));
+ }
+
+ private AASAggregatorServlet loadAggregatorServlet() {
+ // Load the initial AAS bundles from given source
+ loadAASFromSource(aasConfig.getAASSource());
+
+ // Load the aggregator
+ IAASAggregator aggregator = loadAASAggregator();
+
+ // Integrate the loaded bundles into the aggregator
+ if (aasBundles != null) {
+ AASBundleIntegrator.integrate(aggregator, aasBundles);
+ }
+
+ // Return the servlet for the resulting aggregator
+ return new AASAggregatorServlet(aggregator);
+ }
+
+ private void loadAASFromSource(String aasSource) {
+ if (aasSource.isEmpty()) {
+ return;
+ }
+
+ try {
+ if (aasSource.endsWith(".aasx")) {
+ loadBundleFromAASX(aasSource);
+ } else if (aasSource.endsWith(".xml")) {
+ loadBundleFromXML(aasSource);
+ }
+ } catch (IOException | ParserConfigurationException | SAXException | URISyntaxException e) {
+ logger.error("Could not load initial AAS from source " + aasSource);
+ e.printStackTrace();
+ }
+ }
+
+
+ private void registerAAS() {
+ String registryUrl = this.aasConfig.getRegistry();
+ if (registryUrl != null && !registryUrl.isEmpty()) {
+ logger.info("Registering AAS at registry \"" + registryUrl + "\"");
+ AASRegistryProxy registryProxy = new AASRegistryProxy(registryUrl);
+ Set<AASDescriptor> descriptors = retrieveDescriptors(contextConfig.getUrl());
+ descriptors.stream().forEach(registryProxy::register);
+ } else {
+ logger.info("No registry specified, skipped registration");
+ }
+ }
+
+ /**
+ * Returns the set of AAS descriptors for the AAS contained in the AASX
+ *
+ * @param hostBasePath
+ * the path to the server; helper method for e.g. virtualization
+ * environments
+ * @return
+ */
+ private Set<AASDescriptor> retrieveDescriptors(String hostBasePath) {
+ // Base path + aggregator accessor
+ final String fullBasePath = hostBasePath + "/" + AASAggregatorProvider.PREFIX;
+
+ return aasBundles.stream().map(b -> AASBundleDescriptorFactory.createAASDescriptor(b, fullBasePath))
+ .collect(Collectors.toSet());
+ }
+
+ /**
+ * Fixes the File submodel element value paths according to the given endpoint configuration
+ */
+ private void modifyFilePaths(String hostName, int port, String rootPath) {
+ for (AASBundle bundle : aasBundles) {
+ Set<ISubModel> submodels = bundle.getSubmodels();
+ for (ISubModel sm : submodels) {
+ SubmodelFileEndpointLoader.setRelativeFileEndpoints(sm, hostName, port, rootPath);
+ }
+ }
+ }
+
+ /**
+ * Loads a aas aggregator servlet with a backend according to the configuration
+ *
+ * @return
+ */
+ private IAASAggregator loadAASAggregator() {
+ // Get aggregator according to backend config
+ AASServerBackend backendType = aasConfig.getAASBackend();
+ IAASAggregator aggregator = null;
+ if ( backendType == AASServerBackend.INMEMORY ) {
+ logger.info("Using InMemory backend");
+ aggregator = new AASAggregator();
+ } else if ( backendType == AASServerBackend.MONGODB ) {
+ logger.info("Using MongoDB backend");
+ aggregator = loadMongoDBAggregator();
+ }
+
+ return aggregator;
+ }
+
+ private IAASAggregator loadMongoDBAggregator() {
+ BaSyxMongoDBConfiguration config;
+ if (this.mongoDBConfig == null) {
+ config = new BaSyxMongoDBConfiguration();
+ config.loadFromDefaultSource();
+ } else {
+ config = this.mongoDBConfig;
+ }
+ return new MongoDBAASAggregator(config);
+ }
+}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/java/org/eclipse/basyx/components/aasx/AASXPackageManager.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/aasx/AASXPackageManager.java
similarity index 99%
rename from components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/java/org/eclipse/basyx/components/aasx/AASXPackageManager.java
rename to components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/aasx/AASXPackageManager.java
index 485b391..3449add 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/java/org/eclipse/basyx/components/aasx/AASXPackageManager.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/aasx/AASXPackageManager.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.components.aasx;
+package org.eclipse.basyx.components.aas.aasx;
import java.io.File;
import java.io.FileOutputStream;
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/java/org/eclipse/basyx/components/aasx/SubmodelFileEndpointLoader.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/aasx/SubmodelFileEndpointLoader.java
similarity index 97%
rename from components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/java/org/eclipse/basyx/components/aasx/SubmodelFileEndpointLoader.java
rename to components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/aasx/SubmodelFileEndpointLoader.java
index bdb7422..df341ca 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/java/org/eclipse/basyx/components/aasx/SubmodelFileEndpointLoader.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/aasx/SubmodelFileEndpointLoader.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.components.aasx;
+package org.eclipse.basyx.components.aas.aasx;
import java.net.MalformedURLException;
import java.net.URL;
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/configuration/AASServerBackend.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/configuration/AASServerBackend.java
new file mode 100644
index 0000000..cfbddbc
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/configuration/AASServerBackend.java
@@ -0,0 +1,52 @@
+package org.eclipse.basyx.components.aas.configuration;
+
+import org.eclipse.basyx.submodel.metamodel.enumhelper.StandardizedLiteralEnumHelper;
+
+import com.google.common.base.Strings;
+
+/**
+ * Possible types for AAS backends.
+ *
+ * @author espen
+ *
+ */
+public enum AASServerBackend {
+ /**
+ * Enum values of KeyElements
+ */
+ INMEMORY("InMemory"),
+ MONGODB("MongoDB");
+
+ private String literal;
+
+ private AASServerBackend(String literal) {
+ this.literal = literal;
+ }
+
+ @Override
+ public String toString() {
+ return literal;
+ }
+
+ /**
+ * Method to transform string literal to AASBackend enum.
+ *
+ * @see StandardizedLiteralEnumHelper StandardizedLiteralEnumHelper
+ *
+ * @param literal
+ * @return
+ */
+ public static AASServerBackend fromString(String literal) {
+ if (Strings.isNullOrEmpty(literal)) {
+ return null;
+ }
+
+ AASServerBackend[] enumConstants = AASServerBackend.class.getEnumConstants();
+ for (AASServerBackend constant : enumConstants) {
+ if (constant.toString().equals(literal)) {
+ return constant;
+ }
+ }
+ throw new IllegalArgumentException("The literal '" + literal + "' is not a valid RegistryBackend");
+ }
+}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/configuration/BaSyxAASServerConfiguration.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/configuration/BaSyxAASServerConfiguration.java
new file mode 100644
index 0000000..f0a29ca
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/configuration/BaSyxAASServerConfiguration.java
@@ -0,0 +1,93 @@
+package org.eclipse.basyx.components.aas.configuration;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.basyx.components.configuration.BaSyxConfiguration;
+
+/**
+ * Represents a BaSyx server configuration for an AAS Server with any backend,
+ * that can be loaded from a properties file.
+ *
+ * @author espen
+ *
+ */
+public class BaSyxAASServerConfiguration extends BaSyxConfiguration {
+ // Default BaSyx AAS configuration
+ public static final String DEFAULT_BACKEND = AASServerBackend.INMEMORY.toString();
+ public static final String DEFAULT_SOURCE = "";
+ public static final String DEFAULT_REGISTRY = "";
+
+ // Configuration keys
+ public static final String REGISTRY = "registry.path";
+ public static final String BACKEND = "aas.backend";
+ public static final String SOURCE = "aas.source";
+
+ // The default path for the context properties file
+ public static final String DEFAULT_CONFIG_PATH = "aas.properties";
+
+ // The default key for variables pointing to the configuration file
+ public static final String DEFAULT_FILE_KEY = "BASYX_AAS";
+
+ public static Map<String, String> getDefaultProperties() {
+ Map<String, String> defaultProps = new HashMap<>();
+ defaultProps.put(BACKEND, DEFAULT_BACKEND);
+ defaultProps.put(SOURCE, DEFAULT_SOURCE);
+ defaultProps.put(REGISTRY, DEFAULT_REGISTRY);
+ return defaultProps;
+ }
+
+ /**
+ * Empty Constructor - use default values
+ */
+ public BaSyxAASServerConfiguration() {
+ super(getDefaultProperties());
+ }
+
+ /**
+ * Constructor with initial configuration - docBasePath and hostname are default values
+ *
+ * @param backend The backend for the AASServer
+ * @param source The file source for the AASServer (e.g. an .aasx file)
+ */
+ public BaSyxAASServerConfiguration(AASServerBackend backend, String source) {
+ super(getDefaultProperties());
+ setAASBackend(backend);
+ setAASSource(source);
+ }
+
+ /**
+ * Constructor with predefined value map
+ */
+ public BaSyxAASServerConfiguration(Map<String, String> values) {
+ super(values);
+ }
+
+ public void loadFromDefaultSource() {
+ loadFileOrDefaultResource(DEFAULT_FILE_KEY, DEFAULT_CONFIG_PATH);
+ }
+
+ public AASServerBackend getAASBackend() {
+ return AASServerBackend.fromString(getProperty(BACKEND));
+ }
+
+ public void setAASBackend(AASServerBackend backend) {
+ setProperty(BACKEND, backend.toString());
+ }
+
+ public String getAASSource() {
+ return getProperty(SOURCE);
+ }
+
+ public void setAASSource(String source) {
+ setProperty(SOURCE, source);
+ }
+
+ public String getRegistry() {
+ return getProperty(REGISTRY);
+ }
+
+ public void setRegistry(String registryPath) {
+ setProperty(REGISTRY, registryPath);
+ }
+}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/executable/AASServerExecutable.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/executable/AASServerExecutable.java
new file mode 100644
index 0000000..cd3a3e9
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/executable/AASServerExecutable.java
@@ -0,0 +1,47 @@
+package org.eclipse.basyx.components.aas.executable;
+
+import java.io.File;
+import java.net.URISyntaxException;
+
+import org.eclipse.basyx.components.aas.AASServerComponent;
+import org.eclipse.basyx.components.aas.configuration.BaSyxAASServerConfiguration;
+import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Starts an HTTP server that is able to receive AAS and submodels pushed from
+ * remote <br />
+ * They are made available at
+ * <i>localhost:4000/aasServer/shells/${aasId}/aas</i>. Submodels are available
+ * at
+ * <i>localhost:4000/aasServer/shells/${aasId}/submodels/${submodelId}/submodel</i><br
+ * />
+ *
+ * @author schnicke, espen
+ */
+public class AASServerExecutable {
+ // Creates a Logger based on the current class
+ private static Logger logger = LoggerFactory.getLogger(AASServerExecutable.class);
+
+ public static void main(String[] args) throws URISyntaxException {
+ logger.info("Starting BaSyx AASServer component...");
+ // Load context configuration
+ BaSyxContextConfiguration contextConfig = new BaSyxContextConfiguration();
+ contextConfig.loadFromDefaultSource();
+
+ // Load aas configuration
+ BaSyxAASServerConfiguration aasConfig = new BaSyxAASServerConfiguration();
+ aasConfig.loadFromDefaultSource();
+
+ // Load the additional file path relative to the executed jar file
+ String rootPath = new File(AASServerExecutable.class.getProtectionDomain().getCodeSource().getLocation().toURI()).getParentFile().getPath();
+ String docBasePath = rootPath;
+ contextConfig.setDocBasePath(docBasePath);
+
+ AASServerComponent component = new AASServerComponent(contextConfig, aasConfig);
+ component.startComponent();
+
+ logger.info("BaSyx AAS Server component started");
+ }
+}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/java/org/eclipse/basyx/components/mongodb/MongoDBAASAPI.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBAASAPI.java
similarity index 98%
rename from components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/java/org/eclipse/basyx/components/mongodb/MongoDBAASAPI.java
rename to components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBAASAPI.java
index 3e8646f..99ae7c4 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/java/org/eclipse/basyx/components/mongodb/MongoDBAASAPI.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBAASAPI.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.components.mongodb;
+package org.eclipse.basyx.components.aas.mongodb;
import static org.springframework.data.mongodb.core.query.Criteria.where;
import static org.springframework.data.mongodb.core.query.Query.query;
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/java/org/eclipse/basyx/components/mongodb/MongoDBAASAggregator.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBAASAggregator.java
similarity index 97%
rename from components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/java/org/eclipse/basyx/components/mongodb/MongoDBAASAggregator.java
rename to components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBAASAggregator.java
index b0eee89..8f0b915 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/java/org/eclipse/basyx/components/mongodb/MongoDBAASAggregator.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBAASAggregator.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.components.mongodb;
+package org.eclipse.basyx.components.aas.mongodb;
import static org.springframework.data.mongodb.core.query.Criteria.where;
import static org.springframework.data.mongodb.core.query.Query.query;
@@ -165,8 +165,7 @@
private void addSubmodelProvidersById(String smId, VABMultiSubmodelProvider provider) {
ISubmodelAPI smApi = new MongoDBSubmodelAPI(smId);
SubModelProvider smProvider = new SubModelProvider(smApi);
- String idShort = smApi.getSubmodel().getIdShort();
- provider.addSubmodel(idShort, smProvider);
+ provider.addSubmodel(smProvider);
}
@SuppressWarnings("unchecked")
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/java/org/eclipse/basyx/components/mongodb/MongoDBSubmodelAPI.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBSubmodelAPI.java
similarity index 68%
rename from components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/java/org/eclipse/basyx/components/mongodb/MongoDBSubmodelAPI.java
rename to components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBSubmodelAPI.java
index 368b924..624b803 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/java/org/eclipse/basyx/components/mongodb/MongoDBSubmodelAPI.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/mongodb/MongoDBSubmodelAPI.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.components.mongodb;
+package org.eclipse.basyx.components.aas.mongodb;
import static org.springframework.data.mongodb.core.query.Criteria.where;
import static org.springframework.data.mongodb.core.query.Query.query;
@@ -12,17 +12,16 @@
import org.eclipse.basyx.components.configuration.BaSyxMongoDBConfiguration;
import org.eclipse.basyx.submodel.metamodel.api.ISubModel;
import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElement;
-import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IProperty;
import org.eclipse.basyx.submodel.metamodel.api.submodelelement.operation.IOperation;
import org.eclipse.basyx.submodel.metamodel.facade.submodelelement.SubmodelElementFacadeFactory;
import org.eclipse.basyx.submodel.metamodel.map.SubModel;
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.submodelelement.SubmodelElement;
import org.eclipse.basyx.submodel.metamodel.map.submodelelement.SubmodelElementCollection;
import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
import org.eclipse.basyx.submodel.restapi.SubmodelElementProvider;
import org.eclipse.basyx.submodel.restapi.api.ISubmodelAPI;
-import org.eclipse.basyx.vab.exception.FeatureNotImplementedException;
import org.eclipse.basyx.vab.exception.provider.MalformedRequestException;
import org.eclipse.basyx.vab.exception.provider.ResourceNotFoundException;
import org.eclipse.basyx.vab.modelprovider.api.IModelProvider;
@@ -168,7 +167,16 @@
if (element == null) {
throw new ResourceNotFoundException("The element \"" + idShort + "\" could not be found");
}
- return element;
+ return convertSubmodelElement(element);
+ }
+
+ @SuppressWarnings("unchecked")
+ private ISubmodelElement convertSubmodelElement(ISubmodelElement element) {
+ // FIXME: Convert internal data structure of ISubmodelElement
+ Map<String, Object> elementMap = (Map<String, Object>) element;
+ IModelProvider elementProvider = new SubmodelElementProvider(new VABMapProvider(elementMap));
+ Object elementVABObj = elementProvider.getModelPropertyValue("");
+ return SubmodelElement.createAsFacade((Map<String, Object>) elementVABObj);
}
@Override
@@ -188,14 +196,38 @@
return sm.getOperations().values();
}
+
@Override
- public Collection<IProperty> getProperties() {
+ public void addSubmodelElement(List<String> idShorts, ISubmodelElement elem) {
SubModel sm = (SubModel) getSubmodel();
- return sm.getProperties().values();
+ // > 1 idShorts => add new sm element to an existing sm element
+ if (idShorts.size() > 1) {
+ idShorts = idShorts.subList(0, idShorts.size() - 1);
+ // Get parent SM element if more than 1 idShort
+ ISubmodelElement parentElement = getNestedSubmodelElement(sm, idShorts);
+ if (parentElement instanceof SubmodelElementCollection) {
+ ((SubmodelElementCollection) parentElement).addSubModelElement(elem);
+ // Replace db entry
+ Query hasId = query(where(SMIDPATH).is(smId));
+ mongoOps.findAndReplace(hasId, sm, collection);
+ }
+ } else {
+ // else => directly add it to the submodel
+ sm.addSubModelElement(elem);
+ // Replace db entry
+ Query hasId = query(where(SMIDPATH).is(smId));
+ mongoOps.findAndReplace(hasId, sm, collection);
+ }
}
@Override
- public void updateProperty(String idShort, Object newValue) {
+ public Collection<ISubmodelElement> getSubmodelElements() {
+ SubModel sm = (SubModel) getSubmodel();
+ return sm.getSubmodelElements().values();
+ }
+
+ @Override
+ public void updateSubmodelElement(String idShort, Object newValue) {
// Get sm from db
SubModel sm = (SubModel) getSubmodel();
// Unwrap value
@@ -206,10 +238,37 @@
Query hasId = query(where(SMIDPATH).is(smId));
mongoOps.findAndReplace(hasId, sm, collection);
}
-
+
+ @SuppressWarnings("unchecked")
@Override
- public void updateNestedProperty(List<String> idShorts, Object newValue) {
- throw new FeatureNotImplementedException();
+ public void updateNestedSubmodelElement(List<String> idShorts, Object newValue) {
+ SubModel sm = (SubModel) getSubmodel();
+
+ // Get parent SM element
+ ISubmodelElement element = getNestedSubmodelElement(sm, idShorts);
+
+ // Update value
+ IModelProvider mapProvider = new VABMapProvider((Map<String, Object>) element);
+ IModelProvider elemProvider = SubmodelElementProvider.getElementProvider(mapProvider);
+ elemProvider.setModelPropertyValue(Property.VALUE, newValue);
+
+ // Replace db entry
+ Query hasId = query(where(SMIDPATH).is(smId));
+ mongoOps.findAndReplace(hasId, sm, collection);
+ }
+
+ @Override
+ public Object getSubmodelElementValue(String idShort) {
+ SubModel sm = (SubModel) getSubmodel();
+ return getElementProvider(sm, idShort).getModelPropertyValue("/value");
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Object getNestedSubmodelElementValue(List<String> idShorts) {
+ ISubmodelElement lastElement = getNestedSubmodelElement(idShorts);
+ IModelProvider mapProvider = new VABMapProvider((Map<String, Object>) lastElement);
+ return SubmodelElementProvider.getElementProvider(mapProvider).getModelPropertyValue("/value");
}
@SuppressWarnings("unchecked")
@@ -225,33 +284,14 @@
return parameter;
}
- @Override
- public Object getPropertyValue(String idShort) {
- SubModel sm = (SubModel) getSubmodel();
- return getElementProvider(sm, idShort).getModelPropertyValue("/value");
- }
-
@SuppressWarnings("unchecked")
private IModelProvider getElementProvider(SubModel sm, String idShort) {
- // Remove element
ISubmodelElement elem = sm.getSubmodelElements().get(idShort);
IModelProvider mapProvider = new VABMapProvider((Map<String, Object>) elem);
- return SubmodelElementProvider.getElementProvider((Map<String, Object>) elem, mapProvider);
+ return SubmodelElementProvider.getElementProvider(mapProvider);
}
- @SuppressWarnings("unchecked")
- @Override
- public Object getNestedPropertyValue(List<String> idShorts) {
- ISubmodelElement lastElement = getNestedSubmodelElement(idShorts);
- IModelProvider mapProvider = new VABMapProvider((Map<String, Object>) lastElement);
- return SubmodelElementProvider.getElementProvider((Map<String, Object>) lastElement, mapProvider)
- .getModelPropertyValue("/value");
- }
-
- @Override
- public ISubmodelElement getNestedSubmodelElement(List<String> idShorts) {
- // Get sm from db
- SubModel sm = (SubModel) getSubmodel();
+ private ISubmodelElement getNestedSubmodelElement(SubModel sm, List<String> idShorts) {
Map<String, ISubmodelElement> elemMap = sm.getSubmodelElements();
// Get last nested submodel element
for (int i = 0; i < idShorts.size() - 1; i++) {
@@ -265,23 +305,62 @@
}
}
String lastIdShort = idShorts.get(idShorts.size() - 1);
+ if (!elemMap.containsKey(lastIdShort)) {
+ throw new ResourceNotFoundException(lastIdShort
+ + " in the nested submodel element path could not be resolved.");
+ }
return elemMap.get(lastIdShort);
}
@Override
+ public ISubmodelElement getNestedSubmodelElement(List<String> idShorts) {
+ // Get sm from db
+ SubModel sm = (SubModel) getSubmodel();
+ // Get nested sm element from this sm
+ return convertSubmodelElement(getNestedSubmodelElement(sm, idShorts));
+ }
+
+ @Override
public Object invokeOperation(String idShort, Object... params) {
// not possible to invoke operations on a submodel that is stored in a db
- throw new MalformedRequestException("Invoke not supported by filesystem");
+ throw new MalformedRequestException("Invoke not supported by this backend");
}
@Override
public void deleteNestedSubmodelElement(List<String> idShorts) {
- throw new FeatureNotImplementedException();
+ if ( idShorts.size() == 1 ) {
+ deleteSubmodelElement(idShorts.get(0));
+ return;
+ }
+
+ // Get sm from db
+ SubModel sm = (SubModel) getSubmodel();
+ // Get parent collection
+ List<String> parentIds = idShorts.subList(0, idShorts.size() - 1);
+ ISubmodelElement parentElement = getNestedSubmodelElement(sm, parentIds);
+ // Remove element
+ SubmodelElementCollection coll = (SubmodelElementCollection) parentElement;
+ coll.deleteSubmodelElement(idShorts.get(idShorts.size() - 1));
+ // Replace db entry
+ Query hasId = query(where(SMIDPATH).is(smId));
+ mongoOps.findAndReplace(hasId, sm, collection);
}
@Override
public Object invokeNestedOperation(List<String> idShorts, Object... params) {
// not possible to invoke operations on a submodel that is stored in a db
- throw new MalformedRequestException("Invoke not supported by filesystem");
+ throw new MalformedRequestException("Invoke not supported by this backend");
+ }
+
+ @Override
+ public Object invokeNestedOperationAsync(List<String> idShorts, Object... params) {
+ // not possible to invoke operations on a submodel that is stored in a db
+ throw new MalformedRequestException("Invoke not supported by this backend");
+ }
+
+ @Override
+ public Object getOperationResult(List<String> idShorts, String requestId) {
+ // not possible to invoke operations on a submodel that is stored in a db
+ throw new MalformedRequestException("Invoke not supported by this backend");
}
}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/servlet/AASAggregatorServlet.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/servlet/AASAggregatorServlet.java
new file mode 100644
index 0000000..e5b82cc
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/aas/servlet/AASAggregatorServlet.java
@@ -0,0 +1,25 @@
+package org.eclipse.basyx.components.aas.servlet;
+
+import org.eclipse.basyx.aas.aggregator.AASAggregator;
+import org.eclipse.basyx.aas.aggregator.api.IAASAggregator;
+import org.eclipse.basyx.aas.aggregator.restapi.AASAggregatorProvider;
+import org.eclipse.basyx.vab.protocol.http.server.VABHTTPInterface;
+
+/**
+ * A servlet containing the empty infrastructure needed to support receiving
+ * AAS/Submodels by clients and hosting them
+ *
+ * @author schnicke
+ *
+ */
+public class AASAggregatorServlet extends VABHTTPInterface<AASAggregatorProvider> {
+ private static final long serialVersionUID = 1244938902937878401L;
+
+ public AASAggregatorServlet() {
+ super(new AASAggregatorProvider(new AASAggregator()));
+ }
+
+ public AASAggregatorServlet(IAASAggregator aggregator) {
+ super(new AASAggregatorProvider(aggregator));
+ }
+}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/executable/AASServerExecutable.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/executable/AASServerExecutable.java
deleted file mode 100644
index 2331ce5..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/executable/AASServerExecutable.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package org.eclipse.basyx.components.executable;
-
-import org.eclipse.basyx.components.AASServerComponent;
-import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Starts an HTTP server that is able to receive AAS and submodels pushed from
- * remote <br />
- * They are made available at
- * <i>localhost:4000/aasServer/shells/${aasId}/aas</i>. Submodels are available
- * at
- * <i>localhost:4000/aasServer/shells/${aasId}/submodels/${submodelId}/submodel</i><br
- * />
- *
- * @author schnicke
- */
-public class AASServerExecutable {
- // Creates a Logger based on the current class
- private static Logger logger = LoggerFactory.getLogger(AASServerExecutable.class);
-
- public static void main(String[] args) {
- logger.info("Starting BaSyx AASServer component...");
- // Load context configuration
- BaSyxContextConfiguration contextConfig = new BaSyxContextConfiguration();
- contextConfig.loadFromDefaultSource();
-
- AASServerComponent component = new AASServerComponent(contextConfig);
- component.startComponent();
-
- logger.info("BaSyx AAS Server component started");
- }
-}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/servlet/AASServerServlet.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/servlet/AASServerServlet.java
deleted file mode 100644
index 2f03aff..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/java/org/eclipse/basyx/components/servlet/AASServerServlet.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.eclipse.basyx.components.servlet;
-
-import org.eclipse.basyx.aas.aggregator.AASAggregator;
-import org.eclipse.basyx.aas.aggregator.restapi.AASAggregatorProvider;
-import org.eclipse.basyx.vab.protocol.http.server.VABHTTPInterface;
-
-/**
- * A servlet containing the empty infrastructure needed to support receiving
- * AAS/Submodels by clients and hosting them
- *
- * @author schnicke
- *
- */
-public class AASServerServlet extends VABHTTPInterface<AASAggregatorProvider> {
- private static final long serialVersionUID = 1244938902937878401L;
-
- public AASServerServlet() {
- super(new AASAggregatorProvider(new AASAggregator()));
- }
-
-}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/resources/aas.properties b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/resources/aas.properties
new file mode 100644
index 0000000..82a0083
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/resources/aas.properties
@@ -0,0 +1,5 @@
+aas.backend=InMemory
+aas.source=
+# Example for loading an .aasx file and registering the AAS:
+#registry.path=http://localhost:4000/registry/
+#aas.source=aasx/01_Festo.aasx
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/resources/aasx/01_Festo.aasx b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/resources/aasx/01_Festo.aasx
similarity index 100%
rename from components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/resources/aasx/01_Festo.aasx
rename to components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/resources/aasx/01_Festo.aasx
Binary files differ
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/resources/context.properties b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/resources/context.properties
index a723466..bd80d1d 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/resources/context.properties
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/resources/context.properties
@@ -1,3 +1,3 @@
contextPath=/aasServer
contextHostname=localhost
-contextPort=4000
\ No newline at end of file
+contextPort=4001
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/resources/mongodb.properties b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/resources/mongodb.properties
similarity index 100%
rename from components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/resources/mongodb.properties
rename to components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/resources/mongodb.properties
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/resources/xml/aas.xml b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/resources/xml/aas.xml
similarity index 100%
rename from components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/resources/xml/aas.xml
rename to components/basys.components/basyx.components.docker/basyx.components.AASServer/src/main/resources/xml/aas.xml
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/components/AASServer/AASServerSuite.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/components/AASServer/AASServerSuite.java
deleted file mode 100644
index 54e5e03..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/components/AASServer/AASServerSuite.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package org.eclipse.basyx.components.AASServer;
-
-import static org.junit.Assert.assertEquals;
-
-import org.eclipse.basyx.aas.manager.ConnectedAssetAdministrationShellManager;
-import org.eclipse.basyx.aas.metamodel.api.IAssetAdministrationShell;
-import org.eclipse.basyx.aas.metamodel.map.AssetAdministrationShell;
-import org.eclipse.basyx.aas.metamodel.map.descriptor.ModelUrn;
-import org.eclipse.basyx.aas.registration.api.IAASRegistryService;
-import org.eclipse.basyx.aas.registration.memory.InMemoryRegistry;
-import org.eclipse.basyx.submodel.metamodel.api.identifier.IIdentifier;
-import org.eclipse.basyx.vab.protocol.api.IConnectorProvider;
-import org.eclipse.basyx.vab.protocol.http.connector.HTTPConnectorProvider;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- * Suite for testing that the AAS Server component is set up correctly. The
- * tests here can be used by the component test itself and the integration test
- *
- * @author schnicke
- *
- */
-public abstract class AASServerSuite {
- protected IAASRegistryService aasRegistry;
- private ConnectedAssetAdministrationShellManager manager;
-
- private String aasId = "testId";
-
- protected abstract String getURL();
-
- @Before
- public void setUp() {
- // Create a dummy registry to test integration of XML AAS
- aasRegistry = new InMemoryRegistry();
-
- // Create ConnectedAASManager
- IConnectorProvider connectorProvider = new HTTPConnectorProvider();
- manager = new ConnectedAssetAdministrationShellManager(aasRegistry, connectorProvider);
- }
-
- @Test
- public void testAddAAS() throws Exception {
- AssetAdministrationShell shell = new AssetAdministrationShell();
- IIdentifier identifier = new ModelUrn(aasId);
- shell.setIdentification(identifier);
- shell.setIdShort("aasIdShort");
-
- manager.createAAS(shell, identifier, getURL());
-
- 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/components/AASServer/ITAASServer.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/components/AASServer/ITAASServer.java
deleted file mode 100644
index 611e760..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/components/AASServer/ITAASServer.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.eclipse.basyx.components.AASServer;
-
-import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
-import org.eclipse.basyx.components.configuration.BaSyxDockerConfiguration;
-import org.junit.BeforeClass;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Tests the docker container using the test suite
- *
- * @author schnicke
- *
- */
-public class ITAASServer extends AASServerSuite {
-
- private static String URL;
-
- @Override
- protected String getURL() {
- return URL;
- }
-
- private static Logger logger = LoggerFactory.getLogger(AASServerSuite.class);
-
- @BeforeClass
- public static void setUpClass() {
- logger.info("Running integration test...");
-
- logger.info("Loading servlet configuration");
- // Load the servlet configuration inside of the docker configuration from
- // properties file
- BaSyxContextConfiguration contextConfig = new BaSyxContextConfiguration();
- contextConfig.loadFromResource(BaSyxContextConfiguration.DEFAULT_CONFIG_PATH);
-
- // Load the docker environment configuration from properties file
- logger.info("Loading docker configuration");
- BaSyxDockerConfiguration dockerConfig = new BaSyxDockerConfiguration();
- dockerConfig.loadFromResource(BaSyxDockerConfiguration.DEFAULT_CONFIG_PATH);
-
- URL = "http://localhost:" + dockerConfig.getHostPort() + contextConfig.getContextPath();
- }
-}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/java/org/eclipse/basyx/components/MongoDBAASServer/AASServerSuite.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/AASServerSuite.java
similarity index 96%
rename from components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/java/org/eclipse/basyx/components/MongoDBAASServer/AASServerSuite.java
rename to components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/AASServerSuite.java
index 5f1af5a..6b3101f 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/java/org/eclipse/basyx/components/MongoDBAASServer/AASServerSuite.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/AASServerSuite.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.components.MongoDBAASServer;
+package org.eclipse.basyx.regression.AASServer;
import static org.junit.Assert.assertEquals;
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/test/java/org/eclipse/basyx/regression/aasx/AASXSuite.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/AASXSuite.java
similarity index 94%
rename from components/basys.components/basyx.components.docker/basyx.components.AASX/src/test/java/org/eclipse/basyx/regression/aasx/AASXSuite.java
rename to components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/AASXSuite.java
index e233229..930be1b 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/test/java/org/eclipse/basyx/regression/aasx/AASXSuite.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/AASXSuite.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.regression.aasx;
+package org.eclipse.basyx.regression.AASServer;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -21,7 +21,6 @@
import org.eclipse.basyx.aas.registration.api.IAASRegistryService;
import org.eclipse.basyx.aas.registration.memory.InMemoryRegistry;
import org.eclipse.basyx.submodel.metamodel.api.ISubModel;
-import org.eclipse.basyx.submodel.metamodel.api.identifier.IIdentifier;
import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElement;
import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElementCollection;
import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IFile;
@@ -41,14 +40,14 @@
* @author schnicke, espen
*
*/
-public class AASXSuite {
+public abstract class AASXSuite {
private static Logger logger = LoggerFactory.getLogger(AASXSuite.class);
protected IAASRegistryService aasRegistry;
protected static final String aasShortId = "Festo_3S7PM0CP4BD";
- protected static final IIdentifier aasId = new ModelUrn("smart.festo.com/demo/aas/1/1/454576463545648365874");
- protected static final IIdentifier smId = new ModelUrn("www.company.com/ids/sm/4343_5072_7091_3242");
+ protected static final ModelUrn aasId = new ModelUrn("smart.festo.com/demo/aas/1/1/454576463545648365874");
+ protected static final ModelUrn smId = new ModelUrn("www.company.com/ids/sm/4343_5072_7091_3242");
protected static final String smShortId = "Nameplate";
// Has to be individualized by each test inheriting from this suite
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/SimpleNoOpAASSubmodel.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/SimpleNoOpAASSubmodel.java
new file mode 100644
index 0000000..f1ad39f
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/SimpleNoOpAASSubmodel.java
@@ -0,0 +1,33 @@
+package org.eclipse.basyx.regression.AASServer;
+
+import java.util.Map;
+
+import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElement;
+import org.eclipse.basyx.submodel.metamodel.map.submodelelement.SubmodelElementCollection;
+import org.eclipse.basyx.submodel.metamodel.map.submodelelement.operation.Operation;
+import org.eclipse.basyx.testsuite.regression.submodel.restapi.SimpleAASSubmodel;
+
+public class SimpleNoOpAASSubmodel extends SimpleAASSubmodel {
+
+ public SimpleNoOpAASSubmodel() {
+ this("SimpleAASSubmodel");
+ }
+
+ public SimpleNoOpAASSubmodel(String idShort) {
+ super(idShort);
+
+ // Remove operations
+ deleteSubmodelElement("complex");
+ deleteSubmodelElement("simple");
+ deleteSubmodelElement("exception1");
+ deleteSubmodelElement("exception2");
+
+ Map<String, ISubmodelElement> elems = this.getSubmodelElements();
+ SubmodelElementCollection root = (SubmodelElementCollection) elems.get("containerRoot");
+ SubmodelElementCollection opContainer = (SubmodelElementCollection) root.getSubmodelElement("container");
+ opContainer.deleteSubmodelElement("operationId");
+ Operation opReplacement = new Operation("operationId");
+ opContainer.addSubModelElement(opReplacement);
+ }
+
+}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestAASXAASServer.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestAASXAASServer.java
new file mode 100644
index 0000000..c52f530
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestAASXAASServer.java
@@ -0,0 +1,60 @@
+package org.eclipse.basyx.regression.AASServer;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URISyntaxException;
+
+import javax.servlet.ServletException;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.eclipse.basyx.aas.aggregator.restapi.AASAggregatorProvider;
+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.executable.AASServerExecutable;
+import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.xml.sax.SAXException;
+/**
+ * Test accessing to AAS using basys aas SDK
+ *
+ * @author zhangzai
+ *
+ */
+public class TestAASXAASServer extends AASXSuite {
+ private static Logger logger = LoggerFactory.getLogger(TestAASXAASServer.class);
+ private static AASServerComponent component;
+
+ @BeforeClass
+ public static void setUpClass() throws ParserConfigurationException, SAXException, IOException, URISyntaxException, ServletException {
+ // Setup component's test configuration
+ BaSyxContextConfiguration contextConfig = new BaSyxContextConfiguration();
+ contextConfig.loadFromResource(BaSyxContextConfiguration.DEFAULT_CONFIG_PATH);
+ BaSyxAASServerConfiguration aasConfig = new BaSyxAASServerConfiguration(AASServerBackend.INMEMORY, "aasx/01_Festo.aasx");
+
+ // Load the additional file path relative to the executed jar file
+ String rootPath = new File(AASServerExecutable.class.getProtectionDomain().getCodeSource().getLocation().toURI()).getParentFile().getPath();
+ String docBasePath = rootPath;
+ contextConfig.setDocBasePath(docBasePath);
+
+ // Start the component
+ component = new AASServerComponent(contextConfig, aasConfig);
+ component.startComponent();
+
+ rootEndpoint = "http://" + contextConfig.getHostname() + ":" + contextConfig.getPort() + "/"
+ + contextConfig.getContextPath() + "/";
+ aasEndpoint = rootEndpoint + "/" + AASAggregatorProvider.PREFIX + "/" + aasId.getEncodedURN() + "/aas";
+ smEndpoint = aasEndpoint + "/submodels/" + smShortId + "/submodel";
+ logger.info("AAS URL for servlet test: " + aasEndpoint);
+ }
+
+ @AfterClass
+ public static void tearDownClass() {
+ component.stopComponent();
+ }
+}
+
+
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/test/java/org/eclipse/basyx/regression/aasx/TestAASXPackageManager.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestAASXPackageManager.java
similarity index 98%
rename from components/basys.components/basyx.components.docker/basyx.components.AASX/src/test/java/org/eclipse/basyx/regression/aasx/TestAASXPackageManager.java
rename to components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestAASXPackageManager.java
index 7483923..e96614b 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/test/java/org/eclipse/basyx/regression/aasx/TestAASXPackageManager.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestAASXPackageManager.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.regression.aasx;
+package org.eclipse.basyx.regression.AASServer;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@@ -14,7 +14,7 @@
import javax.xml.parsers.ParserConfigurationException;
import org.eclipse.basyx.aas.metamodel.api.IAssetAdministrationShell;
-import org.eclipse.basyx.components.aasx.AASXPackageManager;
+import org.eclipse.basyx.components.aas.aasx.AASXPackageManager;
import org.eclipse.basyx.submodel.metamodel.api.ISubModel;
import org.eclipse.basyx.submodel.metamodel.api.identifier.IdentifierType;
import org.eclipse.basyx.submodel.metamodel.api.reference.IKey;
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/test/java/org/eclipse/basyx/regression/aasx/TestFileEndpointLoader.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestFileEndpointLoader.java
similarity index 95%
rename from components/basys.components/basyx.components.docker/basyx.components.AASX/src/test/java/org/eclipse/basyx/regression/aasx/TestFileEndpointLoader.java
rename to components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestFileEndpointLoader.java
index 60a5c34..1d0f91e 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/test/java/org/eclipse/basyx/regression/aasx/TestFileEndpointLoader.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestFileEndpointLoader.java
@@ -1,10 +1,10 @@
-package org.eclipse.basyx.regression.aasx;
+package org.eclipse.basyx.regression.AASServer;
import static org.junit.Assert.assertEquals;
import java.util.Map;
-import org.eclipse.basyx.components.aasx.SubmodelFileEndpointLoader;
+import org.eclipse.basyx.components.aas.aasx.SubmodelFileEndpointLoader;
import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElement;
import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IFile;
import org.eclipse.basyx.submodel.metamodel.map.SubModel;
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/components/AASServer/TestAASServer.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestInMemoryAASServer.java
similarity index 73%
rename from components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/components/AASServer/TestAASServer.java
rename to components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestInMemoryAASServer.java
index ab1fb15..4842f86 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/components/AASServer/TestAASServer.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestInMemoryAASServer.java
@@ -1,11 +1,12 @@
-package org.eclipse.basyx.components.AASServer;
+package org.eclipse.basyx.regression.AASServer;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
-import org.eclipse.basyx.components.AASServerComponent;
+import org.eclipse.basyx.components.aas.AASServerComponent;
import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
+import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.xml.sax.SAXException;
@@ -15,7 +16,7 @@
* @author schnicke
*
*/
-public class TestAASServer extends AASServerSuite {
+public class TestInMemoryAASServer extends AASServerSuite {
private static AASServerComponent component;
@@ -32,4 +33,9 @@
component = new AASServerComponent(config);
component.startComponent();
}
+
+ @AfterClass
+ public static void tearDownClass() {
+ component.stopComponent();
+ }
}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/java/org/eclipse/basyx/components/MongoDBAASServer/TestMongoDBAggregator.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestMongoDBAggregator.java
similarity index 80%
rename from components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/java/org/eclipse/basyx/components/MongoDBAASServer/TestMongoDBAggregator.java
rename to components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestMongoDBAggregator.java
index 0dccf86..3350a9d 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/java/org/eclipse/basyx/components/MongoDBAASServer/TestMongoDBAggregator.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestMongoDBAggregator.java
@@ -1,8 +1,8 @@
-package org.eclipse.basyx.components.MongoDBAASServer;
+package org.eclipse.basyx.regression.AASServer;
import org.eclipse.basyx.aas.aggregator.api.IAASAggregator;
+import org.eclipse.basyx.components.aas.mongodb.MongoDBAASAggregator;
import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
-import org.eclipse.basyx.components.mongodb.MongoDBAASAggregator;
import org.eclipse.basyx.testsuite.regression.aas.aggregator.AASAggregatorSuite;
public class TestMongoDBAggregator extends AASAggregatorSuite {
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
new file mode 100644
index 0000000..535e6f6
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestMongoDBServer.java
@@ -0,0 +1,52 @@
+package org.eclipse.basyx.regression.AASServer;
+
+import java.io.IOException;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+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.configuration.BaSyxContextConfiguration;
+import org.eclipse.basyx.components.configuration.BaSyxMongoDBConfiguration;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.xml.sax.SAXException;
+
+/**
+ * Tests the component using the test suite
+ *
+ * @author espen
+ *
+ */
+public class TestMongoDBServer extends AASServerSuite {
+
+ private static AASServerComponent component;
+
+ @Override
+ protected String getURL() {
+ return component.getURL();
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws ParserConfigurationException, SAXException, IOException {
+ // just reset the data with this default db configuration
+ new MongoDBAASAggregator(BaSyxContextConfiguration.DEFAULT_CONFIG_PATH).reset();
+
+ // Setup component configuration
+ BaSyxContextConfiguration contextConfig = new BaSyxContextConfiguration();
+ contextConfig.loadFromResource(BaSyxContextConfiguration.DEFAULT_CONFIG_PATH);
+ BaSyxMongoDBConfiguration mongoDBConfig = new BaSyxMongoDBConfiguration();
+ BaSyxAASServerConfiguration aasConfig = new BaSyxAASServerConfiguration(AASServerBackend.MONGODB, "");
+
+ // Start component
+ component = new AASServerComponent(contextConfig, aasConfig, mongoDBConfig);
+ component.startComponent();
+ }
+
+ @AfterClass
+ public static void tearDownClass() {
+ component.stopComponent();
+ }
+}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/java/org/eclipse/basyx/components/MongoDBAASServer/TestSubmodelProvider.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestMongoDBSubmodelProvider.java
similarity index 82%
rename from components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/java/org/eclipse/basyx/components/MongoDBAASServer/TestSubmodelProvider.java
rename to components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestMongoDBSubmodelProvider.java
index bf8d777..9326fb9 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/java/org/eclipse/basyx/components/MongoDBAASServer/TestSubmodelProvider.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestMongoDBSubmodelProvider.java
@@ -1,13 +1,13 @@
-package org.eclipse.basyx.components.MongoDBAASServer;
+package org.eclipse.basyx.regression.AASServer;
import static org.junit.Assert.assertEquals;
import java.util.Collection;
import java.util.Map;
+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.mongodb.MongoDBAASAggregator;
-import org.eclipse.basyx.components.mongodb.MongoDBSubmodelAPI;
import org.eclipse.basyx.submodel.restapi.SubModelProvider;
import org.eclipse.basyx.testsuite.regression.submodel.restapi.SubModelProviderTest;
import org.eclipse.basyx.testsuite.regression.vab.protocol.http.TestsuiteDirectory;
@@ -18,7 +18,7 @@
import org.junit.BeforeClass;
import org.junit.Test;
-public class TestSubmodelProvider extends SubModelProviderTest {
+public class TestMongoDBSubmodelProvider extends SubModelProviderTest {
private VABConnectionManager connManager;
@BeforeClass
@@ -70,6 +70,22 @@
}
/**
+ * Operations are not supported
+ */
+ @Override
+ @Test
+ public void testInvokeAsync() throws Exception {
+ }
+
+ /**
+ * Operations are not supported
+ */
+ @Override
+ @Test
+ public void testInvokeAsyncException() throws Exception {
+ }
+
+ /**
* Now 4 instead of 8 elements
*/
@SuppressWarnings("unchecked")
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestXMLAAS.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestXMLAAS.java
new file mode 100644
index 0000000..f328ef9
--- /dev/null
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/TestXMLAAS.java
@@ -0,0 +1,45 @@
+package org.eclipse.basyx.regression.AASServer;
+
+import java.io.IOException;
+
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.eclipse.basyx.aas.aggregator.restapi.AASAggregatorProvider;
+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.configuration.BaSyxContextConfiguration;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.xml.sax.SAXException;
+
+public class TestXMLAAS extends XMLAASSuite {
+ private static Logger logger = LoggerFactory.getLogger(TestXMLAAS.class);
+ private static AASServerComponent component;
+
+
+ @BeforeClass
+ public static void setUpClass() throws ParserConfigurationException, SAXException, IOException {
+ // Setup component's test configuration
+ BaSyxContextConfiguration contextConfig = new BaSyxContextConfiguration();
+ contextConfig.loadFromResource(BaSyxContextConfiguration.DEFAULT_CONFIG_PATH);
+ BaSyxAASServerConfiguration aasConfig = new BaSyxAASServerConfiguration(AASServerBackend.INMEMORY, "xml/aas.xml");
+
+ // Start component
+ component = new AASServerComponent(contextConfig, aasConfig);
+ component.startComponent();
+
+ String rootEndpoint = "http://" + contextConfig.getHostname() + ":" + contextConfig.getPort() + "/"
+ + contextConfig.getContextPath() + "/";
+ aasEndpoint = rootEndpoint + "/" + AASAggregatorProvider.PREFIX + "/" + aasId.getEncodedURN() + "/aas";
+ smEndpoint = aasEndpoint + "/submodels/" + smShortId + "/submodel";
+ logger.info("AAS URL for servlet test: " + aasEndpoint);
+ }
+
+ @AfterClass
+ public static void tearDownClass() {
+ component.stopComponent();
+ }
+}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/java/org/eclipse/basyx/regression/xmlAAS/XMLAASSuite.java b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/XMLAASSuite.java
similarity index 89%
rename from components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/java/org/eclipse/basyx/regression/xmlAAS/XMLAASSuite.java
rename to components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/XMLAASSuite.java
index 19105ff..9e8690f 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/java/org/eclipse/basyx/regression/xmlAAS/XMLAASSuite.java
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/java/org/eclipse/basyx/regression/AASServer/XMLAASSuite.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.regression.xmlAAS;
+package org.eclipse.basyx.regression.AASServer;
import static org.junit.Assert.assertEquals;
@@ -10,7 +10,6 @@
import org.eclipse.basyx.aas.registration.api.IAASRegistryService;
import org.eclipse.basyx.aas.registration.memory.InMemoryRegistry;
import org.eclipse.basyx.submodel.metamodel.api.ISubModel;
-import org.eclipse.basyx.submodel.metamodel.api.identifier.IIdentifier;
import org.eclipse.basyx.vab.protocol.api.IConnectorProvider;
import org.eclipse.basyx.vab.protocol.http.connector.HTTPConnectorProvider;
import org.junit.Before;
@@ -23,13 +22,13 @@
* @author schnicke
*
*/
-public class XMLAASSuite {
+public abstract class XMLAASSuite {
protected IAASRegistryService registry;
protected static final String aasShortId = "aas1";
- protected static final IIdentifier aasId = new ModelUrn("www.admin-shell.io/aas-sample/2/0");
- protected static final IIdentifier smId = new ModelUrn("http://www.zvei.de/demo/submodel/12345679");
+ protected static final ModelUrn aasId = new ModelUrn("www.admin-shell.io/aas-sample/2/0");
+ protected static final ModelUrn smId = new ModelUrn("http://www.zvei.de/demo/submodel/12345679");
protected static final String smShortId = "submodel1";
// Has to be individualized by each test inheriting from this suite
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/resources/.env b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/resources/.env
index 4be6895..6c620d7 100644
--- a/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/resources/.env
+++ b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/resources/.env
@@ -1,5 +1,5 @@
BASYX_HOST_PORT=8082
-BASYX_CONTAINER_PORT=4000
+BASYX_CONTAINER_PORT=4001
BASYX_IMAGE_NAME=basys/aas-server
BASYX_CONTAINER_NAME=aas
BASYX_IMAGE_TAG=0.0.1-SNAPSHOT
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/resources/dockerMongodb.properties b/components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/resources/dockerMongodb.properties
similarity index 100%
rename from components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/resources/dockerMongodb.properties
rename to components/basys.components/basyx.components.docker/basyx.components.AASServer/src/test/resources/dockerMongodb.properties
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/Dockerfile b/components/basys.components/basyx.components.docker/basyx.components.AASX/Dockerfile
deleted file mode 100644
index c803084..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/Dockerfile
+++ /dev/null
@@ -1,19 +0,0 @@
-# Add java runtime environment for execution
-FROM java:8-jdk-alpine
-
-# Copy built jar to image using the jar name specified in the pom.xml (JAR_FILE)
-ARG JAR_FILE
-COPY target/${JAR_FILE} /usr/share/basyxExecutable.jar
-COPY target/lib /usr/share/lib
-COPY src/main/resources/context.properties /usr/share/config/context.properties
-
-# Expose the appropriate port. In case of Tomcat, this is 8080.
-ARG PORT
-EXPOSE ${PORT}
-
-# Set the path for the context configuration file
-ARG CONTEXT_CONFIG_KEY
-ENV ${CONTEXT_CONFIG_KEY} "/usr/share/config/context.properties"
-
-# Start the jar
-CMD java -jar "/usr/share/basyxExecutable.jar"
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/build.bat b/components/basys.components/basyx.components.docker/basyx.components.AASX/build.bat
deleted file mode 100644
index 64f74e3..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/build.bat
+++ /dev/null
@@ -1 +0,0 @@
-../.././mvnw clean install -U -Pdocker -DskipTests
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/build.sh b/components/basys.components/basyx.components.docker/basyx.components.AASX/build.sh
deleted file mode 100755
index 6820ccc..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/build.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/usr/bin/env sh
-../../mvnw clean install -U -Pdocker -DskipTests
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/docker-compose.yml b/components/basys.components/basyx.components.docker/basyx.components.AASX/docker-compose.yml
deleted file mode 100644
index 7e029c5..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/docker-compose.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-version: '3'
-services:
-
- registry:
- image: ${BASYX_IMAGE_NAME}:${BASYX_IMAGE_TAG}
- container_name: ${BASYX_CONTAINER_NAME}
- ports:
- - ${BASYX_HOST_PORT}:${BASYX_CONTAINER_PORT}
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/pom.xml b/components/basys.components/basyx.components.docker/basyx.components.AASX/pom.xml
deleted file mode 100644
index 2e985e6..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/pom.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
-
- <parent>
- <groupId>org.eclipse.basyx</groupId>
- <artifactId>basyx.components.docker</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </parent>
-
- <artifactId>basyx.components.AASX</artifactId>
- <name>BaSyx AASX Docker Component</name>
-
- <properties>
- <!--
- basyx.components.executable is the executable class with the definition of the public void main(String[]).
- It is needed when building the jar in the maven-jar-plugin (see basyx.components.docker/pom.xml)
- -->
- <basyx.components.executable>org.eclipse.basyx.components.executable.AASXExecutable</basyx.components.executable>
- </properties>
-
- <packaging>jar</packaging>
-
- <!-- Define additional plugins that are not included by default -->
- <!-- Plugin configuration is done in parent project(s) -->
- <build>
- <plugins>
- <!-- Attach sources to jar file -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-source-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
- <dependencies>
- <!-- This component is based on the xmlAAS component -->
- <dependency>
- <groupId>org.eclipse.basyx</groupId>
- <artifactId>basyx.components.xmlAAS</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
-
- <profiles>
- <profile>
- <!--
- "Docker" profile - do not build & install docker images by default
- Run "mvn install -Pdocker" in order to include docker
- -->
- <id>docker</id>
- <build>
- <plugins>
- <!-- Read maven properties from file -->
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>properties-maven-plugin</artifactId>
- </plugin>
-
- <!-- Copy the dependencies necessary to run the jar -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- </plugin>
-
- <!-- Build the docker image -->
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- </plugin>
-
- <!-- Create integration test environment -->
- <plugin>
- <groupId>com.dkanejs.maven.plugins</groupId>
- <artifactId>docker-compose-maven-plugin</artifactId>
- </plugin>
-
- <!-- Run integration tests -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-failsafe-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
- </profile>
- </profiles>
-</project>
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/java/org/eclipse/basyx/components/AASXComponent.java b/components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/java/org/eclipse/basyx/components/AASXComponent.java
deleted file mode 100644
index b31c0a3..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/java/org/eclipse/basyx/components/AASXComponent.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package org.eclipse.basyx.components;
-
-
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.util.Set;
-
-import javax.servlet.ServletException;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.apache.catalina.servlets.DefaultServlet;
-import org.eclipse.basyx.aas.metamodel.map.descriptor.AASDescriptor;
-import org.eclipse.basyx.aas.registration.proxy.AASRegistryProxy;
-import org.eclipse.basyx.components.aasx.AASXPackageManager;
-import org.eclipse.basyx.components.aasx.SubmodelFileEndpointLoader;
-import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
-import org.eclipse.basyx.components.servlet.aas.AASBundleServlet;
-import org.eclipse.basyx.submodel.metamodel.api.ISubModel;
-import org.eclipse.basyx.support.bundle.AASBundle;
-import org.eclipse.basyx.vab.protocol.http.server.AASHTTPServer;
-import org.eclipse.basyx.vab.protocol.http.server.BaSyxContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xml.sax.SAXException;
-
-/**
- * A component that takes an AASX file and provides it via an HTTP server
- *
- * @author schnicke, espen
- *
- */
-public class AASXComponent extends XMLAASComponent {
- private static Logger logger = LoggerFactory.getLogger(AASXComponent.class);
-
- public AASXComponent(BaSyxContextConfiguration contextConfig, String aasxPath,
- String registryUrl) throws IOException, ParserConfigurationException, SAXException, URISyntaxException {
- super(contextConfig);
-
- // Instantiate the aasx package manager
- AASXPackageManager packageManager = new AASXPackageManager(aasxPath);
-
- // Unpack the files referenced by the aas
- packageManager.unzipRelatedFiles(aasxPath);
-
- // Retrieve the aas from the package
- Set<AASBundle> aasBundles = packageManager.retrieveAASBundles();
-
- setAASBundle(aasBundles);
- setRegistryUrl(registryUrl);
- }
-
- /**
- * Starts the AASX component at http://${hostName}:${port}/${path}
- *
- * @param hostName
- * @param port
- * @param path
- * @param docBasePath
- * @throws ServletException
- * @throws IOException
- * @throws SAXException
- * @throws ParserConfigurationException
- */
- @Override
- public void startComponent() {
- // Init HTTP context and add an XMLAAServlet according to the configuration
- BaSyxContext context = contextConfig.createBaSyxContext();
- // Create the Servlet for aas
- context.addServletMapping("/*", new AASBundleServlet(aasBundles));
- context.addServletMapping("/aasx/*", new DefaultServlet());
- server = new AASHTTPServer(context);
-
- // Fix the file paths according to the servlet configuration
- modifyFilePaths(contextConfig.getHostname(), contextConfig.getPort(), "");
-
- // logger.info("Start the server...");
- server.start();
-
- if (registryUrl != null && !registryUrl.isEmpty()) {
- logger.info("Registering AAS at registry \"" + registryUrl + "\"...");
- AASRegistryProxy registryProxy = new AASRegistryProxy(registryUrl);
- Set<AASDescriptor> descriptors = retrieveDescriptors();
- descriptors.stream().forEach(registryProxy::register);
- } else {
- logger.info("No registry specified, skipped registration");
- }
- }
-
- /**
- * Fixes the File submodel element value paths according to the given endpoint configuration
- */
- private void modifyFilePaths(String hostName, int port, String rootPath) {
- for (AASBundle bundle : aasBundles) {
- Set<ISubModel> submodels = bundle.getSubmodels();
- for (ISubModel sm : submodels) {
- SubmodelFileEndpointLoader.setRelativeFileEndpoints(sm, hostName, port, rootPath);
- }
- }
- }
-}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/java/org/eclipse/basyx/components/executable/AASXExecutable.java b/components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/java/org/eclipse/basyx/components/executable/AASXExecutable.java
deleted file mode 100644
index b84aef3..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/java/org/eclipse/basyx/components/executable/AASXExecutable.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.eclipse.basyx.components.executable;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URISyntaxException;
-
-import javax.servlet.ServletException;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.basyx.components.AASXComponent;
-import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xml.sax.SAXException;
-
-/**
- * Starts an HTTP server providing multiple AAS and submodels as described in
- * the AASX package file specified in the properties file <br />
- * They are made available at <i>localhost:4000/aasx/$aasId/aas</i><br />
- * <br />
- * <b>Please note:</b> Neither the AASs nor the Submodels are added to the
- * registry. Additionally, the Submodel descriptors inside the AAS are missing.
- * <br />
- * There reason for this is, that the executable does not know about the outside
- * context (e.g. docker, ...)!
- *
- * @author zhang
- */
-public class AASXExecutable {
- private static Logger logger = LoggerFactory.getLogger(AASXExecutable.class);
-
- public static void main(String[] args) throws IOException, ParserConfigurationException, SAXException, URISyntaxException, ServletException {
- logger.info("Starting BaSyx AASX component");
-
- // Load configuration
- BaSyxContextConfiguration config = new BaSyxContextConfiguration();
- config.loadFromDefaultSource();
-
- // In addition to the context for the AAS, also the registryUrl and aasxPath can be specified
- String registryUrl = config.getProperty("registry");
- String aasxPath = config.getProperty("aasxPath");
-
- // Load the additional file path relative to the executed jar file
- String rootPath = new File(AASXExecutable.class.getProtectionDomain().getCodeSource().getLocation().toURI())
- .getParentFile().getPath();
- String docPath = rootPath + config.getDocBasePath();
- config.setProperty(BaSyxContextConfiguration.DOCBASE, docPath);
-
- // Get the path to the doc base path
- AASXComponent component = new AASXComponent(config, aasxPath, registryUrl);
- component.startComponent();
- }
-}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/java/org/eclipse/basyx/components/servlets/AASXAASServlet.java b/components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/java/org/eclipse/basyx/components/servlets/AASXAASServlet.java
deleted file mode 100644
index 75e7b67..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/java/org/eclipse/basyx/components/servlets/AASXAASServlet.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package org.eclipse.basyx.components.servlets;
-
-import java.io.IOException;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.basyx.components.aasx.AASXPackageManager;
-import org.eclipse.basyx.components.servlet.aas.AASBundleServlet;
-import org.xml.sax.SAXException;
-
-/**
- * It generates the AAS-bundle using AASX package manager. It also maps the AAS
- * to servlet and adds the submodels, assets and concept descriptors to the AAS.
- *
- *
- * @author zhangzai
- */
-public class AASXAASServlet extends AASBundleServlet {
- private static final long serialVersionUID = -3487515646027982620L;
-
-
-
- public AASXAASServlet(String filePath) throws ParserConfigurationException, SAXException, IOException {
- super(new AASXPackageManager(filePath).retrieveAASBundles());
-
- }
-}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/resources/context.properties b/components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/resources/context.properties
deleted file mode 100644
index 5a788c8..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/resources/context.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-contextPath=/
-contextHostname=localhost
-contextPort=4000
-aasxPath=aasx/01_Festo.aasx
-contextDocPath=/
-#registry=http://localhost:8082/registry/api/v1/registry
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/resources/logback.xml b/components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/resources/logback.xml
deleted file mode 100644
index 86341d6..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/main/resources/logback.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<configuration>
-
- <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-
- <!-- Example for a filter, which removes all entries not containing "[TEST]" in the message. -->
-
- <!--<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
- <evaluator>
- <expression>return message.contains("[TEST]");</expression>
- </evaluator>
- <OnMismatch>DENY</OnMismatch>
- <OnMatch>NEUTRAL</OnMatch>
- </filter>-->
-
- <encoder>
- <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
- </encoder>
- </appender>
-
- <root level="INFO">
- <appender-ref ref="STDOUT" />
- </root>
-
-</configuration>
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/test/java/org/eclipse/basyx/regression/aasx/ITInAASX.java b/components/basys.components/basyx.components.docker/basyx.components.AASX/src/test/java/org/eclipse/basyx/regression/aasx/ITInAASX.java
deleted file mode 100644
index 8d417ae..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/test/java/org/eclipse/basyx/regression/aasx/ITInAASX.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package org.eclipse.basyx.regression.aasx;
-
-import javax.ws.rs.ProcessingException;
-import javax.ws.rs.client.Client;
-import javax.ws.rs.client.ClientBuilder;
-import javax.ws.rs.client.Invocation;
-import javax.ws.rs.client.WebTarget;
-import javax.ws.rs.core.MediaType;
-
-import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
-import org.eclipse.basyx.components.configuration.BaSyxDockerConfiguration;
-import org.junit.BeforeClass;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * A Test case for accessing an element of an aas which is hosted on Docker
- *
- *
- */
-public class ITInAASX extends AASXSuite {
- private static Logger logger = LoggerFactory.getLogger(ITInAASX.class);
-
- @BeforeClass
- public static void setUpClass() {
- logger.info("Running integration test...");
-
- logger.info("Loading servlet configuration");
- // Load the servlet configuration inside of the docker configuration from
- // properties file
- BaSyxContextConfiguration contextConfig = new BaSyxContextConfiguration();
- contextConfig.loadFromResource(BaSyxContextConfiguration.DEFAULT_CONFIG_PATH);
-
- // Load the docker environment configuration from properties file
- logger.info("Loading docker configuration");
- BaSyxDockerConfiguration dockerConfig = new BaSyxDockerConfiguration();
- dockerConfig.loadFromResource(BaSyxDockerConfiguration.DEFAULT_CONFIG_PATH);
-
- rootEndpoint = "http://localhost:" + dockerConfig.getHostPort() + contextConfig.getContextPath() + "/";
- aasEndpoint = rootEndpoint + aasShortId + "/aas";
- smEndpoint = rootEndpoint + aasShortId + "/aas/submodels/" + smShortId + "/submodel";
-
- waitUntilReady();
-
- logger.info("AAS URL for integration test: " + aasEndpoint);
- }
-
- /**
- * Waits for at most 4s until the container is ready
- */
- private static void waitUntilReady() {
- Client client = ClientBuilder.newClient();
- WebTarget webTarget = client.target(rootEndpoint);
- Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON);
- for (int i = 0; i < 20; i++) {
- try {
- invocationBuilder.get();
- return;
- } catch (ProcessingException e) {
- // retry
- try {
- Thread.sleep(200);
- } catch (InterruptedException e1) {
- e1.printStackTrace();
- }
- }
- }
- }
-
-}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/test/java/org/eclipse/basyx/regression/aasx/TestAASX.java b/components/basys.components/basyx.components.docker/basyx.components.AASX/src/test/java/org/eclipse/basyx/regression/aasx/TestAASX.java
deleted file mode 100644
index 71d3eab..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/test/java/org/eclipse/basyx/regression/aasx/TestAASX.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.eclipse.basyx.regression.aasx;
-
-import java.io.IOException;
-import java.net.URISyntaxException;
-
-import javax.servlet.ServletException;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
-import org.eclipse.basyx.components.executable.AASXExecutable;
-import org.junit.BeforeClass;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xml.sax.SAXException;
-
-/**
- * Test accessing to AAS using basys aas SDK
- *
- * @author zhangzai
- *
- */
-public class TestAASX extends AASXSuite {
- private static Logger logger = LoggerFactory.getLogger(TestAASX.class);
-
- @BeforeClass
- public static void setUpClass() throws ParserConfigurationException, SAXException, IOException, URISyntaxException, ServletException {
- AASXExecutable.main(new String[] {});
-
- BaSyxContextConfiguration config = new BaSyxContextConfiguration();
- config.loadFromResource(BaSyxContextConfiguration.DEFAULT_CONFIG_PATH);
-
- rootEndpoint = "http://" + config.getHostname() + ":" + config.getPort() + "/" + config.getContextPath() + "/";
- aasEndpoint = rootEndpoint + aasShortId + "/aas";
- smEndpoint = rootEndpoint + aasShortId + "/aas/submodels/" + smShortId + "/submodel";
- logger.info("AAS URL for servlet test: " + aasEndpoint);
- }
-}
-
-
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/test/resources/.env b/components/basys.components/basyx.components.docker/basyx.components.AASX/src/test/resources/.env
deleted file mode 100644
index 7afa046..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/src/test/resources/.env
+++ /dev/null
@@ -1,5 +0,0 @@
-BASYX_HOST_PORT=8082
-BASYX_CONTAINER_PORT=8082
-BASYX_IMAGE_NAME=basys/aasx
-BASYX_CONTAINER_NAME=aasx
-BASYX_IMAGE_TAG=0.0.1-SNAPSHOT
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/start.bat b/components/basys.components/basyx.components.docker/basyx.components.AASX/start.bat
deleted file mode 100644
index f0ff9e1..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/start.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-cd src/test/resources
-docker-compose up
-cd ../../..
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/start.sh b/components/basys.components/basyx.components.docker/basyx.components.AASX/start.sh
deleted file mode 100755
index 4b9b54a..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/start.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env sh
-cd src/test/resources
-docker-compose up
-cd ../../..
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/stop.bat b/components/basys.components/basyx.components.docker/basyx.components.AASX/stop.bat
deleted file mode 100644
index b645246..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/stop.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-cd src/test/resources
-docker-compose down
-cd ../../..
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.AASX/stop.sh b/components/basys.components/basyx.components.docker/basyx.components.AASX/stop.sh
deleted file mode 100755
index e11a931..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.AASX/stop.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env sh
-cd src/test/resources
-docker-compose down
-cd ../../..
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/Dockerfile b/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/Dockerfile
deleted file mode 100644
index f2ff452..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/Dockerfile
+++ /dev/null
@@ -1,24 +0,0 @@
-# Add java runtime environment for execution
-FROM java:8-jdk-alpine
-
-# Copy built jar to image using the jar name specified in the pom.xml (JAR_FILE)
-ARG JAR_FILE
-COPY target/${JAR_FILE} /usr/share/basyxExecutable.jar
-COPY target/lib /usr/share/lib
-COPY src/main/resources/context.properties /usr/share/config/context.properties
-COPY src/test/resources/dockerMongodb.properties /usr/share/config/dbConfig.properties
-
-# Expose the appropriate port. In case of Tomcat, this is 8080.
-ARG PORT
-EXPOSE ${PORT}
-
-# Set the path for the context configuration file
-ARG CONTEXT_CONFIG_KEY
-ENV ${CONTEXT_CONFIG_KEY} "/usr/share/config/context.properties"
-
-# Set the path for the mongodb configuration file
-ARG MONGODB_CONFIG_KEY
-ENV ${MONGODB_CONFIG_KEY} "/usr/share/config/dbConfig.properties"
-
-# Start the jar
-CMD java -jar "/usr/share/basyxExecutable.jar"
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/build.bat b/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/build.bat
deleted file mode 100644
index 64f74e3..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/build.bat
+++ /dev/null
@@ -1 +0,0 @@
-../.././mvnw clean install -U -Pdocker -DskipTests
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/build.sh b/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/build.sh
deleted file mode 100644
index 6820ccc..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/build.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/usr/bin/env sh
-../../mvnw clean install -U -Pdocker -DskipTests
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/docker-compose.yml b/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/docker-compose.yml
deleted file mode 100644
index 131c53b..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/docker-compose.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-version: '2.1'
-services:
- aas:
- image: ${BASYX_IMAGE_NAME}:${BASYX_IMAGE_TAG}
- container_name: ${BASYX_CONTAINER_NAME}
- ports:
- - ${BASYX_HOST_PORT}:${BASYX_CONTAINER_PORT}
- depends_on:
- mongodb:
- condition: service_healthy
- links:
- - mongodb
-
- mongodb:
- image: mongo:latest
- container_name: mongodb
-# Possibility to enable authentication
-# environment:
-# MONGO_INITDB_ROOT_USERNAME: root
-# MONGO_INITDB_ROOT_PASSWORD: example
- healthcheck:
- test: echo 'db.runCommand("ping").ok' | mongo mongodb:27017/test --quiet
- interval: 3s
- timeout: 3s
- retries: 5
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/pom.xml b/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/pom.xml
deleted file mode 100644
index 81ea7d9..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/pom.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0"?>
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.eclipse.basyx</groupId>
- <artifactId>basyx.components.docker</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </parent>
-
- <artifactId>basyx.components.mongodbAASServer</artifactId>
- <name>MongoDB AAS Server</name>
-
- <properties>
- <!--
- basyx.components.executable is the executable class with the definition of the public void main(String[]).
- It is needed when building the jar in the maven-jar-plugin (see basyx.components.docker/pom.xml)
- -->
- <basyx.components.executable>org.eclipse.basyx.components.executable.AASServerExecutable</basyx.components.executable>
- </properties>
-
- <packaging>jar</packaging>
-
- <!-- Define additional plugins that are not included by default -->
- <!-- Plugin configuration is done in parent project(s) -->
- <build>
- <plugins>
- <!-- Attach sources to jar file -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-source-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
- <dependencies>
- <!-- Use MongoDB Java Drivers for db connections -->
- <dependency>
- <groupId>org.mongodb</groupId>
- <artifactId>mongodb-driver-sync</artifactId>
- <version>4.0.5</version>
- </dependency>
-
- <!-- Use Spring Data MongoDB for db data management -->
- <dependency>
- <groupId>org.springframework.data</groupId>
- <artifactId>spring-data-mongodb</artifactId>
- <version>3.0.1.RELEASE</version>
- </dependency>
-
- <!-- Adds additional classes of the BaSys SDK for tests -->
- <dependency>
- <groupId>org.eclipse.basyx</groupId>
- <artifactId>basyx.sdk</artifactId>
- <classifier>tests</classifier>
- </dependency>
- </dependencies>
-
- <profiles>
- <profile>
- <!--
- "Docker" profile - do not build & install docker images by default
- Run "mvn install -Pdocker" in order to include docker
- -->
- <id>docker</id>
- <build>
- <plugins>
- <!-- Read maven properties from file -->
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>properties-maven-plugin</artifactId>
- </plugin>
-
- <!-- Copy the dependencies necessary to run the jar -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- </plugin>
-
- <!-- Build the docker image -->
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- </plugin>
-
- <!-- Create integration test environment -->
- <plugin>
- <groupId>com.dkanejs.maven.plugins</groupId>
- <artifactId>docker-compose-maven-plugin</artifactId>
- </plugin>
-
- <!-- Run integration tests -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-failsafe-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
- </profile>
- </profiles>
-</project>
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/java/org/eclipse/basyx/components/MongoDBAASServerComponent.java b/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/java/org/eclipse/basyx/components/MongoDBAASServerComponent.java
deleted file mode 100644
index c96fc54..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/java/org/eclipse/basyx/components/MongoDBAASServerComponent.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.eclipse.basyx.components;
-
-import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
-import org.eclipse.basyx.components.configuration.BaSyxMongoDBConfiguration;
-import org.eclipse.basyx.components.servlet.MongoDBAASServerServlet;
-import org.eclipse.basyx.vab.protocol.http.server.AASHTTPServer;
-import org.eclipse.basyx.vab.protocol.http.server.BaSyxContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Component providing a persistent AAS server that is able to receive AAS/SMs
- * from remote. It uses the Aggregator API, i.e. AAS should be pushed to
- * ${URL}/shells
- *
- * @author espen
- *
- */
-public class MongoDBAASServerComponent {
- private static Logger logger = LoggerFactory.getLogger(MongoDBAASServerComponent.class);
-
- // The component configuration
- private BaSyxContextConfiguration contextConfig;
- private BaSyxMongoDBConfiguration dbConfig;
-
- // The server with the servlet that will be created
- private AASHTTPServer server;
-
- /**
- * Default constructor that loads default configurations
- */
- public MongoDBAASServerComponent() {
- this.contextConfig = new BaSyxContextConfiguration();
- this.dbConfig = new BaSyxMongoDBConfiguration();
- }
-
- /**
- * Constructs an empty AAS server using the passed arguments
- *
- * @param contextConfig
- * @param dbConfig
- */
- public MongoDBAASServerComponent(BaSyxContextConfiguration contextConfig, BaSyxMongoDBConfiguration dbConfig) {
- this.contextConfig = contextConfig;
- this.dbConfig = dbConfig;
- }
-
- /**
- * Starts the AASX component at http://${hostName}:${port}/${path}
- */
- public void startComponent() {
- logger.info("Create the server...");
- // Init HTTP context and add an XMLAAServlet according to the configuration
- BaSyxContext context = contextConfig.createBaSyxContext();
- // Create the Servlet for aas
- context.addServletMapping("/*", new MongoDBAASServerServlet(dbConfig));
- server = new AASHTTPServer(context);
-
- logger.info("Start the server...");
- server.start();
- }
-
- /**
- * Retrieves the URL on which the component is providing its HTTP server
- *
- * @return
- */
- public String getURL() {
- return contextConfig.getUrl();
- }
-}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/java/org/eclipse/basyx/components/executable/AASServerExecutable.java b/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/java/org/eclipse/basyx/components/executable/AASServerExecutable.java
deleted file mode 100644
index dc760c3..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/java/org/eclipse/basyx/components/executable/AASServerExecutable.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.eclipse.basyx.components.executable;
-
-import org.eclipse.basyx.components.MongoDBAASServerComponent;
-import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
-import org.eclipse.basyx.components.configuration.BaSyxMongoDBConfiguration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Starts an HTTP server backed by a MongoDB that is able to receive AAS and
- * submodels pushed from remote <br />
- * They are made available at
- * <i>localhost:4000/aasServer/shells/${aasId}/aas</i>. Submodels are available
- * at
- * <i>localhost:4000/aasServer/shells/${aasId}/submodels/${submodelId}/submodel</i><br
- * />
- *
- * @author espen
- */
-public class AASServerExecutable {
- // Creates a Logger based on the current class
- private static Logger logger = LoggerFactory.getLogger(AASServerExecutable.class);
-
- public static void main(String[] args) {
- logger.info("Starting BaSyx MongoDB AASServer component...");
- // Load context configuration
- BaSyxContextConfiguration config = new BaSyxContextConfiguration();
- config.loadFromDefaultSource();
-
- // Load db configuration
- BaSyxMongoDBConfiguration dbConfig = new BaSyxMongoDBConfiguration();
- dbConfig.loadFromDefaultSource();
-
- // Create and start component according to the configuration
- MongoDBAASServerComponent component = new MongoDBAASServerComponent(config, dbConfig);
- component.startComponent();
- logger.info("BaSyx MongoDB AASServer component started");
- }
-}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/java/org/eclipse/basyx/components/servlet/MongoDBAASServerServlet.java b/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/java/org/eclipse/basyx/components/servlet/MongoDBAASServerServlet.java
deleted file mode 100644
index 8be8d61..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/java/org/eclipse/basyx/components/servlet/MongoDBAASServerServlet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.eclipse.basyx.components.servlet;
-
-import org.eclipse.basyx.aas.aggregator.restapi.AASAggregatorProvider;
-import org.eclipse.basyx.components.configuration.BaSyxMongoDBConfiguration;
-import org.eclipse.basyx.components.mongodb.MongoDBAASAggregator;
-import org.eclipse.basyx.vab.protocol.http.server.VABHTTPInterface;
-
-/**
- * A servlet containing the empty infrastructure needed to support receiving
- * AAS/Submodels by clients and hosting them for MongoDB backend
- *
- * @author espen
- *
- */
-public class MongoDBAASServerServlet extends VABHTTPInterface<AASAggregatorProvider> {
- private static final long serialVersionUID = 1244938902937878401L;
-
- public MongoDBAASServerServlet() {
- super(new AASAggregatorProvider(new MongoDBAASAggregator()));
- }
-
- public MongoDBAASServerServlet(BaSyxMongoDBConfiguration config) {
- super(new AASAggregatorProvider(new MongoDBAASAggregator(config)));
- }
-
-}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/resources/context.properties b/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/resources/context.properties
deleted file mode 100644
index a723466..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/resources/context.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-contextPath=/aasServer
-contextHostname=localhost
-contextPort=4000
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/resources/logback.xml b/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/resources/logback.xml
deleted file mode 100644
index 86341d6..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/main/resources/logback.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<configuration>
-
- <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-
- <!-- Example for a filter, which removes all entries not containing "[TEST]" in the message. -->
-
- <!--<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
- <evaluator>
- <expression>return message.contains("[TEST]");</expression>
- </evaluator>
- <OnMismatch>DENY</OnMismatch>
- <OnMatch>NEUTRAL</OnMatch>
- </filter>-->
-
- <encoder>
- <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
- </encoder>
- </appender>
-
- <root level="INFO">
- <appender-ref ref="STDOUT" />
- </root>
-
-</configuration>
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/java/org/eclipse/basyx/components/MongoDBAASServer/ITAASServer.java b/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/java/org/eclipse/basyx/components/MongoDBAASServer/ITAASServer.java
deleted file mode 100644
index 344e733..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/java/org/eclipse/basyx/components/MongoDBAASServer/ITAASServer.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.eclipse.basyx.components.MongoDBAASServer;
-
-import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
-import org.eclipse.basyx.components.configuration.BaSyxDockerConfiguration;
-import org.junit.BeforeClass;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Tests the docker container using the test suite
- *
- * @author espen
- *
- */
-public class ITAASServer extends AASServerSuite {
-
- private static String URL;
-
- @Override
- protected String getURL() {
- return URL;
- }
-
- private static Logger logger = LoggerFactory.getLogger(AASServerSuite.class);
-
- @BeforeClass
- public static void setUpClass() {
- logger.info("Running integration test...");
-
- logger.info("Loading servlet configuration");
- // Load the servlet configuration inside of the docker configuration from
- // properties file
- BaSyxContextConfiguration contextConfig = new BaSyxContextConfiguration();
- contextConfig.loadFromResource(BaSyxContextConfiguration.DEFAULT_CONFIG_PATH);
-
- // Load the docker environment configuration from properties file
- logger.info("Loading docker configuration");
- BaSyxDockerConfiguration dockerConfig = new BaSyxDockerConfiguration();
- dockerConfig.loadFromResource(BaSyxDockerConfiguration.DEFAULT_CONFIG_PATH);
-
- URL = "http://localhost:" + dockerConfig.getHostPort() + contextConfig.getContextPath();
- }
-}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/java/org/eclipse/basyx/components/MongoDBAASServer/SimpleNoOpAASSubmodel.java b/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/java/org/eclipse/basyx/components/MongoDBAASServer/SimpleNoOpAASSubmodel.java
deleted file mode 100644
index 8b319e6..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/java/org/eclipse/basyx/components/MongoDBAASServer/SimpleNoOpAASSubmodel.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.eclipse.basyx.components.MongoDBAASServer;
-
-import java.util.Map;
-
-import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElement;
-import org.eclipse.basyx.testsuite.regression.submodel.restapi.SimpleAASSubmodel;
-
-public class SimpleNoOpAASSubmodel extends SimpleAASSubmodel {
-
- public SimpleNoOpAASSubmodel() {
- this("SimpleAASSubmodel");
- }
-
- public SimpleNoOpAASSubmodel(String idShort) {
- super(idShort);
-
- // Remove operations
- Map<String, ISubmodelElement> elems = this.getSubmodelElements();
- elems.remove("complex");
- elems.remove("simple");
- elems.remove("exception1");
- elems.remove("exception2");
- }
-
-}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/java/org/eclipse/basyx/components/MongoDBAASServer/TestAASServer.java b/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/java/org/eclipse/basyx/components/MongoDBAASServer/TestAASServer.java
deleted file mode 100644
index aaba288..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/java/org/eclipse/basyx/components/MongoDBAASServer/TestAASServer.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package org.eclipse.basyx.components.MongoDBAASServer;
-
-import java.io.IOException;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.basyx.components.MongoDBAASServerComponent;
-import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
-import org.eclipse.basyx.components.configuration.BaSyxMongoDBConfiguration;
-import org.eclipse.basyx.components.mongodb.MongoDBAASAggregator;
-import org.junit.BeforeClass;
-import org.xml.sax.SAXException;
-
-/**
- * Tests the component using the test suite
- *
- * @author espen
- *
- */
-public class TestAASServer extends AASServerSuite {
-
- private static MongoDBAASServerComponent component;
-
- @Override
- protected String getURL() {
- return component.getURL();
- }
-
- @BeforeClass
- public static void setUpClass() throws ParserConfigurationException, SAXException, IOException {
- // just reset the data with this default db configuration
- new MongoDBAASAggregator(BaSyxContextConfiguration.DEFAULT_CONFIG_PATH).reset();
-
- BaSyxContextConfiguration config = new BaSyxContextConfiguration();
- config.loadFromResource(BaSyxContextConfiguration.DEFAULT_CONFIG_PATH);
- component = new MongoDBAASServerComponent(config, new BaSyxMongoDBConfiguration());
- component.startComponent();
- }
-}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/resources/.env b/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/resources/.env
deleted file mode 100644
index d9e4e6e..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/src/test/resources/.env
+++ /dev/null
@@ -1,5 +0,0 @@
-BASYX_HOST_PORT=8082
-BASYX_CONTAINER_PORT=4000
-BASYX_IMAGE_NAME=basys/aas-server-mongodb
-BASYX_CONTAINER_NAME=aas
-BASYX_IMAGE_TAG=0.0.1-SNAPSHOT
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/start.bat b/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/start.bat
deleted file mode 100644
index f0ff9e1..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/start.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-cd src/test/resources
-docker-compose up
-cd ../../..
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/start.sh b/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/start.sh
deleted file mode 100644
index 4b9b54a..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/start.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env sh
-cd src/test/resources
-docker-compose up
-cd ../../..
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/stop.bat b/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/stop.bat
deleted file mode 100644
index b645246..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/stop.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-cd src/test/resources
-docker-compose down
-cd ../../..
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/stop.sh b/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/stop.sh
deleted file mode 100644
index e11a931..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.mongodbAASServer/stop.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env sh
-cd src/test/resources
-docker-compose down
-cd ../../..
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/Dockerfile b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/Dockerfile
deleted file mode 100644
index 989ae81..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/Dockerfile
+++ /dev/null
@@ -1,19 +0,0 @@
-# Add java runtime environment for execution
-FROM java:8-jdk-alpine
-
-# Copy built jar to image using the jar name specified in the pom.xml (JAR_FILE)
-ARG JAR_FILE
-COPY target/${JAR_FILE} /usr/share/basyxExecutable.jar
-COPY target/lib /usr/share/lib
-COPY src/main/resources/context.properties /usr/share/config/context.properties
-
-# Expose the appropriate port. In case of Tomcat, this is 8080.
-ARG PORT
-EXPOSE ${PORT}
-
-# Set the path for the context configuration file
-ARG CONTEXT_CONFIG_KEY
-ENV ${CONTEXT_CONFIG_KEY} "/usr/share/config/context.properties"
-
-# Start the jar
-CMD java -jar "/usr/share/basyxExecutable.jar"
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/build.bat b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/build.bat
deleted file mode 100644
index 64f74e3..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/build.bat
+++ /dev/null
@@ -1 +0,0 @@
-../.././mvnw clean install -U -Pdocker -DskipTests
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/build.sh b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/build.sh
deleted file mode 100755
index 6820ccc..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/build.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/usr/bin/env sh
-../../mvnw clean install -U -Pdocker -DskipTests
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/docker-compose.yml b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/docker-compose.yml
deleted file mode 100644
index 952e5a3..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/docker-compose.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-version: '3'
-services:
-
- aas:
- image: ${BASYX_IMAGE_NAME}:${BASYX_IMAGE_TAG}
- container_name: ${BASYX_CONTAINER_NAME}
- ports:
- - ${BASYX_HOST_PORT}:${BASYX_CONTAINER_PORT}
-
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/pom.xml b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/pom.xml
deleted file mode 100644
index b8ef81c..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/pom.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <!--
- Simple Docker Component
-
- Serves as a template for simple docker components that do not depend on other docker containers.
- Do NOT use the included in-memory registry in a productive environment - the entries are not stored permanently
- -->
-
- <parent>
- <groupId>org.eclipse.basyx</groupId>
- <artifactId>basyx.components.docker</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </parent>
-
- <artifactId>basyx.components.xmlAAS</artifactId>
- <name>BaSyx XML Docker Component</name>
-
- <properties>
- <!--
- basyx.components.executable is the executable class with the definition of the public void main(String[]).
- It is needed when building the jar in the maven-jar-plugin (see basyx.components.docker/pom.xml)
- -->
- <basyx.components.executable>org.eclipse.basyx.components.executable.XMLExecutable</basyx.components.executable>
- </properties>
-
- <packaging>jar</packaging>
-
- <!-- Define additional plugins that are not included by default -->
- <!-- Plugin configuration is done in parent project(s) -->
- <build>
- <plugins>
- <!-- Attach sources to jar file -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-source-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
- <profiles>
- <profile>
- <!--
- "Docker" profile - do not build & install docker images by default
- Run "mvn install -Pdocker" in order to include docker
- -->
- <id>docker</id>
- <build>
- <plugins>
- <!-- Read maven properties from file -->
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>properties-maven-plugin</artifactId>
- </plugin>
-
- <!-- Copy the dependencies necessary to run the jar -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- </plugin>
-
- <!-- Build the docker image -->
- <plugin>
- <groupId>com.spotify</groupId>
- <artifactId>dockerfile-maven-plugin</artifactId>
- </plugin>
-
- <!-- Create integration test environment -->
- <plugin>
- <groupId>com.dkanejs.maven.plugins</groupId>
- <artifactId>docker-compose-maven-plugin</artifactId>
- </plugin>
-
- <!-- Run integration tests -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-failsafe-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
- </profile>
- </profiles>
-</project>
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/java/org/eclipse/basyx/components/XMLAASComponent.java b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/java/org/eclipse/basyx/components/XMLAASComponent.java
deleted file mode 100644
index 4ad7e5a..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/java/org/eclipse/basyx/components/XMLAASComponent.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package org.eclipse.basyx.components;
-
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.basyx.aas.metamodel.map.descriptor.AASDescriptor;
-import org.eclipse.basyx.aas.registration.proxy.AASRegistryProxy;
-import org.eclipse.basyx.components.configuration.BaSyxConfiguration;
-import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
-import org.eclipse.basyx.components.servlet.aas.AASBundleServlet;
-import org.eclipse.basyx.components.xml.XMLAASBundleFactory;
-import org.eclipse.basyx.support.bundle.AASBundle;
-import org.eclipse.basyx.support.bundle.AASBundleDescriptorFactory;
-import org.eclipse.basyx.vab.protocol.http.server.AASHTTPServer;
-import org.eclipse.basyx.vab.protocol.http.server.BaSyxContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xml.sax.SAXException;
-
-/**
- * A component that takes an xml file (according to the AAS XML-Schema) and provides the AAS via an HTTP server
- *
- * @author schnicke, espen
- *
- */
-public class XMLAASComponent implements IComponent {
- private static Logger logger = LoggerFactory.getLogger(XMLAASComponent.class);
-
- // The server with the servlet that will be created
- protected AASHTTPServer server;
-
- protected Collection<AASBundle> aasBundles;
-
- protected BaSyxContextConfiguration contextConfig;
- protected String registryUrl;
-
- protected XMLAASComponent(BaSyxContextConfiguration contextConfig) {
- // Sets the server context (still needs to load the bundle)
- this.contextConfig = contextConfig;
- }
-
- public XMLAASComponent(BaSyxContextConfiguration contextConfig, String xmlPath,
- String registryUrl) throws ParserConfigurationException, SAXException, IOException {
- this(contextConfig);
- String xmlContent = BaSyxConfiguration.getResourceString(xmlPath);
- setAASBundle(new XMLAASBundleFactory(xmlContent).create());
- setRegistryUrl(registryUrl);
- }
-
- protected void setAASBundle(Collection<AASBundle> aasBundles) {
- this.aasBundles = aasBundles;
- }
-
- protected void setRegistryUrl(String registryUrl) {
- this.registryUrl = registryUrl;
- }
-
-
- /**
- * Returns the set of AAS descriptors for the AAS contained in the AASX
- *
- * @param hostBasePath
- * the path to the server; helper method for e.g. virtualization
- * environments
- * @return
- */
- public Set<AASDescriptor> retrieveDescriptors(String hostBasePath) {
- return aasBundles.stream().map(b -> AASBundleDescriptorFactory.createAASDescriptor(b, hostBasePath))
- .collect(Collectors.toSet());
- }
-
- /**
- * Returns the set of AAS descriptors for the AAS contained in the AASX
- *
- * @return
- */
- public Set<AASDescriptor> retrieveDescriptors() {
- String hostBasePath = contextConfig.getUrl();
- return retrieveDescriptors(hostBasePath);
- }
-
- /**
- * Starts the AASX component at http://${hostName}:${port}/${path}
- *
- * @param hostName
- * @param port
- * @param path
- * @param docBasePath
- * @throws IOException
- * @throws SAXException
- * @throws ParserConfigurationException
- */
- @Override
- public void startComponent() {
- logger.info("Create the server...");
- // Init HTTP context and add an XMLAAServlet according to the configuration
- BaSyxContext context = contextConfig.createBaSyxContext();
- // Create the Servlet for aas
- context.addServletMapping("/*", new AASBundleServlet(aasBundles));
- server = new AASHTTPServer(context);
-
-
- logger.info("Start the server...");
- server.start();
-
- if (registryUrl != null && !registryUrl.isEmpty()) {
- logger.info("Registering AAS at registry \"" + registryUrl + "\"...");
- AASRegistryProxy registryProxy = new AASRegistryProxy(registryUrl);
- Set<AASDescriptor> descriptors = retrieveDescriptors();
- descriptors.stream().forEach(registryProxy::register);
- } else {
- logger.info("No registry specified, skipped registration");
- }
- }
-
- @Override
- public void stopComponent() {
- server.shutdown();
- }
-}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/java/org/eclipse/basyx/components/executable/XMLExecutable.java b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/java/org/eclipse/basyx/components/executable/XMLExecutable.java
deleted file mode 100644
index 31c3c97..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/java/org/eclipse/basyx/components/executable/XMLExecutable.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.eclipse.basyx.components.executable;
-
-import java.io.IOException;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.basyx.components.XMLAASComponent;
-import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xml.sax.SAXException;
-
-/**
- * Starts an HTTP server providing multiple AAS and submodels as described in
- * the XML file specified in the properties file <br />
- * They are made available at <i>localhost:4000/xmlAAS/$aasId/aas</i><br />
- * <br />
- * <b>Please note:</b> Neither the AASs nor the Submodels are added to the
- * registry. Additionally, the Submodel descriptors inside the AAS are missing.
- * <br />
- * There reason for this is, that the executable does not know about the outside
- * context (e.g. docker, ...)!
- *
- * @author haque, schnicke
- */
-public class XMLExecutable {
- // Creates a Logger based on the current class
- private static Logger logger = LoggerFactory.getLogger(XMLExecutable.class);
-
- public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
- logger.info("Starting BaSyx XML component");
-
- // Load configuration
- BaSyxContextConfiguration config = new BaSyxContextConfiguration();
- config.loadFromDefaultSource();
-
- String xmlPath = config.getProperty("xmlPath");
- String registryUrl = config.getProperty("registry");
- XMLAASComponent component = new XMLAASComponent(config, xmlPath, registryUrl);
- component.startComponent();
- logger.info("BaSyx XML component started");
- }
-}
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/java/org/eclipse/basyx/components/servlets/XMLAASServlet.java b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/java/org/eclipse/basyx/components/servlets/XMLAASServlet.java
deleted file mode 100644
index e44ac91..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/java/org/eclipse/basyx/components/servlets/XMLAASServlet.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package org.eclipse.basyx.components.servlets;
-
-import java.io.IOException;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.basyx.components.servlet.aas.AASBundleServlet;
-import org.eclipse.basyx.components.xml.XMLAASBundleFactory;
-import org.xml.sax.SAXException;
-
-/**
- * It imports AAS from given XML location provided in the context.properties and
- * maps the AAS to servlet. It also adds the submodels, assets and concept
- * descriptors to the AAS.
- *
- *
- * @author haque, schnicke
- */
-public class XMLAASServlet extends AASBundleServlet {
- private static final long serialVersionUID = -3487515646027982620L;
-
- public XMLAASServlet(String xmlContent) throws ParserConfigurationException, SAXException, IOException {
- super(new XMLAASBundleFactory(xmlContent).create());
- }
-}
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/resources/context.properties b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/resources/context.properties
deleted file mode 100644
index f093e52..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/resources/context.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-contextPath=/xmlAAS
-contextHostname=localhost
-contextPort=4000
-xmlPath=xml/aas.xml
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/resources/logback.xml b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/resources/logback.xml
deleted file mode 100644
index 86341d6..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/main/resources/logback.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<configuration>
-
- <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
-
- <!-- Example for a filter, which removes all entries not containing "[TEST]" in the message. -->
-
- <!--<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
- <evaluator>
- <expression>return message.contains("[TEST]");</expression>
- </evaluator>
- <OnMismatch>DENY</OnMismatch>
- <OnMatch>NEUTRAL</OnMatch>
- </filter>-->
-
- <encoder>
- <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n</pattern>
- </encoder>
- </appender>
-
- <root level="INFO">
- <appender-ref ref="STDOUT" />
- </root>
-
-</configuration>
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/java/org/eclipse/basyx/regression/xmlAAS/ITInXMLAAS.java b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/java/org/eclipse/basyx/regression/xmlAAS/ITInXMLAAS.java
deleted file mode 100644
index 3e15324..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/java/org/eclipse/basyx/regression/xmlAAS/ITInXMLAAS.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.eclipse.basyx.regression.xmlAAS;
-
-import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
-import org.eclipse.basyx.components.configuration.BaSyxDockerConfiguration;
-import org.junit.BeforeClass;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class ITInXMLAAS extends XMLAASSuite {
- private static Logger logger = LoggerFactory.getLogger(ITInXMLAAS.class);
-
- @BeforeClass
- public static void setUpClass() {
- logger.info("Running integration test...");
-
- logger.info("Loading servlet configuration");
- // Load the servlet configuration inside of the docker configuration from properties file
- BaSyxContextConfiguration contextConfig = new BaSyxContextConfiguration();
- contextConfig.loadFromResource(BaSyxContextConfiguration.DEFAULT_CONFIG_PATH);
-
- // Load the docker environment configuration from properties file
- logger.info("Loading docker configuration");
- BaSyxDockerConfiguration dockerConfig = new BaSyxDockerConfiguration();
- dockerConfig.loadFromResource(BaSyxDockerConfiguration.DEFAULT_CONFIG_PATH);
-
- aasEndpoint = "http://localhost:" + dockerConfig.getHostPort() + contextConfig.getContextPath() + "/" + aasShortId + "/aas";
- smEndpoint = "http://localhost:" + dockerConfig.getHostPort() + contextConfig.getContextPath() + "/" + aasShortId + "/aas/submodels/" + smShortId + "/submodel";
-
- logger.info("AAS URL for integration test: " + aasEndpoint);
- }
-}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/java/org/eclipse/basyx/regression/xmlAAS/TestXMLAAS.java b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/java/org/eclipse/basyx/regression/xmlAAS/TestXMLAAS.java
deleted file mode 100644
index 7fd042d..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/java/org/eclipse/basyx/regression/xmlAAS/TestXMLAAS.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package org.eclipse.basyx.regression.xmlAAS;
-
-import java.io.IOException;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
-import org.eclipse.basyx.components.executable.XMLExecutable;
-import org.junit.BeforeClass;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xml.sax.SAXException;
-
-public class TestXMLAAS extends XMLAASSuite {
- private static Logger logger = LoggerFactory.getLogger(TestXMLAAS.class);
-
- @BeforeClass
- public static void setUpClass() throws ParserConfigurationException, SAXException, IOException {
- XMLExecutable.main(new String[] {});
-
- BaSyxContextConfiguration config = new BaSyxContextConfiguration();
- config.loadFromResource(BaSyxContextConfiguration.DEFAULT_CONFIG_PATH);
-
- aasEndpoint = "http://" + config.getHostname() + ":" + config.getPort() + "/" + config.getContextPath() + "/" + aasShortId + "/aas";
- smEndpoint = "http://" + config.getHostname() + ":" + config.getPort() + "/" + config.getContextPath() + "/" + aasShortId + "/aas/submodels/" + smShortId + "/submodel";
- logger.info("AAS URL for servlet test: " + aasEndpoint);
- }
-}
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/resources/.env b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/resources/.env
deleted file mode 100644
index 226a4c9..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/src/test/resources/.env
+++ /dev/null
@@ -1,5 +0,0 @@
-BASYX_HOST_PORT=8083
-BASYX_CONTAINER_PORT=4000
-BASYX_IMAGE_NAME=basys/aas-xml
-BASYX_CONTAINER_NAME=aas-xml
-BASYX_IMAGE_TAG=0.0.1-SNAPSHOT
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/start.bat b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/start.bat
deleted file mode 100644
index f0ff9e1..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/start.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-cd src/test/resources
-docker-compose up
-cd ../../..
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/start.sh b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/start.sh
deleted file mode 100755
index 4b9b54a..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/start.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env sh
-cd src/test/resources
-docker-compose up
-cd ../../..
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/stop.bat b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/stop.bat
deleted file mode 100644
index b645246..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/stop.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-cd src/test/resources
-docker-compose down
-cd ../../..
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/stop.sh b/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/stop.sh
deleted file mode 100755
index e11a931..0000000
--- a/components/basys.components/basyx.components.docker/basyx.components.xmlAAS/stop.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env sh
-cd src/test/resources
-docker-compose down
-cd ../../..
\ No newline at end of file
diff --git a/components/basys.components/basyx.components.docker/pom.xml b/components/basys.components/basyx.components.docker/pom.xml
index ddf8eed..b5f8d1f 100644
--- a/components/basys.components/basyx.components.docker/pom.xml
+++ b/components/basys.components/basyx.components.docker/pom.xml
@@ -16,8 +16,6 @@
<!-- Includes all components in this project as separated modules -->
<modules>
<module>basyx.components.registry</module>
- <module>basyx.components.xmlAAS</module>
- <module>basyx.components.AASX</module>
<module>basyx.components.AASServer</module>
</modules>
@@ -112,6 +110,7 @@
<!-- The system property/env keys for basyx configuration files -->
<CONTEXT_CONFIG_KEY>BASYX_CONTEXT</CONTEXT_CONFIG_KEY>
<REGISTRY_CONFIG_KEY>BASYX_REGISTRY</REGISTRY_CONFIG_KEY>
+ <AAS_CONFIG_KEY>BASYX_AAS</AAS_CONFIG_KEY>
<MONGODB_CONFIG_KEY>BASYX_MONGODB</MONGODB_CONFIG_KEY>
<DOCKER_CONFIG_KEY>BASYX_DOCKER</DOCKER_CONFIG_KEY>
<SQL_CONFIG_KEY>BASYX_SQL</SQL_CONFIG_KEY>
diff --git a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxContextConfiguration.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxContextConfiguration.java
index 0c00079..ca8a966 100644
--- a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxContextConfiguration.java
+++ b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxContextConfiguration.java
@@ -39,20 +39,40 @@
return defaultProps;
}
+ /**
+ * Empty Constructor - use default values
+ */
public BaSyxContextConfiguration() {
super(getDefaultProperties());
}
+ /**
+ * Constructor with predefined value map
+ */
public BaSyxContextConfiguration(Map<String, String> values) {
super(values);
}
+ /**
+ * Constructor with initial configuration - docBasePath and hostname are default values
+ *
+ * @param port The port that will be occupied
+ * @param contextPath The subpath for this context
+ */
public BaSyxContextConfiguration(int port, String contextPath) {
this();
setPort(port);
setContextPath(contextPath);
}
+ /**
+ * Constructor with initial configuration - docBasePath and hostname are default values
+ *
+ * @param contextPath The subpath for this context
+ * @param docBasePath The local base path for the documents
+ * @param hostname The hostname
+ * @param port The port that will be occupied
+ */
public BaSyxContextConfiguration(String contextPath, String docBasePath, String hostname, int port) {
this();
setContextPath(contextPath);
diff --git a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxDockerConfiguration.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxDockerConfiguration.java
index 00d331d..cd52038 100644
--- a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxDockerConfiguration.java
+++ b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxDockerConfiguration.java
@@ -37,14 +37,28 @@
return defaultProps;
}
+ /**
+ * Empty Constructor - use default values
+ */
public BaSyxDockerConfiguration() {
super(getDefaultProperties());
}
+ /**
+ * Constructor with predefined value map
+ */
public BaSyxDockerConfiguration(Map<String, String> values) {
super(values);
}
+ /**
+ * Constructor with initial configuration
+ *
+ * @param hostPort The port for the HOST
+ * @param containerPort The port for the CONTAINER
+ * @param imageName The name of the image
+ * @param containerName The name of the container
+ */
public BaSyxDockerConfiguration(int hostPort, int containerPort, String imageName, String containerName) {
this();
setHostPort(hostPort);
diff --git a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxMongoDBConfiguration.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxMongoDBConfiguration.java
index 0ccdb5d..5ab9ef5 100644
--- a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxMongoDBConfiguration.java
+++ b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxMongoDBConfiguration.java
@@ -43,14 +43,30 @@
return defaultProps;
}
+ /**
+ * Constructor with predefined value map
+ */
public BaSyxMongoDBConfiguration(Map<String, String> values) {
super(values);
}
+ /**
+ * Empty Constructor - use default values
+ */
public BaSyxMongoDBConfiguration() {
super(getDefaultProperties());
}
+ /**
+ * Constructor with initial configuration
+ *
+ * @param user The username for the mongodb
+ * @param connectionUrl Connection-URL for the mongodb
+ * @param database The database that shall be used
+ * @param registryCollection Collection name for the registry data
+ * @param aasCollection Collection name for the AAS data
+ * @param submodelCollection Collection name for the submodel data
+ */
public BaSyxMongoDBConfiguration(String user, String connectionUrl, String database, String registryCollection,
String aasCollection, String submodelCollection) {
this();
@@ -62,6 +78,15 @@
setSubmodelCollection(submodelCollection);
}
+ /**
+ * Constructor with initial configuration (without registry collection)
+ *
+ * @param user The username for the mongodb
+ * @param connectionUrl Connection-URL for the mongodb
+ * @param database The database that shall be used
+ * @param aasCollection Collection name for the AAS data
+ * @param submodelCollection Collection name for the submodel data
+ */
public BaSyxMongoDBConfiguration(String user, String connectionUrl, String database, String aasCollection,
String submodelCollection) {
this();
@@ -72,6 +97,15 @@
setSubmodelCollection(submodelCollection);
}
+ /**
+ * Constructor with initial configuration (without aas collection)
+ *
+ * @param user The username for the mongodb
+ * @param connectionUrl Connection-URL for the mongodb
+ * @param database The database that shall be used
+ * @param aasCollection Collection name for the AAS data
+ * @param submodelCollection Collection name for the submodel data
+ */
public BaSyxMongoDBConfiguration(String user, String connectionUrl, String database, String registryCollection) {
this();
setUser(user);
diff --git a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxSQLConfiguration.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxSQLConfiguration.java
index 01760a6..86e1295 100644
--- a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxSQLConfiguration.java
+++ b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/configuration/BaSyxSQLConfiguration.java
@@ -40,14 +40,29 @@
return defaultProps;
}
+ /**
+ * Constructor with predefined value map
+ */
public BaSyxSQLConfiguration(Map<String, String> values) {
super(values);
}
+ /**
+ * Empty Constructor - use default values
+ */
public BaSyxSQLConfiguration() {
super(getDefaultProperties());
}
+ /**
+ * Constructor with initial configuration
+ *
+ * @param user Username for SQL database
+ * @param pass Password for SQL database
+ * @param path SQL connection path
+ * @param driver SQL driver
+ * @param prefix SQL driver prefix
+ */
public BaSyxSQLConfiguration(String user, String pass, String path, String driver, String prefix) {
this();
setUser(user);
diff --git a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/support/bundle/AASBundleDescriptorFactory.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/support/bundle/AASBundleDescriptorFactory.java
index 2291fa4..487ed63 100644
--- a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/support/bundle/AASBundleDescriptorFactory.java
+++ b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/support/bundle/AASBundleDescriptorFactory.java
@@ -24,7 +24,9 @@
String nHostBasePath = VABPathTools.stripSlashes(hostBasePath);
// Create AASDescriptor
- String aasBase = VABPathTools.concatenatePaths(nHostBasePath, bundle.getAAS().getIdShort(), "aas");
+ String endpointId = bundle.getAAS().getIdentification().getId();
+ endpointId = VABPathTools.encodePathElement(endpointId);
+ String aasBase = VABPathTools.concatenatePaths(nHostBasePath, endpointId, "aas");
AASDescriptor desc = new AASDescriptor(bundle.getAAS(), aasBase);
bundle.getSubmodels().stream().forEach(s -> {
SubmodelDescriptor smDesc = new SubmodelDescriptor(s, VABPathTools.concatenatePaths(aasBase, "submodels", s.getIdShort(), "submodel"));
diff --git a/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/bundle/TestAASBundleDescriptorFactory.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/bundle/TestAASBundleDescriptorFactory.java
index 42d5003..e84be6f 100644
--- a/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/bundle/TestAASBundleDescriptorFactory.java
+++ b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/support/bundle/TestAASBundleDescriptorFactory.java
@@ -8,6 +8,7 @@
import org.eclipse.basyx.aas.metamodel.map.descriptor.AASDescriptor;
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.eclipse.basyx.support.bundle.AASBundle;
import org.eclipse.basyx.support.bundle.AASBundleDescriptorFactory;
import org.eclipse.basyx.vab.modelprovider.VABPathTools;
@@ -24,7 +25,7 @@
public void testDescriptorCreation() {
String aasId = "aasId";
AssetAdministrationShell shell = new AssetAdministrationShell();
- shell.setIdShort(aasId);
+ shell.setIdentification(new Identifier(IdentifierType.CUSTOM, aasId));
String smId = "smId";
SubModel sm = new SubModel();
diff --git a/examples/basys.examples/pom.xml b/examples/basys.examples/pom.xml
index 2f8b44e..c59cd91 100644
--- a/examples/basys.examples/pom.xml
+++ b/examples/basys.examples/pom.xml
@@ -288,13 +288,6 @@
<version>0.0.1-SNAPSHOT</version>
</dependency>
- <!-- Add explicit AASX component dependency -->
- <dependency>
- <groupId>org.eclipse.basyx</groupId>
- <artifactId>basyx.components.AASX</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- </dependency>
-
<!-- Adds additional classes of the BaSys SDK for tests -->
<dependency>
<groupId>org.eclipse.basyx</groupId>
diff --git a/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/scenarios/cloudedgedeployment/CloudEdgeDeploymentScenario.java b/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/scenarios/cloudedgedeployment/CloudEdgeDeploymentScenario.java
index 47f97a2..7c1cebe 100644
--- a/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/scenarios/cloudedgedeployment/CloudEdgeDeploymentScenario.java
+++ b/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/scenarios/cloudedgedeployment/CloudEdgeDeploymentScenario.java
@@ -7,8 +7,8 @@
import org.eclipse.basyx.aas.manager.ConnectedAssetAdministrationShellManager;
import org.eclipse.basyx.aas.registration.api.IAASRegistryService;
import org.eclipse.basyx.aas.registration.proxy.AASRegistryProxy;
-import org.eclipse.basyx.components.AASServerComponent;
import org.eclipse.basyx.components.IComponent;
+import org.eclipse.basyx.components.aas.AASServerComponent;
import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
import org.eclipse.basyx.components.registry.RegistryComponent;
import org.eclipse.basyx.components.registry.configuration.BaSyxRegistryConfiguration;
diff --git a/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/scenarios/staticdynamic/StaticDynamicScenario.java b/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/scenarios/staticdynamic/StaticDynamicScenario.java
index 5859994..5af9cab 100644
--- a/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/scenarios/staticdynamic/StaticDynamicScenario.java
+++ b/examples/basys.examples/src/main/java/org/eclipse/basyx/examples/scenarios/staticdynamic/StaticDynamicScenario.java
@@ -15,9 +15,9 @@
import org.eclipse.basyx.aas.metamodel.map.descriptor.SubmodelDescriptor;
import org.eclipse.basyx.aas.registration.api.IAASRegistryService;
import org.eclipse.basyx.aas.registration.proxy.AASRegistryProxy;
-import org.eclipse.basyx.components.AASServerComponent;
import org.eclipse.basyx.components.IComponent;
-import org.eclipse.basyx.components.aasx.AASXPackageManager;
+import org.eclipse.basyx.components.aas.AASServerComponent;
+import org.eclipse.basyx.components.aas.aasx.AASXPackageManager;
import org.eclipse.basyx.components.configuration.BaSyxContextConfiguration;
import org.eclipse.basyx.components.registry.RegistryComponent;
import org.eclipse.basyx.components.registry.configuration.BaSyxRegistryConfiguration;
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/contexts/BaSyxExamplesContext.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/contexts/BaSyxExamplesContext.java
index 24c007c..cb0bbd5 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/contexts/BaSyxExamplesContext.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/contexts/BaSyxExamplesContext.java
@@ -1,7 +1,7 @@
package org.eclipse.basyx.examples.contexts;
+import org.eclipse.basyx.components.aas.servlet.AASAggregatorServlet;
import org.eclipse.basyx.components.registry.servlet.InMemoryRegistryServlet;
-import org.eclipse.basyx.components.servlet.AASServerServlet;
import org.eclipse.basyx.vab.protocol.http.server.BaSyxContext;
/**
@@ -38,7 +38,7 @@
// Define Servlet infrastucture
addServletMapping(REGISTRYFRAGMENT + "*", new InMemoryRegistryServlet());
- addServletMapping(AASSERVERFRAGMENT + "*", new AASServerServlet());
+ addServletMapping(AASSERVERFRAGMENT + "*", new AASAggregatorServlet());
}
}
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/SubmodelElementProvider.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/SubmodelElementProvider.java
index f28ac18..7a9bfe9 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/SubmodelElementProvider.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/SubmodelElementProvider.java
@@ -26,9 +26,12 @@
private boolean specializedProvider = false;
public SubmodelElementProvider(IModelProvider proxy) {
+ IModelProvider unchangedProxy = proxy;
this.proxy = getElementProvider(proxy);
+ // if the returned element provider is the same, no specialized provider exists
+ specializedProvider = unchangedProxy != this.proxy;
}
-
+
/**
* Used to find out if an Element needs a specialized Provider (Collection, Operation)
*
@@ -36,19 +39,15 @@
* @return either the unchanged Provider or the Provider nested into a specialized ElementProvider
*/
@SuppressWarnings("unchecked")
- private IModelProvider getElementProvider(IModelProvider proxy) {
+ public static IModelProvider getElementProvider(IModelProvider proxy) {
Map<String, Object> elementMap = (Map<String, Object>) proxy.getModelPropertyValue("");
if(Operation.isOperation(elementMap)) {
- specializedProvider = true;
return new OperationProvider(proxy);
} else if (SubmodelElementCollection.isSubmodelElementCollection(elementMap)) {
- specializedProvider = true;
return new SubmodelElementCollectionProvider(proxy);
} else if(Property.isProperty(elementMap)) {
- specializedProvider = true;
return new PropertyProvider(proxy);
} else {
- specializedProvider = false;
return proxy;
}
}