Beispiel #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ValidationCallHandler"/> class that uses the given
 /// rule set, <see cref="SpecificationSource"/> to get the validation rules, and handler order.
 /// </summary>
 /// <param name="ruleset">The validation rule set specified in the configuration.</param>
 /// <param name="specificationSource">A value that indicates whether the validation should come from the configuration, from attributes, or from both sources.</param>
 /// <param name="handlerOrder">The order of the handler.</param>
 public ValidationCallHandler(
     string ruleset,
     SpecificationSource specificationSource,
     int handlerOrder)
     : this(ruleset, GetValidatorFactory(specificationSource), handlerOrder)
 {
 }
Beispiel #2
0
        private static ValidatorFactory GetValidatorFactory(SpecificationSource specificationSource)
        {
            if (specificationSource == SpecificationSource.ParameterAttributesOnly)
            {
                return(null);
            }

            var configurationSource     = ConfigurationSourceFactory.Create();
            var instrumentationProvider = ValidationInstrumentationProvider.FromConfigurationSource(configurationSource);

            switch (specificationSource)
            {
            case SpecificationSource.Both:
                return(new CompositeValidatorFactory(
                           instrumentationProvider,
                           new AttributeValidatorFactory(instrumentationProvider),
                           new ConfigurationValidatorFactory(configurationSource, instrumentationProvider)));

            case SpecificationSource.Attributes:
                return(new AttributeValidatorFactory(instrumentationProvider));

            case SpecificationSource.Configuration:
                return(new ConfigurationValidatorFactory(configurationSource, instrumentationProvider));

            default:
                return(null);
            }
        }
 /// <summary>
 /// Creates a <see cref="ParameterValidatingCallHandler"/> that uses the given <paramref name="ruleset"/> and
 /// <paramref name="specificationSource"/> to get the validation rules.
 /// </summary>
 /// <param name="ruleset">Validation ruleset as specified in configuration.</param>
 /// <param name="specificationSource">Should the validation come from configuration file, attributes, or both?</param>
 /// <param name="handlerOrder">Order of the handler in the handlers' pipeline.</param>
 public ParameterValidatingCallHandler(
     string ruleset,
     SpecificationSource specificationSource,
     int handlerOrder)
     : this(ruleset, CreateValidatorFactory(specificationSource), handlerOrder)
 {
 }
Beispiel #4
0
 void AddValidationPolicy(IUnityContainer factory,
                          string ruleSet,
                          SpecificationSource specificationSource,
                          IMatchingRule matchingRule)
 {
     factory.Configure <Interception>().AddPolicy("Noop")
     .AddMatchingRule(matchingRule)
     .AddCallHandler(new ValidationCallHandler(ruleSet, specificationSource));
 }
        /// <summary>
        /// Load workstation and server specifications from disk.
        /// </summary>
        /// <param name="storage">Choose whether to load workstation or server specs</param>
        /// <param name="specificationType">Choose which specification type to load (CPU, RAM, disk, etc)</param>
        /// <returns>List of strings from configuration storage</returns>
        public static List<string> GetSpecifications(SpecificationSource storage, SpecificationType specificationType)
        {
            List<string> configs = new List<string>();
            string storagePath = string.Empty;

            storagePath = AppUtilities.GetStoragePathFromStorageAndSpecification(storage, specificationType);

            if (File.Exists(storagePath))
            {
                using (FileStream fs = new FileStream(storagePath, FileMode.Open))
                using (StreamReader sr = new StreamReader(fs))
                {
                    while (sr.Peek() != -1)
                    {
                        configs.Add(sr.ReadLine());
                    }
                }
            }

            return configs;
        }
        /// <summary>
        /// Creates the validator factory.
        /// </summary>
        /// <param name="specificationSource">The specification source.</param>
        /// <returns>A validator factory object.</returns>
        protected static ValidatorFactory CreateValidatorFactory(
            SpecificationSource specificationSource)
        {
            using (var configurationSource = ConfigurationSourceFactory.Create())
                switch (specificationSource)
                {
                case SpecificationSource.Both:
                    return(new CompositeValidatorFactory(
                               new AttributeValidatorFactory(),
                               new ConfigurationValidatorFactory(configurationSource)));

                case SpecificationSource.Attributes:
                    return(new AttributeValidatorFactory());

                case SpecificationSource.Configuration:
                    return(new ConfigurationValidatorFactory(configurationSource));

                case SpecificationSource.ParameterAttributesOnly:
                default:
                    throw new InvalidOperationException("Invalid specification source.");
                }
        }
Beispiel #7
0
        private static ValidatorFactory GetValidatorFactory(SpecificationSource specificationSource)
        {
            if (specificationSource == SpecificationSource.ParameterAttributesOnly)
            {
                return(null);
            }

            switch (specificationSource)
            {
            case SpecificationSource.Both:
                return(ValidationFactory.DefaultCompositeValidatorFactory);

            case SpecificationSource.Attributes:
                return(new AttributeValidatorFactory());

            case SpecificationSource.Configuration:
                return(ValidationFactory.DefaultConfigurationValidatorFactory);

            default:
                return(null);
            }
        }
        /// <summary>
        /// Get the path to the storage
        /// </summary>
        /// <param name="storageType">Type of storage</param>
        /// <param name="specificationType">Type of specification</param>
        /// <returns>The path to the specification profile</returns>
        public static string GetStoragePathFromStorageAndSpecification(SpecificationSource storageType, 
            SpecificationType specificationType)
        {
            string path = GetAppPath();

            if (storageType == SpecificationSource.LocalMachine)
            {
                path = Path.Combine(path, storageType.ToString());
                path = Path.Combine(path, Environment.MachineName);
                EnsureDirectory(new DirectoryInfo(path));
                path = Path.Combine(path, specificationType.ToString() + ".txt");
            }

            if (storageType == SpecificationSource.PilotWorkstationMinimum | storageType == SpecificationSource.PilotAppServerMinimum
                | storageType == SpecificationSource.AppointmentsAppServerMinimum | storageType == SpecificationSource.AppointmentsWorkstationMinimum)
            {
                path = Path.Combine(path, storageType.ToString());
                EnsureDirectory(new DirectoryInfo(path));
                path = Path.Combine(path, specificationType.ToString() + ".txt");
            }

            return path;
        }
 /// <summary>
 /// Creates a <see cref="ParameterValidatingCallHandler"/> that uses the given <paramref name="ruleset"/> and
 /// <paramref name="specificationSource"/> to get the validation rules.
 /// </summary>
 /// <param name="ruleset">Validation rule-set as specified in configuration.</param>
 /// <param name="specificationSource">Should the validation come from configuration file, attributes, or both?</param>
 public ParameterValidatingCallHandler(
     string ruleset,
     SpecificationSource specificationSource)
     : this(ruleset, specificationSource, 0)
 {
 }
Beispiel #10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ValidationCallHandlerAttribute"/> that uses the
 /// given rule set.
 /// </summary>
 /// <param name="ruleSet">The name of the rule set to use.</param>
 public ValidationCallHandlerAttribute(string ruleSet)
 {
     this.ruleSet             = ruleSet;
     this.specificationSource = SpecificationSource.Both;
 }
Beispiel #11
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ValidationCallHandler"/> class that uses the given
 /// rule set and <see cref="SpecificationSource"/> to get the validation rules.
 /// </summary>
 /// <param name="ruleSet">The validation rule set specified in the configuration.</param>
 /// <param name="specificationSource">A value that indicates whether the validation should come from the configuration, from attributes, or from both sources.</param>
 public ValidationCallHandler(string ruleSet, SpecificationSource specificationSource)
     : this(ruleSet, specificationSource, 0)
 {
 }
 /// <summary>
 /// Creates a <see cref="ValidationCallHandler"/> that uses the given
 /// ruleset and <see cref="SpecificationSource"/> to get the validation rules.
 /// </summary>
 /// <param name="ruleSet">Validation ruleset as specified in configuration.</param>
 /// <param name="specificationSource">Should the validation come from config, attributes, or both?</param>
 /// <param name="handlerOrder">Order of the handler</param>
 public ValidationCallHandler(string ruleSet, SpecificationSource specificationSource, int handlerOrder)
     : this(ruleSet, GetValidatorFactory(specificationSource), handlerOrder)
 { }
 /// <summary>
 /// Creates a <see cref="ValidationCallHandler"/> that uses the given
 /// ruleset and <see cref="SpecificationSource"/> to get the validation rules.
 /// </summary>
 /// <param name="ruleSet">Validation ruleset as specified in configuration.</param>
 /// <param name="specificationSource">Should the validation come from config, attributes, or both?</param>
 public ValidationCallHandler(string ruleSet, SpecificationSource specificationSource)
     : this(ruleSet, specificationSource, 0)
 { }
        private static ValidatorFactory GetValidatorFactory(SpecificationSource specificationSource)
        {
            if (specificationSource == SpecificationSource.ParameterAttributesOnly)
            {
                return null;
            }

            var configurationSource = ConfigurationSourceFactory.Create();
            var instrumentationProvider = ValidationInstrumentationProvider.FromConfigurationSource(configurationSource);
            switch (specificationSource)
            {
                case SpecificationSource.Both:
                    return new CompositeValidatorFactory(
                        instrumentationProvider,
                        new AttributeValidatorFactory(instrumentationProvider),
                        new ConfigurationValidatorFactory(configurationSource, instrumentationProvider));
                case SpecificationSource.Attributes:
                    return new AttributeValidatorFactory(instrumentationProvider);
                case SpecificationSource.Configuration:
                    return new ConfigurationValidatorFactory(configurationSource, instrumentationProvider);
                default:
                    return null;
            }
        }
 /// <summary>
 /// Creates a <see cref="ServiceParameterValidatingCallHandler"/> that uses the given <paramref name="ruleset"/> and
 /// <paramref name="specificationSource"/> to get the validation rules.
 /// </summary>
 /// <param name="ruleset">Validation ruleset as specified in configuration.</param>
 /// <param name="specificationSource">Should the validation come from configuration file, attributes, or both?</param>
 public ServiceParameterValidatingCallHandler(
     string ruleset,
     SpecificationSource specificationSource)
     : base(ruleset, specificationSource, 0)
 {
 }
        /// <summary>
        /// Write information gathered to the data store
        /// </summary>
        /// <param name="storageType">Storage profile</param>
        /// <param name="specificationType">Category of specification</param>
        /// <param name="data">Data to write</param>
        public static void Write(SpecificationSource storageType, SpecificationType specificationType, string data)
        {
            string storagePath = string.Empty;

            storagePath = AppUtilities.GetStoragePathFromStorageAndSpecification(storageType, specificationType);

            using (FileStream fs = new FileStream(storagePath, FileMode.Append))
            using (StreamWriter sw = new StreamWriter(fs))
            {
                sw.WriteLine(data);
                sw.Flush();
            }
        }
        void AddValidationPolicy(IUnityContainer factory,
                                 string ruleSet,
                                 SpecificationSource specificationSource,
                                 IMatchingRule matchingRule)
        {

            factory.Configure<Interception>().AddPolicy("Noop")
                .AddMatchingRule(matchingRule)
                .AddCallHandler(new ValidationCallHandler(ruleSet, specificationSource));
        }
Beispiel #18
0
        private static ValidatorFactory GetValidatorFactory(SpecificationSource specificationSource)
        {
            if (specificationSource == SpecificationSource.ParameterAttributesOnly)
            {
                return null;
            }

            switch (specificationSource)
            {
                case SpecificationSource.Both:
                    return ValidationFactory.DefaultCompositeValidatorFactory;
                case SpecificationSource.Attributes:
                    return new AttributeValidatorFactory();
                case SpecificationSource.Configuration:
                    return ValidationFactory.DefaultConfigurationValidatorFactory;
                default:
                    return null;
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="ValidationCallHandlerAttribute"/> that uses the
 /// given rule set.
 /// </summary>
 /// <param name="ruleSet">The name of the rule set to use.</param>
 public ValidationCallHandlerAttribute(string ruleSet)
 {
     this.ruleSet = ruleSet;
     this.specificationSource = SpecificationSource.Both;
 }
Beispiel #20
0
 /// <summary>
 /// Creates a <see cref="ValidationCallHandler"/> that uses the given
 /// ruleset and <see cref="SpecificationSource"/> to get the validation rules.
 /// </summary>
 /// <param name="ruleSet">Validation ruleset as specified in configuration.</param>
 /// <param name="specificationSource">Should the validation come from config, attributes, or both?</param>
 public ValidationCallHandler(string ruleSet, SpecificationSource specificationSource)
 {
     this.ruleSet             = ruleSet;
     this.specificationSource = specificationSource;
 }