diff --git a/src/plugin/intention/IntentionCodeBootstrapProvider.cpp b/src/plugin/intention/IntentionCodeBootstrapProvider.cpp index 7c4635462..a762c7137 100644 --- a/src/plugin/intention/IntentionCodeBootstrapProvider.cpp +++ b/src/plugin/intention/IntentionCodeBootstrapProvider.cpp @@ -1,4 +1,5 @@ #include "CachedAircraftFirExitGenerator.h" +#include "CachedAircraftIntentionCodeGenerator.h" #include "IntentionCodeBootstrapProvider.h" #include "IntentionCodeEventHandlerCollection.h" #include "IntentionCodeModuleFactory.h" @@ -6,6 +7,7 @@ #include "SendIntentionCodeUpdatedIntegrationMessage.h" #include "bootstrap/ModuleFactories.h" #include "bootstrap/PersistenceContainer.h" +#include "controller/ActiveCallsignCollection.h" #include "flightplan/FlightPlanEventHandlerCollection.h" #include "integration/IntegrationPersistenceContainer.h" #include "integration/OutboundIntegrationEventHandler.h" @@ -26,9 +28,13 @@ namespace UKControllerPlugin::IntentionCode { container.integrationModuleContainer->outboundMessageHandler)); // Register the tag item for intention codes + const auto intentionCodeGenerator = container.moduleFactories->IntentionCode().CachedIntentionCodeGenerator( + *container.dependencyLoader, container.activeCallsigns); container.tagHandler->RegisterTagItem( - intentionCodeTagItemId, - std::make_shared(container.moduleFactories->IntentionCode().IntentionCodeGenerator( - *container.dependencyLoader, container.activeCallsigns))); + intentionCodeTagItemId, std::make_shared(intentionCodeGenerator)); + + // Register the intention code generator for flightplan events and controller events + container.flightplanHandler->RegisterHandler(intentionCodeGenerator); + container.activeCallsigns->AddHandler(intentionCodeGenerator); } } // namespace UKControllerPlugin::IntentionCode diff --git a/test/plugin/intention/IntentionCodeBootstrapProviderTest.cpp b/test/plugin/intention/IntentionCodeBootstrapProviderTest.cpp index c6c9cd4fc..d83bbf03b 100644 --- a/test/plugin/intention/IntentionCodeBootstrapProviderTest.cpp +++ b/test/plugin/intention/IntentionCodeBootstrapProviderTest.cpp @@ -34,10 +34,16 @@ namespace UKControllerPluginTest::IntentionCode { IntentionCodeBootstrapProvider provider; }; - TEST_F(IntentionCodeModuleBootstrapProviderTest, TestItRegistersFirExitGeneratorForFlightplanEvents) + TEST_F(IntentionCodeModuleBootstrapProviderTest, TestItRegistersFirExitAndIntentionGeneratorsForFlightplanEvents) { this->RunBootstrapPlugin(provider); - EXPECT_EQ(1, container.flightplanHandler->CountHandlers()); + EXPECT_EQ(2, container.flightplanHandler->CountHandlers()); + } + + TEST_F(IntentionCodeModuleBootstrapProviderTest, TestItRegistersIntentionGeneratorForActiveCallsignEvents) + { + this->RunBootstrapPlugin(provider); + EXPECT_EQ(1, container.activeCallsigns->CountHandlers()); } TEST_F(IntentionCodeModuleBootstrapProviderTest, TestItRegistersIntegrationCodeUpdatedMessageForEvents)