Introduce subdirectories authored by Oliver Parczyk's avatar Oliver Parczyk
Here, I'll walk you through the java source code, responsible for starting the [AAS Server](What-am-I-looking-at-here#aas-server). Additional startup procedures are explained in the documentation for the [`start_component.sh`](TODO) and the [`run_demo.sh`](TODO) scripts.
The discussed file can be found [here](https://gitlab.hrz.tu-chemnitz.de/s6869070--tu-dresden.de/vws-spielwiese/-/blob/b1802bdd98650bdb666f03483f1e13c7f99bf4b8/basyx.lichterkette/src/main/java/de/olipar/basyx/lichterkette/AASServer.java).
This is very similar to the [AAS Registry starter](AAS-Registry-starter-walkthrough).
We'll skip the license header, imports and comments, as they are either pretty much self explanatory or not the product of conscious development effort.
```java
public class AASServer {
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(AASServer.class);
```
At the start of the `AASServer`-class, we aquire a logger object, to which all console output will be passed. This is not only used internally by BaSyx too, but allows us to easily utilize different loglevels, such as `INFO`, `WARN` and `ERROR`, indicating severity.
```java
public static void main(String[] args) {
```
We then define a `main`-method, as this class is executable. It will be called to startup the AAS Server.
```java
final int HOSTPORT = Common.getHostPort();
logger.info("Local host port is set to " + HOSTPORT);
```
Here, we invoke the static method `getHostPort()` of the [`Common`-class](TODO). The port on which to host the AAS Server is grabbed from an environment variable, if present and set to a fallback value if not. The set port is then logged via the `Logger` object acquired above.
```java
final String REGISTRYPATH = Common.getRegistryPath();
logger.info("Registry path set to " + REGISTRYPATH);
```
Here, the path to the registry is set via the similar to above. More details can be found in the walkthrough of the [`Common`-class](TODO).
```java
startAASServer(REGISTRYPATH, HOSTPORT);
```
Lastly, we startup the AAS Server by invoking the method defined next:
```java
private static void startAASServer(final String REGISTRYPATH, final int HOSTPORT) {
```
This method is used to handle the actual startup of an AAS Server instance, given a registry path and port to host it on.
It is based on the startup method given by the BaSyx documentation in [this example](https://wiki.eclipse.org/BaSyx_/_Introductory_Examples_/_Java_/_Example_6), only the registry path and port to host it on have been parametrized.
```java
BaSyxContextConfiguration contextConfig = new BaSyxContextConfiguration(HOSTPORT, "/aasServer");
```
Here, we create a `BaSyxContextConfiguration`-object, storing the port to host the new AAS Server instance on and the path prefix.
```java
BaSyxAASServerConfiguration aasServerConfig = new BaSyxAASServerConfiguration(AASServerBackend.INMEMORY, "", REGISTRYPATH);
```
Here, we create a `BaSyxAASServerConfiguration`-object, setting the AASServerBackend to use the RAM and the registry path.
```java
AASServerComponent aasServer = new AASServerComponent(contextConfig, aasServerConfig);
```
Creates a new AAS Server Component, passing the configuration objects created above
```java
aasServer.startComponent();
```
Actually starts the AAS Server.
After startup, the AAS Server can be reached locally on `http://localhost:<HOSTPORT>/aasServer/shells/`
\ No newline at end of file