public void RegisterDefaultAdapterFactoryGuardClauses()
 {
     // Factory cannot be null
     Assert.ThrowsArgumentNull(
         () => DataAnnotationsModelValidatorProvider.RegisterDefaultAdapterFactory(null),
         "factory");
 }
Ejemplo n.º 2
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            GlobalConfiguration.Configure(WebApiConfig.Register);

            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

            RouteConfig.RegisterRoutes(RouteTable.Routes);

            BundleConfig.RegisterBundles(BundleTable.Bundles);

            // http://cdroulers.com/blog/2015/03/03/structuremap-3-and-asp-net-web-api-2/
            //container = new Container(c => c.AddRegistry<DefaultRegistry>());
            container = IoC.Initialize();

            GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerActivator), new StructureMapWebApiControllerActivator(container));

            // http://www.amescode.com/category/structuremap/
            // Allows setter injection in validation attributes.
            DataAnnotationsModelValidatorProvider.RegisterDefaultAdapterFactory((metadata, context, attribute) => new StructuremapDataAnnotationsModelValidator(metadata, context, attribute, container));

            // Allows setter injection in IValidatableObject viewModels.
            DataAnnotationsModelValidatorProvider.RegisterDefaultValidatableObjectAdapterFactory((metadata, context) => new StructureMapValidatableObjectAdapterFactory(metadata, context, container));
        }
        public static void SetupMvcDefaults(bool setupValidation = true, bool setupMetadata = true)
        {
            var manager = LocalizationHelper.TextManager;

            if (setupValidation)
            {
                ModelBinders.Binders.DefaultBinder = new LocalizingDefaultModelBinder(manager);

                DataAnnotationsModelValidatorProvider.RegisterDefaultAdapterFactory((meta, ctx, attr) =>
                                                                                    new LocalizingDataAnnotationsModelValidator(meta, ctx, attr));

                DataAnnotationsModelValidatorProvider.RegisterAdapterFactory(typeof(RangeAttribute), (meta, ctx, attr) =>
                                                                             new LocalizingRangeAttributeAdapater(meta, ctx, attr));

                DataAnnotationsModelValidatorProvider.RegisterAdapterFactory(typeof(RegularExpressionAttribute), (meta, ctx, attr) =>
                                                                             new LocalizingRegularExpressionAttributeAdapater(meta, ctx, attr));

                DataAnnotationsModelValidatorProvider.RegisterAdapterFactory(typeof(RequiredAttribute), (meta, ctx, attr) =>
                                                                             new LocalizingRequiredAttributeAdapater(meta, ctx, attr));

                DataAnnotationsModelValidatorProvider.RegisterAdapterFactory(typeof(StringLengthAttribute), (meta, ctx, attr) =>
                                                                             new LocalizingStringLengthAttributeAdapater(meta, ctx, attr));
            }

            if (setupMetadata)
            {
                ModelMetadataProviders.Current = new LocalizingModelMetadataProvider();
            }
        }
Ejemplo n.º 4
0
 public void RegisterDefaultAdapterFactoryGuardClauses()
 {
     // Factory cannot be null
     ExceptionHelper.ExpectArgumentNullException(
         () => DataAnnotationsModelValidatorProvider.RegisterDefaultAdapterFactory(null),
         "factory");
 }
        public void RegisterDefaultAdapterFactory()
        {
            var oldFactory = DataAnnotationsModelValidatorProvider.DefaultAttributeFactory;

            try
            {
                // Arrange
                var metadata = ModelMetadataProviders.Current.GetMetadataForType(
                    () => null,
                    typeof(MyValidatedClass)
                    );
                var            context   = new ControllerContext();
                ModelValidator validator = new Mock <ModelValidator>(metadata, context).Object;
                DataAnnotationsModelValidationFactory factory = delegate
                {
                    return(validator);
                };
                DataAnnotationsModelValidatorProvider.RegisterDefaultAdapterFactory(factory);

                // Act
                var result = new DataAnnotationsModelValidatorProvider()
                             .GetValidators(metadata, context)
                             .Single();

                // Assert
                Assert.Same(validator, result);
            }
            finally
            {
                DataAnnotationsModelValidatorProvider.DefaultAttributeFactory = oldFactory;
            }
        }
Ejemplo n.º 6
0
        /// <summary>Registers both <see cref="DryIocDataAnnotationsModelValidator"/> and
        /// <see cref="DryIocValidatableObjectAdapter"/> and provides the <paramref name="container"/> to use
        /// as <see cref="IServiceProvider"/> for resolving dependencies.</summary>
        /// <param name="container"><see cref="IServiceProvider"/> implementaion.</param>
        /// <returns>Returns source container for fluent access.</returns>
        public static IContainer WithDataAnnotationsValidator(this IContainer container)
        {
            var serviceProvider = new DryIocServiceProvider(container.ThrowIfNull());

            DataAnnotationsModelValidatorProvider.RegisterDefaultAdapterFactory((metadata, context, attribute) =>
                                                                                new DryIocDataAnnotationsModelValidator(serviceProvider, metadata, context, attribute));

            DataAnnotationsModelValidatorProvider.RegisterDefaultValidatableObjectAdapterFactory((metadata, context) =>
                                                                                                 new DryIocValidatableObjectAdapter(serviceProvider, metadata, context));

            return(container);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="NinjectDefaultModelValidatorProvider"/> class.
        /// </summary>
        /// <param name="kernel">The kernel.</param>
        /// <param name="defaultModelValidatorProviders">The default model validator providers.</param>
        public NinjectDefaultModelValidatorProvider(IKernel kernel, IEnumerable <ModelValidatorProvider> defaultModelValidatorProviders)
        {
            this.kernel = kernel;
            this.defaultModelValidatorProviders = defaultModelValidatorProviders.ToList();
            var dataAnnotationsModelValidatorProvider = new DataAnnotationsModelValidatorProvider();

            dataAnnotationsModelValidatorProvider.RegisterDefaultAdapterFactory(
                ((modelValidatorProviders, attribute) =>
            {
                this.kernel.Inject(attribute);
                return((ModelValidator) new DataAnnotationsModelValidator(modelValidatorProviders, attribute));
            }));
        }
 protected virtual void RegisterModelValidators(IServiceProvider provider)
 {
     // Register Custom Model Validators that enables exposing the IOC Container as IServiceProvider through ValidationContext.GetService() (Validation Attribute etc)
     DataAnnotationsModelValidatorProvider.RegisterDefaultAdapterFactory((metadata, context, attribute) => new DynamoDataAnnotationsModelValidator(provider, metadata, context, attribute));
     DataAnnotationsModelValidatorProvider.RegisterDefaultValidatableObjectAdapterFactory((metadata, context) => new DynamoValidatableObjectAdapter(provider, metadata, context));
 }