コード例 #1
0
ファイル: Configuration.cs プロジェクト: ddd-cqrs-es/must
 /// <summary>
 /// Initializes a new instance of the <see cref="Configuration"/> class.
 /// </summary>
 public Configuration(IConfigurationBuilder <IConfiguration> builder)
 {
     properties_   = builder.Properties;
     repositories_ = builder.Repositories;
     providers_    = builder.Providers;
     xml_elements_ = builder.XmlElements;
 }
コード例 #2
0
ファイル: Configuration.cs プロジェクト: ddd-cqrs-es/must
 /// <summary>
 /// Initializes a new instance of the <see cref="Configuration"/> class
 /// that is empty.
 /// </summary>
 public Configuration()
 {
     properties_   = new DictionaryValue();
     repositories_ = new RepositoriesNode();
     providers_    = new ProvidersNode();
     xml_elements_ = new XmlElementsNode();
 }
コード例 #3
0
ファイル: Configuration.cs プロジェクト: ddd-cqrs-es/must
 /// <summary>
 /// Copies the configuration data from the specified
 /// <see cref="Configuration"/> object.
 /// </summary>
 /// <param name="configuration">
 /// A <see cref="Configuration"/> object that contains the
 /// configuration data to be copied.
 /// </param>
 public void CopyFrom(Configuration configuration)
 {
     providers_    = configuration.providers_;
     repositories_ = configuration.repositories_;
     xml_elements_ = configuration.xml_elements_;
     log_level_    = configuration.log_level_;
     properties_   = configuration.properties_;
 }
コード例 #4
0
        /// <summary>
        /// Parses the configuration node using the nohros schema.
        /// </summary>
        /// <param name="element">
        /// A Xml element representing the configuration root node.
        /// </param>
        /// <remarks>
        /// The <paramref name="element"/> does not need to be the nohros
        /// configuration node, but a node with name "nohros" must exists on the
        /// node hierarchy.
        /// </remarks>
        T Parse(XmlElement element)
        {
            XmlElement root_node = GetRootNode(element);

            // the logger is used by some methods above and the level threshold of it
            // could be overloaded by a configuration key. So, we need to do the
            // first logger instantiation here and adjust the threshold level if
            // needed.
            builder.SetLogLevel(GetLogLevel(root_node));

            // parse any internal property
            if (use_dynamic_property_assignment_)
            {
                ParseProperties(element, this);
                ParseProperties(element, builder);
            }

            // parse the know configuration nodes.
            foreach (XmlNode node in root_node.ChildNodes)
            {
                if (node.NodeType == XmlNodeType.Element)
                {
                    string name = node.Name;
                    if (Strings.AreEquals(name, Strings.kRepositoriesNodeName))
                    {
                        builder.SetRepositories(RepositoriesNode.Parse((XmlElement)node,
                                                                       location_));
                    }
                    else if (Strings.AreEquals(name, Strings.kProvidersNodeName))
                    {
                        builder.SetProviders(ProvidersNode.Parse((XmlElement)node,
                                                                 location_));
                    }
                    else if (Strings.AreEquals(name, Strings.kXmlElementsNodeName))
                    {
                        XmlElementsNode xml_elements =
                            XmlElementsNode.Parse((XmlElement)node);

                        // Add the element that was used to configure this class to the
                        // collection of xml elements nodes.
                        xml_elements[Strings.kRootXmlElementName] = element;
                        builder.SetXmlElements(xml_elements);
                    }
                }
            }

            OnParseComplete(this);

            T configuration = CreateConfiguration(builder);

            OnLoadComplete(configuration);

            return(configuration);
        }
コード例 #5
0
        /// <summary>
        /// Parses the specified <see cref="XmlElement"/> element into a
        /// <see cref="RepositoriesNode"/> object.
        /// </summary>
        /// <param name="element">
        /// A Xml element that contains the repositories configuration data.
        /// </param>
        /// <param name="base_directory">
        /// The base directory to use when resolving the repository's location.
        /// </param>
        /// <returns>
        /// A <see cref="RepositoriesNode"/> containing the configured repositories.
        /// </returns>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="element"/> is a <c>null</c> reference.
        /// </exception>
        /// <exception cref="ConfigurationException">
        /// The <paramref name="element"/> contains invalid configuration data.
        /// </exception>
        public static RepositoriesNode Parse(XmlElement element,
                                             string base_directory)
        {
            CheckPreconditions(element, base_directory);

            string           location     = GetLocation(element, base_directory);
            RepositoriesNode repositories = new RepositoriesNode(location);

            foreach (XmlNode node in element.ChildNodes)
            {
                if (node.NodeType == XmlNodeType.Element &&
                    Strings.AreEquals(node.Name, Strings.kRepositoryNodeName))
                {
                    RepositoryNode repository = RepositoryNode.Parse(
                        (XmlElement)node, location);
                    repositories.AddChildNode(repository);
                }
            }
            return(repositories);
        }
コード例 #6
0
ファイル: CommonNodeParser.cs プロジェクト: ddd-cqrs-es/must
        /// <summary>
        /// Creates a instance of the <see cref="CommonNode"/> object by parsing
        /// the given <paramref name="element"/> Xml element.
        /// </summary>
        /// <param name="element">
        /// A  <see cref="XmlElement"/> that contains the common configuration
        /// data.
        /// </param>
        /// <param name="base_directory">
        /// The path to the directory to use as the base directory when resolving
        /// relative paths.
        /// </param>
        /// <returns>
        /// A <see cref="CommonNode"/> containing the common configuration data.
        /// </returns>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="element"/> is a <c>null</c> reference.
        /// </exception>
        /// <exception cref="ConfigurationException">
        /// The <paramref name="element"/> contains invalid configuration data.
        /// </exception>
        /// <remarks>
        /// The <see cref="base_directory"/> is used to resolve the relative paths.
        /// </remarks>
        public static CommonNode Parse(XmlElement element, string base_directory)
        {
            CommonNode common = new CommonNode();

            foreach (XmlNode node in element)
            {
                if (node.NodeType == XmlNodeType.Element)
                {
                    string name = node.Name;
                    if (StringsAreEquals(name, Strings.kRepositoryNodeName))
                    {
                        common.repositories_ = RepositoriesNode.Parse(element,
                                                                      base_directory);
                    }
                    else if (StringsAreEquals(name, Strings.kProvidersNodeName))
                    {
                        common.providers_ = ProvidersNode.Parse(element, base_directory);
                    }
                }
            }
            return(common);
        }
コード例 #7
0
ファイル: Configuration.cs プロジェクト: joethinh/nohros-must
 /// <summary>
 /// Initializes a new instance of the <see cref="Configuration"/> class.
 /// </summary>
 public Configuration(IConfigurationBuilder<IConfiguration> builder) {
   properties_ = builder.Properties;
   repositories_ = builder.Repositories;
   providers_ = builder.Providers;
   xml_elements_ = builder.XmlElements;
 }
コード例 #8
0
ファイル: Configuration.cs プロジェクト: joethinh/nohros-must
 /// <summary>
 /// Initializes a new instance of the <see cref="Configuration"/> class
 /// that is empty.
 /// </summary>
 public Configuration() {
   properties_ = new DictionaryValue();
   repositories_ = new RepositoriesNode();
   providers_ = new ProvidersNode();
   xml_elements_ = new XmlElementsNode();
 }
コード例 #9
0
ファイル: Configuration.cs プロジェクト: joethinh/nohros-must
 /// <summary>
 /// Copies the configuration data from the specified
 /// <see cref="Configuration"/> object.
 /// </summary>
 /// <param name="configuration">
 /// A <see cref="Configuration"/> object that contains the
 /// configuration data to be copied.
 /// </param>
 public void CopyFrom(Configuration configuration) {
   providers_ = configuration.providers_;
   repositories_ = configuration.repositories_;
   xml_elements_ = configuration.xml_elements_;
   log_level_ = configuration.log_level_;
   properties_ = configuration.properties_;
 }