/// <summary> /// Validate the internal consistency of the configuration. /// </summary> /// <param name="value">The configuration to check.</param> /// <param name="errorProcesser">The error processer to use.</param> /// <remarks> /// <para> /// This will add the following internal consistency checks: /// </para> /// <list type="bullet"> /// <item> /// <description>Each queue definitition is used by at least one project.</description> /// </item> /// </list> /// </remarks> private void ValidateConfiguration(Configuration value, IConfigurationErrorProcesser errorProcesser) { var rootTrace = ConfigurationTrace.Start(value); // Validate the security manager - need to do this first if (value.SecurityManager is IConfigurationValidation) { (value.SecurityManager as IConfigurationValidation).Validate(value, rootTrace, errorProcesser); } // Validate all the projects foreach (IProject project in value.Projects) { var dummy = project as IConfigurationValidation; if (dummy != null) { dummy.Validate(value, rootTrace, errorProcesser); } } // Validate all the queues foreach (IQueueConfiguration queue in value.QueueConfigurations) { var dummy = queue as IConfigurationValidation; if (dummy != null) { dummy.Validate(value, rootTrace, errorProcesser); } } }
/// <summary> /// Checks the internal validation of the item. /// </summary> /// <param name="configuration">The entire configuration.</param> /// <param name="parent">The parent item for the item being validated.</param> /// <param name="errorProcesser"></param> public virtual void Validate(IConfiguration configuration, ConfigurationTrace parent, IConfigurationErrorProcesser errorProcesser) { // Ensure that the queue has at least one project in it var queueFound = false; foreach (IProject projectDef in configuration.Projects) { if (string.Equals(this.Name, projectDef.QueueName, StringComparison.InvariantCulture)) { queueFound = true; break; } } if (!queueFound) { errorProcesser.ProcessError(new ConfigurationException( string.Format(System.Globalization.CultureInfo.CurrentCulture, "An unused queue definition has been found: name '{0}'", this.Name))); } }