Пример #1
0
		public virtual bool Compare(PolicyRuleSet other)
		{
			if (other != null)
			{
				if (this.Rules.Count == other.Rules.Count)
				{
					int num = 0;
					while (num < this.Rules.Count)
					{
						if (this.Rules[num].Compare(other.Rules[num]))
						{
							num++;
						}
						else
						{
							return false;
						}
					}
					return true;
				}
				else
				{
					return false;
				}
			}
			else
			{
				return false;
			}
		}
Пример #2
0
 public virtual bool Compare(PolicyRuleSet other)
 {
     if (other != null)
     {
         if (this.Rules.Count == other.Rules.Count)
         {
             int num = 0;
             while (num < this.Rules.Count)
             {
                 if (this.Rules[num].Compare(other.Rules[num]))
                 {
                     num++;
                 }
                 else
                 {
                     return(false);
                 }
             }
             return(true);
         }
         else
         {
             return(false);
         }
     }
     else
     {
         return(false);
     }
 }
Пример #3
0
		public PolicyLanguageParser()
		{
			this._policyObjects = new Stack<object>();
			this._policy = new PolicyRuleSet();
		}
Пример #4
0
		public void ParseRules(string rulesXml, out PolicyRuleSetStruct policyRuleSetStruct)
		{
			string str = null;
			XmlNode xmlNodes = null;
			bool flag = false;
			XmlDocument xmlDocument = new XmlDocument();
			xmlDocument.LoadXml(rulesXml);
			if (xmlDocument.DocumentElement.Name == null || string.Compare(xmlDocument.DocumentElement.Name, "ClaimsTransformationPolicy", StringComparison.OrdinalIgnoreCase) != 0)
			{
				object[] name = new object[2];
				name[0] = xmlDocument.DocumentElement.Name;
				name[1] = "ClaimsTransformationPolicy";
				str = SR.GetString("POLICY0400", name);
				DebugLog.PolicyEngineTraceLog.ErrorSafe(string.Concat("Error:", str), new object[0]);
				throw new XmlParseException(str);
			}
			else
			{
				XmlNodeList elementsByTagName = xmlDocument.GetElementsByTagName("Rules");
				if (elementsByTagName != null)
				{
					foreach (XmlNode xmlNodes1 in elementsByTagName)
					{
						XmlAttribute namedItem = (XmlAttribute)xmlNodes1.Attributes.GetNamedItem("version");
						if (namedItem == null || string.Compare(namedItem.Value, "1", StringComparison.OrdinalIgnoreCase) != 0 || xmlNodes1.FirstChild == null || xmlNodes1.FirstChild.NodeType != XmlNodeType.CDATA)
						{
							continue;
						}
						flag = true;
						xmlNodes = xmlNodes1;
						break;
					}
					if (flag)
					{
						if (xmlNodes == null || xmlNodes.FirstChild.Value == null)
						{
							object[] objArray = new object[3];
							objArray[0] = "Rules";
							objArray[1] = "version";
							objArray[2] = "1";
							str = SR.GetString("POLICY0403", objArray);
							str = string.Concat(str, SR.GetString("INFO0001", new object[0]));
							DebugLog.PolicyEngineTraceLog.ErrorSafe(string.Concat("Error:", str), new object[0]);
							throw new XmlParseException(str);
						}
						else
						{
							string value = xmlNodes.FirstChild.Value;
							PolicyRuleSet policyRuleSet = new PolicyRuleSet();
							try
							{
								policyRuleSet.Initialize(value);
								DebugLog.PolicyEngineTraceLog.InfoSafe(string.Concat("Parsed rules:", policyRuleSet.ToString()), new object[0]);
								policyRuleSetStruct = policyRuleSet.GetStruct();
							}
							catch (Exception exception1)
							{
								Exception exception = exception1;
								str = string.Concat(exception.Message, SR.GetString("INFO0001", new object[0]));
								DebugLog.PolicyEngineTraceLog.ErrorSafe(string.Concat("Error:", str), new object[0]);
								throw new Exception(str, exception);
							}
							return;
						}
					}
					else
					{
						object[] objArray1 = new object[3];
						objArray1[0] = "Rules";
						objArray1[1] = "version";
						objArray1[2] = "1";
						str = SR.GetString("POLICY0402", objArray1);
						str = string.Concat(str, SR.GetString("INFO0001", new object[0]));
						DebugLog.PolicyEngineTraceLog.ErrorSafe(string.Concat("Error:", str), new object[0]);
						throw new XmlParseException(str);
					}
				}
				else
				{
					object[] objArray2 = new object[1];
					objArray2[0] = "Rules";
					str = SR.GetString("POLICY0401", objArray2);
					DebugLog.PolicyEngineTraceLog.ErrorSafe(string.Concat("Error:", str), new object[0]);
					throw new XmlParseException(str);
				}
			}
		}