Ejemplo n.º 1
0
        /// <summary>
        /// Implementors should perform any initialization logic
        /// </summary>
        /// <param name="validationRegistry"></param>
        /// <param name="property">The target property</param>
        public virtual void Initialize(IValidatorRegistry validationRegistry, PropertyInfo property)
        {
            this.property           = property;
            this.validationRegistry = validationRegistry;

            errorMessage = BuildErrorMessage();
        }
		/// <summary>
		/// Implementors should perform any initialization logic
		/// </summary>
		/// <param name="validationRegistry"></param>
		/// <param name="property">The target property</param>
		public virtual void Initialize(IValidatorRegistry validationRegistry, PropertyInfo property)
		{
			this.property = property;
			this.validationRegistry = validationRegistry;
			
			errorMessage = BuildErrorMessage();
		}
 public CastleValidatorRulesProvider()
 {
     registry = new CachedValidationRegistry();
     runner = new ValidatorRunner(registry);
     ruleEmitters.AddSingle<NonEmptyValidator>(x => new RequiredRule());
     ruleEmitters.AddSingle<CreditCardValidator>(x => new DataTypeRule(DataTypeRule.DataType.CreditCardLuhn));
     ruleEmitters.AddMultiple<DateTimeValidator>(x => new Rule[] {
         new RequiredRule(),
         new DataTypeRule(DataTypeRule.DataType.DateTime)
     });
     ruleEmitters.AddMultiple<DateValidator>(x => new Rule[] {
         new RequiredRule(),
         new DataTypeRule(DataTypeRule.DataType.Date)
     });
     ruleEmitters.AddMultiple<IntegerValidator>(x => new Rule[] {
         new RequiredRule(),
         new DataTypeRule(DataTypeRule.DataType.Integer)
     });
     ruleEmitters.AddMultiple<IValidator>(x => {
         if ((x is DecimalValidator) || (x is DoubleValidator) || (x is SingleValidator)) {
             return new Rule[] {
                 new RequiredRule(),
                 new DataTypeRule(DataTypeRule.DataType.Decimal)
             };
         } else
             return null;
     });
     ruleEmitters.AddSingle<LengthValidator>(ConstructStringLengthRule);
     ruleEmitters.AddSingle<RangeValidator>(ConstructRangeRule);
     ruleEmitters.AddSingle<EmailValidator>(x => new DataTypeRule(DataTypeRule.DataType.EmailAddress));
     ruleEmitters.AddSingle<RegularExpressionValidator>(x => new RegularExpressionRule(x.Expression, x.RegexRule.Options));
     ruleEmitters.AddSingle<SameAsValidator>(x => new ComparisonRule(x.PropertyToCompare, ComparisonRule.Operator.Equals));
     ruleEmitters.AddSingle<NotSameAsValidator>(x => new ComparisonRule(x.PropertyToCompare, ComparisonRule.Operator.DoesNotEqual));
 }
 public ScopeMockingValidatorProvider(
     IValidatorRegistry validatorRegistry,
     IServiceScope mockScope)
     : base(validatorRegistry)
 {
     _mockScope = mockScope;
 }
Ejemplo n.º 5
0
		/// <errorSummary>
		/// Initializes the specified validation registry.
		/// </errorSummary>
		/// <param name="registry">The validation registry.</param>
		/// <param name="property">The property.</param>
		public override void Initialize(IValidatorRegistry registry, PropertyInfo property)
		{
			ParameterValidatorRegistryAdapter adapter = registry as ParameterValidatorRegistryAdapter;
			if (adapter == null)
				throw new ValidationInternalError("Expected IValidationRegistry of type ParameterValidatorRegistryAdapter.");

			validationRegistry = adapter;
		}
Ejemplo n.º 6
0
        /// <errorSummary>
        /// Initializes the specified validation registry.
        /// </errorSummary>
        /// <param name="registry">The validation registry.</param>
        /// <param name="property">The property.</param>
        public override void Initialize(IValidatorRegistry registry, PropertyInfo property)
        {
            ParameterValidatorRegistryAdapter adapter = registry as ParameterValidatorRegistryAdapter;

            if (adapter == null)
            {
                throw new ValidationInternalError("Expected IValidationRegistry of type ParameterValidatorRegistryAdapter.");
            }

            validationRegistry = adapter;
        }
        private static List <ValidatorDescriptor> DetermineValidatorsForArg(
            IValidatorRegistry validatorRegistry,
            ArgumentDefinition argDef)
        {
            // If validation is explicitly disabled, return none so validation middleware won't be added
            if (argDef.ContextData.ContainsKey(WellKnownContextData.DontValidate))
            {
                return(new List <ValidatorDescriptor>(0));
            }

            var validators = new List <ValidatorDescriptor>();

            // Include implicit validator/s first (if allowed)
            if (!argDef.ContextData.ContainsKey(WellKnownContextData.DontValidateImplicitly))
            {
                // And if we can figure out the arg's runtime type
                var argRuntimeType = TryGetArgRuntimeType(argDef);
                if (argRuntimeType is not null)
                {
                    if (validatorRegistry.Cache.TryGetValue(argRuntimeType, out var implicitValidators) &&
                        implicitValidators is not null)
                    {
                        validators.AddRange(implicitValidators);
                    }
                }
            }

            // Include explicit validator/s (that aren't already added implicitly)
            if (argDef.ContextData.TryGetValue(WellKnownContextData.ExplicitValidatorTypes, out var explicitValidatorTypesRaw) &&
                explicitValidatorTypesRaw is IEnumerable <Type> explicitValidatorTypes)
            {
                // TODO: Potentially check and throw if there's a validator being explicitly applied for the wrong runtime type

                foreach (var validatorType in explicitValidatorTypes)
                {
                    if (validators.Any(v => v.ValidatorType == validatorType))
                    {
                        continue;
                    }

                    validators.Add(new ValidatorDescriptor(validatorType));
                }
            }

            return(validators);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ValidatorRunner"/> class.
        /// </summary>
        /// <param name="inferValidators">If true, the runner will try to infer the validators based on data types</param>
        /// <param name="registry">The registry.</param>
        /// <param name="contributors">The contributors.</param>
        public ValidatorRunner(bool inferValidators, IValidatorRegistry registry, IValidationContributor[] contributors)
        {
            if (registry == null)
            {
                throw new ArgumentNullException("registry");
            }

            this.inferValidators = inferValidators;

            validationPerformer = DefaultSettings.DefaultValidationPerformer;

            errorPerInstance = new Dictionary <object, ErrorSummary>();

            this.registry = registry;
            this.contributors.AddRange(contributors);

            // resolve contributor dependencies if needed
            foreach (IValidationContributor contributor in this.contributors)
            {
                IHasValidationPerformerDependency hasPerformerDependency = (contributor as IHasValidationPerformerDependency);
                if (hasPerformerDependency != null)
                {
                    hasPerformerDependency.ValidationPerformer = this.validationPerformer;
                }

                IHasValidatorRunnerDependency hasValidatorRunnerDependency = contributor as IHasValidatorRunnerDependency;
                if (hasValidatorRunnerDependency != null)
                {
                    hasValidatorRunnerDependency.ValidatorRunner = this;
                }

                IHasValidatorRegistryDependency hasValidatorRegistryDependency = (contributor as IHasValidatorRegistryDependency);
                if (hasValidatorRegistryDependency != null)
                {
                    hasValidatorRegistryDependency.ValidatorRegistry = registry;
                }
            }
        }
		/// <summary>
		/// Initializes a new instance of the <see cref="MethodValidatorMetaStore"/> class.
		/// </summary>
		/// <param name="registry">The registry.</param>
		public MethodValidatorMetaStore(IValidatorRegistry registry)
		{
			this.registry = registry;
		}
Ejemplo n.º 10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ValidatorRunner"/> class.
 /// </summary>
 /// <param name="registry">The registry.</param>
 public ValidatorRunner(IValidatorRegistry registry)
     : this(DefaultSettings.InferValidators, registry)
 {
 }
Ejemplo n.º 11
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ValidatorRunner"/> class.
 /// </summary>
 /// <param name="inferValidators">If true, the runner will try to infer the validators based on data types</param>
 /// <param name="registry">The registry.</param>
 public ValidatorRunner(bool inferValidators, IValidatorRegistry registry)
     : this(inferValidators, registry, DefaultSettings.DefaultContributors)
 {
 }
Ejemplo n.º 12
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ValidatorRunner"/> class.
 /// </summary>
 /// <param name="contributors">The contributors.</param>
 /// <param name="registry">The registry.</param>
 public ValidatorRunner(IValidationContributor[] contributors, IValidatorRegistry registry)
     : this(DefaultSettings.InferValidators, registry, contributors)
 {
 }
Ejemplo n.º 13
0
 /// <summary>
 /// Implementors should perform any initialization logic
 /// </summary>
 /// <param name="validationRegistry">The validation registry.</param>
 /// <param name="property">The target property</param>
 public virtual void Initialize(IValidatorRegistry validationRegistry, PropertyInfo property)
 {
     propertyAccessor = validationRegistry.GetPropertyAccessor(property);
 }
Ejemplo n.º 14
0
		/// <summary>
		/// Initializes a new instance of the <see cref="ValidatorRunner"/> class.
		/// </summary>
		/// <param name="inferValidators">If true, the runner will try to infer the validators based on data types</param>
		/// <param name="registry">The registry.</param>
		public ValidatorRunner(bool inferValidators, IValidatorRegistry registry)
		{
			if (registry == null) throw new ArgumentNullException("registry");

			this.inferValidators = inferValidators;

			errorPerInstance = new Dictionary<object, ErrorSummary>();

			this.registry = registry;
		}
Ejemplo n.º 15
0
 /// <summary>
 /// Implementors should perform any initialization logic
 /// </summary>
 /// <param name="validationRegistry">The validation registry.</param>
 /// <param name="property">The target property</param>
 public void Initialize(IValidatorRegistry validationRegistry, PropertyInfo property)
 {
     this.validationRegistry = validationRegistry;
     properties[property]    = FriendlyName ?? property.Name;
 }
		/// <summary>
		/// Initializes a new instance of the <see cref="ParameterValidatorRegistryAdapter"/> class.
		/// </summary>
		/// <param name="validatorRegistry">The validator registry.</param>
		public ParameterValidatorRegistryAdapter(IValidatorRegistry validatorRegistry)
		{
			this.baseRegistry = validatorRegistry;
		}
		/// <summary>
		/// Initializes a new instance of the <see cref="ValidatorRunner"/> class.
		/// </summary>
		/// <param name="registry">The registry.</param>
		public ValidatorRunner(IValidatorRegistry registry) 
			: this(DefaultSettings.InferValidators, registry)
		{}
 public AssertingScopageValidatorProvider(IValidatorRegistry validatorRegistry)
     : base(validatorRegistry)
 {
 }
		/// <summary>
		/// Initializes a new instance of the <see cref="ValidatorRunner"/> class.
		/// </summary>
		/// <param name="inferValidators">If true, the runner will try to infer the validators based on data types</param>
		/// <param name="registry">The registry.</param>
		/// <param name="contributors">The contributors.</param>
		public ValidatorRunner(bool inferValidators, IValidatorRegistry registry, IValidationContributor[] contributors) {
			if (registry == null) throw new ArgumentNullException("registry");

			this.inferValidators = inferValidators;

			validationPerformer = DefaultSettings.DefaultValidationPerformer;

			errorPerInstance = new Dictionary<object, ErrorSummary>();

			this.registry = registry;
			this.contributors.AddRange(contributors);

			// resolve contributor dependencies if needed
			foreach(IValidationContributor contributor in this.contributors)
			{
				IHasValidationPerformerDependency hasPerformerDependency = (contributor as IHasValidationPerformerDependency);
				if (hasPerformerDependency != null)
					hasPerformerDependency.ValidationPerformer = this.validationPerformer;
				
				IHasValidatorRunnerDependency hasValidatorRunnerDependency = contributor as IHasValidatorRunnerDependency;
				if (hasValidatorRunnerDependency != null)
					hasValidatorRunnerDependency.ValidatorRunner = this;
				
				IHasValidatorRegistryDependency hasValidatorRegistryDependency = (contributor as IHasValidatorRegistryDependency);
				if (hasValidatorRegistryDependency != null) 
					hasValidatorRegistryDependency.ValidatorRegistry = registry;
			}

		}
		/// <summary>
		/// Initializes a new instance of the <see cref="ValidatorRunner"/> class.
		/// </summary>
		/// <param name="contributors">The contributors.</param>
		/// <param name="registry">The registry.</param>
		public ValidatorRunner(IValidationContributor[] contributors, IValidatorRegistry registry)
			: this(DefaultSettings.InferValidators, registry, contributors)
		{}
		/// <summary>
		/// Initializes a new instance of the <see cref="ValidatorRunner"/> class.
		/// </summary>
		/// <param name="inferValidators">If true, the runner will try to infer the validators based on data types</param>
		/// <param name="registry">The registry.</param>
		public ValidatorRunner(bool inferValidators, IValidatorRegistry registry)
			: this(inferValidators, registry, DefaultSettings.DefaultContributors)
		{}
Ejemplo n.º 22
0
 public CastleModelValidator(ModelMetadata metadata, ControllerContext controllerContext, IValidatorRegistry validatorRegistry, IValidator validator)
     : base(metadata, controllerContext)
 {
     Validator = validator;
     this.validatorRegistry = validatorRegistry;
 }
		/// <summary>
		/// Implementors should perform any initialization logic
		/// </summary>
		/// <param name="validationRegistry">The validation registry.</param>
		/// <param name="property">The target property</param>
		public virtual void Initialize(IValidatorRegistry validationRegistry, PropertyInfo property)
		{
			propertyAccessor = validationRegistry.GetPropertyAccessor(property);
		}
Ejemplo n.º 24
0
 /// <summary>
 /// Initializes a new instance of the <see cref="MethodValidatorMetaStore"/> class.
 /// </summary>
 /// <param name="registry">The registry.</param>
 public MethodValidatorMetaStore(IValidatorRegistry registry)
 {
     this.registry = registry;
 }
Ejemplo n.º 25
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ParameterValidatorRegistryAdapter"/> class.
 /// </summary>
 /// <param name="validatorRegistry">The validator registry.</param>
 public ParameterValidatorRegistryAdapter(IValidatorRegistry validatorRegistry)
 {
     this.baseRegistry = validatorRegistry;
 }
        public UserRegistrationViewModel(IValidatorRegistry validatorFactory)
        {
            _validatorFactory = validatorFactory;

            RegisterCommand = new Command(RegisterValidation);
        }
Ejemplo n.º 27
0
		/// <summary>
		/// Creates the default validator runner. 
		/// </summary>
		/// <param name="validatorRegistry">The validator registry.</param>
		/// <returns></returns>
		/// <remarks>
		/// You can override this method to create a runner
		/// with some different configuration
		/// </remarks>
		protected virtual ValidatorRunner CreateValidatorRunner(IValidatorRegistry validatorRegistry)
		{
			return new ValidatorRunner(validatorRegistry);
		}
 public DefaultValidatorProvider(
     IValidatorRegistry validatorRegistry)
 {
     ValidatorRegistry = validatorRegistry;
 }
Ejemplo n.º 29
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AbstractFormRelatedHelper"/> class.
 /// </summary>
 /// <param name="validatorRegistry">The validator registry.</param>
 /// <param name="validatorRunner">The validator runner.</param>
 protected AbstractFormRelatedHelper(IValidatorRegistry validatorRegistry, ValidatorRunner validatorRunner)
 {
     this.validatorRegistry = validatorRegistry;
     this.validatorRunner   = validatorRunner;
 }
		/// <summary>
		/// Implementors should perform any initialization logic
		/// </summary>
		/// <param name="validationRegistry">The validation registry.</param>
		/// <param name="property">The target property</param>
		public override void Initialize(IValidatorRegistry validationRegistry, PropertyInfo property)
		{
			base.Initialize(validationRegistry, property);

			referenceAccessor = validationRegistry.GetFieldOrPropertyAccessor(property.DeclaringType, propertyToCompare);
		}
		/// <summary>
		/// Initializes a new instance of the <see cref="AbstractFormRelatedHelper"/> class.
		/// </summary>
		/// <param name="validatorRegistry">The validator registry.</param>
		/// <param name="validatorRunner">The validator runner.</param>
		protected AbstractFormRelatedHelper(IValidatorRegistry validatorRegistry, ValidatorRunner validatorRunner)
		{
			this.validatorRegistry = validatorRegistry;
			this.validatorRunner = validatorRunner;
		}
Ejemplo n.º 32
0
        /// <summary>
        /// Implementors should perform any initialization logic
        /// </summary>
        /// <param name="validationRegistry">The validation registry.</param>
        /// <param name="property">The target property</param>
        public override void Initialize(IValidatorRegistry validationRegistry, PropertyInfo property)
        {
            base.Initialize(validationRegistry, property);

            referenceAccessor = validationRegistry.GetFieldOrPropertyAccessor(property.DeclaringType, propertyToCompare);
        }
		/// <summary>
		/// Implementors should perform any initialization logic
		/// </summary>
		/// <param name="validationRegistry">The validation registry.</param>
		/// <param name="property">The target property</param>
		public void Initialize(IValidatorRegistry validationRegistry, PropertyInfo property)
		{
			this.validationRegistry = validationRegistry;
			properties[property] = FriendlyName ?? property.Name;
		}
Ejemplo n.º 34
0
		/// <summary>
		/// Creates the default validator runner. 
		/// </summary>
		/// <param name="validatorRegistry">The validator registry.</param>
		/// <returns></returns>
		/// <remarks>
		/// You can override this method to create a runner
		/// with some different configuration
		/// </remarks>
		protected virtual ValidatorRunner CreateValidatorRunner(IValidatorRegistry validatorRegistry)
		{
			if (validatorRegistry == null)
			{
				throw new ArgumentNullException("validatorRegistry");
			}

			return new ValidatorRunner(validatorRegistry);
		}
Ejemplo n.º 35
0
            public SampleOneViewModel(IValidatorRegistry validatorFactory)
            {
                _validatorFactory = validatorFactory;

                OkCommand = new Command(OnOkCommand);
            }