/// <summary> /// Perform a deep validation,normal validation only ensures that the correct properties are set but doesn't load /// and objects that are loaded via relationships. This assumes that all the modules and their dependencies have been loaded. /// </summary> /// <param name="result"></param> public void DeepValidation(ValidationResult result) { // Make sure basic validation checksout. foreach (var moduleConfig in PipelineModules) { Validate(result); } if (!result.Successful) { return; } if (MessageDefinition.Value == null) { result.Errors.Add(Resources.DeploymentErrorCodes.RouteDestinationModuleNull.ToErrorMessage()); } foreach (var moduleConfig in PipelineModules) { if (moduleConfig.PrimaryOutput != null) { var destModuleConfig = PipelineModules.Where(mod => mod.Id == moduleConfig.PrimaryOutput.Id).FirstOrDefault(); if (destModuleConfig == null) { result.Errors.Add(Resources.DeploymentErrorCodes.RouteCouldNotFindLinkedModule.ToErrorMessage($"SourceModule={moduleConfig.Name}")); } else { if (moduleConfig.Module.Value == null) { result.Errors.Add(Resources.DeploymentErrorCodes.RouteSourceModuleNull.ToErrorMessage($"SourceModule={moduleConfig.Name}")); } else if (destModuleConfig.Module.Value == null) { result.Errors.Add(Resources.DeploymentErrorCodes.RouteDestinationModuleNull.ToErrorMessage($"SourceModule={moduleConfig.Name}")); } else { if (moduleConfig.ModuleType.Value == PipelineModuleType.InputTranslator && destModuleConfig.ModuleType.Value == PipelineModuleType.Workflow) { moduleConfig.InputTranslatorToWorkflowValidation(result, MessageDefinition.Value, destModuleConfig.Module.Value as DeviceWorkflow); } else if (moduleConfig.ModuleType.Value == PipelineModuleType.InputTranslator && destModuleConfig.ModuleType.Value == PipelineModuleType.Workflow) { moduleConfig.WorkflowToOutputTranslatorValidation(result, moduleConfig.Module.Value as DeviceWorkflow, destModuleConfig.Module.Value as OutputTranslatorConfiguration); } } } } } }
public void Validate(ValidationResult result) { if (EntityHeader.IsNullOrEmpty(MessageDefinition)) { result.Errors.Add(DeploymentErrorCodes.NoMessageOnRoute.ToErrorMessage()); } if (!PipelineModules.Any()) { result.Errors.Add(DeploymentErrorCodes.EmptyRoute.ToErrorMessage()); } foreach (var module in PipelineModules) { result.Concat(module.Validate()); } }