Esempio n. 1
0
        public override BrokenRules Validate <T>(T target, ValidationCallContext callContext)
        {
            callContext = callContext ?? ValidationCallContext.AllRules;

            LogValidationRequested(target, callContext);
            ICollection <IValidationProvider <T> > providers = GetValidationProviders <T>();

            LogValidatorsAboutToBeApplied(providers, target);

            var    results       = new List <BrokenRules>();
            double totalDuration = 0d;

            foreach (IValidationProvider <T> provider in providers)
            {
                double duration;
                ValidationProviderResult result = ExecuteValidation(target, callContext, provider, out duration);
                totalDuration += duration;
                LogBrokenRules(result, provider);
                results.Add(result.BrokenRules);
                if (!result.BrokenRules.IsValid && StopOnFirstBrokenRules)
                {
                    break;
                }
            }

            LogValidationFinished(totalDuration);
            return(BrokenRules.Merge(results));
        }
Esempio n. 2
0
 protected void LogBrokenRules <T>(ValidationProviderResult result, IValidationProvider <T> provider)
 {
     if (!result.ObjectWasValidated)
     {
         Logger.InfoFormat("Validator '{0}' choose not to accept target", provider);
         return;
     }
     LogBrokenRules(provider, result.BrokenRules);
 }
Esempio n. 3
0
        private ValidationProviderResult ExecuteValidation <T>(T target,
                                                               ValidationCallContext callContext,
                                                               IValidationProvider <T> validator,
                                                               out double duration)
        {
            ValidationProviderResult result = null;

            duration = With.PerformanceCounter(() => {
                result = validator.Validate(target, callContext);
            }) * 1000;
            Logger.DebugFormat("Validator '{0}' executed in '{1}ms'", validator, duration);
            if (PerformanceThresholds.IndividualValidatorInMilliseconds > 0 &&
                PerformanceThresholds.IndividualValidatorInMilliseconds < duration)
            {
                Logger.WarnFormat(
                    "Performance of validator '{0}' exceeds threshold; threshold: '{1}ms', actual: '{2}ms'",
                    validator,
                    PerformanceThresholds.IndividualValidatorInMilliseconds,
                    duration);
            }
            return(result);
        }