Example #1
0
        /// <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);
                            }
                        }
                    }
                }
            }
        }
Example #2
0
        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());
            }
        }