SPRNET-1213 - Provide ConfigSectionVariableSource support to read <applicationSettings> and <userSettings> elements

This commit is contained in:
markpollack
2009-05-28 00:51:56 +00:00
parent 2a203a7f7c
commit 9c0d6fe821
3 changed files with 41 additions and 4 deletions

View File

@@ -124,10 +124,20 @@ namespace Spring.Objects.Factory.Config
{
variables.Add((NameValueCollection) section);
}
else
{
throw new ArgumentException("Section [" + sectionName +
"] is not handled by the NameValueSectionHandler.");
#if NET_2_0
else if (section is System.Configuration.ClientSettingsSection)
{
System.Configuration.ClientSettingsSection clientSettingsSection = (System.Configuration.ClientSettingsSection)section;
foreach (SettingElement setting in clientSettingsSection.Settings)
{
variables.Add(setting.Name, setting.Value.ValueXml.InnerText);
}
}
#endif
else
{
throw new ArgumentException("Section [" + sectionName +
"] is not handled by the NameValueSectionHandler.");
}
}
}

View File

@@ -65,5 +65,17 @@ namespace Spring.Objects.Factory.Config
// non-existant variable
Assert.IsNull(vs.ResolveVariable("dummy"));
}
#if NET_2_0
[Test]
public void TestVariableResolutionFromApplicationSettingsSchema()
{
ConfigSectionVariableSource vs = new ConfigSectionVariableSource();
vs.SectionName = "applicationSettings/MyApp.Properties.Settings";
Assert.AreEqual("1000", vs.ResolveVariable("maxResults"));
Assert.AreEqual(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\Northwind.mdb;User ID=Admin;Password=;",
vs.ResolveVariable("connection.string"));
}
#endif
}
}

View File

@@ -23,6 +23,10 @@ limitations under the License.
<section name="DaoConfiguration" type="System.Configuration.NameValueSectionHandler"/>
<section name="DatabaseConfiguration" type="System.Configuration.NameValueSectionHandler"/>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="MyApp.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
@@ -164,6 +168,17 @@ limitations under the License.
<add key="connection.string" value="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\Northwind.mdb;User ID=Admin;Password=;"/>
</DatabaseConfiguration>
<applicationSettings>
<MyApp.Properties.Settings>
<setting name="connection.string" serializeAs="String">
<value>Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\Northwind.mdb;User ID=Admin;Password=;</value>
</setting>
<setting name="maxResults" serializeAs="String">
<value>1000</value>
</setting>
</MyApp.Properties.Settings>
</applicationSettings>
<connectionStrings>
<add name="mySqlDataSource" connectionString="mySqlServerConnectionString"/>
<add name="myOracleDataSource" connectionString="myOracleConnectionString" providerName="System.Data.OracleClient"/>