public static ChoBaseConfigurationMetaDataInfo GetMetaDataSection(ChoBaseConfigurationElement configElement)
        {
            if (configElement == null)
            {
                return(null);
            }

            Type   configurationMetaDataType = configElement.ConfigurationMetaDataType;
            string configElementPath         = configElement.ConfigElementPath;

            XmlNode node = null;

            if (_rootNode != null && !configElementPath.IsNullOrWhiteSpace())
            {
                node = _rootNode.SelectSingleNode(@"//{0}".FormatString(configElementPath));
            }
            if (node != null)
            {
                XmlAttributeOverrides overrides = new XmlAttributeOverrides();
                XmlAttributes         attr      = new XmlAttributes();
                attr.XmlRoot = new XmlRootAttribute(node.Name);
                overrides.Add(configurationMetaDataType, attr);

                ChoBaseConfigurationMetaDataInfo metaDataInfo = node.ToObject(configurationMetaDataType, overrides) as ChoBaseConfigurationMetaDataInfo;
                return(metaDataInfo);
            }

            //configElement.ForcePersist(true);
            return(null);
        }
示例#2
0
        public override bool Equals(ChoBaseConfigurationMetaDataInfo obj)
        {
            if (object.ReferenceEquals(obj, null))
            {
                return(false);
            }

            if (!(obj is ChoStandardConfigurationMetaDataInfo))
            {
                return(false);
            }

            if (!base.Equals(obj))
            {
                return(false);
            }

            ChoStandardConfigurationMetaDataInfo other = obj as ChoStandardConfigurationMetaDataInfo;

            if (other != null)
            {
                if (BindingMode != other.BindingMode)
                {
                    return(false);
                }

                if (Defaultable != other.Defaultable)
                {
                    return(false);
                }

                if (IgnoreCase != other.IgnoreCase)
                {
                    return(false);
                }

                if (Silent != other.Silent)
                {
                    return(false);
                }

                if (Parameters != other.Parameters)
                {
                    return(false);
                }

                if (ConfigFilePath != other.ConfigFilePath)
                {
                    return(false);
                }

                if (!ChoObject.Equals <ChoConfigurationMetaDataLogInfo>(ConfigurationMetaDataLogInfo, other.ConfigurationMetaDataLogInfo))
                {
                    return(false);
                }
            }

            return(true);
        }
示例#3
0
        public override void Merge(ChoBaseConfigurationMetaDataInfo source)
        {
            base.Merge(source);

            ChoStandardConfigurationMetaDataInfo other = source as ChoStandardConfigurationMetaDataInfo;

            if (other != null)
            {
                ConfigurationMetaDataLogInfo = ChoObject.Merge(ConfigurationMetaDataLogInfo, other.ConfigurationMetaDataLogInfo);
            }
        }
        internal static bool IsMetaDataModified(ChoBaseConfigurationElement configElement)
        {
            if (configElement == null)
            {
                return(false);
            }

            ChoBaseConfigurationMetaDataInfo newConfigurationMetaDataInfo = GetMetaDataSection(configElement);

            return(!ChoObject.Equals <ChoBaseConfigurationMetaDataInfo>(newConfigurationMetaDataInfo, configElement.MetaDataInfo));
        }
示例#5
0
        private void InvokeOverrideConfigurationMetaDataInfo(ChoBaseConfigurationElement configElement)
        {
            ChoBaseConfigurationMetaDataInfo standardConfigurationMetaDataInfo = configElement.MetaDataInfo;
            Type type = configElement.ConfigbObjectType;

            if (standardConfigurationMetaDataInfo == null || type == null)
            {
                return;
            }

            if (configElement.ConfigObject is ChoConfigurableObject)
            {
                ((ChoConfigurableObject)configElement.ConfigObject).InvokeOverrideMetaDataInfo(standardConfigurationMetaDataInfo);
            }
        }
        public static void SetMetaDataSection(ChoBaseConfigurationElement configElement)
        {
            if (configElement == null)
            {
                return;
            }
            if (ChoObject.Equals <ChoBaseConfigurationMetaDataInfo>(configElement.MetaDataInfo, GetMetaDataSection(configElement)))
            {
                return;
            }

            string configElementPath = configElement.ConfigElementPath;
            ChoBaseConfigurationMetaDataInfo configurationMetaDataInfo = configElement.MetaDataInfo;

            configurationMetaDataInfo = ChoObject.Merge <ChoBaseConfigurationMetaDataInfo>(configurationMetaDataInfo, GetDefaultMetaDataInfo(configElement));

            if (configurationMetaDataInfo == null)
            {
                return;
            }

            using (ChoXmlDocument xmlDocument = new ChoXmlDocument(_metaDataFilepath))
            {
                if (configElementPath.IsNullOrEmpty())
                {
                    return;
                }

                XmlNode node = xmlDocument.XmlDocument.SelectSingleNode(configElementPath);
                if (node == null)
                {
                    node = xmlDocument.XmlDocument.MakeXPath(configElementPath);
                }

                if (node != null)
                {
                    ChoXmlDocument.SetOuterXml(node, configurationMetaDataInfo.ToXml());
                    xmlDocument.XmlDocument.InnerXml = ChoXmlDocument.AppendToInnerXml(node, GetPropertyInfos(configElement).ToXml());

                    xmlDocument.Save();
                }
            }
        }
示例#7
0
        protected override void ApplyConfigMetaData(ChoBaseConfigurationMetaDataInfo configurationMetaDataInfo)
        {
            if (configurationMetaDataInfo == null || !(configurationMetaDataInfo is ChoStandardConfigurationMetaDataInfo))
            {
                return;
            }

            ChoStandardConfigurationMetaDataInfo standardConfigurationMetaDataInfo = configurationMetaDataInfo as ChoStandardConfigurationMetaDataInfo;

            BindingMode = standardConfigurationMetaDataInfo.BindingMode;
            Silent      = standardConfigurationMetaDataInfo.Silent;
            Defaultable = standardConfigurationMetaDataInfo.Defaultable;
            IgnoreCase  = standardConfigurationMetaDataInfo.IgnoreCase;
            if (standardConfigurationMetaDataInfo.ConfigurationMetaDataLogInfo != null)
            {
                LogCondition       = standardConfigurationMetaDataInfo.ConfigurationMetaDataLogInfo.LogCondition;
                LogTimeStampFormat = standardConfigurationMetaDataInfo.ConfigurationMetaDataLogInfo.LogTimeStampFormat;
                LogDirectory       = standardConfigurationMetaDataInfo.ConfigurationMetaDataLogInfo.LogDirectory;
                LogFileName        = standardConfigurationMetaDataInfo.ConfigurationMetaDataLogInfo.LogFileName;
            }
        }
示例#8
0
        private ChoBaseConfigurationMetaDataInfo InitDefaultMetaDataInfo(ChoBaseConfigurationElement configElement)
        {
            ChoBaseConfigurationMetaDataInfo defaultMetaDataInfo = ChoConfigurationMetaDataManager.GetDefaultMetaDataInfo(configElement);

            if (defaultMetaDataInfo.ConfigStorageType.IsNullOrEmpty())
            {
                if (DefaultConfigStorage != null)
                {
                    defaultMetaDataInfo.ConfigStorageType = DefaultConfigStorage.GetType().AssemblyQualifiedName;
                }
                else
                {
                    IChoConfigStorage configStorage = ChoConfigStorageManagerSettings.Me.GetDefaultConfigStorage();
                    if (configStorage != null)
                    {
                        defaultMetaDataInfo.ConfigStorageType = configStorage.GetType().AssemblyQualifiedName;
                    }
                }
            }
            return(defaultMetaDataInfo);
        }
 protected abstract void ApplyConfigMetaData(ChoBaseConfigurationMetaDataInfo configurationMetaDataInfo);
示例#10
0
 protected virtual void OverrideMetaDataInfo(ChoBaseConfigurationMetaDataInfo metaDataInfo)
 {
 }
示例#11
0
 internal void InvokeOverrideMetaDataInfo(ChoBaseConfigurationMetaDataInfo metaDataInfo)
 {
     OverrideMetaDataInfo(metaDataInfo);
 }
示例#12
0
        public ChoConfigSection(Type configObjectType, XmlNode node, XmlNode[] contextNodes, ChoBaseConfigurationElement configElement)
            : this()
        {
            _configElement = configElement;

            if (configElement != null)
            {
                //Get and Set MetaDataFileName
                configElement.ConfigurationMetaDataType = ConfigurationMetaDataType;
                IChoConfigStorage attrDefinedConfigStorage = configElement.MetaDataInfo != null ? configElement.MetaDataInfo.ConfigStorage : null;

                ChoBaseConfigurationMetaDataInfo defaultMetaDataInfo = InitDefaultMetaDataInfo(configElement);

                configElement.MetaDataInfo = ChoObject.Merge <ChoBaseConfigurationMetaDataInfo>(ChoConfigurationMetaDataManager.GetMetaDataSection(configElement), defaultMetaDataInfo);
                ConfigStorage = configElement.MetaDataInfo != null && configElement.MetaDataInfo.ConfigStorage != null ?
                                configElement.MetaDataInfo.ConfigStorage : attrDefinedConfigStorage;

                if (ConfigStorage == null)
                {
                    configElement.Log("Missing configuration storage, assigning to configSection default storage.");
                    ConfigStorage = DefaultConfigStorage;
                    if (ConfigStorage == null)
                    {
                        configElement.Log("Missing configuration storage, assigning to system default storage.");
                        ConfigStorage = ChoConfigStorageManagerSettings.Me.GetDefaultConfigStorage();
                    }
                }

                if (ConfigStorage != null)
                {
                    try
                    {
                        CheckValidConfigStoragePassed(ConfigStorage);
                    }
                    catch (ChoFatalApplicationException)
                    {
                        throw;
                    }
                    catch (Exception ex)
                    {
                        if (configElement.Silent)
                        {
                            ConfigElement.Log(ex.Message);
                            ConfigStorage = ChoConfigStorageManagerSettings.Me.GetDefaultConfigStorage();
                            if (ConfigStorage != null)
                            {
                                ConfigElement.Log("Using default [{0}] config storage.".FormatString(ConfigStorage.GetType().FullName));
                            }
                        }
                        else
                        {
                            throw;
                        }
                    }
                }

                if (ConfigStorage == null)
                {
                    throw new ChoConfigurationException("Missing configuration storage.");
                }

                IsMetaDataDefinitionChanged = !ChoObject.Equals <ChoBaseConfigurationMetaDataInfo>(ChoConfigurationMetaDataManager.GetMetaDataSection(configElement), defaultMetaDataInfo);
                configElement.MetaDataInfo.ConfigStorage = ConfigStorage;

                try
                {
                    ConfigData = ConfigStorage.Load(_configElement, node);
                }
                catch (ChoFatalApplicationException)
                {
                    throw;
                }
                catch (Exception ex)
                {
                    _configLoadExceptions.Add(ex);
                }
            }

            //if (ConfigStorage == null)
            //{
            //    try
            //    {
            //        ConfigStorage = DefaultConfigStorage;
            //        if (ConfigStorage == null)
            //            ConfigStorage = ChoConfigStorageManagerSettings.Me.GetDefaultConfigStorage();
            //    }
            //    catch (Exception ex)
            //    {
            //        _configLoadExceptions.Add(ex);
            //    }
            //}

            try
            {
                ConfigurationChangeWatcher = ConfigStorage.ConfigurationChangeWatcher;
                if (ConfigurationChangeWatcher != null)
                {
                    ConfigurationChangeWatcher.StartWatching();
                }
            }
            catch (Exception ex)
            {
                _configLoadExceptions.Add(ex);
            }
        }