|
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------
namespace System.ServiceModel.Security
{
using System;
using System.ServiceModel.Diagnostics;
using System.ServiceModel.Channels;
using System.Xml;
using System.Diagnostics;
using System.IdentityModel.Protocols.WSTrust;
/// <summary>
/// Defines a Body Writer that writes out a RequestSecurityToken into an XmlDictionaryWriter.
/// </summary>
public class WSTrustRequestBodyWriter : BodyWriter
{
WSTrustSerializationContext _serializationContext;
System.IdentityModel.Protocols.WSTrust.RequestSecurityToken _requestSecurityToken;
WSTrustRequestSerializer _serializer;
/// <summary>
/// Constructor for the WSTrustRequestBodyWriter.
/// </summary>
/// <param name="requestSecurityToken">The RequestSecurityToken object to be serialized in the outgoing Message.</param>
/// <param name="serializer">Serializer is responsible for writting the requestSecurityToken into a XmlDictionaryWritter.</param>
/// <param name="serializationContext">Context for the serialization.</param>
/// <exception cref="ArgumentNullException">The 'requestSecurityToken' is null.</exception>
/// <exception cref="ArgumentNullException">The 'serializer' is null.</exception>
/// <exception cref="ArgumentNullException">The 'serializationContext' is null.</exception>
public WSTrustRequestBodyWriter(System.IdentityModel.Protocols.WSTrust.RequestSecurityToken requestSecurityToken, WSTrustRequestSerializer serializer, WSTrustSerializationContext serializationContext)
: base(true)
{
if (requestSecurityToken == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("requestSecurityToken");
}
if (serializer == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("serializer");
}
if (serializationContext == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("serializationContext");
}
_requestSecurityToken = requestSecurityToken;
_serializer = serializer;
_serializationContext = serializationContext;
}
/// <summary>
/// Override of the base class method. Serializes the requestSecurityToken to the outgoing stream.
/// </summary>
/// <param name="writer">Writer into which the requestSecurityToken should be written.</param>
protected override void OnWriteBodyContents(XmlDictionaryWriter writer)
{
_serializer.WriteXml(_requestSecurityToken, writer, _serializationContext);
}
}
}
|