/// <summary> /// <para> /// Create <see cref="IAuthorizationMappingProvider"/> with /// <see cref="ConfigurationAPIObjectFactory"/>. /// </para> /// </summary> /// <returns> /// The <see cref="IAuthorizationMappingProvider"/> instance. /// </returns> private static IAuthorizationMappingProvider CreateMapper() { ConfigurationAPIObjectFactory objectFactory = new ConfigurationAPIObjectFactory(_Configuration); return(objectFactory.CreateDefinedObject(AuthorizationMappingProvider) as IAuthorizationMappingProvider); }
/// <summary> /// <para>Build the FinancialSecurityManager object using the given IConfiguration object.</para> /// </summary> /// /// <param name="configuration">the IConfiguration to load configuration.</param> /// <returns>the created FinancialSecurityManager object.</returns> /// /// <exception cref="SelfDocumentingException"> /// Wraps ArgumentNullException if the given argument is null. /// Wraps ConfigurationErrorsException if the configured value is invalid, or any required /// property is missing. /// </exception> public static FinancialSecurityManager BuildFinancialSecurityManager(IConfiguration configuration) { //Declare local variables ISecurityIdParser securityIdParser = null; ConfigurationAPIObjectFactory of = null; string ofDefinitionsKey = null; string securityIdParserKey = null; string[] securityIdTypes = null; string[] securityLookupServiceKeys = null; IDictionary <string, ISecurityLookupService> securityLookupServices = null; bool recursiveLookup = false, referenceLookup = false; ICache cache = null; string securityDataCacheKey = null; ISecurityDataCombiner combiner = null; string securityDataCombinerKey = null; try { Helper.ValidateNotNull(configuration, "configuration"); //Get the key of the nested object definition to use ofDefinitionsKey = GetConfigValue(configuration, "objectfactory_key", true, false); try { //Create the Obejct Factory instance using the nested definition to use. of = new ConfigurationAPIObjectFactory(configuration[ofDefinitionsKey]); } catch (Exception e) { throw new ConfigurationErrorsException( "Unable to create ConfigurationAPIObjectFactory instance from object factory", e); } //Create ISecurityIdParser instance if needed. securityIdParserKey = GetConfigValue(configuration, "security_id_parser_key", false, false); if (securityIdParserKey != null) { try { securityIdParser = (ISecurityIdParser)of.CreateDefinedObject(securityIdParserKey); } catch (Exception e) { throw new ConfigurationErrorsException( "Unable to create ISecurityIdParser instance from object factory", e); } } //Get the security types and the keys for creating their respective ISecurityLookupService instances securityIdTypes = GetConfigArrayValue( configuration, "security_id_types", true, false); securityLookupServiceKeys = GetConfigArrayValue( configuration, "security_lookup_service_keys", true, false); //Length of both must be same if (securityIdTypes.Length != securityLookupServiceKeys.Length) { throw new ConfigurationErrorsException( "Arrays for security_id_types and security_lookup_service_keys must be of same length."); } //Generate dictionary of security types to lookup service mappings. securityLookupServices = new Dictionary <string, ISecurityLookupService>(); for (int i = 0; i < securityIdTypes.Length; i++) { //If any keys are empty, throw exception if (securityIdTypes[i].Trim().Equals(String.Empty) || securityLookupServiceKeys[i].Trim().Equals(String.Empty)) { throw new ConfigurationErrorsException("Arrays for security_id_types and " + "security_lookup_service_keys must not contain empty elements"); } else { try { //Create the lookup service instance from ObjectFactory ISecurityLookupService lookupService = (ISecurityLookupService) of.CreateDefinedObject(securityLookupServiceKeys[i]); //Add type to lookup mapping to dictionary securityLookupServices[securityIdTypes[i]] = lookupService; } catch (Exception e) { throw new ConfigurationErrorsException( "Unable to create ISecurityLookupService instance from object factory", e); } } } //Set recursive_lookup and referenceLookup try { recursiveLookup = bool.Parse(GetConfigValue(configuration, "recursive_lookup", true, false)); referenceLookup = bool.Parse(GetConfigValue(configuration, "reference_lookup", true, false)); } catch (FormatException fe) { throw new ConfigurationErrorsException("Unable to parse value to boolean.", fe); } //Load cache securityDataCacheKey = GetConfigValue(configuration, "security_data_cache_key", true, false); try { cache = (ICache)of.CreateDefinedObject(securityDataCacheKey); } catch (Exception e) { throw new ConfigurationErrorsException( "Unable to create ICache instance from object factory", e); } //Load data combiner securityDataCombinerKey = GetConfigValue(configuration, "security_data_combiner_key", true, false); try { combiner = (ISecurityDataCombiner)of.CreateDefinedObject(securityDataCombinerKey); } catch (Exception e) { throw new ConfigurationErrorsException( "Unable to create ISecurityDataCombiner instance from object factory", e); } //Create and return FinancialSecurityManager instance if (securityIdParser == null) { return(new FinancialSecurityManager( securityLookupServices, combiner, recursiveLookup, referenceLookup, cache)); } else { return(new FinancialSecurityManager( securityIdParser, securityLookupServices, combiner, recursiveLookup, referenceLookup, cache)); } } catch (Exception e) { throw Helper.GetSelfDocumentingException(e, "Unable to build FinancialSecurityManager instance from configuration.", "TopCoder.FinancialService.Utility.FinancialSecurityManagerBuilder.BuildFinancialSecurityManager", new string[0], new object[0], new string[] { "configuration" }, new object[] { configuration }, new string[] { "securityIdParser", "of", "of_definitions_key", "security_id_parser_key", "security_id_types", "security_lookup_service_keys", "securityLookupServices", "recursiveLookup", "referenceLookup", "cache", "securityDataCacheKey", "combiner", "securityDataCombinerKey" }, new object[] { securityIdParser, of, ofDefinitionsKey, securityIdParserKey, securityIdTypes, securityLookupServiceKeys, securityLookupServices, recursiveLookup, referenceLookup, cache, securityDataCacheKey, combiner, securityDataCombinerKey }); } }