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); }
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(); }
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(); }