/// <summary> /// Method called by the EvaluationEngine when the evaluation is executed without a policy document, this /// method search in the policy repository and return the first policy that matches its target with the /// context document specified. /// </summary> /// <param name="context">The evaluation context instance.</param> /// <returns>The policy document ready to be used by the evaluation engine.</returns> public PolicyDocument Match(EvaluationContext context) { if (context == null) { throw new ArgumentNullException("context"); } PolicyDocument polEv = null; //Search if there is a policySet which target matches the context document foreach (PolicyDocument policy in _policySets.Values) { var tempPolicy = new PolicySet(context.Engine, (PolicySetElement)policy.PolicySet); var tempContext = new EvaluationContext(context.Engine, policy, context.ContextDocument); // Match the policy set target with the context document if (tempPolicy.Match(tempContext) == TargetEvaluationValue.Match) { if (polEv == null) { polEv = policy; } else { throw new EvaluationException(Properties.Resource.exc_duplicated_policy_in_repository); } } } //Search if there is a policy which target matches the context document foreach (PolicyDocument policy in _policies.Values) { var tempPolicy = new Policy((PolicyElement)policy.Policy); var tempContext = new EvaluationContext(context.Engine, policy, context.ContextDocument); // Match the policy target with the context document if (tempPolicy.Match(tempContext) == TargetEvaluationValue.Match) { if (polEv == null) { polEv = policy; } else { throw new EvaluationException(Properties.Resource.exc_duplicated_policy_in_repository); } } } return(polEv); }
/// <summary> /// Method called by the EvaluationEngine when the evaluation is executed without a policy document, this /// method search in the policy repository and return the first policy that matches its target with the /// context document specified. /// </summary> /// <param name="context">The evaluation context instance.</param> /// <returns>The policy document ready to be used by the evaluation engine.</returns> public PolicyDocument Match(EvaluationContext context) { if (context == null) throw new ArgumentNullException("context"); PolicyDocument polEv = null; //Search if there is a policySet which target matches the context document foreach (PolicyDocument policy in _policySets.Values) { var tempPolicy = new PolicySet(context.Engine, (PolicySetElement)policy.PolicySet); var tempContext = new EvaluationContext(context.Engine, policy, context.ContextDocument); // Match the policy set target with the context document if (tempPolicy.Match(tempContext) == TargetEvaluationValue.Match) { if (polEv == null) { polEv = policy; } else { throw new EvaluationException(Properties.Resource.exc_duplicated_policy_in_repository); } } } //Search if there is a policy which target matches the context document foreach (PolicyDocument policy in _policies.Values) { var tempPolicy = new Policy((PolicyElement)policy.Policy); var tempContext = new EvaluationContext(context.Engine, policy, context.ContextDocument); // Match the policy target with the context document if (tempPolicy.Match(tempContext) == TargetEvaluationValue.Match) { if (polEv == null) { polEv = policy; } else { throw new EvaluationException(Properties.Resource.exc_duplicated_policy_in_repository); } } } return polEv; }