public void Validate(ValidationContext context, XDocument rulePackXDocument) { if (context.DcValidationConfig == null || context.IsPayloadOobRuleCollection) { return; } KeywordProcessorsValidator.ValidateKeywordProcessorsPerformance(rulePackXDocument, context.DcValidationConfig.KeywordLength); }
private static void ValidateKeywordProcessorsPerformance(XDocument rulePackXDocument, int keywordLengthLimit) { List <string> list = (from keywordProcessorDefinition in KeywordProcessorsValidator.GetKeywordProcessorsTerms(rulePackXDocument).AsParallel <KeyValuePair <string, List <string> > >() where keywordProcessorDefinition.Value.Any((string term) => term.Length > keywordLengthLimit) select keywordProcessorDefinition.Key).ToList <string>(); if (list.Count > 0) { LocalizedString message = Strings.ClassificationRuleCollectionKeywordTooLong(keywordLengthLimit, string.Join(Strings.ClassificationRuleCollectionOffendingListSeparator, list)); throw ClassificationDefinitionUtils.PopulateExceptionSource <ClassificationRuleCollectionKeywordValidationException, List <string> >(new ClassificationRuleCollectionKeywordValidationException(message), list); } }