Restructures servlet(s) & refactors CFGProvider

Change-Id: Ib3807925de14ad09b40519e065decbbdf86d6fdb
Signed-off-by: Frank Schnicke <frank.schnicke@iese.fraunhofer.de>
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/AASServlet.java b/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/aas/AASServlet.java
similarity index 93%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/AASServlet.java
rename to components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/aas/AASServlet.java
index 6a621b6..e8a2194 100644
--- a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/AASServlet.java
+++ b/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/aas/AASServlet.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.components.servlet.submodel;
+package org.eclipse.basyx.components.servlet.aas;
 
 import org.eclipse.basyx.aas.metamodel.map.AssetAdministrationShell;
 import org.eclipse.basyx.aas.restapi.AASModelProvider;
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlets/SQLDirectoryServlet.java b/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/registry/SQLRegistryServlet.java
similarity index 81%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/servlets/SQLDirectoryServlet.java
rename to components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/registry/SQLRegistryServlet.java
index ebf3291..56f5322 100644
--- a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlets/SQLDirectoryServlet.java
+++ b/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/registry/SQLRegistryServlet.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.components.servlets;
+package org.eclipse.basyx.components.servlet.registry;
 
 
 import org.eclipse.basyx.aas.registration.restapi.DirectoryModelProvider;
@@ -16,7 +16,7 @@
  * @author kuhn, pschorn
  *
  */
-public class SQLDirectoryServlet extends VABHTTPInterface<DirectoryModelProvider> {
+public class SQLRegistryServlet extends VABHTTPInterface<DirectoryModelProvider> {
 
 	
 	private static final long serialVersionUID = 1L;
@@ -31,12 +31,12 @@
 	 * Provide HTTP interface with JSONProvider to handle serialization and
 	 * SQLDirectoryProvider as backend
 	 */
-	public SQLDirectoryServlet() {
+	public SQLRegistryServlet() {
 		super(new DirectoryModelProvider(new SQLRegistry(configFilePath)));
 
 	}
 
-	public SQLDirectoryServlet(String customConfigFilePath) {
+	public SQLRegistryServlet(String customConfigFilePath) {
 		super(new DirectoryModelProvider(new SQLRegistry(customConfigFilePath)));
 	}
 
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlets/StaticCFGDirectoryServlet.java b/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/registry/StaticCFGDirectoryServlet.java
similarity index 99%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/servlets/StaticCFGDirectoryServlet.java
rename to components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/registry/StaticCFGDirectoryServlet.java
index 25432b5..8e88e14 100644
--- a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlets/StaticCFGDirectoryServlet.java
+++ b/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/registry/StaticCFGDirectoryServlet.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.components.servlets;
+package org.eclipse.basyx.components.servlet.registry;
 
 
 import java.io.IOException;
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlets/SQLSubModelProviderServlet.java b/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/SQLSubModelProviderServlet.java
similarity index 97%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/servlets/SQLSubModelProviderServlet.java
rename to components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/SQLSubModelProviderServlet.java
index 1931567..7de51c7 100644
--- a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlets/SQLSubModelProviderServlet.java
+++ b/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/SQLSubModelProviderServlet.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.components.servlets;
+package org.eclipse.basyx.components.servlet.submodel;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlets/XMLXQueryServlet.java b/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/XMLXQueryServlet.java
similarity index 97%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/servlets/XMLXQueryServlet.java
rename to components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/XMLXQueryServlet.java
index a95d959..206fd65 100644
--- a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlets/XMLXQueryServlet.java
+++ b/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/XMLXQueryServlet.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.components.servlets;
+package org.eclipse.basyx.components.servlet.submodel;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlets/RawCFGSubModelProviderServlet.java b/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/cfg/AbstractCFGSubModelProviderServlet.java
similarity index 64%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/servlets/RawCFGSubModelProviderServlet.java
rename to components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/cfg/AbstractCFGSubModelProviderServlet.java
index 5b45a43..0a89266 100644
--- a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlets/RawCFGSubModelProviderServlet.java
+++ b/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/cfg/AbstractCFGSubModelProviderServlet.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.components.servlets;
+package org.eclipse.basyx.components.servlet.submodel.cfg;
 
 import java.io.IOException;
 import java.io.InputStream;
@@ -7,18 +7,16 @@
 import javax.servlet.ServletException;
 
 import org.eclipse.basyx.aas.restapi.VABMultiSubmodelProvider;
-import org.eclipse.basyx.components.cfgprovider.RawCFGSubModelProvider;
-import org.eclipse.basyx.submodel.metamodel.map.qualifier.Referable;
+import org.eclipse.basyx.submodel.restapi.SubModelProvider;
 import org.eclipse.basyx.vab.protocol.http.server.VABHTTPInterface;
 
 /**
- * Servlet interface for configuration file sub model provider
+ * Abstract super class for all config file using submodel provider servlets
  * 
- * @author kuhn
+ * @author schnicke
  *
  */
-public class RawCFGSubModelProviderServlet extends VABHTTPInterface<VABMultiSubmodelProvider> {
-
+public abstract class AbstractCFGSubModelProviderServlet extends VABHTTPInterface<VABMultiSubmodelProvider> {
 	/**
 	 * Version information to identify the version of serialized instances
 	 */
@@ -34,15 +32,13 @@
 	 */
 	protected Properties properties = null;
 
-	/**
-	 * Constructor
-	 */
-	public RawCFGSubModelProviderServlet() {
-		// Invoke base constructor
-		super(new VABMultiSubmodelProvider());
 
-		// Change factory instance
-		// this.getProviderBackend().getSerializerReference().setFactory(newFactoryInstance);
+	/**
+	 * Standard constructor creating a servlet containing a new
+	 * VABMultiSubmodelProvider()
+	 */
+	public AbstractCFGSubModelProviderServlet() {
+		super(new VABMultiSubmodelProvider());
 	}
 
 	/**
@@ -59,7 +55,7 @@
 			properties.load(input);
 
 			// Extract AAS properties
-			this.submodelID = properties.getProperty(Referable.IDSHORT);
+			this.submodelID = properties.getProperty(getSubmodelId());
 		} catch (IOException e) {
 			// Output exception
 			e.printStackTrace();
@@ -84,10 +80,26 @@
 		System.out.println("1:" + submodelID);
 
 		// Create sub model provider
-		RawCFGSubModelProvider submodelProvider = new RawCFGSubModelProvider(properties);
+		SubModelProvider submodelProvider = createProvider(properties);
 		// - Add sub model provider
 		this.getModelProvider().addSubmodel(submodelID, submodelProvider);
 
 		System.out.println("CFG file loaded");
 	}
+
+	/**
+	 * Retrieves the submodel id
+	 * 
+	 * @return
+	 */
+	protected abstract String getSubmodelId();
+
+	/**
+	 * Creates the appropriate provider based on the passed properties
+	 * 
+	 * @param properties
+	 * @return
+	 */
+	protected abstract SubModelProvider createProvider(Properties properties);
+
 }
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/cfg/CFGSubModelProviderServlet.java b/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/cfg/CFGSubModelProviderServlet.java
new file mode 100644
index 0000000..1391f89
--- /dev/null
+++ b/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/cfg/CFGSubModelProviderServlet.java
@@ -0,0 +1,32 @@
+package org.eclipse.basyx.components.servlet.submodel.cfg;
+
+import java.util.Properties;
+
+import org.eclipse.basyx.components.cfgprovider.CFGSubModelProvider;
+import org.eclipse.basyx.components.provider.BaseConfiguredProvider;
+import org.eclipse.basyx.submodel.restapi.SubModelProvider;
+
+/**
+ * Servlet interface for configuration file sub model provider
+ * 
+ * @author kuhn
+ *
+ */
+public class CFGSubModelProviderServlet extends AbstractCFGSubModelProviderServlet {
+
+	/**
+	 * Version information to identify the version of serialized instances
+	 */
+	private static final long serialVersionUID = -7525848804623194574L;
+
+
+	@Override
+	protected String getSubmodelId() {
+		return BaseConfiguredProvider.buildBasyxCfgName(BaseConfiguredProvider.SUBMODELID);
+	}
+
+	@Override
+	protected SubModelProvider createProvider(Properties properties) {
+		return new CFGSubModelProvider(properties);
+	}
+}
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/cfg/RawCFGSubModelProviderServlet.java b/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/cfg/RawCFGSubModelProviderServlet.java
new file mode 100644
index 0000000..9a87495
--- /dev/null
+++ b/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/cfg/RawCFGSubModelProviderServlet.java
@@ -0,0 +1,33 @@
+package org.eclipse.basyx.components.servlet.submodel.cfg;
+
+import java.util.Properties;
+
+import org.eclipse.basyx.components.cfgprovider.RawCFGSubModelProvider;
+import org.eclipse.basyx.submodel.metamodel.map.qualifier.Referable;
+import org.eclipse.basyx.submodel.restapi.SubModelProvider;
+
+/**
+ * Servlet interface for configuration file sub model provider
+ * 
+ * @author kuhn
+ *
+ */
+public class RawCFGSubModelProviderServlet extends AbstractCFGSubModelProviderServlet {
+
+	/**
+	 * Version information to identify the version of serialized instances
+	 */
+	private static final long serialVersionUID = -8132051635222485719L;
+
+
+	@Override
+	protected String getSubmodelId() {
+		return Referable.IDSHORT;
+	}
+
+
+	@Override
+	protected SubModelProvider createProvider(Properties properties) {
+		return new RawCFGSubModelProvider(properties);
+	}
+}
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/VABLambdaServlet.java b/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/vab/VABLambdaServlet.java
similarity index 92%
rename from components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/VABLambdaServlet.java
rename to components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/vab/VABLambdaServlet.java
index 7f1f392..fbd7e5d 100644
--- a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/submodel/VABLambdaServlet.java
+++ b/components/basys.components/src/main/java/org/eclipse/basyx/components/servlet/vab/VABLambdaServlet.java
@@ -1,4 +1,4 @@
-package org.eclipse.basyx.components.servlet.submodel;
+package org.eclipse.basyx.components.servlet.vab;
 
 import java.util.HashMap;
 
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlets/CFGSubModelProviderServlet.java b/components/basys.components/src/main/java/org/eclipse/basyx/components/servlets/CFGSubModelProviderServlet.java
deleted file mode 100644
index 38d5024..0000000
--- a/components/basys.components/src/main/java/org/eclipse/basyx/components/servlets/CFGSubModelProviderServlet.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package org.eclipse.basyx.components.servlets;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Properties;
-
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-
-import org.eclipse.basyx.aas.restapi.VABMultiSubmodelProvider;
-import org.eclipse.basyx.components.cfgprovider.CFGSubModelProvider;
-import org.eclipse.basyx.components.provider.BaseConfiguredProvider;
-import org.eclipse.basyx.vab.protocol.http.server.VABHTTPInterface;
-
-/**
- * Servlet interface for configuration file sub model provider
- * 
- * @author kuhn
- *
- */
-public class CFGSubModelProviderServlet extends VABHTTPInterface<VABMultiSubmodelProvider> {
-
-	/**
-	 * Version information to identify the version of serialized instances
-	 */
-	private static final long serialVersionUID = 1L;
-
-	/**
-	 * Store ID of the sub model provided by this provider
-	 */
-	protected String submodelID = null;
-
-	/**
-	 * Configuration properties
-	 */
-	protected Properties properties = null;
-
-	/**
-	 * Constructor
-	 */
-	public CFGSubModelProviderServlet() {
-		// Invoke base constructor
-		super(new VABMultiSubmodelProvider());
-	}
-
-	/**
-	 * Load properties from file
-	 */
-	protected void loadProperties(String cfgFilePath) {
-		// Read property file
-		try {
-			// Open property file
-			ServletContext context = getServletContext();
-			System.out.println("Context Path: " + context.getContextPath() + " - " + context.getRealPath(cfgFilePath)
-					+ " + " + cfgFilePath);
-			InputStream input = context.getResourceAsStream(cfgFilePath);
-
-			// Instantiate property structure
-			properties = new Properties();
-			properties.load(input);
-
-			// Extract AAS properties
-			this.submodelID = properties.getProperty(BaseConfiguredProvider.buildBasyxCfgName(BaseConfiguredProvider.SUBMODELID));
-		} catch (IOException e) {
-			// Output exception
-			e.printStackTrace();
-		}
-	}
-
-	/**
-	 * Initialize servlet
-	 * 
-	 * @throws ServletException
-	 */
-	public void init() throws ServletException {
-		// Call base implementation
-		super.init();
-
-		// Read configuration values
-		String configFilePath = (String) getInitParameter("config");
-		// - Read property file
-		loadProperties(configFilePath);
-
-		System.out.println("1:" + submodelID);
-
-		// Create sub model provider
-		CFGSubModelProvider submodelProvider = new CFGSubModelProvider(properties);
-		// - Add sub model provider
-		this.getModelProvider().addSubmodel(submodelID, submodelProvider);
-
-		System.out.println("CFG file loaded");
-	}
-}
diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/support/server/context/ComponentsRegressionContext.java b/components/basys.components/src/test/java/org/eclipse/basyx/regression/support/server/context/ComponentsRegressionContext.java
index ba9ab5b..4583683 100644
--- a/components/basys.components/src/test/java/org/eclipse/basyx/regression/support/server/context/ComponentsRegressionContext.java
+++ b/components/basys.components/src/test/java/org/eclipse/basyx/regression/support/server/context/ComponentsRegressionContext.java
@@ -1,11 +1,11 @@
 package org.eclipse.basyx.regression.support.server.context;
 
-import org.eclipse.basyx.components.servlets.CFGSubModelProviderServlet;
-import org.eclipse.basyx.components.servlets.RawCFGSubModelProviderServlet;
-import org.eclipse.basyx.components.servlets.SQLDirectoryServlet;
-import org.eclipse.basyx.components.servlets.SQLSubModelProviderServlet;
-import org.eclipse.basyx.components.servlets.StaticCFGDirectoryServlet;
-import org.eclipse.basyx.components.servlets.XMLXQueryServlet;
+import org.eclipse.basyx.components.servlet.registry.SQLRegistryServlet;
+import org.eclipse.basyx.components.servlet.registry.StaticCFGDirectoryServlet;
+import org.eclipse.basyx.components.servlet.submodel.SQLSubModelProviderServlet;
+import org.eclipse.basyx.components.servlet.submodel.XMLXQueryServlet;
+import org.eclipse.basyx.components.servlet.submodel.cfg.CFGSubModelProviderServlet;
+import org.eclipse.basyx.components.servlet.submodel.cfg.RawCFGSubModelProviderServlet;
 import org.eclipse.basyx.regression.support.processengine.servlet.CoilcarAASServlet;
 import org.eclipse.basyx.vab.protocol.http.server.BaSyxContext;
 
@@ -40,7 +40,7 @@
 		addServletMapping("/Testsuite/components/BaSys/1.0/provider/rawcfgsm/*",  new RawCFGSubModelProviderServlet().withParameter("config", "/WebContent/WEB-INF/config/rawcfgprovider/samplecfg.properties"));
 		addServletMapping("/Testsuite/components/BaSys/1.0/provider/xmlxquery/*", new XMLXQueryServlet().withParameter("config", "/WebContent/WEB-INF/config/xmlqueryprovider/xmlqueryprovider.properties"));
 		addServletMapping("/Testsuite/Directory/CFGFile/*",                       new StaticCFGDirectoryServlet().withParameter("config", "/WebContent/WEB-INF/config/directory/cfgdirectory/directory.properties"));
-		addServletMapping("/Testsuite/Directory/SQL/*",                           new SQLDirectoryServlet().withParameter("config", "/WebContent/WEB-INF/config/directory/sqldirectory/directory.properties"));
+		addServletMapping("/Testsuite/Directory/SQL/*",                           new SQLRegistryServlet().withParameter("config", "/WebContent/WEB-INF/config/directory/sqldirectory/directory.properties"));
 		addServletMapping("/Testsuite/Processengine/coilcar/*",                   new CoilcarAASServlet());
 	}
 }
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/contexts/BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/contexts/BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory.java
index 0098f83..a1c8162 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/contexts/BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/contexts/BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory.java
@@ -1,7 +1,7 @@
 package org.eclipse.basyx.examples.contexts;
 
-import org.eclipse.basyx.components.servlets.RawCFGSubModelProviderServlet;
-import org.eclipse.basyx.components.servlets.SQLDirectoryServlet;
+import org.eclipse.basyx.components.servlet.registry.SQLRegistryServlet;
+import org.eclipse.basyx.components.servlet.submodel.cfg.RawCFGSubModelProviderServlet;
 import org.eclipse.basyx.vab.protocol.http.server.BaSyxContext;
 
 /**
@@ -30,7 +30,7 @@
 		super("/basys.examples", "");
 		
 		// Define Servlet infrastucture
-		addServletMapping("/Components/Directory/SQL/*",       new SQLDirectoryServlet().withParameter("config", "/WebContent/WEB-INF/config/directory/sqldirectory/directory.properties"));
+		addServletMapping("/Components/Directory/SQL/*",       new SQLRegistryServlet().withParameter("config", "/WebContent/WEB-INF/config/directory/sqldirectory/directory.properties"));
 		addServletMapping("/Components/BaSys/1.0/aasServer/*", new RawCFGSubModelProviderServlet().withParameter("config", "/WebContent/WEB-INF/config/aasServer/aasServer.properties"));
 	}
 }
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/deployment/http/ConnectToRemoteAAS.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/deployment/http/ConnectToRemoteAAS.java
index 1e69e70..41d44b9 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/deployment/http/ConnectToRemoteAAS.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/deployment/http/ConnectToRemoteAAS.java
@@ -6,7 +6,7 @@
 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.components.servlet.submodel.AASServlet;
+import org.eclipse.basyx.components.servlet.aas.AASServlet;
 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_Empty;
 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;
 import org.eclipse.basyx.examples.support.directory.ExampleAASRegistry;
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/registry/ConnectToAASEndpoints.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/registry/ConnectToAASEndpoints.java
index e3b4ad2..9b8590e 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/registry/ConnectToAASEndpoints.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/registry/ConnectToAASEndpoints.java
@@ -9,7 +9,7 @@
 import org.eclipse.basyx.aas.metamodel.map.descriptor.ModelUrn;
 import org.eclipse.basyx.aas.registration.api.IAASRegistryService;
 import org.eclipse.basyx.aas.registration.proxy.AASRegistryProxy;
-import org.eclipse.basyx.components.servlet.submodel.AASServlet;
+import org.eclipse.basyx.components.servlet.aas.AASServlet;
 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory;
 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;
 import org.eclipse.basyx.vab.protocol.http.connector.HTTPConnectorProvider;
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/registry/ConnectToSubModelEndpoints.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/registry/ConnectToSubModelEndpoints.java
index db54a66..2346480 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/registry/ConnectToSubModelEndpoints.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/registry/ConnectToSubModelEndpoints.java
@@ -9,7 +9,7 @@
 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.servlet.submodel.AASServlet;
+import org.eclipse.basyx.components.servlet.aas.AASServlet;
 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory;
 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;
 import org.eclipse.basyx.submodel.metamodel.api.ISubModel;
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/DynamicSubModelDeployment.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/DynamicSubModelDeployment.java
index f123e6d..3ac9f17 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/DynamicSubModelDeployment.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/DynamicSubModelDeployment.java
@@ -5,7 +5,7 @@
 import org.eclipse.basyx.aas.manager.ConnectedAssetAdministrationShellManager;
 import org.eclipse.basyx.aas.metamodel.map.AssetAdministrationShell;
 import org.eclipse.basyx.aas.metamodel.map.descriptor.ModelUrn;
-import org.eclipse.basyx.components.servlet.submodel.AASServlet;
+import org.eclipse.basyx.components.servlet.aas.AASServlet;
 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory;
 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;
 import org.eclipse.basyx.examples.support.directory.ExampleAASRegistry;
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/DynamicSubModelDeploymentHTTP.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/DynamicSubModelDeploymentHTTP.java
index b8a6ca4..cc28ee1 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/DynamicSubModelDeploymentHTTP.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/DynamicSubModelDeploymentHTTP.java
@@ -5,7 +5,7 @@
 import java.util.Map;
 
 import org.eclipse.basyx.aas.metamodel.map.AssetAdministrationShell;
-import org.eclipse.basyx.components.servlet.submodel.AASServlet;
+import org.eclipse.basyx.components.servlet.aas.AASServlet;
 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory;
 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;
 import org.eclipse.basyx.examples.support.directory.ExamplesPreconfiguredDirectory;
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASDynamicOperationSnippet.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASDynamicOperationSnippet.java
index caafe7c..c40c50e 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASDynamicOperationSnippet.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASDynamicOperationSnippet.java
@@ -6,7 +6,7 @@
 import java.util.Map;
 import java.util.function.Supplier;
 
-import org.eclipse.basyx.components.servlet.submodel.VABLambdaServlet;
+import org.eclipse.basyx.components.servlet.vab.VABLambdaServlet;
 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory;
 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;
 import org.eclipse.basyx.examples.support.directory.ExamplesPreconfiguredDirectory;
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASManualHTTPOperationsSnippet.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASManualHTTPOperationsSnippet.java
index 0806148..866bdad 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASManualHTTPOperationsSnippet.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASManualHTTPOperationsSnippet.java
@@ -4,7 +4,7 @@
 
 import java.util.Map;
 
-import org.eclipse.basyx.components.servlet.submodel.VABLambdaServlet;
+import org.eclipse.basyx.components.servlet.vab.VABLambdaServlet;
 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory;
 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;
 import org.eclipse.basyx.examples.support.directory.ExamplesPreconfiguredDirectory;
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASPropertiesCRUDAccessSnippet.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASPropertiesCRUDAccessSnippet.java
index 23b9003..64f1c08 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASPropertiesCRUDAccessSnippet.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASPropertiesCRUDAccessSnippet.java
@@ -2,7 +2,7 @@
 
 import static org.junit.Assert.assertTrue;
 
-import org.eclipse.basyx.components.servlet.submodel.VABLambdaServlet;
+import org.eclipse.basyx.components.servlet.vab.VABLambdaServlet;
 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory;
 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;
 import org.eclipse.basyx.examples.support.directory.ExamplesPreconfiguredDirectory;
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASTailoredSupplierSnippet.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASTailoredSupplierSnippet.java
index de18cab..aa3d254 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASTailoredSupplierSnippet.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASTailoredSupplierSnippet.java
@@ -6,7 +6,7 @@
 import java.util.Map;
 import java.util.function.Supplier;
 
-import org.eclipse.basyx.components.servlet.submodel.VABLambdaServlet;
+import org.eclipse.basyx.components.servlet.vab.VABLambdaServlet;
 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory;
 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;
 import org.eclipse.basyx.examples.support.directory.ExamplesPreconfiguredDirectory;
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/vab/connection/RunAASManualHTTPOperationsSnippet.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/vab/connection/RunAASManualHTTPOperationsSnippet.java
index b06638e..4474340 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/vab/connection/RunAASManualHTTPOperationsSnippet.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/vab/connection/RunAASManualHTTPOperationsSnippet.java
@@ -5,7 +5,7 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.eclipse.basyx.components.servlet.submodel.VABLambdaServlet;
+import org.eclipse.basyx.components.servlet.vab.VABLambdaServlet;
 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory;
 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;
 import org.eclipse.basyx.examples.support.directory.ExamplesPreconfiguredDirectory;
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/vab/connection/RunAASPropertiesSnippet.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/vab/connection/RunAASPropertiesSnippet.java
index 0d460ec..e975057 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/vab/connection/RunAASPropertiesSnippet.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/vab/connection/RunAASPropertiesSnippet.java
@@ -4,7 +4,7 @@
 
 import java.util.HashMap;
 
-import org.eclipse.basyx.components.servlet.submodel.VABLambdaServlet;
+import org.eclipse.basyx.components.servlet.vab.VABLambdaServlet;
 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory;
 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;
 import org.eclipse.basyx.examples.support.directory.ExamplesPreconfiguredDirectory;
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/CRUDOperations.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/CRUDOperations.java
index 2a20dba..3e1eb25 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/CRUDOperations.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/CRUDOperations.java
@@ -4,7 +4,7 @@
 
 import java.util.HashMap;
 
-import org.eclipse.basyx.components.servlet.submodel.VABLambdaServlet;
+import org.eclipse.basyx.components.servlet.vab.VABLambdaServlet;
 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory;
 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;
 import org.eclipse.basyx.examples.support.directory.ExamplesPreconfiguredDirectory;
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/DynamicPropertyClass.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/DynamicPropertyClass.java
index 988eb17..021f663 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/DynamicPropertyClass.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/DynamicPropertyClass.java
@@ -6,7 +6,7 @@
 import java.util.Map;
 import java.util.function.Supplier;
 
-import org.eclipse.basyx.components.servlet.submodel.VABLambdaServlet;
+import org.eclipse.basyx.components.servlet.vab.VABLambdaServlet;
 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory;
 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;
 import org.eclipse.basyx.examples.support.directory.ExamplesPreconfiguredDirectory;
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/DynamicPropertyLambda.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/DynamicPropertyLambda.java
index 06c173a..b80fee6 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/DynamicPropertyLambda.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/DynamicPropertyLambda.java
@@ -6,7 +6,7 @@
 import java.util.Map;
 import java.util.function.Supplier;
 
-import org.eclipse.basyx.components.servlet.submodel.VABLambdaServlet;
+import org.eclipse.basyx.components.servlet.vab.VABLambdaServlet;
 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory;
 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;
 import org.eclipse.basyx.examples.support.directory.ExamplesPreconfiguredDirectory;
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/ManualHTTPCalls.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/ManualHTTPCalls.java
index 1a4312a..a67bc95 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/ManualHTTPCalls.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/vab/ManualHTTPCalls.java
@@ -5,7 +5,7 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import org.eclipse.basyx.components.servlet.submodel.VABLambdaServlet;
+import org.eclipse.basyx.components.servlet.vab.VABLambdaServlet;
 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory;
 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;
 import org.eclipse.basyx.examples.support.directory.ExamplesPreconfiguredDirectory;