예제 #1
0
        private object[] ObtainValidationMethodParameters(
            TisValidationMethod validationMethod,
            object validationsTarget,
            List <ITisValidationContext> validationContexts)
        {
            object[] validationMethodParameters = null;
            bool     handled = false;

            foreach (ITisValidationContext validationContext in validationContexts)
            {
                if (validationContext.ValidationMethodParametersProvider != null)
                {
                    validationMethodParameters = validationContext.ValidationMethodParametersProvider.ObtainValidationMethodParameters(
                        validationMethod,
                        validationsTarget,
                        ref handled);

                    if (handled)
                    {
                        return(validationMethodParameters);
                    }
                }
            }

            return(validationMethodParameters);
        }
        public override bool Accepts(
            TisValidationMethod validationMethod,
            TisValidationMethodResult validationMethodResult)
        {
            if (IsInclusive)
            {
                foreach (TisValidationsResultFilter filter in m_filters)
                {
                    if (!filter.Accepts(validationMethod, validationMethodResult))
                    {
                        return(false);
                    }
                }

                return(true);
            }
            else
            {
                foreach (TisValidationsResultFilter filter in m_filters)
                {
                    if (filter.Accepts(validationMethod, validationMethodResult))
                    {
                        return(true);
                    }
                }

                return(false);
            }
        }
        protected override bool Matches(
            TisValidationMethod validationMethod,
            TisValidationMethodResult validationMethodResult)
        {
            m_validationMethodToCheck = validationMethod;

            if (m_methodParametersArray.Count != validationMethodResult.Parameters.Length)
            {
                return(false);
            }

            for (int i = 0; i < m_methodParametersArray.Count; i++)
            {
                object parameterToCheck = m_methodParametersArray[i];

                object parameterData = validationMethodResult.Parameters[i];

                if (parameterData != null)
                {
                    parameterToCheck = parameterData.GetType();
                }

                if (!Match(parameterToCheck, i))
                {
                    return(false);
                }
            }

            return(true);
        }
예제 #4
0
        private TisValidationMethodResult ExecuteValidationMethod(
            TisValidationMethod validationMethod,
            object validationsSource,
            object validationsTarget,
            List <ITisValidationContext> validationContexts)
        {
            TisValidationMethodDetailedInfo detailedInfo = null;
            ValidationStatus validationStatus            = ValidationStatus.Unknown;

            object[] validationMethodParameters = null;

            try
            {
                validationMethodParameters =
                    ObtainValidationMethodParameters(validationMethod, validationsTarget, validationContexts);

                if (validationMethodParameters == null)
                {
                    // Default method parameters
                    validationMethodParameters =
                        new object[validationMethod.MethodSignature.Params.Length];
                }

                bool validParams =
                    ValidateMethodParameters(validationMethod.MethodSignature, validationMethodParameters);

                if (validParams)
                {
                    object methodReturn =
                        validationMethod.Method.Invoke(validationsSource, validationMethodParameters);

                    if (methodReturn is ValidationStatus)
                    {
                        validationStatus = (ValidationStatus)methodReturn;
                    }
                    else
                    {
                        if (methodReturn is TisValidationStatusProvider)
                        {
                            validationStatus = (methodReturn as TisValidationStatusProvider).Status;
                            detailedInfo     = (methodReturn as TisValidationStatusProvider).DetailedInfo;
                        }
                        else
                        {
                            Log.WriteWarning("Validation method [{0}] does not return validation status ", validationMethod.Name);
                        }
                    }
                }
                else
                {
                    Log.WriteError("Validation method [{0}] has invalid parameter(s)", validationMethod.Name);
                }
            }
            catch (Exception exc)
            {
                Log.WriteException(exc);
            }

            return(new TisValidationMethodResult(validationStatus, validationMethodParameters, detailedInfo));
        }
        private void FillContainer(IEnumerable <Type> validationProvidersData)
        {
            foreach (Type validationProviderData in validationProvidersData)
            {
                if (typeof(ITisSupportValidation).IsAssignableFrom(validationProviderData))
                {
                    MethodInfo[] miValidations =
                        validationProviderData.GetMethods(BindingFlags.Instance | BindingFlags.Public);

                    foreach (MethodInfo miValidation in miValidations)
                    {
                        ValidationMethodAttribute validationAttribute =
                            (ValidationMethodAttribute)ReflectionUtil.GetAttribute(miValidation,
                                                                                   typeof(ValidationMethodAttribute));

                        if (validationAttribute != null)
                        {
                            TisValidationMethod validationMethod =
                                new TisValidationMethod(miValidation,
                                                        validationAttribute.ValidationOrder,
                                                        validationAttribute.IsCustomCodeProvider);

                            Add(validationMethod);
                        }
                    }

                    Sort();
                }
                else
                {
                    Log.WriteInfo("Validation provider data does not implement [ITisSupportValidation] interface");
                }
            }
        }
 public virtual bool Accepts(
     TisValidationMethod validationMethod,
     TisValidationMethodResult validationMethodResult)
 {
     if (m_isInclusive)
     {
         return(Matches(validationMethod, validationMethodResult));
     }
     else
     {
         return(!Matches(validationMethod, validationMethodResult));
     }
 }
        protected override bool Matches(
            TisValidationMethod validationMethod,
            TisValidationMethodResult validationMethodResult)
        {
            if (base.Matches(validationMethod, validationMethodResult))
            {
                if (m_parameterValues.Count == validationMethodResult.Parameters.Length)
                {
                    for (int i = 0; i < validationMethodResult.Parameters.Length; i++)
                    {
                        if (m_parameterValues[i] != null &&
                            !validationMethodResult.Parameters[i].Equals(m_parameterValues[i]))
                        {
                            return(false);
                        }
                    }
                }

                return(true);
            }

            return(false);
        }
예제 #8
0
        private bool IsValidationConfirmed(
            TisValidationMethod validationMethod,
            List <ITisValidationContext> validationContexts)
        {
            bool confirmValidationMethod = true;
            bool handled = false;

            foreach (ITisValidationContext validationContext in validationContexts)
            {
                if (validationContext.ValidationMethodConfirmatory != null)
                {
                    confirmValidationMethod =
                        validationContext.ValidationMethodConfirmatory.ConfirmValidationMethod(validationMethod, ref handled);

                    if (handled)
                    {
                        return(confirmValidationMethod);
                    }
                }
            }

            return(confirmValidationMethod);
        }
 protected override bool Matches(
     TisValidationMethod validationMethod,
     TisValidationMethodResult validationMethodResult)
 {
     return(CompositeFilter.Accepts(validationMethod, validationMethodResult));
 }
 protected virtual bool Matches(
     TisValidationMethod validationMethod,
     TisValidationMethodResult validationMethodResult)
 {
     return(true);
 }
 protected override bool Matches(
     TisValidationMethod validationMethod,
     TisValidationMethodResult validationMethodResult)
 {
     return(m_statusToFilter.Contains(validationMethodResult.Status));
 }
 protected override bool Matches(
     TisValidationMethod validationMethod,
     TisValidationMethodResult validationMethodResult)
 {
     return(validationMethod.IsCustomCodeProvider);
 }
 protected override bool Matches(
     TisValidationMethod validationMethod,
     TisValidationMethodResult validationMethodResult)
 {
     return(StringUtil.CompareIgnoreCase(validationMethod.FullName, m_methodName));
 }