View Javadoc
1   package de.dlr.shepard;
2   
3   import de.dlr.shepard.common.neo4j.MigrationsRunner;
4   import de.dlr.shepard.common.neo4j.NeoConnector;
5   import de.dlr.shepard.common.util.IConnector;
6   import de.dlr.shepard.common.util.PKIHelper;
7   import io.quarkus.logging.Log;
8   import io.quarkus.runtime.Quarkus;
9   import io.quarkus.runtime.QuarkusApplication;
10  import io.quarkus.runtime.Shutdown;
11  import io.quarkus.runtime.Startup;
12  import io.quarkus.runtime.annotations.QuarkusMain;
13  import jakarta.enterprise.context.control.ActivateRequestContext;
14  
15  @QuarkusMain
16  public class ShepardMain implements QuarkusApplication {
17  
18    private static IConnector neo4j = NeoConnector.getInstance();
19  
20    @Startup
21    void init() {
22      Log.info("Starting shepard backend");
23  
24      var pkiHelper = new PKIHelper();
25      var migrationRunner = new MigrationsRunner();
26      pkiHelper.init();
27  
28      Log.info("Waiting for databases");
29      migrationRunner.waitForConnection();
30  
31      Log.info("Run database migrations");
32      migrationRunner.apply();
33  
34      Log.info("Initialize databases");
35      neo4j.connect();
36      Log.info("Connection established to neo4j database.");
37    }
38  
39    @Override
40    @ActivateRequestContext
41    public int run(String... args) throws Exception {
42      Quarkus.waitForExit();
43      return 0;
44    }
45  
46    @Shutdown
47    void shutdown() {
48      neo4j.disconnect();
49    }
50  }