Example #1
0
 /**
  * @return StartableEndpoint
  */
 public function prepare()
 {
     $this->persistenceDefinitionApplier->apply($this->settings);
     $featureActivator = new FeatureActivator($this->settings);
     foreach ($this->settings->get(KnownSettingsEnum::FEATURE_FQCN_LIST) as $featureFqcn) {
         /** @var Feature $feature */
         $feature = new $featureFqcn();
         $feature->describe();
         $featureActivator->addFeature($feature);
     }
     $featureInstaller = new FeatureInstaller($featureActivator->getFeatures());
     $featureStarter = new FeatureStarter($featureActivator->getFeatures());
     /** @var TransportDefinition $transportDefinition */
     $transportDefinition = $this->settings->get(TransportDefinition::class);
     $this->settings->set(TransportInfrastructure::class, $transportDefinition->formalize($this->settings, $transportDefinition->createConnectionFactory($this->settings)));
     $featureActivator->activateFeatures($this->builder, $this->pipelineModifications);
     $featureInstaller->installFeatures($this->builder, $this->settings);
     $this->pipelineModifications->registerStepsInBuilder($this->builder);
     $featureStarter->startFeatures($this->builder, $this->busContext);
     $this->isPrepared = true;
     return $this;
 }