//-----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------
namespace System.IdentityModel.Tokens
{
using System;
using System.Collections.Generic;
using System.IdentityModel.Configuration;
using System.IdentityModel.Selectors;
using System.Linq;
using System.Text;
///
/// A class which manages multiple named .
///
public class SecurityTokenHandlerCollectionManager
{
private Dictionary collections = new Dictionary();
private string serviceName = ConfigurationStrings.DefaultServiceName;
///
/// Initialize an instance of for a given named service.
///
/// A indicating the name of the associated service.
public SecurityTokenHandlerCollectionManager(string serviceName)
{
if (serviceName == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("serviceName");
}
this.serviceName = serviceName;
}
///
/// Initialized with default service configuration.
///
private SecurityTokenHandlerCollectionManager()
: this(ConfigurationStrings.DefaultServiceName)
{
}
///
/// Gets a count of the number of SecurityTokenHandlerCollections in this
/// SecurityTokenHandlerCollectionManager.
///
public int Count
{
get { return this.collections.Count; }
}
///
/// Gets the service name.
///
public string ServiceName
{
get { return this.serviceName; }
}
///
/// Gets an enumeration over the SecurityTokenHandlerCollection list.
///
public IEnumerable SecurityTokenHandlerCollections
{
get
{
return this.collections.Values;
}
}
///
/// The SecurityTokenHandlerCollection for the specified usage.
///
/// The usage name for the SecurityTokenHandlerCollection.
/// A SecurityTokenHandlerCollection
///
/// Behaves like a dictionary in that it will throw an exception if there is no
/// value for the specified key.
///
public SecurityTokenHandlerCollection this[string usage]
{
get
{
// Empty String is valid (Usage.Default)
if (null == usage)
{
throw DiagnosticUtility.ThrowHelperArgumentNullOrEmptyString("usage");
}
return this.collections[usage];
}
set
{
// Empty String is valid (Usage.Default)
if (null == usage)
{
throw DiagnosticUtility.ThrowHelperArgumentNullOrEmptyString("usage");
}
this.collections[usage] = value;
}
}
///
/// No token handlers are created.
///
/// An empty token handler collection manager.
public static SecurityTokenHandlerCollectionManager CreateEmptySecurityTokenHandlerCollectionManager()
{
return new SecurityTokenHandlerCollectionManager(ConfigurationStrings.DefaultConfigurationElementName);
}
///
/// Creates the default set of SecurityTokenHandlers.
///
/// A SecurityTokenHandlerCollectionManager with a default collection of token handlers.
public static SecurityTokenHandlerCollectionManager CreateDefaultSecurityTokenHandlerCollectionManager()
{
SecurityTokenHandlerCollection defaultHandlers = SecurityTokenHandlerCollection.CreateDefaultSecurityTokenHandlerCollection();
SecurityTokenHandlerCollectionManager defaultManager = new SecurityTokenHandlerCollectionManager(ConfigurationStrings.DefaultServiceName);
defaultManager.collections.Clear();
defaultManager.collections.Add(SecurityTokenHandlerCollectionManager.Usage.Default, defaultHandlers);
return defaultManager;
}
///
/// Checks if a SecurityTokenHandlerCollection exists for the given usage.
///
/// A string that represents the usage of the SecurityTokenHandlerCollection.
/// Whether or not a token handler collection exists for the given usage.
public bool ContainsKey(string usage)
{
return this.collections.ContainsKey(usage);
}
///
/// Defines standard collection names used by the framework.
///
public static class Usage
{
///
/// Used to reference the default collection of handlers.
///
public const string Default = "";
///
/// Used to reference a collection of handlers for ActAs element processing.
///
public const string ActAs = "ActAs";
///
/// Used to reference a collection of handlers for OnBehalfOf element processing.
///
public const string OnBehalfOf = "OnBehalfOf";
}
}
}