applyChanges method

void applyChanges()

Implementation

void applyChanges() {
  var config = _hostApplicationBuilder.configuration;

  if (_configureHostConfigActions.isNotEmpty) {
    var previousApplicationName = config[host_defaults.applicationKey];
    var previousEnvironment = config[host_defaults.environmentKey];
    var previousContentRootConfig = config[host_defaults.contentRootKey];
    var previousContentRootPath = _hostApplicationBuilder
        ._hostBuilderContext.hostingEnvironment?.contentRootPath;

    for (var configureHostAction in _configureHostConfigActions) {
      configureHostAction(config);
    }

    if (previousApplicationName != config[host_defaults.applicationKey]) {
      throw Exception(
        'The application name changed from \'$previousApplicationName\''
        ' to \'$config[host_defaults.applicationKey]\'. Changing host'
        ' configuration is not supported.',
      );
    }
    if (previousEnvironment != config[host_defaults.environmentKey]) {
      throw Exception(
        'The environment name changed from \'$previousEnvironment\' to'
        ' \'$config[host_defaults.environmentKey]\'. Changing host'
        ' configuration is not supported.',
      );
    }
    var currentContentRootConfig = config[host_defaults.contentRootKey];
    if ((previousContentRootConfig != currentContentRootConfig) &&
        (previousContentRootPath !=
            resolveContentRootPath(currentContentRootConfig, p.current))) {
      throw Exception(
        'The content root changed from \'$previousContentRootConfig\' to'
        ' \'$currentContentRootConfig\'. Changing host configuration is'
        ' not supported.',
      );
    }
  }

  for (var configureAppAction in _configureAppConfigActions) {
    configureAppAction(_hostApplicationBuilder._hostBuilderContext, config);
  }
  for (var configureServicesAction in _configureServicesActions) {
    configureServicesAction(
      _hostApplicationBuilder._hostBuilderContext,
      _hostApplicationBuilder.services,
    );

    if (_configureContainerActions.isNotEmpty) {
      var previousConfigureContainer =
          _hostApplicationBuilder._configureContainer;

      _hostApplicationBuilder._configureContainer = (containerBuilder) {
        previousConfigureContainer(containerBuilder);

        for (var containerAction in _configureContainerActions) {
          containerAction.configureContainer(
            _hostApplicationBuilder._hostBuilderContext,
            containerBuilder,
          );
        }
      };
    }

    if (_serviceProviderFactory != null) {
      _hostApplicationBuilder._createServiceProvider = () {
        var containerBuilder = _serviceProviderFactory!
            .createBuilder(_hostApplicationBuilder.services);
        _hostApplicationBuilder._configureContainer(containerBuilder);
        return _serviceProviderFactory!
            .createServiceProvider(containerBuilder);
      };
    }
  }
}