[REPO REFACTOR]: changed to a better git repository structure with branches
This commit is contained in:
75
bootstrap/src/main/java/net/miarma/api/AppInitializer.java
Normal file
75
bootstrap/src/main/java/net/miarma/api/AppInitializer.java
Normal file
@@ -0,0 +1,75 @@
|
||||
package net.miarma.api;
|
||||
|
||||
import net.miarma.api.backlib.ConfigManager;
|
||||
import net.miarma.api.backlib.Constants;
|
||||
import net.miarma.api.backlib.security.SecretManager;
|
||||
import net.miarma.api.backlib.vertx.VertxJacksonConfig;
|
||||
import net.miarma.api.backlib.util.MessageUtil;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.StandardCopyOption;
|
||||
|
||||
import io.vertx.core.Launcher;
|
||||
|
||||
/**
|
||||
* Punto de entrada para inicializar la aplicación.
|
||||
* Se encarga de:
|
||||
* - Crear directorios base si no existen
|
||||
* - Copiar el fichero default.properties
|
||||
* - Inicializar ConfigManager y secretos
|
||||
* - Configurar Jackson para Vert.x
|
||||
* - Desplegar el Verticle Master
|
||||
*/
|
||||
public class AppInitializer {
|
||||
|
||||
public static void main(String[] args) {
|
||||
AppInitializer initializer = new AppInitializer();
|
||||
initializer.init();
|
||||
initializer.deployMaster();
|
||||
Constants.LOGGER.info("✅ App initialized successfully!");
|
||||
}
|
||||
|
||||
private final ConfigManager configManager;
|
||||
|
||||
public AppInitializer() {
|
||||
this.configManager = ConfigManager.getInstance();
|
||||
}
|
||||
|
||||
public void init() {
|
||||
initializeDirectories();
|
||||
copyDefaultConfig();
|
||||
configManager.loadConfig();
|
||||
SecretManager.getOrCreateSecret();
|
||||
VertxJacksonConfig.configure();
|
||||
}
|
||||
|
||||
private void initializeDirectories() {
|
||||
File baseDir = new File(configManager.getBaseDir());
|
||||
if (!baseDir.exists() && baseDir.mkdirs()) {
|
||||
Constants.LOGGER.info("Created base directory: " + baseDir.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
|
||||
private void copyDefaultConfig() {
|
||||
File configFile = configManager.getConfigFile();
|
||||
if (!configFile.exists()) {
|
||||
try (InputStream in = getClass().getClassLoader().getResourceAsStream("default.properties")) {
|
||||
if (in != null) {
|
||||
Files.copy(in, configFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
|
||||
Constants.LOGGER.info("Copied default.properties to: " + configFile.getAbsolutePath());
|
||||
} else {
|
||||
Constants.LOGGER.error(MessageUtil.notFound("Default config", "resources"));
|
||||
}
|
||||
} catch (IOException e) {
|
||||
Constants.LOGGER.error(MessageUtil.failedTo("copy", "default config", e));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void deployMaster() {
|
||||
Launcher.executeCommand("run", MasterVerticle.class.getName());
|
||||
}
|
||||
}
|
||||
66
bootstrap/src/main/java/net/miarma/api/MasterVerticle.java
Normal file
66
bootstrap/src/main/java/net/miarma/api/MasterVerticle.java
Normal file
@@ -0,0 +1,66 @@
|
||||
package net.miarma.api;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import io.vertx.core.AbstractVerticle;
|
||||
import io.vertx.core.Future;
|
||||
import io.vertx.core.Promise;
|
||||
import net.miarma.api.backlib.Constants;
|
||||
import net.miarma.api.backlib.LogAccumulator;
|
||||
import net.miarma.api.backlib.util.DeploymentUtil;
|
||||
import net.miarma.api.microservices.core.verticles.CoreMainVerticle;
|
||||
import net.miarma.api.microservices.huertos.verticles.HuertosMainVerticle;
|
||||
import net.miarma.api.microservices.huertosdecine.verticles.CineMainVerticle;
|
||||
import net.miarma.api.microservices.miarmacraft.verticles.MMCMainVerticle;
|
||||
import net.miarma.api.microservices.mpaste.verticles.MPasteMainVerticle;
|
||||
|
||||
public class MasterVerticle extends AbstractVerticle {
|
||||
@Override
|
||||
public void start(Promise<Void> startPromise) {
|
||||
deploy()
|
||||
.onSuccess(v -> {
|
||||
vertx.setTimer(300, id -> {
|
||||
LogAccumulator.flushToLogger(Constants.LOGGER);
|
||||
startPromise.complete();
|
||||
});
|
||||
})
|
||||
.onFailure(startPromise::fail);
|
||||
}
|
||||
|
||||
private Future<Void> deploy() {
|
||||
Promise<Void> promise = Promise.promise();
|
||||
|
||||
Future<String> core = vertx.deployVerticle(new CoreMainVerticle())
|
||||
.onSuccess(id -> LogAccumulator.add(DeploymentUtil.successMessage(CoreMainVerticle.class)))
|
||||
.onFailure(err -> LogAccumulator.add(DeploymentUtil.failMessage(CoreMainVerticle.class, err)));
|
||||
|
||||
Future<String> huertos = vertx.deployVerticle(new HuertosMainVerticle())
|
||||
.onSuccess(id -> LogAccumulator.add(DeploymentUtil.successMessage(HuertosMainVerticle.class)))
|
||||
.onFailure(err -> LogAccumulator.add(DeploymentUtil.failMessage(HuertosMainVerticle.class, err)));
|
||||
|
||||
Future<String> mmc = vertx.deployVerticle(new MMCMainVerticle())
|
||||
.onSuccess(id -> LogAccumulator.add(DeploymentUtil.successMessage(MMCMainVerticle.class)))
|
||||
.onFailure(err -> LogAccumulator.add(DeploymentUtil.failMessage(MMCMainVerticle.class, err)));
|
||||
|
||||
Future<String> cine = vertx.deployVerticle(new CineMainVerticle())
|
||||
.onSuccess(id -> LogAccumulator.add(DeploymentUtil.successMessage(CineMainVerticle.class)))
|
||||
.onFailure(err -> LogAccumulator.add(DeploymentUtil.failMessage(CineMainVerticle.class, err)));
|
||||
|
||||
Future<String> mpaste = vertx.deployVerticle(new MPasteMainVerticle())
|
||||
.onSuccess(id -> LogAccumulator.add(DeploymentUtil.successMessage(MPasteMainVerticle.class)))
|
||||
.onFailure(err -> LogAccumulator.add(DeploymentUtil.failMessage(MPasteMainVerticle.class, err)));
|
||||
|
||||
Future.all(core, huertos, mmc, cine, mpaste)
|
||||
.onSuccess(_ -> promise.complete())
|
||||
.onFailure(promise::fail);
|
||||
|
||||
return promise.future();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void stop(Promise<Void> stopPromise) {
|
||||
vertx.deploymentIDs().forEach(id -> vertx.undeploy(id));
|
||||
stopPromise.complete();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user