public PolicyInjectionSettingsNode Build() { PolicyInjectionSettingsNode node = new PolicyInjectionSettingsNode(); InjectorCollectionNode injectorsNode = new InjectorCollectionNode(); PolicyCollectionNode collectionNode = new PolicyCollectionNode(); node.AddNode(injectorsNode); node.AddNode(collectionNode); foreach (InjectorData injectorData in settings.Injectors) { AddInjector(injectorData, injectorsNode); } foreach (PolicyData policyData in settings.Policies) { PolicyNode policyNode = new PolicyNode(policyData); AddMatchingRules(policyData, policyNode); AddHandlers(policyData, policyNode); collectionNode.AddNode(policyNode); } return(node); }
/// <summary> /// Opens the policy injection configuration from an application configuration file. /// </summary> /// <param name="serviceProvider">The a mechanism for retrieving a service object; that is, an object that provides custom support to other objects.</param> /// <param name="rootNode">The <see cref="ConfigurationApplicationNode"/> of the hierarchy.</param> /// <param name="section">The policy injection configuration section or <see langword="null"/> if no section was found.</param> protected override void OpenCore(IServiceProvider serviceProvider, ConfigurationApplicationNode rootNode, ConfigurationSection section) { if (null != section) { PolicyInjectionSettingsNodeBuilder builder = new PolicyInjectionSettingsNodeBuilder(serviceProvider, (PolicyInjectionSettings)section); PolicyInjectionSettingsNode node = builder.Build(); SetProtectionProvider(section, node); rootNode.AddNode(node); } }
/// <summary> /// Gets a <see cref="ConfigurationSectionInfo"/> object containing the Policy Injection Block's configuration information. /// </summary> /// <param name="serviceProvider">The a mechanism for retrieving a service object; that is, an object that provides custom support to other objects.</param> /// <returns>A <see cref="ConfigurationSectionInfo"/> object containing the Policy Injection Block's configuration information.</returns> protected override ConfigurationSectionInfo GetConfigurationSectionInfo(IServiceProvider serviceProvider) { ConfigurationNode rootNode = ServiceHelper.GetCurrentRootNode(serviceProvider); PolicyInjectionSettingsNode node = null; if (null != rootNode) { node = rootNode.Hierarchy.FindNodeByType(rootNode, typeof(PolicyInjectionSettingsNode)) as PolicyInjectionSettingsNode; } PolicyInjectionSettings settings = null; if (node != null) { PolicyInjectionSettingsBuilder builder = new PolicyInjectionSettingsBuilder(serviceProvider, node); settings = builder.Build(); } string protectionProviderName = GetProtectionProviderName(node); return(new ConfigurationSectionInfo(node, settings, PolicyInjectionSettings.SectionName, protectionProviderName)); }
public PolicyInjectionSettingsBuilder(IServiceProvider serviceProvider, PolicyInjectionSettingsNode node) { this.hierarchy = ServiceHelper.GetCurrentHierarchy(serviceProvider); this.node = node; }