X: NFC - Refactoring and additional logging

This commit is contained in:
2026-09-04 09:14:01 +02:00
parent ddbf6f047d
commit d3315900b9
@@ -76,43 +76,37 @@ public final class NenjimHubImpl implements NenjimHub {
"NenjimHub start has already been attempted"); "NenjimHub start has already been attempted");
} }
Map<NenjimComponentId, ProcessConstructor> processConstructors = Map<NenjimComponentId, ProcessConstructor> processConstructors = createProcessConstructorCatalogue();
createProcessConstructorCatalogue(); Set<NenjimComponentId> knownProcessIds = selectableProcessIds(processConstructors);
NenjimHubConfiguration configuration =
NenjimHubConfigurationParser.parse(
HUB_CONFIGURATION_PATH,
selectableProcessIds(processConstructors),
REGISTRY_SERVICE_ID,
JOURNAL_SERVICE_ID);
log.info("Initializing Nenjim Registry..."); log.debug("Parsing Nenjim configuration...");
NenjimRegistryAssembly registryAssembly = configuration = NenjimHubConfigurationParser.parse(
NenjimRegistryAssembly.create(); HUB_CONFIGURATION_PATH,
registryService = knownProcessIds,
registryAssembly.registryService(); REGISTRY_SERVICE_ID,
JOURNAL_SERVICE_ID
);
log.debug("Initializing Nenjim Registry...");
NenjimRegistryAssembly registryAssembly = NenjimRegistryAssembly.create();
registryService = registryAssembly.registryService();
NenjimProcess registryProcess = registryAssembly.registryProcess(); NenjimProcess registryProcess = registryAssembly.registryProcess();
registryServiceManager = registryAssembly.registryServiceManager(); registryServiceManager = registryAssembly.registryServiceManager();
registryProcess.start(); registryProcess.start();
registryServiceManager.registerComponent( registryServiceManager.registerComponent(
REGISTRY_SERVICE_ID, REGISTRY_SERVICE_ID,
registryService); registryService
);
recordStartedProcess(REGISTRY_SERVICE_ID); recordStartedProcess(REGISTRY_SERVICE_ID);
log.info("Initializing passive Nenjim components..."); log.debug("Initializing passive Nenjim components...");
initializeAndRegisterPassiveComponents(registryServiceManager); initializeAndRegisterPassiveComponents(registryServiceManager);
log.info("Constructing and starting configured Nenjim processes..."); log.info("Auto-starting configured Nenjim processes...");
for (NenjimComponentId componentId autoStartProcesses(processConstructors);
: configuration.autoStartProcessIds().subList(
1,
configuration.autoStartProcessIds().size())) {
constructRegisterAndStartProcess(
componentId,
processConstructors);
}
System.out.println("Done - Now online!"); log.info("Done - Now online!");
waitForAndShutdown(); waitForAndShutdown();
} }
@@ -123,6 +117,20 @@ public final class NenjimHubImpl implements NenjimHub {
return List.copyOf(startedProcessIds); return List.copyOf(startedProcessIds);
} }
private void autoStartProcesses(Map<NenjimComponentId, ProcessConstructor> processConstructors)
throws Exception {
List<NenjimComponentId> autoStartProcessIds = configuration
.autoStartProcessIds()
.subList(1, configuration.autoStartProcessIds().size());
for (NenjimComponentId componentId : autoStartProcessIds) {
constructRegisterAndStartProcess(
componentId,
processConstructors
);
}
}
private NenjimProcess constructJournalProcess() { private NenjimProcess constructJournalProcess() {
JournalServiceAssembly journalAssembly = JournalServiceAssembly journalAssembly =
JournalServiceAssembly.create(JOURNAL_ROOT); JournalServiceAssembly.create(JOURNAL_ROOT);
@@ -132,12 +140,17 @@ public final class NenjimHubImpl implements NenjimHub {
private void initializeAndRegisterPassiveComponents( private void initializeAndRegisterPassiveComponents(
NenjimRegistryServiceManager registryServiceManager) { NenjimRegistryServiceManager registryServiceManager) {
initializeBuildingBlocks(registryServiceManager); log.debug("Initializing components...");
initializeComponents(registryServiceManager);
log.debug("Initializing price sources...");
initializePriceSources(registryServiceManager); initializePriceSources(registryServiceManager);
log.debug("Initializing passive services...");
initializePassiveServices(registryServiceManager); initializePassiveServices(registryServiceManager);
} }
private void initializeBuildingBlocks( private void initializeComponents(
NenjimRegistryServiceManager registryServiceManager) { NenjimRegistryServiceManager registryServiceManager) {
objectCache = new ObjectCacheImpl(); objectCache = new ObjectCacheImpl();
registryServiceManager.registerComponent(OBJECT_CACHE_ID, objectCache); registryServiceManager.registerComponent(OBJECT_CACHE_ID, objectCache);
@@ -359,33 +372,20 @@ public final class NenjimHubImpl implements NenjimHub {
return Map.ofEntries( return Map.ofEntries(
Map.entry(JOURNAL_SERVICE_ID, this::constructJournalProcess), Map.entry(JOURNAL_SERVICE_ID, this::constructJournalProcess),
Map.entry(TICKER_SERVICE_ID, this::constructTickerProcess), Map.entry(TICKER_SERVICE_ID, this::constructTickerProcess),
Map.entry( Map.entry(JUPITER_PERPS_ALARM_ID, this::constructJupiterPerpsAlarmProcess),
JUPITER_PERPS_ALARM_ID, Map.entry(EVELYN_SERVICE_PROD_ID, this::constructEvelynProdProcess),
this::constructJupiterPerpsAlarmProcess), Map.entry(EVELYN_SERVICE_TEST_ID, this::constructEvelynTestProcess),
Map.entry( Map.entry(EVELYN_IOU_BURNER_PROD_ID, this::constructEvelynIOUBurnerProdProcess),
EVELYN_SERVICE_PROD_ID, Map.entry(JAVAFX_RUNTIME_SERVICE_ID, this::constructJavaFxRuntimeProcess),
this::constructEvelynProdProcess), Map.entry(EVELYN_MISSION_CONTROL_ID, this::constructMissionControlProcess),
Map.entry( Map.entry(PROCESS_MANAGER_ID, this::constructProcessManagerProcess)
EVELYN_SERVICE_TEST_ID, );
this::constructEvelynTestProcess),
Map.entry(
EVELYN_IOU_BURNER_PROD_ID,
this::constructEvelynIOUBurnerProdProcess),
Map.entry(
JAVAFX_RUNTIME_SERVICE_ID,
this::constructJavaFxRuntimeProcess),
Map.entry(
EVELYN_MISSION_CONTROL_ID,
this::constructMissionControlProcess),
Map.entry(
PROCESS_MANAGER_ID,
this::constructProcessManagerProcess));
} }
private static Set<NenjimComponentId> selectableProcessIds( private static Set<NenjimComponentId> selectableProcessIds(
Map<NenjimComponentId, ProcessConstructor> processConstructors) { Map<NenjimComponentId, ProcessConstructor> processConstructors
Set<NenjimComponentId> processIds = ) {
new HashSet<>(processConstructors.keySet()); Set<NenjimComponentId> processIds = new HashSet<>(processConstructors.keySet());
processIds.add(REGISTRY_SERVICE_ID); processIds.add(REGISTRY_SERVICE_ID);
return Set.copyOf(processIds); return Set.copyOf(processIds);
} }
@@ -416,6 +416,8 @@ public final class NenjimHubImpl implements NenjimHub {
+ "' is not registered as " + "' is not registered as "
+ NenjimProcess.class.getName()); + NenjimProcess.class.getName());
} }
log.info("Starting process '" + componentId.value() + "'...");
process.start(); process.start();
recordStartedProcess(componentId); recordStartedProcess(componentId);
} }
@@ -533,4 +535,7 @@ public final class NenjimHubImpl implements NenjimHub {
private JavaFxRuntimeService javaFxRuntimeService; private JavaFxRuntimeService javaFxRuntimeService;
private EvelynMissionControl missionControl; private EvelynMissionControl missionControl;
private NenjimProcessManager processManager; private NenjimProcessManager processManager;
// Internal state
private NenjimHubConfiguration configuration;
} }