//----------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------- namespace System.IdentityModel.Protocols.WSTrust { using System.Xml; /// /// Base class for support of versions of WS-Trust request messages. /// public abstract class WSTrustResponseSerializer { /// /// When overriden in the derived class deserializes the RSTR from the XmlReader to a RequestSecurityTokenResponse object. /// /// XML reader over the RSTR /// Current Serialization context. /// RequestSecurityTokenResponse object if teh deserialization was successful public abstract RequestSecurityTokenResponse ReadXml(XmlReader reader, WSTrustSerializationContext context); /// /// When overridden in the derived class reads a child element inside RSTR. /// /// Reader pointing at an element to read inside the RSTR. /// The RequestSecurityTokenResponse element that is being populated from the reader. /// Current Serialization context. public abstract void ReadXmlElement(XmlReader reader, RequestSecurityTokenResponse requestSecurityTokenResponse, WSTrustSerializationContext context); /// /// When overridden in the derived class writes out the supported elements on the response object. /// /// The response instance /// The writer to write to /// Current Serialization context. public abstract void WriteKnownResponseElement(RequestSecurityTokenResponse requestSecurityTokenResponse, XmlWriter writer, WSTrustSerializationContext context); /// /// When overriden in the derived class serializes the given RequestSecurityTokenResponse into the XmlWriter /// /// RequestSecurityTokenRespone object to be serializes /// XML writer to serialize into /// Current Serialization context. public abstract void WriteXml(RequestSecurityTokenResponse response, XmlWriter writer, WSTrustSerializationContext context); /// /// When overridden in the derived class writes a specific RSTR parameter to the outgoing stream. /// /// Writer to which the RSTR is serialized /// The Local name of the element to be written. /// The value of the element. /// The entire RSTR object that is being serialized. /// Current Serialization context. public abstract void WriteXmlElement(XmlWriter writer, string elementName, object elementValue, RequestSecurityTokenResponse requestSecurityTokenResponse, WSTrustSerializationContext context); /// /// Creates an instance of the RequestSecurityTokenResponse object that this class can Serialize or Deserialize. /// /// Instance of RequestSecurityTokenResponse object public virtual RequestSecurityTokenResponse CreateInstance() { return new RequestSecurityTokenResponse(); } /// /// Validates the RequestSecurityTokenResponse object that has been deserialized. /// /// The RequestSecurityTokenResponse object to Validate. /// An Response for an IssueRequest does not contain the RequestedSecurityToken. public virtual void Validate(RequestSecurityTokenResponse requestSecurityTokenResponse) { if (requestSecurityTokenResponse == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("rstr"); } } /// /// When implemented in the derived class checks if the given reader is positioned at a RequestSecurityTokenResponse element. /// /// The reader to read from. /// 'True' if the reader is positioned at an RSTR element that this serializer can read. public abstract bool CanRead(XmlReader reader); } }