protected override void ParseInternal(AzureIntegrationServicesModel model, MigrationContext context) { // Null check _ = context ?? throw new ArgumentNullException(nameof(context)); var group = model.GetSourceModel <ParsedBizTalkApplicationGroup>(); if (group?.Applications == null) { _logger.LogDebug(TraceMessages.SkippingParserAsTheSourceModelIsMissing, nameof(BindingFileParser)); } else { _logger.LogDebug(TraceMessages.RunningParser, nameof(BindingFileParser)); foreach (var application in group.Applications) { try { // Defensive check if (application.Application.Bindings == null) { _logger.LogWarning(WarningMessages.BindingInfoNotFound, application.Application.Name); continue; } _logger.LogDebug(TraceMessages.ParsingBizTalkBindingFileFromResourceContainer, application.Application.Bindings.ResourceContainerKey); var bindingResourceDefinition = model.FindResourceDefinitionByKey(application.Application.Bindings.ResourceDefinitionKey, ModelConstants.ResourceDefinitionBindings); if (bindingResourceDefinition != null) { var bindingInfo = BindingInfo.FromXml((string)bindingResourceDefinition.ResourceContent); application.Application.Bindings.BindingInfo = bindingInfo; ParseServiceBindings(bindingInfo, bindingResourceDefinition); } else { var error = string.Format(CultureInfo.CurrentCulture, ErrorMessages.UnableToFindResourceDefinition, ModelConstants.ResourceDefinitionBindings, application.Application.Bindings.ResourceDefinitionKey); _logger.LogError(error); context.Errors.Add(new ErrorMessage(error)); } } catch (Exception ex) { var message = string.Format(CultureInfo.CurrentCulture, ErrorMessages.ErrorReadingBindingInfo, application.Application.Name, ex.Message); context.Errors.Add(new ErrorMessage(message)); _logger.LogError(message); } } _logger.LogDebug(TraceMessages.CompletedParser, nameof(BindingFileParser)); } }