static void SetValue <T>(T obj, MemberInfo member, CommanderAttribute param, string name, string value)
        {
            if (param.Regex != null)
            {
                // We need to validate this value with a regex
                if (!value.Matches(param.Regex))
                {
                    throw new ParameterMatchException(param, value);
                }
            }

            if (param.ValidateWith != null)
            {
                // We need to validate this value with a validator
                if (!typeof(IParameterValidator).GetTypeInfo().IsAssignableFrom(param.ValidateWith))
                {
                    throw new ValidatorTypeException(param.ValidateWith);
                }

                IParameterValidator validator = (IParameterValidator)Activator.CreateInstance(param.ValidateWith);

                if (!validator.Validate(name, value))
                {
                    throw new ParameterValidationException(validator);
                }
            }

            object convertedValue;

            if (param.FormatWith != null)
            {
                // We need to format this value
                if (!typeof(IParameterFormatter).GetTypeInfo().IsAssignableFrom(param.FormatWith))
                {
                    throw new FormatterTypeException(param.FormatWith);
                }

                IParameterFormatter formatter = (IParameterFormatter)Activator.CreateInstance(param.FormatWith);

                convertedValue = formatter.Format(name, value);
            }
            else
            {
                // We need to try and convert the value ourselves
                try
                {
                    convertedValue = ValueParse(member.Type(), value);
                }
                catch (FormatException)
                {
                    // The value had to be parsed to a numerical type and failed
                    throw new ParameterFormatException(param, value, member.GetType());
                }
            }

            SetValue(obj, member, convertedValue);
        }
Beispiel #2
0
 public TableInfoCollectionFactory(IConfigValidator configValidator, IParameterValidator parameterValidator, IColumnTypeManager columnTypeManager,
                                   IPrimaryKeyManager primaryKeyManager, IWhereConditionValidator whereConditionValidator, ILinkedServerValidator linkedServerValidator)
 {
     _configValidator         = configValidator;
     _parameterValidator      = parameterValidator;
     _columnTypeManager       = columnTypeManager;
     _primaryKeyManager       = primaryKeyManager;
     _whereConditionValidator = whereConditionValidator;
     _linkedServerValidator   = linkedServerValidator;
 }
Beispiel #3
0
 /// <summary>
 /// Initializes a new instance of the AlignmentInfo class,
 /// specifying all properties.
 /// </summary>
 /// <param name="name">Name of the property</param>
 /// <param name="description">A friendly description of property.</param>
 /// <param name="required">True if this is a required property.</param>
 /// <param name="defaultValue">The default value that will be used (expressed as a string).</param>
 /// <param name="dataType">The data type: INT, FLOAT, or STRINGLIST.</param>
 /// <param name="validator">The validation object, or null if no validation is required.</param>
 public AlignmentInfo(
     string name,
     string description,
     bool required,
     string defaultValue,
     string dataType,
     IParameterValidator validator)
 {
     Name         = name;
     Description  = description;
     Required     = required;
     DefaultValue = defaultValue;
     DataType     = dataType;
     Validator    = validator;
 }
Beispiel #4
0
 /// <summary>
 /// Initializes a new instance of the AlignmentInfo class, 
 /// specifying all properties.
 /// </summary>
 /// <param name="name">Name of the property</param>
 /// <param name="description">A friendly description of property.</param>
 /// <param name="required">True if this is a required property.</param>
 /// <param name="defaultValue">The default value that will be used (expressed as a string).</param>
 /// <param name="dataType">The data type: INT, FLOAT, or STRINGLIST.</param>
 /// <param name="validator">The validation object, or null if no validation is required.</param>
 public AlignmentInfo(
     string name,
     string description,
     bool required,
     string defaultValue,
     string dataType,
     IParameterValidator validator)
 {
     Name = name;
     Description = description;
     Required = required;
     DefaultValue = defaultValue;
     DataType = dataType;
     Validator = validator;
 }
Beispiel #5
0
        private void AddAopHandlerByUsageAttribute(MethodBase methodBase, IList methodHandlers)
        {
            ParameterValidatorHandler handler;

            if (cachedStaticHandlers == null)
            {
                cachedStaticHandlers = new Dictionary <MethodBase, ParameterValidatorHandler>();
            }

            if (!cachedStaticHandlers.TryGetValue(methodBase, out handler))
            {
                List <int> paramIndexs = null;
                List <IParameterValidator> validators = null;

                var ps = methodBase.GetParameters();

                for (int i = 0, len = ps.Length; i < len; i++)
                {
                    var p = ps[i];

                    foreach (var attr in p.GetCustomAttributes <ParameterValidatorAttribute>(true))
                    {
                        if (paramIndexs == null)
                        {
                            paramIndexs = new List <int>();
                            validators  = new List <IParameterValidator>();
                        }
                        paramIndexs.Add(i);
                        IParameterValidator validator = attr.CreateValidator(p);
                        if (validator != null)
                        {
                            validators.Add(validator);
                        }
                    }
                }
                if (paramIndexs != null)
                {
                    handler = new ParameterValidatorHandler(paramIndexs.ToArray(), validators.ToArray());
                }
                cachedStaticHandlers[methodBase] = handler;
            }

            if (handler != null)
            {
                methodHandlers.Add(handler);
            }
        }
Beispiel #6
0
 /// <summary>
 /// Construct a RequestParameter, specifying all properties.
 /// </summary>
 /// <param name="name">The name of the parameter as required by a service.</param>
 /// <param name="description">A friendly description of the parameter.</param>
 /// <param name="required">True if this is a required parameter.</param>
 /// <param name="defaultValue">The default value that will be used (expressed as a string).</param>
 /// <param name="dataType">The data type: int, double, or string.</param>
 /// <param name="validator">The validation object, or null if no validation is required.</param>
 public RequestParameter(
     string name,
     string description,
     bool required,
     string defaultValue,
     string dataType,
     IParameterValidator validator)
 {
     SubmitName   = name;
     Description  = description;
     Required     = required;
     DefaultValue = defaultValue;
     if (dataType != "int" && dataType != "double" && dataType != "string")
     {
         string message = Properties.Resource.SearchParamInvalidArgs;
         Trace.Report(message);
         throw new NotSupportedException(message);
     }
     DataType  = dataType;
     Validator = validator;
 }
Beispiel #7
0
 /// <summary>
 /// Construct a RequestParameter, specifying all properties.
 /// </summary>
 /// <param name="name">The name of the parameter as required by a service.</param>
 /// <param name="description">A friendly description of the parameter.</param>
 /// <param name="required">True if this is a required parameter.</param>
 /// <param name="defaultValue">The default value that will be used (expressed as a string).</param>
 /// <param name="dataType">The data type: int, double, or string.</param>
 /// <param name="validator">The validation object, or null if no validation is required.</param>
 public RequestParameter(
     string name,
     string description,
     bool required,
     string defaultValue,
     string dataType,
     IParameterValidator validator)
 {
     SubmitName   = name;
     Description  = description;
     Required     = required;
     DefaultValue = defaultValue;
     if (dataType != "int" && dataType != "double" && dataType != "string")
     {
         string message = "SearchParameter: Only int, double, and string supported.";
         Trace.Report(message);
         throw new NotSupportedException(message);
     }
     DataType  = dataType;
     Validator = validator;
 }
Beispiel #8
0
 public SonosController(ISonosClient client, IParameterValidator parameterValidator)
 {
     _client             = client;
     _parameterValidator = parameterValidator;
 }
 public MySqlTableInfoCollectionFactory(IConfigValidator configValidator, IParameterValidator parameterValidator, IColumnTypeManager columnTypeManager,
                                        IPrimaryKeyManager primaryKeyManager, IWhereConditionValidator whereConditionValidator, ILinkedServerValidator linkedServerValidator)
     : base(configValidator, parameterValidator, columnTypeManager, primaryKeyManager, whereConditionValidator, linkedServerValidator)
 {
 }
Beispiel #10
0
 public ValidatorInfo(int parameterIndex, IParameterValidator validator)
 {
     this.parameterIndex = parameterIndex;
     this.validator      = validator;
 }
Beispiel #11
0
 public ParameterValidatorHandler(int paramIndex, IParameterValidator validator)
     : this(new int[] { paramIndex }, new IParameterValidator[] { validator })
 {
 }
 internal ParameterValidationException(IParameterValidator validator)
 {
     Validator = validator;
 }
Beispiel #13
0
 /// <summary>
 /// Initializes the class with a target assembly.
 /// </summary>
 /// <param name="parameterValidator">The parameter validator.</param>
 public AssemblyMiner(IParameterValidator parameterValidator)
 {
     this._parameterValidator = parameterValidator;
 }
Beispiel #14
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Parameter"/> class.
 /// </summary>
 /// <param name="name">Name of the <see cref="Parameter"/>.</param>
 /// <param name="shortName">Short name of the <see cref="Parameter"/>.</param>
 /// <param name="isRequired">if set to <c>true</c> [b is required].</param>
 /// <param name="defaultValue">The STR default value.</param>
 /// <param name="validator">The validator.</param>
 /// <param name="strHelpMessage">The <see cref="Parameter"/> help message.</param>
 public Parameter(string name, string shortName, bool isRequired, string defaultValue, IParameterValidator validator, string helpMessage)
     : this(name, shortName, isRequired, defaultValue, validator == null ? null : new List <IParameterValidator>(new IParameterValidator[] { validator }), helpMessage)
 {
 }
Beispiel #15
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Parameter"/> class.
 /// </summary>
 /// <param name="name">Name of the <see cref="Parameter"/>.</param>
 /// <param name="shortName">Short name of the <see cref="Parameter"/>.</param>
 /// <param name="isRequired">if set to <c>true</c> [b is required].</param>
 /// <param name="defaultValue">The STR default value.</param>
 /// <param name="validator">The validator.</param>
 public Parameter(string name, string shortName, bool isRequired, string defaultValue, IParameterValidator validator)
     : this(name, shortName, isRequired, defaultValue, validator, null)
 {
 }