/// <summary> /// Creates a new instance of the evaluaion context. /// </summary> /// <param name="engine">The engine instance.</param> /// <param name="policyDocument">The policy document instance.</param> /// <param name="contextDocument">The context document instance.</param> public EvaluationContext(EvaluationEngine engine, pol.PolicyDocument policyDocument, ctx.ContextDocument contextDocument) : this() { ctx.AttributeReadWriteCollection attributes = new ctx.AttributeReadWriteCollection(); foreach (ctx.AttributeElementReadWrite attribute in contextDocument.Request.Resources[0].Attributes) { attributes.Add(new ctx.AttributeElementReadWrite(attribute)); } ctx.ResourceContentElement resourceContent = null; if (contextDocument.Request.Resources[0].ResourceContent != null) { resourceContent = new ctx.ResourceContentElement( contextDocument.Request.Resources[0].ResourceContent.XmlDocument, contextDocument.Request.Resources[0].ResourceContent.SchemaVersion); } _engine = engine; _policyDocument = policyDocument; _contextDocument = contextDocument; _currentResource = new ctx.ResourceElementReadWrite( resourceContent, contextDocument.Request.Resources[0].ResourceScopeValue, attributes, contextDocument.Request.Resources[0].SchemaVersion); }
/// <summary> /// Creates a new "target item" using the XmlReader instance provided and the node name for the derived /// "target item". /// </summary> /// <param name="reader">The XmlReader positioned in the "target item" node.</param> /// <param name="itemNodeName">The node if the "target item".</param> /// <param name="schemaVersion">The version of the schema that was used to validate.</param> protected TargetItemBase(XmlReader reader, string itemNodeName, XacmlVersion schemaVersion) : this( schemaVersion ) { if (reader == null) { throw new ArgumentNullException("reader"); } if (reader.LocalName == itemNodeName) { // Find all the attributes in the node and notify the derived class about all of them. if (reader.HasAttributes) { while (reader.MoveToNextAttribute()) { AttributeFound(reader.NamespaceURI, reader.LocalName, reader.Value); } reader.MoveToElement(); } // Read all the inner attributes and notify the derived class about any node found while (reader.Read()) { switch (reader.LocalName) { case ContextSchema.AttributeElement.Attribute: _attributes.Add(new AttributeElementReadWrite(reader, schemaVersion)); break; default: NodeFound(reader); break; } if (reader.LocalName == itemNodeName && reader.NodeType == XmlNodeType.EndElement) { break; } } } else { throw new Exception(Resource.ResourceManager[Resource.MessageKey.exc_invalid_node_name, reader.LocalName]); } }
/// <summary> /// Creates a new instance of the evaluaion context. /// </summary> /// <param name="engine">The engine instance.</param> /// <param name="policyDocument">The policy document instance.</param> /// <param name="contextDocument">The context document instance.</param> public EvaluationContext( EvaluationEngine engine, pol.PolicyDocument policyDocument, ctx.ContextDocument contextDocument ) : this() { ctx.AttributeReadWriteCollection attributes = new ctx.AttributeReadWriteCollection(); foreach( ctx.AttributeElementReadWrite attribute in contextDocument.Request.Resources[0].Attributes ) { attributes.Add( new ctx.AttributeElementReadWrite( attribute ) ); } ctx.ResourceContentElement resourceContent = null; if( contextDocument.Request.Resources[0].ResourceContent != null ) { resourceContent = new ctx.ResourceContentElement( contextDocument.Request.Resources[0].ResourceContent.XmlDocument, contextDocument.Request.Resources[0].ResourceContent.SchemaVersion ); } _engine = engine; _policyDocument = policyDocument; _contextDocument = contextDocument; _currentResource = new ctx.ResourceElementReadWrite( resourceContent, contextDocument.Request.Resources[0].ResourceScopeValue, attributes, contextDocument.Request.Resources[0].SchemaVersion ); }