Esempio n. 1
0
        /// <summary>
        /// Executes the transform.
        /// </summary>
        /// <param name="claimSet">Input set of claims to transform.</param>
        /// <returns>Transformed set of claims.</returns>
        public override IEnumerable <Claim> TransformClaims(IEnumerable <Claim> claims)
        {
            if (claims == null)
            {
                throw new ArgumentNullException("claims");
            }

            TransformAction     action            = null;
            IList <Claim>       matchedClaims     = null;
            IEnumerable <Claim> transformedClaims = null;
            bool eval = false;

            action = TransformAction.Create(this.Type, null);

            if (this.MatchExpression != null)
            {
                MatchExpression matcher = MatchExpressionDictionary.Default[this.MatchExpression.Type.ToString()]; //CaplConfigurationManager.MatchExpressions[this.MatchExpression.Type.ToString()];
                matchedClaims = matcher.MatchClaims(claims, this.MatchExpression.ClaimType, this.MatchExpression.Value);
            }

            if (this.Expression == null)
            {
                eval = true;
            }
            else
            {
                eval = this.Expression.Evaluate(claims);
            }

            if (eval)
            {
                transformedClaims = action.Execute(claims, matchedClaims, this.TargetClaim);
            }

            if (transformedClaims != null)
            {
                return(transformedClaims);
            }
            else
            {
                return(claims);
            }
        }