public ClaimPropertyAccessExpression(ClaimProperty claimProperty, string conditionTag)
		{
			Utility.VerifyNonNullArgument("claimProperty", claimProperty);
			Utility.VerifyNonNullArgument("conditionTag", conditionTag);
			this.ClaimProperty = claimProperty;
			this.ConditionTag = conditionTag;
		}
예제 #2
0
		public RegexNotMatchClaimCondition(ClaimProperty claimProperty, Expression expression)
		{
			Utility.VerifyNonNullArgument("claimProperty", claimProperty);
			Utility.VerifyNonNullArgument("expression", expression);
			base.ClaimProperty = claimProperty;
			base.Expression = expression;
		}
예제 #3
0
		public ClaimPropertyAssignment(ClaimProperty claimProperty, Expression expression)
		{
			Utility.VerifyNonNullArgument("claimProperty", claimProperty);
			Utility.VerifyNonNullArgument("expression", expression);
			this.ClaimProperty = claimProperty;
			this.Expression = expression;
		}
예제 #4
0
		private void HandleTypeCond__TYPE_CondOper_Expr()
		{
			ClaimCondition claimCondition;
			if (this._policyObjects.Count != 0)
			{
				Expression expression = this._policyObjects.Peek() as Expression;
				if (expression != null)
				{
					this._policyObjects.Pop();
					string str = this._policyObjects.Peek() as string;
					if (expression != null)
					{
						this._policyObjects.Pop();
						ClaimProperty claimProperty = new ClaimProperty(ClaimPropertyType.Type);
						if (string.CompareOrdinal(str, ConditionOperator.EQ) != 0)
						{
							if (string.CompareOrdinal(str, ConditionOperator.NEQ) != 0)
							{
								if (string.CompareOrdinal(str, ConditionOperator.REGEXP_MATCH) != 0)
								{
									if (string.CompareOrdinal(str, ConditionOperator.REGEXP_NOT_MATCH) != 0)
									{
										object[] objArray = new object[1];
										objArray[0] = str;
										throw new InvalidOperationException(SR.GetString("POLICY0035", objArray));
									}
									else
									{
										claimCondition = ClaimCondition.RegexNotMatch(claimProperty, expression);
									}
								}
								else
								{
									claimCondition = ClaimCondition.RegexMatch(claimProperty, expression);
								}
							}
							else
							{
								claimCondition = ClaimCondition.NotEqual(claimProperty, expression);
							}
						}
						else
						{
							claimCondition = ClaimCondition.Equal(claimProperty, expression);
						}
						this._policyObjects.Push(claimCondition);
						return;
					}
					else
					{
						object[] objArray1 = new object[1];
						objArray1[0] = "ConditionOperator";
						throw new InvalidOperationException(SR.GetString("POLICY0037", objArray1));
					}
				}
				else
				{
					object[] objArray2 = new object[1];
					objArray2[0] = "Expression";
					throw new InvalidOperationException(SR.GetString("POLICY0037", objArray2));
				}
			}
			else
			{
				throw new InvalidOperationException(SR.GetString("POLICY0038", new object[0]));
			}
		}
예제 #5
0
		private void HandleClaimValTypeAssign__VALUETYPE_ASSIGN_ValueTypeExpr()
		{
			if (this._policyObjects.Count != 0)
			{
				Expression expression = this._policyObjects.Peek() as Expression;
				if (expression != null)
				{
					this._policyObjects.Pop();
					ClaimProperty claimProperty = new ClaimProperty(ClaimPropertyType.ValueType);
					this._policyObjects.Push(new ClaimPropertyAssignment(claimProperty, expression));
					return;
				}
				else
				{
					object[] objArray = new object[1];
					objArray[0] = "Expression";
					throw new InvalidOperationException(SR.GetString("POLICY0037", objArray));
				}
			}
			else
			{
				throw new InvalidOperationException(SR.GetString("POLICY0038", new object[0]));
			}
		}
예제 #6
0
		private void HandleValueTypeExpr__IDENTIFIER_DOT_VALUETYPE()
		{
			if (this._policyObjects.Count != 0)
			{
				DebugLog.PolicyEngineTraceLog.Assert(this.valueStack.Top - 3 >= 0, "there should be more than 2 values in stack", new object[0]);
				string stringValue = this.valueStack.Elements[this.valueStack.Top - 3].StringValue;
				if (!string.IsNullOrEmpty(stringValue))
				{
					ClaimProperty claimProperty = new ClaimProperty(ClaimPropertyType.ValueType);
					ClaimPropertyAccessExpression claimPropertyAccessExpression = new ClaimPropertyAccessExpression(claimProperty, stringValue);
					this._policyObjects.Push(claimPropertyAccessExpression);
					return;
				}
				else
				{
					object[] objArray = new object[1];
					objArray[0] = "Identifier";
					throw new InvalidOperationException(SR.GetString("POLICY0037", objArray));
				}
			}
			else
			{
				throw new InvalidOperationException(SR.GetString("POLICY0038", new object[0]));
			}
		}
예제 #7
0
		private void HandleClaimProp__VALUE()
		{
			ClaimProperty claimProperty = new ClaimProperty(ClaimPropertyType.Value);
			this._policyObjects.Push(claimProperty);
		}
예제 #8
0
		public static EqualsClaimCondition Equal(ClaimProperty claimProperty, Expression expression)
		{
			return new EqualsClaimCondition(claimProperty, expression);
		}
예제 #9
0
		public static RegexNotMatchClaimCondition RegexNotMatch(ClaimProperty claimProperty, Expression expression)
		{
			return new RegexNotMatchClaimCondition(claimProperty, expression);
		}