protected virtual XacmlContextStatusCode ReadContextStatusCode(XmlReader reader)
        {
            if (reader == null)
            {
                throw new ArgumentNullException(nameof(reader));
            }

            if (!reader.IsStartElement(XacmlConstants.ElementNames.StatusCode, this.Version.NamespaceContext))
            {
                throw ThrowHelperXml(reader, "XML message is not valid.");
            }

            // Read attributes
            Uri statusCode = this.ReadAttribute <Uri>(reader, XacmlConstants.AttributeNames.Value, isRequered: true);

            XacmlContextStatusCode result = new XacmlContextStatusCode(statusCode);

            if (reader.IsEmptyElement)
            {
                reader.Read();
                return(result);
            }

            reader.ReadStartElement(XacmlConstants.ElementNames.StatusCode, this.Version.NamespaceContext);
            // Read elements
            result.StatusCode = this.ReadOptional(XacmlConstants.ElementNames.StatusCode, this.Version.NamespaceContext, ReadContextStatusCode, reader);

            reader.ReadEndElement();

            return(result);
        }
示例#2
0
        private static void WriteContextStatusCode(XmlWriter writer, XacmlContextStatusCode xacmlContextStatusCode)
        {
            Guard.ArgumentNotNull(writer, nameof(writer));
            Guard.ArgumentNotNull(xacmlContextStatusCode, nameof(xacmlContextStatusCode));

            writer.WriteStartElement(XacmlConstants.Prefixes.Xacml, XacmlConstants.ElementNames.StatusCode, Xacml30Constants.NameSpaces.Policy);

            writer.WriteAttributeString(XacmlConstants.AttributeNames.Value, xacmlContextStatusCode.Value.ToString());

            if (xacmlContextStatusCode.StatusCode != null)
            {
                WriteContextStatusCode(writer, xacmlContextStatusCode.StatusCode);
            }

            writer.WriteEndElement();
        }
示例#3
0
        protected virtual void WriteContextStatusCode(XmlWriter writer, XacmlContextStatusCode xacmlContextStatusCode)
        {
            if (writer == null)
            {
                throw new ArgumentNullException(nameof(writer));
            }

            if (xacmlContextStatusCode == null)
            {
                throw new ArgumentNullException(nameof(xacmlContextStatusCode));
            }

            writer.WriteStartElement(XacmlConstants.Prefixes.Context, XacmlConstants.ElementNames.StatusCode, this.Version.NamespaceContext);

            writer.WriteAttributeString(XacmlConstants.AttributeNames.Value, xacmlContextStatusCode.Value.ToString());

            if (xacmlContextStatusCode.StatusCode != null)
            {
                this.WriteContextStatusCode(writer, xacmlContextStatusCode.StatusCode);
            }

            writer.WriteEndElement();
        }