internal void Persist(bool traceOutput, ChoDictionaryService <string, object> stateInfo) { lock (SyncRoot) { if (ConfigSection == null || ConfigSection.ConfigData == null) { if (_firstTime && _defaultable) { PersistInternal(traceOutput, stateInfo); } else { ChoConfigurationMetaDataManager.SetMetaDataSection(this); } } else if (_persistable) { PersistInternal(traceOutput, stateInfo); } /* * if (_bindingMode == ChoConfigurationBindingMode.OneTime) * { * if (_firstTime) * PersistInternal(traceOutput, stateInfo); * } * else if (!_persistable || (ConfigSection == null || ConfigSection.ConfigData == null)) * { * ChoConfigurationMetaDataManager.SetMetaDataSection(this); * } * else * { * PersistInternal(traceOutput, stateInfo); * } * */ } }
public override void Persist(object data, ChoDictionaryService <string, object> stateInfo) { if (!(data is NameValueCollection)) { throw new ChoConfigurationException("Data object is not NameValueCollection object."); } try { //Write meta-data info ChoConfigurationMetaDataManager.SetMetaDataSection(ConfigElement); } catch (ChoFatalApplicationException) { throw; } catch (Exception ex) { ConfigElement.Log(ex.ToString()); } NameValueCollection nameValueCollection = ((NameValueCollection)data); foreach (string key1 in nameValueCollection.Keys) { if (_configuration.AppSettings.Settings.AllKeys.Contains(key1)) { _configuration.AppSettings.Settings[key1].Value = nameValueCollection[key1]; } else { _configuration.AppSettings.Settings.Add(new KeyValueConfigurationElement(key1, nameValueCollection[key1])); } } _configuration.Save(ConfigurationSaveMode.Modified); }
public override void Persist(object data, ChoDictionaryService <string, object> stateInfo) { ChoXmlDocument.CreateXmlFileIfEmpty(ConfigFilePath); string backupConfigFilePath = String.Format("{0}.{1}", ConfigFilePath, ChoReservedFileExt.Cho); try { //Write meta-data info ChoConfigurationMetaDataManager.SetMetaDataSection(ConfigElement); if (!IsAppConfigFile) { if (File.Exists(backupConfigFilePath)) { File.SetAttributes(backupConfigFilePath, FileAttributes.Archive); } File.Copy(ConfigFilePath, backupConfigFilePath, true); if (File.Exists(backupConfigFilePath)) { File.SetAttributes(backupConfigFilePath, FileAttributes.Hidden); } } } catch (ChoFatalApplicationException) { throw; } catch (Exception ex) { ConfigElement.Log(ex.ToString()); } try { //if seperate config file maintained, make a link in the application configuration if (IsConfigReferenceDataChanged(stateInfo)) { using (ChoXmlDocument xmlDocument = new ChoXmlDocument(ChoGlobalApplicationSettings.Me.ApplicationConfigFilePath)) { XmlNode configNode = xmlDocument.XmlDocument.MakeXPath(ConfigElement.ConfigElementPath); if (configNode != null) { if (!IsAppConfigFile) { string configXml = @"<{0} {1}=""{2}"" {3}=""{4}"" />".FormatString(ConfigSectionName, ChoConfigurationManager.PathToken, UnderlyingConfigFilePath, ChoXmlDocument.CinchoNSToken, ChoXmlDocument.CinchooNSURI); ChoXmlDocument.SetNamespaceAwareOuterXml(configNode, configXml, ChoXmlDocument.CinchooNSURI); } } } } PersistConfigData(data, stateInfo); } catch (ChoFatalApplicationException) { throw; } catch (Exception ex) { ConfigElement.Log(ex.ToString()); if (!IsAppConfigFile) { File.Copy(backupConfigFilePath, ConfigFilePath, true); } } }
public override void Persist(object data, ChoDictionaryService <string, object> stateInfo) { if (!(data is NameValueCollection)) { throw new ChoConfigurationException("Data object is not NameValueCollection object."); } try { //Write meta-data info ChoConfigurationMetaDataManager.SetMetaDataSection(ConfigElement); } catch (ChoFatalApplicationException) { throw; } catch (Exception ex) { ConfigElement.Log(ex.ToString()); } bool saveMainConfig = false; string appSettingsFilePath = this.GetAppSettingsFilePathIfAnySpecified(); if (!appSettingsFilePath.IsNullOrWhiteSpace()) { if (ChoConfigurationManager.GetFullPath(ChoConfigurationManager.ApplicationConfiguration.AppSettings.File) != ChoConfigurationManager.GetFullPath(appSettingsFilePath)) { saveMainConfig = true; ChoConfigurationManager.ApplicationConfiguration.AppSettings.File = appSettingsFilePath; } } NameValueCollection nameValueCollection = ((NameValueCollection)data); if (ChoConfigurationManager.ApplicationConfiguration.AppSettings.File.IsNullOrWhiteSpace()) { foreach (string key1 in nameValueCollection.Keys) { if (ChoConfigurationManager.ApplicationConfiguration.AppSettings.Settings.AllKeys.Contains(key1)) { ChoConfigurationManager.ApplicationConfiguration.AppSettings.Settings[key1].Value = nameValueCollection[key1]; } else { ChoConfigurationManager.ApplicationConfiguration.AppSettings.Settings.Add(new KeyValueConfigurationElement(key1, nameValueCollection[key1])); } } ChoConfigurationManager.ApplicationConfiguration.Save(ConfigurationSaveMode.Modified); } else { if (saveMainConfig) { ChoConfigurationManager.ApplicationConfiguration.Save(ConfigurationSaveMode.Modified); } File.WriteAllText(ChoConfigurationManager.GetFullPath(ChoConfigurationManager.ApplicationConfiguration.AppSettings.File), GetAppSettingsText(nameValueCollection)); } //ConfigurationManager.RefreshSection(APP_SETTINGS_SECTION_NAME); ChoConfigurationManager.Refresh(); }