示例#1
0
        /// <summary>
        /// Gets a <see cref="IProviderNode"/> whose anme is <paramref name="name"/>
        /// and belongs to the unamed providers group.
        /// </summary>
        /// <param name="providers">
        /// A <see cref="IProvidersNode"/> taht contains a group whose name is
        /// <see cref="string.Empty"/>.
        /// </param>
        /// <param name="name">
        /// The name of the provider to get.
        /// </param>
        /// <returns></returns>
        public static bool GetProviderNode(this IProvidersNode providers,
                                           string name, out IProviderNode provider)
        {
            IProvidersNodeGroup group;

            if (providers.GetProvidersNodeGroup(string.Empty, out group))
            {
                return(group.GetProviderNode(name, out provider));
            }
            provider = default(IProviderNode);
            return(false);
        }
示例#2
0
        /// <summary>
        /// Adds the given <see cref="IProvidersNode"/> object to a empty
        /// <see cref="IProvidersNodeGroup"/> inside the given
        /// <see cref="IProvidersNode"/> object using the given provider name.
        /// </summary>
        /// <param name="nodes">
        /// A <see cref="IProvidersNode"/> object to add the <paramref name="node"/>
        /// </param>
        /// <param name="node">
        /// The <see cref="IProvidersNode"/> object to be added to the
        /// <paramref name="nodes"/>.
        /// </param>
        /// <param name="name">
        /// The name to be associated with the provider node.
        /// </param>
        public static void Add(this IProvidersNode nodes, string name,
                               IProviderNode node)
        {
            IProvidersNodeGroup empty_provider_group;

            if (!nodes.GetProvidersNodeGroup(string.Empty, out empty_provider_group))
            {
                empty_provider_group = new ProvidersNodeGroup();
                nodes.Add(empty_provider_group);
            }
            empty_provider_group.Add(name, node);
        }
        public void ShouldResolveOptionsReferences()
        {
            const string xml_config_file = @"<providers>
    <options name='sql-connection-provider'>
      <option name='connection-string' value='SQL-CONNECTION-STRING'/>
      <option name='schema' value='dbo'/>
    </options>
    <options name=""my-options"">
      <option ref='sql-connection-provider'/>
    </options>

    <provider name=""my-provider"" type="""">
      <options>
        <option name ='my-provider-option'/>
        <option ref='sql-connection-provider'/>
      </options>
    </provider>

    <provider name=""my-provider-two"" type="""">
      <options>
        <option ref='my-options'/>
      </options>
    </provider>
  </providers>";

            var document = new XmlDocument();

            document.LoadXml(xml_config_file);
            var            xml_element    = (XmlElement)document.FirstChild;
            IProvidersNode providers_node = ProvidersNode.Parse(xml_element,
                                                                Path.AbsoluteForApplication(string.Empty));

            Assert.AreEqual(1, providers_node.Count);
            IProviderNode provider = providers_node[string.Empty]["my-provider"];

            Assert.AreEqual(3, provider.Options.Count);
            Assert.AreEqual(true, provider.Options.ContainsKeys("connection-string"));
            Assert.AreEqual(true, provider.Options.ContainsKeys("schema"));
            Assert.AreEqual(true, provider.Options.ContainsKeys("my-provider-option"));

            Assert.AreEqual(1, providers_node.Count);
            provider = providers_node[string.Empty]["my-provider-two"];
            Assert.AreEqual(2, provider.Options.Count);
            Assert.AreEqual(true, provider.Options.ContainsKeys("connection-string"));
            Assert.AreEqual(true, provider.Options.ContainsKeys("schema"));
        }
示例#4
0
 /// <summary>
 /// Gets a <see cref="IProviderNode"/> whose anme is <paramref name="name"/>
 /// and belongs to the unamed providers group.
 /// </summary>
 /// <param name="providers">
 /// A <see cref="IProvidersNode"/> taht contains a group whose name is
 /// <see cref="string.Empty"/>.
 /// </param>
 /// <param name="name">
 /// The name of the provider to get.
 /// </param>
 /// <returns></returns>
 public static IProviderNode GetProviderNode(this IProvidersNode providers,
                                             string name)
 {
     return(providers.GetProvidersNodeGroup(string.Empty).GetProviderNode(name));
 }
示例#5
0
 /// <summary>
 /// Adds a <see cref="IProvidersNode"/> object to a empty
 /// <see cref="IProvidersNodeGroup"/> inside the given
 /// <see cref="IProvidersNode"/> object using the given provider name and
 /// type.
 /// </summary>
 /// <param name="nodes">
 /// The type of the provider to be added.
 /// </param>
 /// <param name="type">
 /// The <see cref="IProvidersNode"/> object to be added to the
 /// <paramref name="nodes"/>.
 /// </param>
 /// <param name="name">
 /// The name to be associated with the provider node.
 /// </param>
 /// <remarks>
 /// This method creates an instance of the <see cref="IProviderNode"/>
 /// representing the given type and added it to the <paramref name="nodes"/>
 /// collection.
 /// </remarks>
 public static void Add(this IProvidersNode nodes, string name, Type type)
 {
     nodes.Add(name, new ProviderNode.Builder(name, type).Build());
 }
示例#6
0
 /// <summary>
 /// Adds the given <see cref="IProvidersNode"/> object to a empty
 /// <see cref="IProvidersNodeGroup"/> inside the given
 /// <see cref="IProvidersNode"/> object.
 /// </summary>
 /// <param name="nodes">
 /// A <see cref="IProvidersNode"/> object to add the <paramref name="node"/>
 /// </param>
 /// <param name="node">
 /// The <see cref="IProvidersNode"/> object to be added to the
 /// <paramref name="nodes"/>.
 /// </param>
 public static void Add(this IProvidersNode nodes, IProviderNode node)
 {
     nodes.Add(node.Name, node);
 }