예제 #1
0
        public void QueueValidatorForExecution(ValidatorInstanceInfo info)
        {
            _validatorsToRun.Add(info);
#if DEBUG
            JobsQueued++;
#endif
        }
예제 #2
0
        public void TestQueueValidatorRunsCorrectly(ValidatorInstanceInfo info, IValidatorRunner validatorRunner, IScheduleCallback scheduleCallbacker, IValidationScheduler validatorScheduler, IValidatorProvider validatorProvider, IList <IValidatorInstance> validatorInstancesToReturn,
                                                    IValidationResultHandler[] notificationHandler, IPublishEndpoint publishEndpoint)
        {
            var vs = new ValidationServer(validatorProvider, validatorRunner, validatorScheduler, scheduleCallbacker, publishEndpoint, notificationHandler);

            vs.QueueValidatorForExecution(info);
        }
        public void ScheduleCallBack(string jobId)
        {
            Guard.NotNull(jobId, "jobId", log);

            ValidatorInstanceInfo validatorInfo = JobIdUtils.GetInstanceInfo(jobId);
            var validatorInfoArgs = new ValidatorInfoArgs(validatorInfo);

            if (RunValidatorEvent != null)
            {
                log.Debug("HangFireScheduleCallback ScheduleCallBack: schedule call back for job id {JobId}", jobId);
                RunValidatorEvent(this, validatorInfoArgs);
            }

#if DEBUG
            HangFireScheduler.JobsScheduledCalledBack++;
#endif
        }
예제 #4
0
        private List <IValidatorRunEntry> RunValidatorInstance(ValidatorInstanceInfo info)
        {
            var             startTime      = DateTime.Now;
            IValidatorProxy validatorProxy = null;

            try
            {
                validatorProxy = _validatorProvider.GetValidatorProxy(info.ValidatorId);
                IValidatorInstance validatorInstance = _validatorProvider.GetValidatorInstance(info.ValidatorId, info.ValidatorInstanceId);

                log.Debug("Validator: {ValidatorId}  Version:  {ValidatorVersion}{NewLine}   Description:  {Description}", validatorProxy.ValidatorId, validatorProxy.Version.ToString(), Environment.NewLine, validatorProxy.Description);
                log.Debug("ValidatorInstance: {Name}  Description: {Description} beginning to validate.", validatorInstance.Name, validatorInstance.Description);

                IValidator               validator = validatorProxy.Create(validatorInstance);
                IValidatorContext        vc        = new ValidatorContext();
                IList <IValidatorResult> results   = validator.Execute(vc);

                var endTime = DateTime.Now;

                log.Debug("ValidatorInstance: {Name} finished validating. Start: {start}  End: {end}", validatorInstance.Name, startTime.ToString(), endTime.ToString());
                log.Debug("ValidatorInstance: {Name} returned {resultCount} results.", validatorInstance.Name, results.Count);

                List <IValidatorRunEntry> runEntries = results.Select(x =>
                                                                      new ValidatorRunEntry(startTime, endTime, x, validator.FilterSequence)
                {
                } as IValidatorRunEntry).ToList();

                return(runEntries);
            }
            catch (Exception ex)
            {
                log.Error(ex, "{ValidatorProxy} execution caused Error: {Message}", validatorProxy.ValidatorId, ex.Message);

                var vr = new ValidatorResult(validatorProxy.ValidatorId, ex.Message, ValidatorResultCode.Error, UnhandledExceptionResultCode);

                var vre = new ValidatorRunEntry(startTime, DateTime.Now, vr);

                return(new List <IValidatorRunEntry>()
                {
                    vre
                });
            }
        }
예제 #5
0
 public void QueueValidatorForExecution(ValidatorInstanceInfo info)
 {
 }
 public ValidatorInfoArgs(ValidatorInstanceInfo info)
 {
     Guard.NotNull(info, "info", log);
     this.ValidatorInfo = info;
 }
예제 #7
0
        private List <IValidatorRunEntry> RunValidator(ValidatorInstanceInfo info)
        {
            List <IValidatorRunEntry> runEntry = this.RunValidatorInstance(info);

            return(runEntry);
        }
예제 #8
0
        public void QueueValidatorForExecution(ValidatorInstanceInfo info)
        {
            Guard.NotNull(info, "info", log);

            _validatorRunner.QueueValidatorForExecution(info);
        }