/// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="getParameter"></param>
        /// <param name="restartAppDomainOnChange"></param>
        /// <returns></returns>
        public override T GetConfig <T>(IConfigParameter getParameter, bool restartAppDomainOnChange)
        {
            Check.Argument.IsNotNull("getParameter", getParameter);
            Check.Argument.IsAssignableFrom("getParameter", getParameter, typeof(DotNetConfigGetParameter));

            T config = GetConfigFromCache <T>(getParameter);

            if (config == null)
            {
                lock (this.SyncLock)
                {
                    config = GetConfigFromCache <T>(getParameter);
                    if (config == null)
                    {
                        DotNetConfigGetParameter parameter = getParameter as DotNetConfigGetParameter;
                        Check.Argument.IsTrue(parameter.HasFiles, "getParameter", R.ConfigFileNotSpecified);

                        System.Configuration.Configuration configuration = GetConfiguration(parameter.Files[0]);
                        config = configuration.GetSection(parameter.SectionName) as T;
                        Check.Argument.IsNotNull("getParameter", config, R.DotNetConfigCannotBeResolved, parameter.Files[0], parameter.SectionName);

                        AddConfigToCache(getParameter as IConfigParameter, config);
                        SetupWacher(new DotNetConfigChangeWatcher(parameter, restartAppDomainOnChange));
                    }
                }
            }

            return(config);
        }
Esempio n. 2
0
		public void Initialize(IConfigParameter parameter)
		{
			Verify.ArgumentNotNull(parameter, "parameter");
			Parameter = parameter;
			textBox.Text = parameter.GetValueText();
			// because we cannot edit, we don't want to select the contents
			textBox.Select(0, 0);
		}
Esempio n. 3
0
        /// <summary>
        /// 停止监控。
        /// </summary>
        public void StopWatching(IConfigParameter getParameter)
        {
            IConfigChangeWatcher configWatcher = GetConfigWatcher(getParameter);

            if (configWatcher != null)
            {
                configWatcher.StopWatching();
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 获取某入口参数对应配置的监控。
        /// </summary>
        protected IConfigChangeWatcher GetConfigWatcher(IConfigParameter getParameter)
        {
            Check.Argument.IsNotNull("getParameter", getParameter);

            IConfigChangeWatcher configWatcher = null;

            watcherMappings.TryGetValue(getParameter.GroupName, out configWatcher);
            return(configWatcher);
        }
Esempio n. 5
0
        /// <summary>
        /// 获取配置。
        /// </summary>
        /// <typeparam name="T">配置类型。</typeparam>
        /// <param name="getParameter">获取配置参数。</param>
        /// <param name="restartAppDomainOnChange">当配置改变时重新启动应用程序域。</param>
        /// <returns>配置。</returns>
        public override T GetMergedConfig <T>(IConfigParameter getParameter, bool restartAppDomainOnChange)
        {
            Check.Argument.IsNotNull("getParameter", getParameter);
            Check.Argument.IsAssignableFrom("getParameter", getParameter, typeof(XmlConfigGetParameter));

            T config = GetConfigFromCache <T>(getParameter);

            if (config == null)
            {
                lock (this.SyncLock)
                {
                    config = GetConfigFromCache <T>(getParameter);
                    if (config == null)
                    {
                        config = new T();

                        XmlConfigGetParameter cp = getParameter as XmlConfigGetParameter;
                        if (cp.HasFiles)
                        {
                            FileMergeResult mergeResult = new FileMergeResult(new List <string>(cp.Files));
                            foreach (string file in cp.Files)
                            {
                                try
                                {
                                    T splitConfig = Serializer.XmlSerializer.FromFile <T>(file);
                                    config.Merge(splitConfig);

                                    mergeResult.FilesMerged.Add(file);
                                }
                                catch (Exception ex)
                                {
                                    FileMergeFailReason mergeFailReasion = new FileMergeFailReason();
                                    mergeFailReasion.FileName        = file;
                                    mergeFailReasion.MergeFailReason = ExceptionHelper.GetMessage(ex);
                                    mergeResult.FileMergeFailReasons.Add(mergeFailReasion);
                                }
                            }

                            if (!mergeResult.HasFileMerged)
                            {
                                // Logger.Error
                            }
                            else if (!mergeResult.AllFilesMerged)
                            {
                                //Logger.Warning("Framework.Configuration", "XMLConfigProvider", fileMergeResult.ToString());
                            }

                            AddConfigToCache(getParameter, config);
                            SetupWacher(new XmlConfigChangeWatcher(cp));
                        }
                    }
                }
            }

            return(config);
        }
Esempio n. 6
0
		public void Initialize(IConfigParameter parameter)
		{
			Verify.ArgumentNotNull(parameter, "parameter");
			Parameter = parameter;
			textBox.Text = parameter.GetValueText();
		    if (parameter is PasswordParameter)
		    {
		        textBox.PasswordChar = '*';
		    }
		}
Esempio n. 7
0
        /// <summary>
        /// 从缓存中获取配置信息列表。
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="getParameter"></param>
        /// <returns></returns>
        protected List <T> GetConfigListFromCache <T>(IConfigParameter getParameter) where T : class, new()
        {
            object cachedObj = null;

            if (cachedConfigs.ContainsKey(getParameter.Name))
            {
                cachedObj = cachedConfigs[getParameter.Name];
            }

            return(cachedObj as List <T>);
        }
Esempio n. 8
0
 /// <summary>
 /// 从缓存中移除配置。
 /// </summary>
 /// <param name="getParameter">获取配置入口参数。</param>
 protected void RemoveConfigFromCache(IConfigParameter getParameter)
 {
     if (cachedConfigs.ContainsKey(getParameter.Name))
     {
         lock (synObj)
         {
             if (cachedConfigs.ContainsKey(getParameter.Name))
             {
                 cachedConfigs.Remove(getParameter.Name);
             }
         }
     }
 }
Esempio n. 9
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="getParameter"></param>
        /// <param name="handler"></param>
        public void AddChangeHandler(IConfigParameter getParameter, ConfigChangedEventHandler handler)
        {
            ConfigChangedEventHandler callback = eventHandles[getParameter.GroupName] as ConfigChangedEventHandler;

            if (callback == null)
            {
                lock (eventHandlersLock)
                {
                    callback = eventHandles[getParameter.GroupName] as ConfigChangedEventHandler;
                    if (callback == null)
                    {
                        eventHandles.AddHandler(getParameter.GroupName, handler);
                    }
                }
            }
        }
Esempio n. 10
0
        /// <summary>
        /// 添加配置到缓存中。
        /// </summary>
        /// <param name="getParameter">获取配置入口参数。</param>
        /// <param name="config">要缓存的配置。</param>
        protected void AddConfigToCache(IConfigParameter getParameter, object config)
        {
            string cachedKey = getParameter.Name;
            object cachedObj = null;

            if (!cachedConfigs.TryGetValue(cachedKey, out cachedObj))
            {
                lock (synObj)
                {
                    if (!cachedConfigs.TryGetValue(cachedKey, out cachedObj))
                    {
                        cachedConfigs.Add(cachedKey, config);
                    }
                }
            }
        }
Esempio n. 11
0
		public void Initialize(IConfigParameter parameter)
		{
			Verify.ArgumentNotNull(parameter, "parameter");
			Parameter = parameter;
			TextBox.Text = parameter.GetValueText();
		}
Esempio n. 12
0
 /// <summary>
 /// 获取配置。
 /// </summary>
 /// <typeparam name="T">配置对象类型。</typeparam>
 /// <returns>配置。</returns>
 public static T GetConfig <T>(IConfigParameter para) where T : class, new()
 {
     return(GetConfigSource().GetConfig <T>(para, false));
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="configParameter"></param>
 public ConfigChangeWatcher(IConfigParameter configParameter)
     : this(configParameter, false)
 {
 }
Esempio n. 14
0
 /// <summary>
 /// 获取配置。
 /// </summary>
 /// <typeparam name="T">配置类型。</typeparam>
 /// <param name="getParameter">获取配置参数。</param>
 /// <param name="restartAppDomainOnChange">当配置改变时重新启动应用程序域。</param>
 /// <returns>配置。</returns>
 public virtual List <T> GetConfigList <T>(IConfigParameter getParameter, bool restartAppDomainOnChange) where T : class, new()
 {
     throw new NotSupportedException();
 }
Esempio n. 15
0
 /// <summary>
 /// 获取配置。
 /// </summary>
 /// <typeparam name="T">配置类型。</typeparam>
 /// <param name="getParameter">获取配置参数。</param>
 /// <param name="restartAppDomainOnChange">当配置改变时重新启动应用程序域。</param>
 /// <returns>配置。</returns>
 public virtual T GetMergedConfig <T>(IConfigParameter getParameter, bool restartAppDomainOnChange)
     where T : class, IMergableConfig, new()
 {
     throw new NotImplementedException();
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="configParameter"></param>
 public ConfigChangeWatcher(IConfigParameter configParameter)
     : this(configParameter, false)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ConfigChangedEventArgs"/> class. 
 /// Constructor
 /// </summary>
 /// <param name="getParameter">
 /// </param>
 /// <param name="restartAppDomainOnChange">
 /// </param>
 public ConfigChangedEventArgs(IConfigParameter getParameter, bool restartAppDomainOnChange)
 {
     this.getParameter = getParameter;
     this.restartAppDomainOnChange = restartAppDomainOnChange;
 }
Esempio n. 18
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ConfigChangedEventArgs"/> class.
 /// Constructor
 /// </summary>
 /// <param name="getParameter">
 /// </param>
 /// <param name="restartAppDomainOnChange">
 /// </param>
 public ConfigChangedEventArgs(IConfigParameter getParameter, bool restartAppDomainOnChange)
 {
     this.getParameter             = getParameter;
     this.restartAppDomainOnChange = restartAppDomainOnChange;
 }
Esempio n. 19
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ConfigChangedEventArgs"/> class.
 /// Constructor
 /// </summary>
 /// <param name="getParameter">
 /// </param>
 public ConfigChangedEventArgs(IConfigParameter getParameter)
     : this(getParameter, false)
 {
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="configParameter"></param>
 /// <param name="restartAppDomainOnChange"></param>
 public ConfigChangeWatcher(IConfigParameter configParameter, bool restartAppDomainOnChange)
 {
     this.configParameter = configParameter;
     this.restartAppDomainOnChange = restartAppDomainOnChange;
 }
Esempio n. 21
0
 public bool Apply(IConfigParameter configParameter)
 {
     return configParameter.Name.ToLowerInvariant().Contains(_text) ||
            configParameter.Description.ToLowerInvariant().Contains(_text);
 }
Esempio n. 22
0
        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="getParameter"></param>
        /// <param name="restartAppDomainOnChange"></param>
        /// <returns></returns>
        public override T GetConfig <T>(IConfigParameter getParameter, bool restartAppDomainOnChange)
        {
            Check.Argument.IsNotNull("getParameter", getParameter);
            Check.Argument.IsAssignableFrom("getParameter", getParameter, typeof(XmlConfigGetParameter));

            T config = GetConfigFromCache <T>(getParameter);

            if (config == null)
            {
                lock (this.SyncLock)
                {
                    config = GetConfigFromCache <T>(getParameter);
                    if (config == null)
                    {
                        XmlConfigGetParameter cp = getParameter as XmlConfigGetParameter;
                        if (cp.Files.Length > 0)
                        {
                            if (cp.Files.Length == 1)
                            {
                                try
                                {
                                    config = Serializer.XmlSerializer.FromFile <T>(cp.Files[0]);
                                }
                                catch (Exception ex)
                                {
                                    ConfigThrowHelper.ThrowConfigException(ex, R.ConfigFileNotResolved, cp.Files[0], typeof(T).FullName);
                                }
                            }
                            else
                            {
                                try
                                {
                                    FileMergeResult fileMergeResult = XmlUtils.MergeFiles(new List <string>(cp.Files));
                                    if (!fileMergeResult.AllFilesMerged)
                                    {
                                        //Logger.Warning("Framework.Configuration", "XMLConfigProvider", fileMergeResult.ToString());
                                    }

                                    if (fileMergeResult.HasFileMerged)
                                    {
                                        config = Serializer.XmlSerializer.FromSerializedString <T>(fileMergeResult.FileContentMerged);
                                    }
                                    else
                                    {
                                        //Logger.Error("Framework.Configuration", "XMLConfigProvider", fileMergeResult.ToString());
                                    }
                                }
                                catch (Exception ex)
                                {
                                    ConfigThrowHelper.ThrowConfigException(ex, R.ConfigFileNotResolved, cp.FilePaths, typeof(T).FullName);
                                }
                            }

                            AddConfigToCache(getParameter, config);
                            SetupWacher(new XmlConfigChangeWatcher(cp));
                        }
                    }
                }
            }

            return(config);
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="configParameter"></param>
 /// <param name="restartAppDomainOnChange"></param>
 public ConfigChangeWatcher(IConfigParameter configParameter, bool restartAppDomainOnChange)
 {
     this.configParameter          = configParameter;
     this.restartAppDomainOnChange = restartAppDomainOnChange;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ConfigChangedEventArgs"/> class. 
 /// Constructor
 /// </summary>
 /// <param name="getParameter">
 /// </param>
 public ConfigChangedEventArgs(IConfigParameter getParameter)
     : this(getParameter, false)
 {
 }