private IEnumerable <KeyValuePair <string, RuleComplexityData> > GetRulePackComplexityData(XDocument rulePackXDocument) { ExAssert.RetailAssert(rulePackXDocument != null, "The rule pack document instance passed to GetRulePackComplexityData cannot be null!"); Dictionary <TextProcessorType, TextProcessorGrouping> customTextProcessorGroups = TextProcessorUtils.GetRulePackScopedTextProcessorsGroupedByType(rulePackXDocument).ToDictionary((TextProcessorGrouping textProcessorGroup) => textProcessorGroup.Key); Dictionary <string, int> customKeywordProcessorsTermsCount = ComplexityValidator.GetKeywordProcessorTermsCount(rulePackXDocument); IEnumerable <XElement> source = from rulePackElement in rulePackXDocument.Descendants() where ClassificationDefinitionConstants.MceRuleElementNames.Contains(rulePackElement.Name.LocalName) select rulePackElement; return(from ruleElement in source.AsParallel <XElement>().AsOrdered <XElement>() select new KeyValuePair <string, RuleComplexityData>(ruleElement.Attribute("id").Value, RuleComplexityData.Create(ruleElement, customTextProcessorGroups, customKeywordProcessorsTermsCount, this.cannedOobTextProcessorIdsGroupedByType))); }
public void Validate(ValidationContext context, XDocument rulePackXDocument) { if (context.DcValidationConfig == null || context.IsPayloadOobRuleCollection) { return; } DataClassificationConfig dcValidationConfig = context.DcValidationConfig; List <KeyValuePair <string, RuleComplexityData> > rulePackComplexityData = this.GetRulePackComplexityData(rulePackXDocument).ToList <KeyValuePair <string, RuleComplexityData> >(); foreach (IDataClassificationComplexityValidator dataClassificationComplexityValidator in this.dataClassificationComplexityValidators) { dataClassificationComplexityValidator.Initialize(dcValidationConfig); ComplexityValidator.ValidateRuleComplexity(rulePackComplexityData, dataClassificationComplexityValidator); } }