You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
|
Feb
(5) |
Mar
(9) |
Apr
(9) |
May
(4) |
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(3) |
2008 |
Jan
(11) |
Feb
(6) |
Mar
|
Apr
(16) |
May
(28) |
Jun
(13) |
Jul
(3) |
Aug
(19) |
Sep
(11) |
Oct
(37) |
Nov
(1) |
Dec
(17) |
2009 |
Jan
(16) |
Feb
(6) |
Mar
|
Apr
(6) |
May
(1) |
Jun
(10) |
Jul
(4) |
Aug
(4) |
Sep
(4) |
Oct
(8) |
Nov
(3) |
Dec
(45) |
2010 |
Jan
(8) |
Feb
(21) |
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
From: Steven H. <ste...@gm...> - 2008-10-05 04:20:01
|
Yay! -----Original Message----- From: jer...@us... Sent: Sunday, October 05, 2008 12:04 AM To: str...@li... Subject: [Structuremap-commits] SF.net SVN: structuremap:[175] trunk/Source Revision: 175 http://structuremap.svn.sourceforge.net/structuremap/?rev=175&view=rev Author: jeremydmiller Date: 2008-10-05 04:04:34 +0000 (Sun, 05 Oct 2008) Log Message: ----------- Incorporating patches for Mono support. That's right, I said Mono support Modified Paths: -------------- trunk/Source/HTML/ConstructorAndSetterInjection.htm trunk/Source/StructureMap/Graph/AssemblyScanner.cs trunk/Source/StructureMap/Source/DirectoryXmlMementoSource.cs trunk/Source/StructureMap/Source/XmlFileMementoSource.cs trunk/Source/StructureMap/StructureMapConfiguration.cs trunk/Source/StructureMap.Testing/Graph/SetterInjectionEmittingTester.cs trunk/Source/StructureMap.Testing/Graph/SetterInjectionTester.cs trunk/Source/StructureMap.Testing/Graph/Source/DirectoryXmlMementoSourceTester.cs trunk/Source/StructureMap.Testing/Graph/Source/XmlMementoSourceTester.cs trunk/Source/StructureMap.Testing/StructureMap.Testing.csproj trunk/Source/StructureMap.Testing/TestData/SetterInjectionTesting.xml trunk/Source/StructureMap.sln Modified: trunk/Source/HTML/ConstructorAndSetterInjection.htm =================================================================== --- trunk/Source/HTML/ConstructorAndSetterInjection.htm 2008-10-05 03:29:12 UTC (rev 174) +++ trunk/Source/HTML/ConstructorAndSetterInjection.htm 2008-10-05 04:04:34 UTC (rev 175) @@ -328,7 +328,7 @@ <p>I can direct StructureMap to use these properties in a <Plugin> node for OtherGridColumn.</p> <!-- -{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;??\red0\green0\blue255;\red255\green255\blue255;\red163\green21\blue21;\red255\green0\blue0;\red0\green0\blue0;}??\fs20 \cf1 \tab <\cf3 PluginFamily\cf1 \cf4 Type\cf1 =\cf0 "\cf1 StructureMap.Testing.Widget5.IGridColumn\cf0 "\cf1 \cf4 Assembly\cf1 =\cf0 "\cf1 StructureMap.Testing.Widget5\cf0 "\cf1 \cf4 DefaultKey\cf1 =\cf0 ""\cf1 >\par ??\tab \tab <\cf3 Source\cf1 \cf4 Type\cf1 =\cf0 "\cf1 XmlFile\cf0 "\cf1 \cf4 FilePath\cf1 =\cf0 "\cf1 GridColumnInstances.XML\cf0 "\cf1 \cf4 XPath\cf1 =\cf0 "\cf1 //GridColumns\cf0 "\cf1 \cf4 NodeName\cf1 =\cf0 "\cf1 GridColumn\cf0 "\cf1 />\par ??\tab \tab <\cf3 Plugin\cf1 \cf4 Assembly\cf1 =\cf0 "\cf1 StructureMap.Testing.Widget5\cf0 "\cf1 \cf4 Type\cf1 =\cf0 "\cf1 StructureMap.Testing.Widget5.OtherGridColumn\cf0 "\cf1 \cf4 ConcreteKey\cf1 =\cf0 "\cf1 Other\cf0 "\cf1 >\par ??\tab \tab \tab <\cf3 Setter\cf1 \cf4 Name\cf1 =\cf0 "\cf1 ColumnName\cf0 "\cf1 />\par ??\tab \tab \tab <\cf3 Setter\cf1 \cf4 Name\cf1 =\cf0 "\cf1 FontStyle\cf0 "\cf1 />\par ??\tab \tab \tab <\cf3 Setter\cf1 \cf4 Name\cf1 =\cf0 "\cf1 Rules\cf0 "\cf1 />\par ??\tab \tab \tab <\cf3 Setter\cf1 \cf4 Name\cf1 =\cf0 "\cf1 Widget\cf0 "\cf1 />\par ??\tab \tab \tab <\cf3 Setter\cf1 \cf4 Name\cf1 =\cf0 "\cf1 WrapLines\cf0 "\cf1 />\par ??\tab \tab </\cf3 Plugin\cf1 >\par ??\tab </\cf3 PluginFamily\cf1 >} +{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;??\red0\green0\blue255;\red255\green255\blue255;\red163\green21\blue21;\red255\green0\blue0;\red0\green0\blue0;}??\fs20 \cf1 \tab <\cf3 PluginFamily\cf1 \cf4 Type\cf1 =\cf0 "\cf1 StructureMap.Testing.Widget5.IGridColumn\cf0 "\cf1 \cf4 Assembly\cf1 =\cf0 "\cf1 StructureMap.Testing.Widget5\cf0 "\cf1 \cf4 DefaultKey\cf1 =\cf0 ""\cf1 >\par ??\tab \tab <\cf3 Source\cf1 \cf4 Type\cf1 =\cf0 "\cf1 XmlFile\cf0 "\cf1 \cf4 FilePath\cf1 =\cf0 "\cf1 GridColumnInstances.xml\cf0 "\cf1 \cf4 XPath\cf1 =\cf0 "\cf1 //GridColumns\cf0 "\cf1 \cf4 NodeName\cf1 =\cf0 "\cf1 GridColumn\cf0 "\cf1 />\par ??\tab \tab <\cf3 Plugin\cf1 \cf4 Assembly\cf1 =\cf0 "\cf1 StructureMap.Testing.Widget5\cf0 "\cf1 \cf4 Type\cf1 =\cf0 "\cf1 StructureMap.Testing.Widget5.OtherGridColumn\cf0 "\cf1 \cf4 ConcreteKey\cf1 =\cf0 "\cf1 Other\cf0 "\cf1 >\par ??\tab \tab \tab <\cf3 Setter\cf1 \cf4 Name\cf1 =\cf0 "\cf1 ColumnName\cf0 "\cf1 />\par ??\tab \tab \tab <\cf3 Setter\cf1 \cf4 Name\cf1 =\cf0 "\cf1 FontStyle\cf0 "\cf1 />\par ??\tab \tab \tab <\cf3 Setter\cf1 \cf4 Name\cf1 =\cf0 "\cf1 Rules\cf0 "\cf1 />\par ??\tab \tab \tab <\cf3 Setter\cf1 \cf4 Name\cf1 =\cf0 "\cf1 Widget\cf0 "\cf1 />\par ??\tab \tab \tab <\cf3 Setter\cf1 \cf4 Name\cf1 =\cf0 "\cf1 WrapLines\cf0 "\cf1 />\par ??\tab \tab </\cf3 Plugin\cf1 >\par ??\tab </\cf3 PluginFamily\cf1 >} --> <div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"> <p style="margin: 0px;"> Modified: trunk/Source/StructureMap/Graph/AssemblyScanner.cs =================================================================== --- trunk/Source/StructureMap/Graph/AssemblyScanner.cs 2008-10-05 03:29:12 UTC (rev 174) +++ trunk/Source/StructureMap/Graph/AssemblyScanner.cs 2008-10-05 04:04:34 UTC (rev 175) @@ -149,7 +149,7 @@ private static Assembly findTheCallingAssembly() [The entire original message is not included] |
From: <jer...@us...> - 2008-10-05 04:07:08
|
Revision: 175 http://structuremap.svn.sourceforge.net/structuremap/?rev=175&view=rev Author: jeremydmiller Date: 2008-10-05 04:04:34 +0000 (Sun, 05 Oct 2008) Log Message: ----------- Incorporating patches for Mono support. That's right, I said Mono support Modified Paths: -------------- trunk/Source/HTML/ConstructorAndSetterInjection.htm trunk/Source/StructureMap/Graph/AssemblyScanner.cs trunk/Source/StructureMap/Source/DirectoryXmlMementoSource.cs trunk/Source/StructureMap/Source/XmlFileMementoSource.cs trunk/Source/StructureMap/StructureMapConfiguration.cs trunk/Source/StructureMap.Testing/Graph/SetterInjectionEmittingTester.cs trunk/Source/StructureMap.Testing/Graph/SetterInjectionTester.cs trunk/Source/StructureMap.Testing/Graph/Source/DirectoryXmlMementoSourceTester.cs trunk/Source/StructureMap.Testing/Graph/Source/XmlMementoSourceTester.cs trunk/Source/StructureMap.Testing/StructureMap.Testing.csproj trunk/Source/StructureMap.Testing/TestData/SetterInjectionTesting.xml trunk/Source/StructureMap.sln Modified: trunk/Source/HTML/ConstructorAndSetterInjection.htm =================================================================== --- trunk/Source/HTML/ConstructorAndSetterInjection.htm 2008-10-05 03:29:12 UTC (rev 174) +++ trunk/Source/HTML/ConstructorAndSetterInjection.htm 2008-10-05 04:04:34 UTC (rev 175) @@ -328,7 +328,7 @@ <p>I can direct StructureMap to use these properties in a <Plugin> node for OtherGridColumn.</p> <!-- -{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;??\red0\green0\blue255;\red255\green255\blue255;\red163\green21\blue21;\red255\green0\blue0;\red0\green0\blue0;}??\fs20 \cf1 \tab <\cf3 PluginFamily\cf1 \cf4 Type\cf1 =\cf0 "\cf1 StructureMap.Testing.Widget5.IGridColumn\cf0 "\cf1 \cf4 Assembly\cf1 =\cf0 "\cf1 StructureMap.Testing.Widget5\cf0 "\cf1 \cf4 DefaultKey\cf1 =\cf0 ""\cf1 >\par ??\tab \tab <\cf3 Source\cf1 \cf4 Type\cf1 =\cf0 "\cf1 XmlFile\cf0 "\cf1 \cf4 FilePath\cf1 =\cf0 "\cf1 GridColumnInstances.XML\cf0 "\cf1 \cf4 XPath\cf1 =\cf0 "\cf1 //GridColumns\cf0 "\cf1 \cf4 NodeName\cf1 =\cf0 "\cf1 GridColumn\cf0 "\cf1 />\par ??\tab \tab <\cf3 Plugin\cf1 \cf4 Assembly\cf1 =\cf0 "\cf1 StructureMap.Testing.Widget5\cf0 "\cf1 \cf4 Type\cf1 =\cf0 "\cf1 StructureMap.Testing.Widget5.OtherGridColumn\cf0 "\cf1 \cf4 ConcreteKey\cf1 =\cf0 "\cf1 Other\cf0 "\cf1 >\par ??\tab \tab \tab <\cf3 Setter\cf1 \cf4 Name\cf1 =\cf0 "\cf1 ColumnName\cf0 "\cf1 />\par ??\tab \tab \tab <\cf3 Setter\cf1 \cf4 Name\cf1 =\cf0 "\cf1 FontStyle\cf0 "\cf1 />\par ??\tab \tab \tab <\cf3 Setter\cf1 \cf4 Name\cf1 =\cf0 "\cf1 Rules\cf0 "\cf1 />\par ??\tab \tab \tab <\cf3 Setter\cf1 \cf4 Name\cf1 =\cf0 "\cf1 Widget\cf0 "\cf1 />\par ??\tab \tab \tab <\cf3 Setter\cf1 \cf4 Name\cf1 =\cf0 "\cf1 WrapLines\cf0 "\cf1 />\par ??\tab \tab </\cf3 Plugin\cf1 >\par ??\tab </\cf3 PluginFamily\cf1 >} +{\rtf1\ansi\ansicpg\lang1024\noproof65001\uc1 \deff0{\fonttbl{\f0\fnil\fcharset0\fprq1 Courier New;}}{\colortbl;??\red0\green0\blue255;\red255\green255\blue255;\red163\green21\blue21;\red255\green0\blue0;\red0\green0\blue0;}??\fs20 \cf1 \tab <\cf3 PluginFamily\cf1 \cf4 Type\cf1 =\cf0 "\cf1 StructureMap.Testing.Widget5.IGridColumn\cf0 "\cf1 \cf4 Assembly\cf1 =\cf0 "\cf1 StructureMap.Testing.Widget5\cf0 "\cf1 \cf4 DefaultKey\cf1 =\cf0 ""\cf1 >\par ??\tab \tab <\cf3 Source\cf1 \cf4 Type\cf1 =\cf0 "\cf1 XmlFile\cf0 "\cf1 \cf4 FilePath\cf1 =\cf0 "\cf1 GridColumnInstances.xml\cf0 "\cf1 \cf4 XPath\cf1 =\cf0 "\cf1 //GridColumns\cf0 "\cf1 \cf4 NodeName\cf1 =\cf0 "\cf1 GridColumn\cf0 "\cf1 />\par ??\tab \tab <\cf3 Plugin\cf1 \cf4 Assembly\cf1 =\cf0 "\cf1 StructureMap.Testing.Widget5\cf0 "\cf1 \cf4 Type\cf1 =\cf0 "\cf1 StructureMap.Testing.Widget5.OtherGridColumn\cf0 "\cf1 \cf4 ConcreteKey\cf1 =\cf0 "\cf1 Other\cf0 "\cf1 >\par ??\tab \tab \tab <\cf3 Setter\cf1 \cf4 Name\cf1 =\cf0 "\cf1 ColumnName\cf0 "\cf1 />\par ??\tab \tab \tab <\cf3 Setter\cf1 \cf4 Name\cf1 =\cf0 "\cf1 FontStyle\cf0 "\cf1 />\par ??\tab \tab \tab <\cf3 Setter\cf1 \cf4 Name\cf1 =\cf0 "\cf1 Rules\cf0 "\cf1 />\par ??\tab \tab \tab <\cf3 Setter\cf1 \cf4 Name\cf1 =\cf0 "\cf1 Widget\cf0 "\cf1 />\par ??\tab \tab \tab <\cf3 Setter\cf1 \cf4 Name\cf1 =\cf0 "\cf1 WrapLines\cf0 "\cf1 />\par ??\tab \tab </\cf3 Plugin\cf1 >\par ??\tab </\cf3 PluginFamily\cf1 >} --> <div style="font-family: Courier New; font-size: 10pt; color: black; background: white;"> <p style="margin: 0px;"> Modified: trunk/Source/StructureMap/Graph/AssemblyScanner.cs =================================================================== --- trunk/Source/StructureMap/Graph/AssemblyScanner.cs 2008-10-05 03:29:12 UTC (rev 174) +++ trunk/Source/StructureMap/Graph/AssemblyScanner.cs 2008-10-05 04:04:34 UTC (rev 175) @@ -149,7 +149,7 @@ private static Assembly findTheCallingAssembly() { - var trace = new StackTrace(Thread.CurrentThread, false); + var trace = new StackTrace(false); Assembly thisAssembly = System.Reflection.Assembly.GetExecutingAssembly(); Assembly callingAssembly = null; Modified: trunk/Source/StructureMap/Source/DirectoryXmlMementoSource.cs =================================================================== --- trunk/Source/StructureMap/Source/DirectoryXmlMementoSource.cs 2008-10-05 03:29:12 UTC (rev 174) +++ trunk/Source/StructureMap/Source/DirectoryXmlMementoSource.cs 2008-10-05 04:04:34 UTC (rev 175) @@ -65,20 +65,12 @@ private string resolvePath(string directory) { - string returnValue = string.Empty; - if (!Path.IsPathRooted(directory)) { - returnValue = AppDomain.CurrentDomain.SetupInformation.ApplicationBase; - returnValue += "\\" + directory; - returnValue = returnValue.Replace("\\\\", "\\"); + return Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, directory); } - else - { - returnValue = Path.GetFullPath(directory); - } - return returnValue; + return Path.GetFullPath(directory); } @@ -104,7 +96,7 @@ private string getFilePath(string instanceKey) { - return string.Format("{0}\\{1}.{2}", _directory, instanceKey, _extension); + return Path.Combine(_directory, string.Format("{0}.{1}", instanceKey, _extension)); } protected override InstanceMemento retrieveMemento(string instanceKey) Modified: trunk/Source/StructureMap/Source/XmlFileMementoSource.cs =================================================================== --- trunk/Source/StructureMap/Source/XmlFileMementoSource.cs 2008-10-05 03:29:12 UTC (rev 174) +++ trunk/Source/StructureMap/Source/XmlFileMementoSource.cs 2008-10-05 04:04:34 UTC (rev 175) @@ -81,16 +81,10 @@ // crude work-around for web application problems if (!Path.IsPathRooted(_filePath)) { - string relativePath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase; - relativePath += "\\" + _filePath; - relativePath = relativePath.Replace("\\\\", "\\"); - - return relativePath; + return Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase, _filePath); } - else - { - return _filePath; - } + + return _filePath; } } } \ No newline at end of file Modified: trunk/Source/StructureMap/StructureMapConfiguration.cs =================================================================== --- trunk/Source/StructureMap/StructureMapConfiguration.cs 2008-10-05 03:29:12 UTC (rev 174) +++ trunk/Source/StructureMap/StructureMapConfiguration.cs 2008-10-05 04:04:34 UTC (rev 175) @@ -105,7 +105,8 @@ if (!File.Exists(configPath)) { - configPath = Path.Combine(basePath, @"..\" + CONFIG_FILE_NAME); + configPath = Path.Combine(basePath, ".."); + configPath = Path.Combine(configPath, CONFIG_FILE_NAME); } } Modified: trunk/Source/StructureMap.Testing/Graph/SetterInjectionEmittingTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/SetterInjectionEmittingTester.cs 2008-10-05 03:29:12 UTC (rev 174) +++ trunk/Source/StructureMap.Testing/Graph/SetterInjectionEmittingTester.cs 2008-10-05 04:04:34 UTC (rev 175) @@ -49,7 +49,7 @@ </PluginFamily> <PluginFamily Type='StructureMap.Testing.Widget5.IGridColumn' Assembly='StructureMap.Testing.Widget5' DefaultKey=''> - <Source Type='XmlFile' FilePath='GridColumnInstances.XML' XPath='//GridColumns' NodeName='GridColumn'/> + <Source Type='XmlFile' FilePath='GridColumnInstances.xml' XPath='//GridColumns' NodeName='GridColumn'/> <Plugin Assembly='StructureMap.Testing.Widget5' Type='StructureMap.Testing.Widget5.OtherGridColumn' ConcreteKey='Other'> <Setter Name='ColumnName' /> <Setter Name='FontStyle' /> Modified: trunk/Source/StructureMap.Testing/Graph/SetterInjectionTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/SetterInjectionTester.cs 2008-10-05 03:29:12 UTC (rev 174) +++ trunk/Source/StructureMap.Testing/Graph/SetterInjectionTester.cs 2008-10-05 04:04:34 UTC (rev 175) @@ -47,7 +47,7 @@ </PluginFamily> <PluginFamily Type='StructureMap.Testing.Widget5.IGridColumn' Assembly='StructureMap.Testing.Widget5' DefaultKey=''> - <Source Type='XmlFile' FilePath='GridColumnInstances.XML' XPath='//GridColumns' NodeName='GridColumn'/> + <Source Type='XmlFile' FilePath='GridColumnInstances.xml' XPath='//GridColumns' NodeName='GridColumn'/> <Plugin Assembly='StructureMap.Testing.Widget5' Type='StructureMap.Testing.Widget5.OtherGridColumn' ConcreteKey='Other'> <Setter Name='ColumnName' /> <Setter Name='FontStyle' /> Modified: trunk/Source/StructureMap.Testing/Graph/Source/DirectoryXmlMementoSourceTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/Source/DirectoryXmlMementoSourceTester.cs 2008-10-05 03:29:12 UTC (rev 174) +++ trunk/Source/StructureMap.Testing/Graph/Source/DirectoryXmlMementoSourceTester.cs 2008-10-05 04:04:34 UTC (rev 175) @@ -23,9 +23,9 @@ string instance3 = "<Instance Key=\"Bigger\" Type=\"GreaterThan\"><Property Name=\"Attribute\" Value=\"MyDad\" /><Property Name=\"Value\" Value=\"10\" /></Instance>"; - writeFile(instance1, @"MementoDirectory\Red.xml"); - writeFile(instance2, @"MementoDirectory\Blue.xml"); - writeFile(instance3, @"MementoDirectory\Bigger.xml"); + writeFile(instance1, Path.Combine("MementoDirectory", "Red.xml")); + writeFile(instance2, Path.Combine("MementoDirectory", "Blue.xml")); + writeFile(instance3, Path.Combine("MementoDirectory", "Bigger.xml")); _source = new DirectoryXmlMementoSource("MementoDirectory", "xml", XmlMementoStyle.NodeNormalized); } Modified: trunk/Source/StructureMap.Testing/Graph/Source/XmlMementoSourceTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/Source/XmlMementoSourceTester.cs 2008-10-05 03:29:12 UTC (rev 174) +++ trunk/Source/StructureMap.Testing/Graph/Source/XmlMementoSourceTester.cs 2008-10-05 04:04:34 UTC (rev 175) @@ -12,8 +12,9 @@ [SetUp] public void SetUp() { - DataMother.WriteDocument("RuleSource.xml"); - source = new XmlFileMementoSource("RuleSource.XML", "", "Rule"); + var theFileName = "RuleSource.xml"; + DataMother.WriteDocument(theFileName); + source = new XmlFileMementoSource(theFileName, "", "Rule"); } #endregion Modified: trunk/Source/StructureMap.Testing/StructureMap.Testing.csproj =================================================================== --- trunk/Source/StructureMap.Testing/StructureMap.Testing.csproj 2008-10-05 03:29:12 UTC (rev 174) +++ trunk/Source/StructureMap.Testing/StructureMap.Testing.csproj 2008-10-05 04:04:34 UTC (rev 175) @@ -121,10 +121,6 @@ <Project>{0ED1B206-A1C9-4A52-BA87-3BA416C8725C}</Project> <Name>StructureMap.AutoMocking</Name> </ProjectReference> - <ProjectReference Include="..\StructureMap.DataAccess\StructureMap.DataAccess.csproj"> - <Project>{DB798C07-0C82-4298-8BAA-D702CF96C28E}</Project> - <Name>StructureMap.DataAccess</Name> - </ProjectReference> <ProjectReference Include="..\StructureMap.Testing.GenericWidgets\StructureMap.Testing.GenericWidgets.csproj"> <Project>{C205EA4C-4CD0-4221-A3CB-AFD835F0B263}</Project> <Name>StructureMap.Testing.GenericWidgets</Name> @@ -284,38 +280,6 @@ <SubType>Code</SubType> </Compile> <Compile Include="Graph\TypeFindingTester.cs" /> - <Compile Include="DataAccess\CommandCollectionTester.cs" /> - <Compile Include="DataAccess\CommandFactoryTester.cs" /> - <Compile Include="DataAccess\Commands\ParameterizedQueryFilterTester.cs" /> - <Compile Include="DataAccess\Commands\StoredProcedureCommandTester.cs" /> - <Compile Include="DataAccess\Commands\TemplatedQueryFilterTester.cs" /> - <Compile Include="DataAccess\Commands\TemplatedQueryTester.cs" /> - <Compile Include="DataAccess\DataSessionTester.cs" /> - <Compile Include="DataAccess\DataSetMapping\ReaderToColumnMapTester.cs" /> - <Compile Include="DataAccess\DataSetMapping\ReaderToTableMapperTester.cs" /> - <Compile Include="DataAccess\DataSetMapping\YesNoReaderToColumnMapTester.cs" /> - <Compile Include="DataAccess\Debugging.cs" /> - <Compile Include="DataAccess\ExecutionStates\AutoCommitExecutionStateTester.cs" /> - <Compile Include="DataAccess\ExecutionStates\TransactionalExecutionStateTester.cs" /> - <Compile Include="DataAccess\JSON\ArrayTester.cs" /> - <Compile Include="DataAccess\JSON\FieldTester.cs" /> - <Compile Include="DataAccess\JSON\ObjectTester.cs" /> - <Compile Include="DataAccess\JSON\PropertyTester.cs" /> - <Compile Include="DataAccess\MSSQL\MSSQLDatabaseEngineTester.cs" /> - <Compile Include="DataAccess\ObjectMother.cs" /> - <Compile Include="DataAccess\Parameterization\ParameterizedCommandBuilderTester.cs" /> - <Compile Include="DataAccess\Parameterization\ParameterTemplateTester.cs" /> - <Compile Include="DataAccess\Parameters\TemplateParameterTester.cs" /> - <Compile Include="DataAccess\ReaderSourceCollectionTester.cs" /> - <Compile Include="DataAccess\StubbedCommand.cs" /> - <Compile Include="DataAccess\StubbedReaderSource.cs" /> - <Compile Include="DataAccess\TemplatedCommandTester.cs" /> - <Compile Include="DataAccess\Tools\Mocks\CommandExpectationTester.cs" /> - <Compile Include="DataAccess\Tools\Mocks\MockCommandTester.cs" /> - <Compile Include="DataAccess\Tools\Mocks\MockDataSessionTester.cs" /> - <Compile Include="DataAccess\Tools\Mocks\MockReaderSourceTester.cs" /> - <Compile Include="DataAccess\Tools\Mocks\ParameterListTester.cs" /> - <Compile Include="DataAccess\Tools\TableDataReaderTester.cs" /> <Compile Include="Diagnostics\IntegrationTester.cs" /> <Compile Include="Diagnostics\TextReportWriterSmokeTester.cs" /> <Compile Include="GenericsAcceptanceTester.cs" /> Modified: trunk/Source/StructureMap.Testing/TestData/SetterInjectionTesting.xml =================================================================== --- trunk/Source/StructureMap.Testing/TestData/SetterInjectionTesting.xml 2008-10-05 03:29:12 UTC (rev 174) +++ trunk/Source/StructureMap.Testing/TestData/SetterInjectionTesting.xml 2008-10-05 04:04:34 UTC (rev 175) @@ -22,7 +22,7 @@ </PluginFamily> <PluginFamily Type="StructureMap.Testing.Widget5.IGridColumn" Assembly="StructureMap.Testing.Widget5" DefaultKey=""> - <Source Type="XmlFile" FilePath="GridColumnInstances.XML" XPath="//GridColumns" NodeName="GridColumn"/> + <Source Type="XmlFile" FilePath="GridColumnInstances.xml" XPath="//GridColumns" NodeName="GridColumn"/> <Plugin Assembly="StructureMap.Testing.Widget5" Type="StructureMap.Testing.Widget5.OtherGridColumn" ConcreteKey="Other"> <Setter Name="ColumnName" /> <Setter Name="FontStyle" /> Modified: trunk/Source/StructureMap.sln =================================================================== --- trunk/Source/StructureMap.sln 2008-10-05 03:29:12 UTC (rev 174) +++ trunk/Source/StructureMap.sln 2008-10-05 04:04:34 UTC (rev 175) @@ -46,8 +46,6 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StructureMap.Testing.GenericWidgets", "StructureMap.Testing.GenericWidgets\StructureMap.Testing.GenericWidgets.csproj", "{C205EA4C-4CD0-4221-A3CB-AFD835F0B263}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StructureMap.DataAccess", "StructureMap.DataAccess\StructureMap.DataAccess.csproj", "{DB798C07-0C82-4298-8BAA-D702CF96C28E}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StructureMap.AutoMocking", "StructureMap.AutoMocking\StructureMap.AutoMocking.csproj", "{0ED1B206-A1C9-4A52-BA87-3BA416C8725C}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StructureMapDoctor", "StructureMapDoctor\StructureMapDoctor.csproj", "{9048635D-A2CE-4387-A4F5-9BB1CFF04703}" @@ -202,21 +200,6 @@ {C205EA4C-4CD0-4221-A3CB-AFD835F0B263}.Release|Any CPU.Build.0 = Release|Any CPU {C205EA4C-4CD0-4221-A3CB-AFD835F0B263}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {C205EA4C-4CD0-4221-A3CB-AFD835F0B263}.Release|Mixed Platforms.Build.0 = Release|Any CPU - {DB798C07-0C82-4298-8BAA-D702CF96C28E}.Build|.NET.ActiveCfg = Release|Any CPU - {DB798C07-0C82-4298-8BAA-D702CF96C28E}.Build|Any CPU.ActiveCfg = Release|Any CPU - {DB798C07-0C82-4298-8BAA-D702CF96C28E}.Build|Any CPU.Build.0 = Release|Any CPU - {DB798C07-0C82-4298-8BAA-D702CF96C28E}.Build|Mixed Platforms.ActiveCfg = Release|Any CPU - {DB798C07-0C82-4298-8BAA-D702CF96C28E}.Build|Mixed Platforms.Build.0 = Release|Any CPU - {DB798C07-0C82-4298-8BAA-D702CF96C28E}.Debug|.NET.ActiveCfg = Debug|Any CPU - {DB798C07-0C82-4298-8BAA-D702CF96C28E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DB798C07-0C82-4298-8BAA-D702CF96C28E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DB798C07-0C82-4298-8BAA-D702CF96C28E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {DB798C07-0C82-4298-8BAA-D702CF96C28E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU - {DB798C07-0C82-4298-8BAA-D702CF96C28E}.Release|.NET.ActiveCfg = Release|Any CPU - {DB798C07-0C82-4298-8BAA-D702CF96C28E}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DB798C07-0C82-4298-8BAA-D702CF96C28E}.Release|Any CPU.Build.0 = Release|Any CPU - {DB798C07-0C82-4298-8BAA-D702CF96C28E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU - {DB798C07-0C82-4298-8BAA-D702CF96C28E}.Release|Mixed Platforms.Build.0 = Release|Any CPU {0ED1B206-A1C9-4A52-BA87-3BA416C8725C}.Build|.NET.ActiveCfg = Release|Any CPU {0ED1B206-A1C9-4A52-BA87-3BA416C8725C}.Build|Any CPU.ActiveCfg = Release|Any CPU {0ED1B206-A1C9-4A52-BA87-3BA416C8725C}.Build|Any CPU.Build.0 = Release|Any CPU This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jer...@us...> - 2008-10-05 03:33:33
|
Revision: 174 http://structuremap.svn.sourceforge.net/structuremap/?rev=174&view=rev Author: jeremydmiller Date: 2008-10-05 03:29:12 +0000 (Sun, 05 Oct 2008) Log Message: ----------- convenience method for configuring Profiles Modified Paths: -------------- trunk/Source/StructureMap/Configuration/DSL/Expressions/ProfileExpression.cs trunk/Source/StructureMap/Configuration/DSL/Registry.cs trunk/Source/StructureMap/Pipeline/ConfiguredInstance.Expressions.cs trunk/Source/StructureMap.Testing/Configuration/DSL/ProfileExpressionTester.cs trunk/Source/StructureMap.Testing/ObjectFactoryInitializeTester.cs Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/ProfileExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/ProfileExpression.cs 2008-10-05 03:02:08 UTC (rev 173) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/ProfileExpression.cs 2008-10-05 03:29:12 UTC (rev 174) @@ -3,6 +3,8 @@ namespace StructureMap.Configuration.DSL.Expressions { + + /// <summary> /// Expression class to help define a runtime Profile /// </summary> @@ -28,6 +30,17 @@ return new InstanceDefaultExpression<T>(this); } + public IsExpression<T> Type<T>() + { + return new InstanceExpression<T>(instance => + { + _registry.addExpression(graph => + { + graph.SetDefault(_profileName, typeof(T), instance); + }); + }); + } + /// <summary> /// Use statement to define the Profile defaults for a Generic type /// </summary> Modified: trunk/Source/StructureMap/Configuration/DSL/Registry.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Registry.cs 2008-10-05 03:02:08 UTC (rev 173) +++ trunk/Source/StructureMap/Configuration/DSL/Registry.cs 2008-10-05 03:29:12 UTC (rev 174) @@ -121,6 +121,12 @@ return expression; } + public void CreateProfile(string profileName, Action<ProfileExpression> action) + { + var expression = new ProfileExpression(profileName, this); + action(expression); + } + public static bool IsPublicRegistry(Type type) { if (!typeof (Registry).IsAssignableFrom(type)) Modified: trunk/Source/StructureMap/Pipeline/ConfiguredInstance.Expressions.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/ConfiguredInstance.Expressions.cs 2008-10-05 03:02:08 UTC (rev 173) +++ trunk/Source/StructureMap/Pipeline/ConfiguredInstance.Expressions.cs 2008-10-05 03:29:12 UTC (rev 174) @@ -89,6 +89,16 @@ return child; } + public ChildInstanceExpression CtorDependency<CONSTRUCTORARGUMENTTYPE>(string propertyName) + { + return Child(propertyName); + } + + public ChildInstanceExpression SetterDependency<CONSTRUCTORARGUMENTTYPE>(string propertyName) + { + return Child(propertyName); + } + /// <summary> /// Start the definition of a primitive argument to a constructor argument /// </summary> @@ -99,6 +109,11 @@ return new PropertyExpression<ConfiguredInstance>(this, propertyName); } + public PropertyExpression<ConfiguredInstance> WithCtorArg(string propertyName) + { + return new PropertyExpression<ConfiguredInstance>(this, propertyName); + } + #region Nested type: ChildArrayExpression public class ChildArrayExpression Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/ProfileExpressionTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/DSL/ProfileExpressionTester.cs 2008-10-05 03:02:08 UTC (rev 173) +++ trunk/Source/StructureMap.Testing/Configuration/DSL/ProfileExpressionTester.cs 2008-10-05 03:29:12 UTC (rev 174) @@ -34,7 +34,28 @@ Assert.IsInstanceOfType(typeof (DefaultRule), manager.GetInstance<Rule>()); } + [Test] + public void Add_default_instance_by_lambda2() + { + string theProfileName = "something"; + + IContainer manager = new Container(registry => + { + registry.CreateProfile(theProfileName, x => + { + x.Type<IWidget>().Is.ConstructedBy(() => new AWidget()); + x.Type<Rule>().Is.ConstructedBy(() => new DefaultRule()); + }); + }); + + manager.SetDefaultsToProfile(theProfileName); + + Assert.IsInstanceOfType(typeof(AWidget), manager.GetInstance<IWidget>()); + Assert.IsInstanceOfType(typeof(DefaultRule), manager.GetInstance<Rule>()); + } + + [Test] public void Add_default_instance_by_prototype() { string theProfileName = "something"; Modified: trunk/Source/StructureMap.Testing/ObjectFactoryInitializeTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/ObjectFactoryInitializeTester.cs 2008-10-05 03:02:08 UTC (rev 173) +++ trunk/Source/StructureMap.Testing/ObjectFactoryInitializeTester.cs 2008-10-05 03:29:12 UTC (rev 174) @@ -1,10 +1,22 @@ using NUnit.Framework; +using StructureMap.Configuration.DSL; using StructureMap.Testing.GenericWidgets; using StructureMap.Testing.TestData; +using StructureMap.Testing.Widget; using StructureMap.Testing.Widget3; +using StructureMap.Testing.Widget5; namespace StructureMap.Testing { + public class InitializeRegistry : Registry + { + public InitializeRegistry() + { + InstanceOf<IWidget>().Is.OfConcreteType<ColorWidget>().WithCtorArg("color").EqualTo("Green").WithName( + "Green"); + } + } + [TestFixture] public class ObjectFactoryInitializeTester { @@ -23,6 +35,18 @@ [Test] + public void Add_a_registry_by_generic_signature() + { + ObjectFactory.Initialize(x => + { + x.IgnoreStructureMapConfig = true; + x.AddRegistry<InitializeRegistry>(); + }); + + ObjectFactory.GetNamedInstance<IWidget>("Green").ShouldBeOfType<ColorWidget>().Color.ShouldEqual("Green"); + } + + [Test] public void StructureMap_functions_without_StructureMapconfig_file_in_the_default_mode() { DataMother.RemoveStructureMapConfig(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jer...@us...> - 2008-10-05 03:23:12
|
Revision: 173 http://structuremap.svn.sourceforge.net/structuremap/?rev=173&view=rev Author: jeremydmiller Date: 2008-10-05 03:02:08 +0000 (Sun, 05 Oct 2008) Log Message: ----------- One big honking ReSharper cleanup Modified Paths: -------------- trunk/Source/StructureMap/BuildSession.cs trunk/Source/StructureMap/ConfigurationExpression.cs trunk/Source/StructureMap/Container.cs trunk/Source/StructureMap/Diagnostics/WhatDoIHaveWriter.cs trunk/Source/StructureMap/Emitting/Parameters/Methods.cs trunk/Source/StructureMap/ErrorMessages.cs trunk/Source/StructureMap/ExplicitArgsExpression.cs trunk/Source/StructureMap/IBootstrapper.cs trunk/Source/StructureMap/IContainer.cs trunk/Source/StructureMap/InstanceBuilder.cs trunk/Source/StructureMap/InstanceBuilderList.cs trunk/Source/StructureMap/InstanceCache.cs trunk/Source/StructureMap/InstanceFactory.cs trunk/Source/StructureMap/InstanceMemento.cs trunk/Source/StructureMap/MementoSource.cs trunk/Source/StructureMap/MemoryInstanceMemento.cs trunk/Source/StructureMap/Model.cs trunk/Source/StructureMap/ObjectFactory.cs trunk/Source/StructureMap/PipelineGraph.cs trunk/Source/StructureMap/PluginGraphBuilder.cs trunk/Source/StructureMap/Properties/AssemblyInfo.cs trunk/Source/StructureMap/ReflectionHelper.cs trunk/Source/StructureMap/StructureMapConfiguration.cs trunk/Source/StructureMap.Testing/AlternativeConfigurationTester.cs trunk/Source/StructureMap.Testing/AssemblyInfo.cs trunk/Source/StructureMap.Testing/Attributes/PluginFamilyAttributeTester.cs trunk/Source/StructureMap.Testing/BuildSessionTester.cs trunk/Source/StructureMap.Testing/Configuration/ConfigurationParserBuilderTester.cs trunk/Source/StructureMap.Testing/Configuration/ConfigurationParserTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/AddInstanceTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/ConstructorExpressionTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/CreatePluginFamilyTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/DeepInstanceTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/GenericFamilyExpressionTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/InjectArrayTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/InstanceExpressionTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/InterceptAllInstancesOfPluginTypeTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/InterceptorTesting.cs trunk/Source/StructureMap.Testing/Configuration/DSL/RegistryIntegratedTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/RegistryTester.cs trunk/Source/StructureMap.Testing/Configuration/DefaultInstanceNodeTester.cs trunk/Source/StructureMap.Testing/Configuration/DictionaryAndArrayArgumentTester.cs trunk/Source/StructureMap.Testing/Configuration/FamilyParserTester.cs trunk/Source/StructureMap.Testing/Configuration/InlineInstanceDefinitionInProfileAndMachineNodesTester.cs trunk/Source/StructureMap.Testing/Configuration/PrimitiveArrayReaderTester.cs trunk/Source/StructureMap.Testing/Configuration/ProfileBuilderTester.cs trunk/Source/StructureMap.Testing/Configuration/ShortcuttedInstanceNodeTester.cs trunk/Source/StructureMap.Testing/DataAccess/CommandCollectionTester.cs trunk/Source/StructureMap.Testing/DataAccess/CommandFactoryTester.cs trunk/Source/StructureMap.Testing/DataAccess/Commands/ParameterizedQueryFilterTester.cs trunk/Source/StructureMap.Testing/DataAccess/DataSessionTester.cs trunk/Source/StructureMap.Testing/DataAccess/DataSetMapping/ReaderToColumnMapTester.cs trunk/Source/StructureMap.Testing/DataAccess/DataSetMapping/ReaderToTableMapperTester.cs trunk/Source/StructureMap.Testing/DataAccess/Debugging.cs trunk/Source/StructureMap.Testing/DataAccess/ExecutionStates/AutoCommitExecutionStateTester.cs trunk/Source/StructureMap.Testing/DataAccess/ExecutionStates/TransactionalExecutionStateTester.cs trunk/Source/StructureMap.Testing/DataAccess/JSON/ArrayTester.cs trunk/Source/StructureMap.Testing/DataAccess/JSON/FieldTester.cs trunk/Source/StructureMap.Testing/DataAccess/JSON/ObjectTester.cs trunk/Source/StructureMap.Testing/DataAccess/MSSQL/MSSQLDatabaseEngineTester.cs trunk/Source/StructureMap.Testing/DataAccess/Parameterization/ParameterTemplateTester.cs trunk/Source/StructureMap.Testing/DataAccess/Parameterization/ParameterizedCommandBuilderTester.cs trunk/Source/StructureMap.Testing/DataAccess/Parameters/TemplateParameterTester.cs trunk/Source/StructureMap.Testing/DataAccess/ReaderSourceCollectionTester.cs trunk/Source/StructureMap.Testing/DataAccess/StubbedCommand.cs trunk/Source/StructureMap.Testing/DataAccess/StubbedReaderSource.cs trunk/Source/StructureMap.Testing/DataAccess/TemplatedCommandTester.cs trunk/Source/StructureMap.Testing/DataAccess/Tools/Mocks/CommandExpectationTester.cs trunk/Source/StructureMap.Testing/DataAccess/Tools/Mocks/MockCommandTester.cs trunk/Source/StructureMap.Testing/DataAccess/Tools/Mocks/MockDataSessionTester.cs trunk/Source/StructureMap.Testing/DataAccess/Tools/Mocks/MockReaderSourceTester.cs trunk/Source/StructureMap.Testing/DataAccess/Tools/Mocks/ParameterListTester.cs trunk/Source/StructureMap.Testing/DataAccess/Tools/TableDataReaderTester.cs trunk/Source/StructureMap.Testing/Diagnostics/TextReportWriterSmokeTester.cs trunk/Source/StructureMap.Testing/Diagnostics/WriterExtensions.cs trunk/Source/StructureMap.Testing/Examples.cs trunk/Source/StructureMap.Testing/GenericsIntegrationTester.cs trunk/Source/StructureMap.Testing/Graph/ArrayConstructorTester.cs trunk/Source/StructureMap.Testing/Graph/AssemblyScannerTester.cs trunk/Source/StructureMap.Testing/Graph/ContainerTester.cs trunk/Source/StructureMap.Testing/Graph/DefaultConventionScanningTester.cs trunk/Source/StructureMap.Testing/Graph/DynamicInjectionTester.cs trunk/Source/StructureMap.Testing/Graph/EmittingTester.cs trunk/Source/StructureMap.Testing/Graph/EnumerationTester.cs trunk/Source/StructureMap.Testing/Graph/ExceptionHandling/StructureMapExceptionTester.cs trunk/Source/StructureMap.Testing/Graph/ExplicitArgumentTester.cs trunk/Source/StructureMap.Testing/Graph/FullStackFacadeTester.cs trunk/Source/StructureMap.Testing/Graph/GenericsPluginGraphTester.cs trunk/Source/StructureMap.Testing/Graph/ImplicitDefaultTest.cs trunk/Source/StructureMap.Testing/Graph/Interceptors/CompoundInterceptorTester.cs trunk/Source/StructureMap.Testing/Graph/Interceptors/InterceptorLibraryTester.cs trunk/Source/StructureMap.Testing/Graph/Interceptors/TypeInterceptionTester.cs trunk/Source/StructureMap.Testing/Graph/PluginFamilyMergeTester.cs trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs trunk/Source/StructureMap.Testing/Graph/PluginGraphTester.cs trunk/Source/StructureMap.Testing/Graph/PluginTester.cs trunk/Source/StructureMap.Testing/Graph/SetterInjectionEmittingTester.cs trunk/Source/StructureMap.Testing/Graph/SetterInjectionTester.cs trunk/Source/StructureMap.Testing/Graph/Source/DirectoryXmlMementoSourceTester.cs trunk/Source/StructureMap.Testing/Graph/Source/XmlAttributeInstanceMementoTester.cs trunk/Source/StructureMap.Testing/Graph/Source/XmlInstanceMementoTester.cs trunk/Source/StructureMap.Testing/Graph/Source/XmlTemplaterTester.cs trunk/Source/StructureMap.Testing/Graph/TypeFindingTester.cs trunk/Source/StructureMap.Testing/Graph/TypePathTester.cs trunk/Source/StructureMap.Testing/ImplicitPluginFromPluggedTypeAttributeTester.cs trunk/Source/StructureMap.Testing/InstanceBuilderListTester.cs trunk/Source/StructureMap.Testing/InstanceMementoInstanceCreationTester.cs trunk/Source/StructureMap.Testing/MementoTester.cs trunk/Source/StructureMap.Testing/ModelQueryTester.cs trunk/Source/StructureMap.Testing/ObjectFactoryInitializeTester.cs trunk/Source/StructureMap.Testing/ObjectFactoryTester.cs trunk/Source/StructureMap.Testing/Pipeline/BuildStackTester.cs trunk/Source/StructureMap.Testing/Pipeline/BuildStrategiesTester.cs trunk/Source/StructureMap.Testing/Pipeline/ConstructorInstanceTester.cs trunk/Source/StructureMap.Testing/Pipeline/DefaultInstanceTester.cs trunk/Source/StructureMap.Testing/Pipeline/InstanceTester.cs trunk/Source/StructureMap.Testing/Pipeline/LiteralInstanceTester.cs trunk/Source/StructureMap.Testing/Pipeline/OptionalSetterInjectionTester.cs trunk/Source/StructureMap.Testing/Pipeline/ProfileManagerMergeTester.cs trunk/Source/StructureMap.Testing/Pipeline/ProfileManagerTester.cs trunk/Source/StructureMap.Testing/Pipeline/ProfileTester.cs trunk/Source/StructureMap.Testing/Pipeline/PrototypeInstanceTester.cs trunk/Source/StructureMap.Testing/Pipeline/ReferencedInstanceTester.cs trunk/Source/StructureMap.Testing/Pipeline/SerializedInstanceTester.cs trunk/Source/StructureMap.Testing/Pipeline/SmartInstanceTester.cs trunk/Source/StructureMap.Testing/Pipeline/StubBuildSession.cs trunk/Source/StructureMap.Testing/Pipeline/ThreadLocalStoragePolicyTester.cs trunk/Source/StructureMap.Testing/PipelineGraphTester.cs trunk/Source/StructureMap.Testing/SpecificationExtensions.cs trunk/Source/StructureMap.Testing/StructureMapConfigurationDefensiveChecksTester.cs trunk/Source/StructureMap.Testing/StructureMapConfigurationTester.cs trunk/Source/StructureMap.Testing/TestData/DataMother.cs trunk/Source/StructureMap.Testing/TestUtility.cs trunk/Source/StructureMap.Testing/XmlWriting/ElementChecker.cs Removed Paths: ------------- trunk/Source/StructureMap/StructureMap.ndoc Modified: trunk/Source/StructureMap/BuildSession.cs =================================================================== --- trunk/Source/StructureMap/BuildSession.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/BuildSession.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -1,6 +1,5 @@ using System; using System.Collections; -using System.Collections.Generic; using StructureMap.Graph; using StructureMap.Interceptors; using StructureMap.Pipeline; @@ -10,20 +9,18 @@ { public interface IContext { - T GetInstance<T>(); - - BuildStack BuildStack { get; } Type ParentType { get; } + T GetInstance<T>(); } public class BuildSession : IContext { - private readonly InterceptorLibrary _interceptorLibrary; - private readonly PipelineGraph _pipelineGraph; + private readonly BuildStack _buildStack = new BuildStack(); private readonly InstanceCache _cache = new InstanceCache(); private readonly Cache<Type, object> _defaults; - private readonly BuildStack _buildStack = new BuildStack(); + private readonly InterceptorLibrary _interceptorLibrary; + private readonly PipelineGraph _pipelineGraph; public BuildSession(PipelineGraph pipelineGraph, InterceptorLibrary interceptorLibrary) { @@ -46,12 +43,10 @@ public BuildSession(PluginGraph graph) : this(new PipelineGraph(graph), graph.InterceptorLibrary) { - } public BuildSession() : this(new PluginGraph()) { - } @@ -60,6 +55,25 @@ get { return _pipelineGraph; } } + #region IContext Members + + public BuildStack BuildStack + { + get { return _buildStack; } + } + + public Type ParentType + { + get { return _buildStack.Parent.ConcreteType; } + } + + T IContext.GetInstance<T>() + { + return (T) CreateInstance(typeof (T)); + } + + #endregion + public virtual object CreateInstance(Type pluginType, string name) { Instance instance = forType(pluginType).FindInstance(name); @@ -74,7 +88,7 @@ public virtual object CreateInstance(Type pluginType, Instance instance) { object result = _cache.Get(pluginType, instance); - + if (result == null) { result = forType(pluginType).Build(this, instance); @@ -107,7 +121,7 @@ object arrayValue = forType(pluginType).Build(this, instance); array.SetValue(arrayValue, i); - } + } } return array; @@ -129,25 +143,10 @@ _defaults.Store(pluginType, defaultObject); } - public BuildStack BuildStack - { - get { return _buildStack; } - } - public Type ParentType - { - get { return _buildStack.Parent.ConcreteType; } - } - - private IInstanceFactory forType(Type pluginType) { return _pipelineGraph.ForType(pluginType); } - - T IContext.GetInstance<T>() - { - return (T) CreateInstance(typeof (T)); - } } } \ No newline at end of file Modified: trunk/Source/StructureMap/ConfigurationExpression.cs =================================================================== --- trunk/Source/StructureMap/ConfigurationExpression.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/ConfigurationExpression.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -10,8 +10,8 @@ public class ConfigurationExpression : Registry { protected readonly GraphLog _log = new GraphLog(); - private readonly List<Registry> _registries = new List<Registry>(); protected readonly ConfigurationParserBuilder _parserBuilder; + private readonly List<Registry> _registries = new List<Registry>(); internal ConfigurationExpression() { @@ -20,9 +20,13 @@ _parserBuilder.PullConfigurationFromAppConfig = false; _registries.Add(this); - } + public bool IncludeConfigurationFromConfigFile + { + set { _parserBuilder.UseAndEnforceExistenceOfDefaultFile = value; } + } + public void AddRegistry<T>() where T : Registry, new() { AddRegistry(new T()); @@ -43,19 +47,10 @@ _parserBuilder.IncludeNode(node, "Xml configuration"); } - public bool IncludeConfigurationFromConfigFile - { - set - { - _parserBuilder.UseAndEnforceExistenceOfDefaultFile = value; - } - - } - internal PluginGraph BuildGraph() { - var parsers = _parserBuilder.GetParsers(); - PluginGraphBuilder builder = new PluginGraphBuilder(parsers, _registries.ToArray(), _log); + ConfigurationParser[] parsers = _parserBuilder.GetParsers(); + var builder = new PluginGraphBuilder(parsers, _registries.ToArray(), _log); return builder.Build(); } Modified: trunk/Source/StructureMap/Container.cs =================================================================== --- trunk/Source/StructureMap/Container.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/Container.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -1,8 +1,6 @@ using System; using System.Collections; using System.Collections.Generic; -using System.Diagnostics; -using System.Text; using StructureMap.Configuration.DSL; using StructureMap.Diagnostics; using StructureMap.Exceptions; @@ -18,13 +16,13 @@ public class Container : TypeRules, IContainer { private InterceptorLibrary _interceptorLibrary; + private Model _model; private PipelineGraph _pipelineGraph; private PluginGraph _pluginGraph; - private Model _model; public Container(Action<ConfigurationExpression> action) { - ConfigurationExpression expression = new ConfigurationExpression(); + var expression = new ConfigurationExpression(); action(expression); construct(expression.BuildGraph()); @@ -38,11 +36,6 @@ { } - public PluginGraph PluginGraph - { - get { return _pluginGraph; } - } - /// <summary> /// Constructor to create an Container /// </summary> @@ -54,24 +47,6 @@ construct(pluginGraph); } - private void construct(PluginGraph pluginGraph) - { - _interceptorLibrary = pluginGraph.InterceptorLibrary; - - if (!pluginGraph.IsSealed) - { - pluginGraph.Seal(); - } - - _pluginGraph = pluginGraph; - pluginGraph.Log.AssertFailures(); - - _pipelineGraph = new PipelineGraph(pluginGraph); - _model = new Model(_pipelineGraph); - - PluginCache.Compile(); - } - protected MissingFactoryFunction onMissingFactory { set { _pipelineGraph.OnMissingFactory = value; } @@ -79,6 +54,11 @@ #region IContainer Members + public PluginGraph PluginGraph + { + get { return _pluginGraph; } + } + public IModel Model { get { return _model; } @@ -96,7 +76,7 @@ public PLUGINTYPE GetInstance<PLUGINTYPE>(ExplicitArguments args) { - return (PLUGINTYPE) GetInstance(typeof(PLUGINTYPE), args); + return (PLUGINTYPE) GetInstance(typeof (PLUGINTYPE), args); } public object GetInstance(Type type, ExplicitArguments args) @@ -148,17 +128,6 @@ return getListOfTypeWithSession<T>(session); } - private IList<T> getListOfTypeWithSession<T>(BuildSession session) - { - List<T> list = new List<T>(); - foreach (T instance in forType(typeof (T)).GetAllInstances(session)) - { - list.Add(instance); - } - - return list; - } - public void SetDefaultsToProfile(string profile) { _pipelineGraph.CurrentProfile = profile; @@ -176,8 +145,6 @@ } - - /// <summary> /// Creates a new object instance of the requested type /// </summary> @@ -205,20 +172,10 @@ /// Sets the default instance for the PluginType /// </summary> /// <param name="pluginType"></param> - /// <param name="instance"></param> - public void Inject(Type pluginType, Instance instance) - { - _pipelineGraph.SetDefault(pluginType, instance); - } - - /// <summary> - /// Sets the default instance for the PluginType - /// </summary> - /// <param name="pluginType"></param> /// <param name="instanceKey"></param> public void SetDefault(Type pluginType, string instanceKey) { - ReferencedInstance reference = new ReferencedInstance(instanceKey); + var reference = new ReferencedInstance(instanceKey); _pipelineGraph.SetDefault(pluginType, reference); } @@ -229,12 +186,12 @@ public void SetDefault<T>(Instance instance) { - SetDefault(typeof(T), instance); + SetDefault(typeof (T), instance); } public void SetDefault<PLUGINTYPE, CONCRETETYPE>() where CONCRETETYPE : PLUGINTYPE { - SetDefault<PLUGINTYPE>(new ConfiguredInstance(typeof(CONCRETETYPE))); + SetDefault<PLUGINTYPE>(new ConfiguredInstance(typeof (CONCRETETYPE))); } @@ -251,7 +208,7 @@ throw new StructureMapException(230, type.FullName); } - Plugin plugin = new Plugin(type); + var plugin = new Plugin(type); if (!plugin.CanBeAutoFilled) { throw new StructureMapException(230, type.FullName); @@ -275,7 +232,7 @@ } - LiteralInstance instance = new LiteralInstance(stub); + var instance = new LiteralInstance(stub); _pipelineGraph.SetDefault(pluginType, instance); } @@ -288,7 +245,7 @@ { lock (this) { - ConfigurationExpression registry = new ConfigurationExpression(); + var registry = new ConfigurationExpression(); configure(registry); PluginGraph graph = registry.Build(); @@ -302,13 +259,13 @@ public string WhatDoIHave() { - WhatDoIHaveWriter writer = new WhatDoIHaveWriter(_pipelineGraph); + var writer = new WhatDoIHaveWriter(_pipelineGraph); return writer.GetText(); } public ExplicitArgsExpression With<T>(T arg) { - return new ExplicitArgsExpression(this).With<T>(arg); + return new ExplicitArgsExpression(this).With(arg); } public IExplicitProperty With(string argName) @@ -318,7 +275,7 @@ public void AssertConfigurationIsValid() { - ValidationBuildSession session = new ValidationBuildSession(_pipelineGraph, _interceptorLibrary); + var session = new ValidationBuildSession(_pipelineGraph, _interceptorLibrary); session.PerformValidations(); if (!session.Success) @@ -327,10 +284,52 @@ } } + public void EjectAllInstancesOf<T>() + { + _pipelineGraph.EjectAllInstancesOf<T>(); + } - #endregion + private void construct(PluginGraph pluginGraph) + { + _interceptorLibrary = pluginGraph.InterceptorLibrary; + + if (!pluginGraph.IsSealed) + { + pluginGraph.Seal(); + } + + _pluginGraph = pluginGraph; + pluginGraph.Log.AssertFailures(); + + _pipelineGraph = new PipelineGraph(pluginGraph); + _model = new Model(_pipelineGraph); + + PluginCache.Compile(); + } + + private IList<T> getListOfTypeWithSession<T>(BuildSession session) + { + var list = new List<T>(); + foreach (T instance in forType(typeof (T)).GetAllInstances(session)) + { + list.Add(instance); + } + + return list; + } + + /// <summary> + /// Sets the default instance for the PluginType + /// </summary> + /// <param name="pluginType"></param> + /// <param name="instance"></param> + public void Inject(Type pluginType, Instance instance) + { + _pipelineGraph.SetDefault(pluginType, instance); + } + private BuildSession withNewSession() { return new BuildSession(_pipelineGraph, _interceptorLibrary); @@ -341,10 +340,5 @@ { return _pipelineGraph.ForType(type); } - - public void EjectAllInstancesOf<T>() - { - _pipelineGraph.EjectAllInstancesOf<T>(); - } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Diagnostics/WhatDoIHaveWriter.cs =================================================================== --- trunk/Source/StructureMap/Diagnostics/WhatDoIHaveWriter.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/Diagnostics/WhatDoIHaveWriter.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -67,7 +67,8 @@ _writer.AddDivider('-'); var contents = new[] { - pluginType.PluginType.AssemblyQualifiedName ?? pluginType.PluginType.Name, string.Empty, + pluginType.PluginType.AssemblyQualifiedName ?? pluginType.PluginType.Name, + string.Empty, string.Empty }; Modified: trunk/Source/StructureMap/Emitting/Parameters/Methods.cs =================================================================== --- trunk/Source/StructureMap/Emitting/Parameters/Methods.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/Emitting/Parameters/Methods.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -19,7 +19,8 @@ null, new[] { - typeof (Type), typeof (string), typeof (bool) + typeof (Type), typeof (string), + typeof (bool) }, null); public static MethodInfo GET_CHILD = Modified: trunk/Source/StructureMap/ErrorMessages.cs =================================================================== --- trunk/Source/StructureMap/ErrorMessages.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/ErrorMessages.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -1,7 +1,5 @@ using System; -using System.Collections.Generic; using System.Resources; -using System.Text; namespace StructureMap { @@ -14,7 +12,7 @@ for (int i = 0; i < args.Length; i++) { object arg = args[i]; - Type type = arg as Type; + var type = arg as Type; if (type != null) { args[i] = type.AssemblyQualifiedName; @@ -32,8 +30,8 @@ private static string getMessage(int errorCode) { - ResourceManager resources = new ResourceManager(typeof(StructureMapException)); + var resources = new ResourceManager(typeof (StructureMapException)); return resources.GetString(errorCode.ToString()); } } -} +} \ No newline at end of file Modified: trunk/Source/StructureMap/ExplicitArgsExpression.cs =================================================================== --- trunk/Source/StructureMap/ExplicitArgsExpression.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/ExplicitArgsExpression.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -38,7 +38,7 @@ /// <returns></returns> public ExplicitArgsExpression With<T>(T arg) { - _args.Set<T>(arg); + _args.Set(arg); return this; } Modified: trunk/Source/StructureMap/IBootstrapper.cs =================================================================== --- trunk/Source/StructureMap/IBootstrapper.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/IBootstrapper.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -1,11 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Text; - namespace StructureMap { public interface IBootstrapper { void BootstrapStructureMap(); } -} +} \ No newline at end of file Modified: trunk/Source/StructureMap/IContainer.cs =================================================================== --- trunk/Source/StructureMap/IContainer.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/IContainer.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -1,7 +1,6 @@ using System; using System.Collections; using System.Collections.Generic; -using StructureMap.Configuration.DSL; using StructureMap.Graph; using StructureMap.Pipeline; @@ -10,15 +9,16 @@ public interface IContainer { IModel Model { get; } + PluginGraph PluginGraph { get; } T GetInstance<T>(string instanceKey); T GetInstance<T>(); T FillDependencies<T>(); object FillDependencies(Type type); - + IList<T> GetAllInstances<T>(); - + T GetInstance<T>(Instance instance); IList GetAllInstances(Type type); @@ -68,7 +68,6 @@ IExplicitProperty With(string argName); void AssertConfigurationIsValid(); object GetInstance(Type type, ExplicitArguments args); - PluginGraph PluginGraph { get; } void EjectAllInstancesOf<T>(); } } \ No newline at end of file Modified: trunk/Source/StructureMap/InstanceBuilder.cs =================================================================== --- trunk/Source/StructureMap/InstanceBuilder.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/InstanceBuilder.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -11,9 +11,7 @@ { private Container _manager; - public InstanceBuilder() - { - } + public InstanceBuilder(){} public abstract Type PluggedType { get; } Modified: trunk/Source/StructureMap/InstanceBuilderList.cs =================================================================== --- trunk/Source/StructureMap/InstanceBuilderList.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/InstanceBuilderList.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -7,9 +7,9 @@ { public class InstanceBuilderList { + private readonly Dictionary<string, Type> _aliases = new Dictionary<string, Type>(); private readonly Dictionary<Type, InstanceBuilder> _builders = new Dictionary<Type, InstanceBuilder>(); private readonly Type _pluginType; - private readonly Dictionary<string, Type> _aliases = new Dictionary<string, Type>(); public InstanceBuilderList(Type pluginType, IEnumerable<Plugin> plugins) @@ -44,7 +44,7 @@ // Add a missing PluggedType if we can if (TypeRules.CanBeCast(_pluginType, pluggedType)) { - Plugin plugin = new Plugin(pluggedType); + var plugin = new Plugin(pluggedType); processPlugin(plugin); return _builders[pluggedType]; @@ -66,7 +66,7 @@ private void processPlugin(Plugin plugin) { - processPlugins(new Plugin[] { plugin }); + processPlugins(new[] {plugin}); } private void processPlugins(IEnumerable<Plugin> plugins) @@ -90,7 +90,7 @@ private List<InstanceBuilder> createInstanceBuilders(IEnumerable<Plugin> plugins) { - List<Plugin> list = new List<Plugin>(); + var list = new List<Plugin>(); foreach (Plugin plugin in plugins) { if (!_builders.ContainsKey(plugin.PluggedType)) @@ -99,13 +99,13 @@ } } - InstanceBuilderAssembly builderAssembly = new InstanceBuilderAssembly(list); + var builderAssembly = new InstanceBuilderAssembly(list); return builderAssembly.Compile(); } public void Add(Plugin plugin) { - Add(new Plugin[] {plugin}); + Add(new[] {plugin}); } public void Add(IEnumerable<Plugin> plugins) Modified: trunk/Source/StructureMap/InstanceCache.cs =================================================================== --- trunk/Source/StructureMap/InstanceCache.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/InstanceCache.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -6,7 +6,8 @@ { internal class InstanceCache { - private Dictionary<Type, Dictionary<Instance, object>> _objects = new Dictionary<Type, Dictionary<Instance, object>>(); + private readonly Dictionary<Type, Dictionary<Instance, object>> _objects = + new Dictionary<Type, Dictionary<Instance, object>>(); private Dictionary<Instance, object> getCache(Type type) { @@ -16,7 +17,7 @@ } else { - Dictionary<Instance, object> cache = new Dictionary<Instance, object>(); + var cache = new Dictionary<Instance, object>(); _objects.Add(type, cache); return cache; } Modified: trunk/Source/StructureMap/InstanceFactory.cs =================================================================== --- trunk/Source/StructureMap/InstanceFactory.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/InstanceFactory.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -56,10 +56,10 @@ public static InstanceFactory CreateFactoryForType(Type concreteType, ProfileManager profileManager) { - PluginFamily family = new PluginFamily(concreteType); + var family = new PluginFamily(concreteType); family.Seal(); - InstanceFactory factory = new InstanceFactory(family); + var factory = new InstanceFactory(family); Instance instance = family.GetDefaultInstance(); if (instance != null) @@ -134,8 +134,6 @@ return _instances.Retrieve(name); } - #endregion - public void ImportFrom(PluginFamily family) { family.EachInstance(instance => _instances.Fill(instance.Name, instance)); @@ -145,5 +143,7 @@ { _instances.Clear(); } + + #endregion } } \ No newline at end of file Modified: trunk/Source/StructureMap/InstanceMemento.cs =================================================================== --- trunk/Source/StructureMap/InstanceMemento.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/InstanceMemento.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -84,8 +84,8 @@ public virtual Plugin FindPlugin(PluginFamily family) { - Plugin plugin = getPluginByType(family) ?? family.FindPlugin(innerConcreteKey ?? string.Empty) ?? - family.FindPlugin(Plugin.DEFAULT); + Plugin plugin = getPluginByType(family) ?? family.FindPlugin(innerConcreteKey ?? string.Empty) ?? + family.FindPlugin(Plugin.DEFAULT); if (plugin == null) { @@ -120,7 +120,6 @@ try { returnValue = getPropertyValue(Key); - } catch (Exception ex) { @@ -144,7 +143,6 @@ protected abstract string getPropertyValue(string Key); - /// <summary> /// Returns the named child InstanceMemento /// </summary> @@ -229,7 +227,5 @@ return new ConfiguredInstance(this, pluginGraph, pluginType); } - - } } \ No newline at end of file Modified: trunk/Source/StructureMap/MementoSource.cs =================================================================== --- trunk/Source/StructureMap/MementoSource.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/MementoSource.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -13,14 +13,11 @@ [PluginFamily] public abstract class MementoSource { + private readonly Dictionary<string, InstanceMemento> _externalMementos = + new Dictionary<string, InstanceMemento>(); + private InstanceMemento _defaultMemento; - private Dictionary<string, InstanceMemento> _externalMementos = new Dictionary<string, InstanceMemento>(); - private PluginFamily _family; - protected MementoSource() : base() - { - } - public InstanceMemento DefaultMemento { get { return _defaultMemento; } @@ -40,11 +37,7 @@ /// </summary> public abstract string Description { get; } - public PluginFamily Family - { - get { return _family; } - set { _family = value; } - } + public PluginFamily Family { get; set; } /// <summary> /// Retrieves the named InstanceMemento @@ -115,7 +108,7 @@ /// <returns></returns> public InstanceMemento[] GetAllMementos() { - ArrayList list = new ArrayList(); + var list = new ArrayList(); list.AddRange(fetchInternalMementos()); list.AddRange(_externalMementos.Values); Modified: trunk/Source/StructureMap/MemoryInstanceMemento.cs =================================================================== --- trunk/Source/StructureMap/MemoryInstanceMemento.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/MemoryInstanceMemento.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -18,7 +18,7 @@ /// <returns></returns> public static MemoryInstanceMemento CreateReferencedInstanceMemento(string referenceKey) { - MemoryInstanceMemento memento = new MemoryInstanceMemento(); + var memento = new MemoryInstanceMemento(); memento._referenceKey = referenceKey; memento._isReference = true; @@ -32,7 +32,7 @@ /// <returns></returns> public static MemoryInstanceMemento CreateDefaultInstanceMemento() { - MemoryInstanceMemento memento = new MemoryInstanceMemento(); + var memento = new MemoryInstanceMemento(); memento._referenceKey = string.Empty; memento._isReference = true; Modified: trunk/Source/StructureMap/Model.cs =================================================================== --- trunk/Source/StructureMap/Model.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/Model.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -8,9 +8,9 @@ { public interface IModel { + IEnumerable<PluginTypeConfiguration> PluginTypes { get; } bool HasDefaultImplementationFor(Type pluginType); bool HasDefaultImplementationFor<T>(); - IEnumerable<PluginTypeConfiguration> PluginTypes { get; } IEnumerable<IInstance> InstancesOf(Type pluginType); IEnumerable<IInstance> InstancesOf<T>(); bool HasImplementationsFor(Type pluginType); @@ -26,9 +26,11 @@ _graph = graph; } + #region IModel Members + public bool HasDefaultImplementationFor(Type pluginType) { - var family = PluginTypes.FirstOrDefault(x => x.PluginType == pluginType); + PluginTypeConfiguration family = PluginTypes.FirstOrDefault(x => x.PluginType == pluginType); return family == null ? false : family.Default != null; } @@ -39,10 +41,7 @@ public IEnumerable<PluginTypeConfiguration> PluginTypes { - get - { - return _graph.PluginTypes; - } + get { return _graph.PluginTypes; } } public IEnumerable<IInstance> InstancesOf(Type pluginType) @@ -52,7 +51,7 @@ public IEnumerable<IInstance> InstancesOf<T>() { - return _graph.InstancesOf(typeof(T)); + return _graph.InstancesOf(typeof (T)); } public bool HasImplementationsFor(Type pluginType) @@ -62,7 +61,9 @@ public bool HasImplementationsFor<T>() { - return HasImplementationsFor(typeof(T)); + return HasImplementationsFor(typeof (T)); } + + #endregion } } \ No newline at end of file Modified: trunk/Source/StructureMap/ObjectFactory.cs =================================================================== --- trunk/Source/StructureMap/ObjectFactory.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/ObjectFactory.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -19,6 +19,11 @@ private static IContainer _container; private static string _profile = string.Empty; + public static IModel Model + { + get { return container.Model; } + } + private static event Notify _notify; /// <summary> @@ -105,14 +110,6 @@ container.Inject(name, instance); } - public static IModel Model - { - get - { - return container.Model; - } - } - [Obsolete("Please use Inject<PLUGINTYPE>(name) instead.")] public static void InjectStub<PLUGINTYPE>(string name, PLUGINTYPE stub) { Modified: trunk/Source/StructureMap/PipelineGraph.cs =================================================================== --- trunk/Source/StructureMap/PipelineGraph.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/PipelineGraph.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -3,7 +3,6 @@ using StructureMap.Diagnostics; using StructureMap.Graph; using StructureMap.Pipeline; -using System.Linq; namespace StructureMap { @@ -25,13 +24,12 @@ = new Dictionary<Type, IInstanceFactory>(); private readonly GenericsPluginGraph _genericsGraph = new GenericsPluginGraph(); + private readonly GraphLog _log; private readonly ProfileManager _profileManager; private MissingFactoryFunction _missingFactory = (pluginType, profileManager) => null; - private GraphLog _log; - public PipelineGraph(PluginGraph graph) { _profileManager = graph.ProfileManager; @@ -45,7 +43,7 @@ } else { - InstanceFactory factory = new InstanceFactory(family); + var factory = new InstanceFactory(family); _factories.Add(family.PluginType, factory); } } @@ -56,6 +54,41 @@ get { return _log; } } + public MissingFactoryFunction OnMissingFactory + { + set { _missingFactory = value; } + } + + public string CurrentProfile + { + get { return _profileManager.CurrentProfile; } + set { _profileManager.CurrentProfile = value; } + } + + public IEnumerable<PluginTypeConfiguration> PluginTypes + { + get + { + foreach (PluginTypeConfiguration configuration in _genericsGraph.Families) + { + yield return configuration; + } + + foreach (var pair in _factories) + { + IInstanceFactory factory = pair.Value; + + yield return new PluginTypeConfiguration + { + Default = _profileManager.GetDefault(factory.PluginType), + PluginType = factory.PluginType, + Policy = factory.Policy, + Instances = factory.Instances + }; + } + } + } + public void ImportFrom(PluginGraph graph) { foreach (PluginFamily family in graph.PluginFamilies) @@ -73,17 +106,6 @@ _profileManager.ImportFrom(graph.ProfileManager); } - public MissingFactoryFunction OnMissingFactory - { - set { _missingFactory = value; } - } - - public string CurrentProfile - { - get { return _profileManager.CurrentProfile; } - set { _profileManager.CurrentProfile = value; } - } - public IInstanceFactory ForType(Type pluginType) { createFactoryIfMissing(pluginType); @@ -155,7 +177,7 @@ public void Inject<PLUGINTYPE>(PLUGINTYPE instance) { - LiteralInstance literalInstance = new LiteralInstance(instance); + var literalInstance = new LiteralInstance(instance); ForType(typeof (PLUGINTYPE)).AddInstance(literalInstance); SetDefault(typeof (PLUGINTYPE), literalInstance); } @@ -181,35 +203,9 @@ return new IInstance[0]; } - public IEnumerable<PluginTypeConfiguration> PluginTypes - { - get - { - foreach (PluginTypeConfiguration configuration in _genericsGraph.Families) - { - yield return configuration; - } - - foreach (var pair in _factories) - { - var factory = pair.Value; - - yield return new PluginTypeConfiguration() - { - Default = _profileManager.GetDefault(factory.PluginType), - PluginType = factory.PluginType, - Policy = factory.Policy, - Instances = factory.Instances - }; - } - } - - - } - public List<IInstance> GetAllInstances() { - List<IInstance> list = new List<IInstance>(); + var list = new List<IInstance>(); foreach (var pair in _factories) { Modified: trunk/Source/StructureMap/PluginGraphBuilder.cs =================================================================== --- trunk/Source/StructureMap/PluginGraphBuilder.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/PluginGraphBuilder.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -18,11 +18,11 @@ // Only used in testing public static PluginGraph BuildFromXml(XmlDocument document) { - GraphLog log = new GraphLog(); + var log = new GraphLog(); ConfigurationParser[] parsers = ConfigurationParserBuilder.GetParsers(document.DocumentElement, log); - PluginGraphBuilder builder = new PluginGraphBuilder(parsers, new Registry[0], log); - + var builder = new PluginGraphBuilder(parsers, new Registry[0], log); + return builder.Build(); } @@ -35,7 +35,7 @@ #region constructors public PluginGraphBuilder(ConfigurationParser parser) - : this(new ConfigurationParser[] {parser}, new Registry[0], new GraphLog()) + : this(new[] {parser}, new Registry[0], new GraphLog()) { } @@ -56,8 +56,8 @@ /// <returns></returns> public PluginGraph Build() { - GraphBuilder graphBuilder = new GraphBuilder(_registries, _graph); - + var graphBuilder = new GraphBuilder(_registries, _graph); + forAllParsers(p => { _graph.Log.StartSource(p.Description); @@ -80,6 +80,5 @@ action(parser); } } - } } \ No newline at end of file Modified: trunk/Source/StructureMap/Properties/AssemblyInfo.cs =================================================================== --- trunk/Source/StructureMap/Properties/AssemblyInfo.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/Properties/AssemblyInfo.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -7,9 +7,9 @@ // associated with an assembly. // -[assembly : AssemblyTitle("StructureMap")] -[assembly : AssemblyDescription("Main Library")] -[assembly : +[assembly: AssemblyTitle("StructureMap")] +[assembly: AssemblyDescription("Main Library")] +[assembly: InternalsVisibleTo( "StructureMap.AutoMocking, PublicKey=00240000048000009400000006020000002400005253413100040000010001008d9a2a76e43cd9b1b1944b1f3b489a046b33f0bcd755b25cc5d3ed7b18ded38240d6db7578cd986c72d3feb4f94a7ab26fcfa41e3e4f41cf2c029fba91159db05c44d63f0b2bfac24353a07f4a1230dd3d4240340adafa2275277fa083c75958062cd0e60016701db6af7ae718efdf1e802a840595b49c290964255b3c60c494" )] Modified: trunk/Source/StructureMap/ReflectionHelper.cs =================================================================== --- trunk/Source/StructureMap/ReflectionHelper.cs 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/ReflectionHelper.cs 2008-10-05 03:02:08 UTC (rev 173) @@ -1,9 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using System; using System.Linq.Expressions; using System.Reflection; -using System.Text; namespace StructureMap { @@ -12,13 +9,13 @@ public static PropertyInfo GetProperty<MODEL>(Expression<Func<MODEL, object>> expression) { MemberExpression memberExpression = getMemberExpression(expression); - return (PropertyInfo)memberExpression.Member; + return (PropertyInfo) memberExpression.Member; } public static PropertyInfo GetProperty<MODEL, T>(Expression<Func<MODEL, T>> expression) { MemberExpression memberExpression = getMemberExpression(expression); - return (PropertyInfo)memberExpression.Member; + return (PropertyInfo) memberExpression.Member; } private static MemberExpression getMemberExpression<MODEL, T>(Expression<Func<MODEL, T>> expression) @@ -26,7 +23,7 @@ MemberExpression memberExpression = null; if (expression.Body.NodeType == ExpressionType.Convert) { - var body = (UnaryExpression)expression.Body; + var body = (UnaryExpression) expression.Body; memberExpression = body.Operand as MemberExpression; } else if (expression.Body.NodeType == ExpressionType.MemberAccess) @@ -35,14 +32,12 @@ } - if (memberExpression == null) throw new ArgumentException("Not a member access", "member"); return memberExpression; } public static MethodInfo GetMethod<T>(Expression<Func<T, object>> expression) { - MethodCallExpression methodCall = expression.Body is UnaryExpression ? (MethodCallExpression) ((UnaryExpression) expression.Body).Operand @@ -53,15 +48,14 @@ public static MethodInfo GetMethod<T, U>(Expression<Func<T, U>> expression) { - MethodCallExpression methodCall = (MethodCallExpression)expression.Body; + var methodCall = (MethodCallExpression) expression.Body; return methodCall.Method; } public static MethodInfo GetMethod<T, U, V>(Expression<Func<T, U, V>> expression) { - MethodCallExpression methodCall = (MethodCallExpression)expression.Body; + var methodCall = (MethodCallExpression) expression.Body; return methodCall.Method; } - } -} +} \ No newline at end of file Deleted: trunk/Source/StructureMap/StructureMap.ndoc =================================================================== --- trunk/Source/StructureMap/StructureMap.ndoc 2008-10-05 02:50:36 UTC (rev 172) +++ trunk/Source/StructureMap/StructureMap.ndoc 2008-10-05 03:02:08 UTC (rev 173) @@ -1,299 +0,0 @@ -<project SchemaVersion="1.3"> - <assemblies> - <assembly location="C:\PIC\Code\Catalyst\Application\StructureMap\StructureMap\bin\Debug\StructureMap.dll" documentation="C:\PIC\Code\Catalyst\Application\StructureMap\StructureMap\StructureMap.xml" /> - </assemblies> - <namespaces> - <namespace name="StructureMap"></namespace> - <namespace name="StructureMap.Caching"></namespace> - <namespace name="StructureMap.Emitting"></namespace> - <namespace name="StructureMap.Emitting.Parameters"></namespace> - <namespace name="StructureMap.Logging"></namespace> - <namespace name="StructureMap.Source"></namespace> - <namespace name="StructureMap.Verification"></namespace> - </namespaces> - <documenters> - <documenter name="JavaDoc"> - <property name="OutputDirectory" value=".\doc\" /> - <property name="ShowMissingSummaries" value="False" /> - <property name="ShowMissingRemarks" value="False" /> - <property name="ShowMissingParams" value="False" /> - <property name="ShowMissingReturns" value="False" /> - <property name="ShowMissingValues" value="False" /> - <property name="DocumentExplicitInterfaceImplementations" value="False" /> - <property name="DocumentInternals" value="False" /> - <property name="DocumentProtected" value="True" /> - <property name="DocumentSealedProtected" value="False" /> - <property name="DocumentPrivates" value="False" /> - <property name="DocumentProtectedInternalAsProtected" value="False" /> - <property name="DocumentEmptyNamespaces" value="False" /> - <property name="SkipNamespacesWithoutSummaries" value="False" /> - <property name="EditorBrowsableFilter" value="Off" /> - <property name="IncludeAssemblyVersion" value="False" /> - <property name="CopyrightText" value="" /> - <property name="CopyrightHref" value="" /> - <property name="ReferencesPath" value="" /> - <property name="FeedbackEmailAddress" value="" /> - <property name="UseNamespaceDocSummaries" value="False" /> - <property name="AutoPropertyBackerSummaries" value="False" /> - <property name="AutoDocumentConstructors" value="True" /> - <property name="GetExternalSummaries" value="True" /> - <property name="Preliminary" value="False" /> - <property name="UseNDocXmlFile" value="" /> - <property name="CleanIntermediates" value="False" /> - <property name="DocumentAttributes" value="False" /> - <property name="ShowTypeIdInAttributes" value="False" /> - <property name="DocumentedAttributes" value="" /> - <property name="InheritPlatformSupport" value="True" /> - <property name="DefaultOSSupport" value="all" /> - <property name="SupportCompactFrameworkByDefault" value="False" /> - <property name="SupportMONOFrameworkByDefault" value="False" /> - <property name="AdditionalFrameworkList" value="" /> - <property name="AdditionalOSList" value="" /> - </documenter> - <documenter name="LaTeX"> - <property name="OutputDirectory" value=".\doc\" /> - <property name="TextFileFullName" value="Documentation.tex" /> - <property name="TexFileBaseName" value="Documentation" /> - <property name="LatexCompiler" value="latex" /> - <property name="TexFileFullPath" value=".\doc\Documentation.tex" /> - <property name="ShowMissingSummaries" value="False" /> - <property name="ShowMissingRemarks" value="False" /> - <property name="ShowMissingParams" value="False" /> - <property name="ShowMissingReturns" value="False" /> - <property name="ShowMissingValues" value="False" /> - <property name="DocumentExplicitInterfaceImplementations" value="False" /> - <property name="DocumentInternals" value="False" /> - <property name="DocumentProtected" value="True" /> - <property name="DocumentSealedProtected" value="False" /> - <property name="DocumentPrivates" value="False" /> - <property name="DocumentProtectedInternalAsProtected" value="False" /> - <property name="DocumentEmptyNamespaces" value="False" /> - <property name="SkipNamespacesWithoutSummaries" value="False" /> - <property name="EditorBrowsableFilter" value="Off" /> - <property name="IncludeAssemblyVersion" value="False" /> - <property name="CopyrightText" value="" /> - <property name="CopyrightHref" value="" /> - <property name="ReferencesPath" value="" /> - <property name="FeedbackEmailAddress" value="" /> - <property name="UseNamespaceDocSummaries" value="False" /> - <property name="AutoPropertyBackerSummaries" value="False" /> - <property name="AutoDocumentConstructors" value="True" /> - <property name="GetExternalSummaries" value="True" /> - <property name="Preliminary" value="False" /> - <property name="UseNDocXmlFile" value="" /> - <property name="CleanIntermediates" value="False" /> - <property name="DocumentAttributes" value="False" /> - <property name="ShowTypeIdInAttributes" value="False" /> - <property name="DocumentedAttributes" value="" /> - <property name="InheritPlatformSupport" value="True" /> - <property name="DefaultOSSupport" value="all" /> - <property name="SupportCompactFrameworkByDefault" value="False" /> - <property name="SupportMONOFrameworkByDefault" value="False" /> - <property name="AdditionalFrameworkList" value="" /> - <property name="AdditionalOSList" value="" /> - </documenter> - <documenter name="LinearHtml"> - <property name="IncludeTypeMemberDetails" value="False" /> - <property name="OutputDirectory" value=".\doc\" /> - <property name="MethodParametersInTable" value="False" /> - <property name="TypeIncludeRegexp" value="" /> - <property name="NamespaceExcludeRegexp" value="" /> - <property name="Title" value="An NDoc Documented Class Library" /> - <property name="IncludeHierarchy" value="False" /> - <property name="SortTOCByNamespace" value="True" /> - <property name="HeaderHtml" value="" /> - <property name="FooterHtml" value="" /> - <property name="FilesToInclude" value="" /> - <property name="ShowMissingSummaries" value="False" /> - <property name="ShowMissingRemarks" value="False" /> - <property name="ShowMissingParams" value="False" /> - <property name="ShowMissingReturns" value="False" /> - <property name="ShowMissingValues" value="False" /> - <property name="DocumentExplicitInterfaceImplementations" value="False" /> - <property name="DocumentInternals" value="False" /> - <property name="DocumentProtected" value="True" /> - <property name="DocumentSealedProtected" value="False" /> - <property name="DocumentPrivates" value="False" /> - <property name="DocumentProtectedInternalAsProtected" value="False" /> - <property name="DocumentEmptyNamespaces" value="False" /> - <property name="SkipNamespacesWithoutSummaries" value="False" /> - <property name="EditorBrowsableFilter" value="Off" /> - <property name="IncludeAssemblyVersion" value="False" /> - <property name="CopyrightText" value="" /> - <property name="CopyrightHref" value="" /> - <property name="ReferencesPath" value="" /> - <property name="FeedbackEmailAddress" value="" /> - <property name="UseNamespaceDocSummaries" value="False" /> - <property name="AutoPropertyBackerSummaries" value="False" /> - <property name="AutoDocumentConstructors" value="True" /> - <property name="GetExternalSummaries" value="True" /> - <property name="Preliminary" value="False" /> - <property name="UseNDocXmlFile" value="" /> - <property name="CleanIntermediates" value="False" /> - <property name="DocumentAttributes" value="False" /> - <property name="ShowTypeIdInAttributes" value="False" /> - <property name="DocumentedAttributes" value="" /> - <property name="InheritPlatformSupport" value="True" /> - <property name="DefaultOSSupport" value="all" /> - <property name="SupportCompactFrameworkByDefault" value="False" /> - <property name="SupportMONOFrameworkByDefault" value="False" /> - <property name="AdditionalFrameworkList" value="" /> - <property name="AdditionalOSList" value="" /> - </documenter> - <documenter name="MSDN"> - <property name="OutputDirectory" value=".\doc\" /> - <property name="HtmlHelpName" value="Documentation" /> - <property name="IncludeFavorites" value="False" /> - <property name="Title" value="An NDoc Documented Class Library" /> - <property name="DefaultTOC" value="" /> - <property name=... [truncated message content] |
From: <jer...@us...> - 2008-10-05 02:51:23
|
Revision: 172 http://structuremap.svn.sourceforge.net/structuremap/?rev=172&view=rev Author: jeremydmiller Date: 2008-10-05 02:50:36 +0000 (Sun, 05 Oct 2008) Log Message: ----------- More cleanup Modified Paths: -------------- trunk/Source/StructureMap/Exceptions/MissingPluginFamilyException.cs trunk/Source/StructureMap/Exceptions/StructureMapConfigurationException.cs trunk/Source/StructureMap/Exceptions/StructureMapException.cs trunk/Source/StructureMap/Graph/AssemblyScanner.cs trunk/Source/StructureMap/Graph/Constructor.cs trunk/Source/StructureMap/Graph/FamilyAttributeScanner.cs trunk/Source/StructureMap/Graph/FindAllTypesFilter.cs trunk/Source/StructureMap/Graph/FindRegistriesScanner.cs trunk/Source/StructureMap/Graph/GenericsPluginGraph.cs trunk/Source/StructureMap/Graph/ITypeScanner.cs trunk/Source/StructureMap/Graph/PluggableAttributeScanner.cs trunk/Source/StructureMap/Graph/Plugin.cs trunk/Source/StructureMap/Graph/PluginCache.cs trunk/Source/StructureMap/Graph/PluginFamily.cs trunk/Source/StructureMap/Graph/PluginFamilyCollection.cs trunk/Source/StructureMap/Graph/PluginGraph.cs trunk/Source/StructureMap/Graph/SetterProperty.cs trunk/Source/StructureMap/Graph/SetterPropertyCollection.cs trunk/Source/StructureMap/Graph/TypePath.cs trunk/Source/StructureMap/Graph/TypeRules.cs trunk/Source/StructureMap/Interceptors/CompoundInterceptor.cs trunk/Source/StructureMap/Interceptors/MatchedTypeInterceptor.cs trunk/Source/StructureMap/Pipeline/BuildFrame.cs trunk/Source/StructureMap/Pipeline/BuildStack.cs trunk/Source/StructureMap/Pipeline/CacheInterceptor.cs trunk/Source/StructureMap/Pipeline/ConfiguredInstance.Expressions.cs trunk/Source/StructureMap/Pipeline/ConfiguredInstance.cs trunk/Source/StructureMap/Pipeline/ConfiguredInstanceBase.cs trunk/Source/StructureMap/Pipeline/ConstructorInstance.cs trunk/Source/StructureMap/Pipeline/DefaultInstance.cs trunk/Source/StructureMap/Pipeline/ExplicitArguments.cs trunk/Source/StructureMap/Pipeline/HttpContextBuildPolicy.cs trunk/Source/StructureMap/Pipeline/HybridBuildPolicy.cs trunk/Source/StructureMap/Pipeline/IConfiguredInstance.cs trunk/Source/StructureMap/Pipeline/Instance.cs trunk/Source/StructureMap/Pipeline/InstanceMementoPropertyReader.cs trunk/Source/StructureMap/Pipeline/LiteralInstance.cs trunk/Source/StructureMap/Pipeline/Profile.cs trunk/Source/StructureMap/Pipeline/ProfileManager.cs trunk/Source/StructureMap/Pipeline/PrototypeInstance.cs trunk/Source/StructureMap/Pipeline/ReferencedInstance.cs trunk/Source/StructureMap/Pipeline/SerializedInstance.cs trunk/Source/StructureMap/Pipeline/SmartInstance.cs trunk/Source/StructureMap/Pipeline/ThreadLocalStoragePolicy.cs trunk/Source/StructureMap/Source/DirectoryXmlMementoSource.cs trunk/Source/StructureMap/Source/EmbeddedFolderXmlMementoSource.cs trunk/Source/StructureMap/Source/MemoryMementoSource.cs trunk/Source/StructureMap/Source/SingleEmbeddedXmlMementoSource.cs trunk/Source/StructureMap/Source/TemplatedMementoSource.cs trunk/Source/StructureMap/Source/XmlAttributeInstanceMemento.cs trunk/Source/StructureMap/Source/XmlFileMementoSource.cs trunk/Source/StructureMap/Source/XmlMementoCreator.cs trunk/Source/StructureMap/Source/XmlMementoSource.cs trunk/Source/StructureMap/Source/XmlNodeInstanceMemento.cs trunk/Source/StructureMap/Source/XmlTemplater.cs trunk/Source/StructureMap/Util/Cache.cs Modified: trunk/Source/StructureMap/Exceptions/MissingPluginFamilyException.cs =================================================================== --- trunk/Source/StructureMap/Exceptions/MissingPluginFamilyException.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Exceptions/MissingPluginFamilyException.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -6,27 +6,27 @@ [Serializable] public class MissingPluginFamilyException : ApplicationException { - private string _message; + private readonly string _message; - public MissingPluginFamilyException(string pluginTypeName) : base() + public MissingPluginFamilyException(string pluginTypeName) { _message = string.Format("Type {0} is not a configured PluginFamily", pluginTypeName); } - public override string Message - { - get { return _message; } - } - protected MissingPluginFamilyException(SerializationInfo info, StreamingContext context) : base(info, context) { _message = info.GetString("message"); } + public override string Message + { + get { return _message; } + } + public override void GetObjectData(SerializationInfo info, StreamingContext context) { - info.AddValue("message", _message, typeof(string)); + info.AddValue("message", _message, typeof (string)); base.GetObjectData(info, context); } Modified: trunk/Source/StructureMap/Exceptions/StructureMapConfigurationException.cs =================================================================== --- trunk/Source/StructureMap/Exceptions/StructureMapConfigurationException.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Exceptions/StructureMapConfigurationException.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -16,4 +16,4 @@ { } } -} +} \ No newline at end of file Modified: trunk/Source/StructureMap/Exceptions/StructureMapException.cs =================================================================== --- trunk/Source/StructureMap/Exceptions/StructureMapException.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Exceptions/StructureMapException.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -1,5 +1,4 @@ using System; -using System.Resources; using System.Runtime.Serialization; namespace StructureMap @@ -11,8 +10,8 @@ [Serializable] public class StructureMapException : ApplicationException { - private int _errorCode; - private string _msg; + private readonly int _errorCode; + private readonly string _msg; protected StructureMapException(SerializationInfo info, StreamingContext context) : @@ -23,7 +22,7 @@ } - public StructureMapException(int ErrorCode, params object[] args) : base() + public StructureMapException(int ErrorCode, params object[] args) { _errorCode = ErrorCode; _msg = string.Format("StructureMap Exception Code: {0}\n", _errorCode); @@ -49,7 +48,6 @@ } - public override void GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue("errorCode", _errorCode, typeof (int)); Modified: trunk/Source/StructureMap/Graph/AssemblyScanner.cs =================================================================== --- trunk/Source/StructureMap/Graph/AssemblyScanner.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Graph/AssemblyScanner.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -4,7 +4,6 @@ using System.Linq; using System.Reflection; using System.Threading; -using StructureMap.Diagnostics; namespace StructureMap.Graph { @@ -19,9 +18,9 @@ public class AssemblyScanner { private readonly List<Assembly> _assemblies = new List<Assembly>(); - private readonly List<ITypeScanner> _scanners = new List<ITypeScanner>(); - private readonly List<Predicate<Type>> _includes = new List<Predicate<Type>>(); private readonly List<Predicate<Type>> _excludes = new List<Predicate<Type>>(); + private readonly List<Predicate<Type>> _includes = new List<Predicate<Type>>(); + private readonly List<ITypeScanner> _scanners = new List<ITypeScanner>(); public AssemblyScanner() { @@ -35,7 +34,6 @@ } - public void ScanForAll(PluginGraph pluginGraph) { _assemblies.ForEach(assem => scanTypesInAssembly(assem, pluginGraph)); @@ -151,7 +149,7 @@ private static Assembly findTheCallingAssembly() { - StackTrace trace = new StackTrace(Thread.CurrentThread, false); + var trace = new StackTrace(Thread.CurrentThread, false); Assembly thisAssembly = System.Reflection.Assembly.GetExecutingAssembly(); Assembly callingAssembly = null; @@ -170,7 +168,7 @@ public void AssemblyContainingType<T>() { - _assemblies.Add(typeof(T).Assembly); + _assemblies.Add(typeof (T).Assembly); } public void AssemblyContainingType(Type type) @@ -180,7 +178,7 @@ public void AddAllTypesOf<PLUGINTYPE>() { - AddAllTypesOf(typeof(PLUGINTYPE)); + AddAllTypesOf(typeof (PLUGINTYPE)); } public void AddAllTypesOf(Type pluginType) @@ -207,7 +205,7 @@ public void ExcludeNamespaceContainingType<T>() { - ExcludeNamespace(typeof(T).Namespace); + ExcludeNamespace(typeof (T).Namespace); } public void Include(Predicate<Type> predicate) Modified: trunk/Source/StructureMap/Graph/Constructor.cs =================================================================== --- trunk/Source/StructureMap/Graph/Constructor.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Graph/Constructor.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -5,8 +5,8 @@ { public class Constructor : TypeRules { + private readonly ConstructorInfo _ctor; private readonly Type _pluggedType; - private ConstructorInfo _ctor; public Constructor(Type pluggedType) { Modified: trunk/Source/StructureMap/Graph/FamilyAttributeScanner.cs =================================================================== --- trunk/Source/StructureMap/Graph/FamilyAttributeScanner.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Graph/FamilyAttributeScanner.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -4,6 +4,8 @@ { public class FamilyAttributeScanner : ITypeScanner { + #region ITypeScanner Members + public void Process(Type type, PluginGraph graph) { if (PluginFamilyAttribute.MarkedAsPluginFamily(type)) @@ -11,5 +13,7 @@ graph.CreateFamily(type); } } + + #endregion } } \ No newline at end of file Modified: trunk/Source/StructureMap/Graph/FindAllTypesFilter.cs =================================================================== --- trunk/Source/StructureMap/Graph/FindAllTypesFilter.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Graph/FindAllTypesFilter.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -11,6 +11,8 @@ _pluginType = pluginType; } + #region ITypeScanner Members + public void Process(Type type, PluginGraph graph) { if (CanBeCast(_pluginType, type)) @@ -18,5 +20,7 @@ graph.AddType(_pluginType, type); } } + + #endregion } } \ No newline at end of file Modified: trunk/Source/StructureMap/Graph/FindRegistriesScanner.cs =================================================================== --- trunk/Source/StructureMap/Graph/FindRegistriesScanner.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Graph/FindRegistriesScanner.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -5,11 +5,13 @@ { public class FindRegistriesScanner : ITypeScanner { + #region ITypeScanner Members + public void Process(Type type, PluginGraph graph) { if (!Registry.IsPublicRegistry(type)) return; - foreach (var previous in graph.Registries) + foreach (Registry previous in graph.Registries) { if (previous.GetType().Equals(type)) { @@ -17,8 +19,10 @@ } } - Registry registry = (Registry)Activator.CreateInstance(type); + var registry = (Registry) Activator.CreateInstance(type); registry.ConfigurePluginGraph(graph); } + + #endregion } } \ No newline at end of file Modified: trunk/Source/StructureMap/Graph/GenericsPluginGraph.cs =================================================================== --- trunk/Source/StructureMap/Graph/GenericsPluginGraph.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Graph/GenericsPluginGraph.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using StructureMap.Pipeline; using StructureMap.Util; @@ -24,7 +23,7 @@ { get { - foreach (var family in _families) + foreach (PluginFamily family in _families) { yield return family.GetConfiguration(); } @@ -95,7 +94,6 @@ PluginFamily basicFamily = _families.Retrieve(basicType); Type[] templatedParameterTypes = templatedType.GetGenericArguments(); - PluginFamily family = CreateTemplatedClone(basicFamily, templatedParameterTypes); profileManager.CopyDefaults(basicType, templatedType, family); @@ -111,13 +109,11 @@ // TODO: This code sucks. What's going on here? public static PluginFamily CreateTemplatedClone(PluginFamily baseFamily, params Type[] templateTypes) { - PluginFamily templatedFamily = baseFamily.CreateTemplatedClone(templateTypes); return templatedFamily; } - public static bool CanBePluggedIntoGenericType(Type pluginType, Type pluggedType, params Type[] templateTypes) { bool isValid = true; Modified: trunk/Source/StructureMap/Graph/ITypeScanner.cs =================================================================== --- trunk/Source/StructureMap/Graph/ITypeScanner.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Graph/ITypeScanner.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; namespace StructureMap.Graph { Modified: trunk/Source/StructureMap/Graph/PluggableAttributeScanner.cs =================================================================== --- trunk/Source/StructureMap/Graph/PluggableAttributeScanner.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Graph/PluggableAttributeScanner.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -4,6 +4,8 @@ { public class PluggableAttributeScanner : ITypeScanner { + #region ITypeScanner Members + public void Process(Type type, PluginGraph graph) { if (PluggableAttribute.MarkedAsPluggable(type)) @@ -11,5 +13,7 @@ graph.AddType(type); } } + + #endregion } } \ No newline at end of file Modified: trunk/Source/StructureMap/Graph/Plugin.cs =================================================================== --- trunk/Source/StructureMap/Graph/Plugin.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Graph/Plugin.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -144,8 +144,8 @@ { Type templatedType = _pluggedType.IsGenericType ? _pluggedType.MakeGenericType(types) : _pluggedType; - Plugin templatedPlugin = new Plugin(templatedType, ConcreteKey); - + var templatedPlugin = new Plugin(templatedType, ConcreteKey); + foreach (SetterProperty setter in Setters) { templatedPlugin.Setters.MarkSetterAsMandatory(setter.Name); Modified: trunk/Source/StructureMap/Graph/PluginCache.cs =================================================================== --- trunk/Source/StructureMap/Graph/PluginCache.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Graph/PluginCache.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using StructureMap.Emitting; @@ -9,8 +9,8 @@ public static class PluginCache { private static readonly Cache<Type, InstanceBuilder> _builders; + private static readonly List<Type> _filledTypes = new List<Type>(); private static readonly Cache<Type, Plugin> _plugins; - private static List<Type> _filledTypes = new List<Type>(); static PluginCache() { @@ -37,7 +37,8 @@ { lock (typeof (PluginCache)) { - IEnumerable<Plugin> plugins = _plugins.Where(plugin => pluginHasNoBuilder(plugin) && plugin.CanBeCreated()); + IEnumerable<Plugin> plugins = + _plugins.Where(plugin => pluginHasNoBuilder(plugin) && plugin.CanBeCreated()); createAndStoreBuilders(plugins); } } @@ -65,7 +66,7 @@ internal static void ResetAll() { - lock (typeof(PluginCache)) + lock (typeof (PluginCache)) { _builders.Clear(); _plugins.Clear(); Modified: trunk/Source/StructureMap/Graph/PluginFamily.cs =================================================================== --- trunk/Source/StructureMap/Graph/PluginFamily.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Graph/PluginFamily.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -152,7 +152,7 @@ { if (plugin.CanBeAutoFilled && !hasInstanceWithPluggedType(plugin)) { - var instance = new ConfiguredInstance(plugin.PluggedType).WithName(key); + ConfiguredInstance instance = new ConfiguredInstance(plugin.PluggedType).WithName(key); AddInstance(instance); } }); @@ -216,54 +216,6 @@ return string.IsNullOrEmpty(_defaultKey) ? null : GetInstance(_defaultKey); } - #region properties - - - public bool IsGenericTemplate - { - get { return _pluginType.IsGenericTypeDefinition || _pluginType.ContainsGenericParameters; } - } - - public IBuildPolicy Policy - { - get { return _buildPolicy; } - set { _policy = value; } - } - - public int PluginCount - { - get { return _pluggedTypes.Count; } - } - - /// <summary> - /// The CLR Type that defines the "Plugin" interface for the PluginFamily - /// </summary> - public Type PluginType - { - get { return _pluginType; } - } - - /// <summary> - /// The InstanceKey of the default instance of the PluginFamily - /// </summary> - public string DefaultInstanceKey - { - get { return _defaultKey; } - set { _defaultKey = value ?? string.Empty; } - } - - public int InstanceCount - { - get { return _instances.Count; } - } - - public IEnumerable<IInstance> Instances - { - get { return _instances.GetAll(); } - } - - #endregion - public Plugin FindPlugin(Type pluggedType) { return _pluggedTypes.Find(p => p.PluggedType == pluggedType); @@ -325,16 +277,13 @@ public PluginFamily CreateTemplatedClone(Type[] templateTypes) { Type templatedType = _pluginType.MakeGenericType(templateTypes); - PluginFamily templatedFamily = new PluginFamily(templatedType, Parent); + var templatedFamily = new PluginFamily(templatedType, Parent); templatedFamily.DefaultInstanceKey = DefaultInstanceKey; templatedFamily.Policy = Policy.Clone(); // TODO -- Got a big problem here. Intances need to be copied over - EachInstance(i => - { - ((IDiagnosticInstance)i).AddTemplatedInstanceTo(templatedFamily, templateTypes); - }); + EachInstance(i => { ((IDiagnosticInstance) i).AddTemplatedInstanceTo(templatedFamily, templateTypes); }); // Need to attach the new PluginFamily to the old PluginGraph Parent.PluginFamilies.Add(templatedFamily); @@ -364,13 +313,60 @@ public PluginTypeConfiguration GetConfiguration() { - return new PluginTypeConfiguration() - { - Default = GetDefaultInstance(), - PluginType = PluginType, - Policy = _buildPolicy, - Instances = Instances - }; + return new PluginTypeConfiguration + { + Default = GetDefaultInstance(), + PluginType = PluginType, + Policy = _buildPolicy, + Instances = Instances + }; } + + #region properties + + public bool IsGenericTemplate + { + get { return _pluginType.IsGenericTypeDefinition || _pluginType.ContainsGenericParameters; } + } + + public IBuildPolicy Policy + { + get { return _buildPolicy; } + set { _policy = value; } + } + + public int PluginCount + { + get { return _pluggedTypes.Count; } + } + + public int InstanceCount + { + get { return _instances.Count; } + } + + public IEnumerable<IInstance> Instances + { + get { return _instances.GetAll(); } + } + + /// <summary> + /// The CLR Type that defines the "Plugin" interface for the PluginFamily + /// </summary> + public Type PluginType + { + get { return _pluginType; } + } + + /// <summary> + /// The InstanceKey of the default instance of the PluginFamily + /// </summary> + public string DefaultInstanceKey + { + get { return _defaultKey; } + set { _defaultKey = value ?? string.Empty; } + } + + #endregion } } \ No newline at end of file Modified: trunk/Source/StructureMap/Graph/PluginFamilyCollection.cs =================================================================== --- trunk/Source/StructureMap/Graph/PluginFamilyCollection.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Graph/PluginFamilyCollection.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -24,7 +24,7 @@ { if (!_pluginFamilies.ContainsKey(pluginType)) { - PluginFamily family = new PluginFamily(pluginType, _pluginGraph); + var family = new PluginFamily(pluginType, _pluginGraph); Add(family); } @@ -41,7 +41,7 @@ { get { - PluginFamily[] families = new PluginFamily[_pluginFamilies.Count]; + var families = new PluginFamily[_pluginFamilies.Count]; _pluginFamilies.Values.CopyTo(families, 0); return families; } @@ -95,7 +95,7 @@ public void Each(Action<PluginFamily> action) { - foreach (var family in All) + foreach (PluginFamily family in All) { action(family); } Modified: trunk/Source/StructureMap/Graph/PluginGraph.cs =================================================================== --- trunk/Source/StructureMap/Graph/PluginGraph.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Graph/PluginGraph.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -40,19 +40,6 @@ _scanners.Add(assemblies); } - public void Scan(Action<AssemblyScanner> action) - { - var scanner = new AssemblyScanner(); - action(scanner); - - AddScanner(scanner); - } - - public void ScanThisAssembly() - { - Scan(x => x.TheCallingAssembly()); - } - public List<Registry> Registries { get { return _registries; } @@ -114,6 +101,19 @@ #endregion + public void Scan(Action<AssemblyScanner> action) + { + var scanner = new AssemblyScanner(); + action(scanner); + + AddScanner(scanner); + } + + public void ScanThisAssembly() + { + Scan(x => x.TheCallingAssembly()); + } + public void AddScanner(AssemblyScanner scanner) { _scanners.Add(scanner); Modified: trunk/Source/StructureMap/Graph/SetterProperty.cs =================================================================== --- trunk/Source/StructureMap/Graph/SetterProperty.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Graph/SetterProperty.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -12,10 +12,10 @@ private readonly PropertyInfo _property; - public SetterProperty(PropertyInfo property) : base() + public SetterProperty(PropertyInfo property) { _property = property; - var att = Attribute.GetCustomAttribute(property, typeof (SetterPropertyAttribute)); + Attribute att = Attribute.GetCustomAttribute(property, typeof (SetterPropertyAttribute)); IsMandatory = att != null; } Modified: trunk/Source/StructureMap/Graph/SetterPropertyCollection.cs =================================================================== --- trunk/Source/StructureMap/Graph/SetterPropertyCollection.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Graph/SetterPropertyCollection.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -2,7 +2,6 @@ using System.Collections; using System.Collections.Generic; using System.Reflection; -using StructureMap.Attributes; namespace StructureMap.Graph { @@ -12,7 +11,7 @@ public class SetterPropertyCollection : IEnumerable<SetterProperty> { private readonly Plugin _plugin; - private List<SetterProperty> _properties; + private readonly List<SetterProperty> _properties; public SetterPropertyCollection(Plugin plugin) { @@ -20,12 +19,11 @@ _plugin = plugin; - foreach (PropertyInfo property in plugin.PluggedType.GetProperties()) { if (property.CanWrite && property.GetSetMethod(false) != null) { - SetterProperty setter = new SetterProperty(property); + var setter = new SetterProperty(property); _properties.Add(setter); } } @@ -57,7 +55,7 @@ public SetterProperty MarkSetterAsMandatory(string propertyName) { - var setter = _properties.Find(p => p.Property.Name == propertyName); + SetterProperty setter = _properties.Find(p => p.Property.Name == propertyName); if (setter == null) { throw new StructureMapException(240, propertyName, _plugin.PluggedType); Modified: trunk/Source/StructureMap/Graph/TypePath.cs =================================================================== --- trunk/Source/StructureMap/Graph/TypePath.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Graph/TypePath.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -65,7 +65,7 @@ public static string GetAssemblyQualifiedName(Type type) { - TypePath path = new TypePath(type); + var path = new TypePath(type); return path.AssemblyQualifiedName; } @@ -84,7 +84,7 @@ public override bool Equals(object obj) { - TypePath peer = obj as TypePath; + var peer = obj as TypePath; if (peer == null) { return false; Modified: trunk/Source/StructureMap/Graph/TypeRules.cs =================================================================== --- trunk/Source/StructureMap/Graph/TypeRules.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Graph/TypeRules.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -62,7 +62,7 @@ protected bool IsPrimitive(Type type) { - return type.IsPrimitive && !IsString(type) && type != typeof(IntPtr); + return type.IsPrimitive && !IsString(type) && type != typeof (IntPtr); } protected bool IsSimple(Type type) Modified: trunk/Source/StructureMap/Interceptors/CompoundInterceptor.cs =================================================================== --- trunk/Source/StructureMap/Interceptors/CompoundInterceptor.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Interceptors/CompoundInterceptor.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -32,7 +32,7 @@ public InstanceInterceptor Merge(InstanceInterceptor interceptor) { - InstanceInterceptor[] interceptors = new InstanceInterceptor[_interceptors.Length + 1]; + var interceptors = new InstanceInterceptor[_interceptors.Length + 1]; _interceptors.CopyTo(interceptors, 0); interceptors[interceptors.Length - 1] = interceptor; Modified: trunk/Source/StructureMap/Interceptors/MatchedTypeInterceptor.cs =================================================================== --- trunk/Source/StructureMap/Interceptors/MatchedTypeInterceptor.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Interceptors/MatchedTypeInterceptor.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace StructureMap.Interceptors { @@ -33,4 +31,4 @@ _interception = interception; } } -} +} \ No newline at end of file Modified: trunk/Source/StructureMap/Pipeline/BuildFrame.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/BuildFrame.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Pipeline/BuildFrame.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -4,9 +4,11 @@ { public class BuildFrame { - private readonly Type _requestedType; - private readonly string _name; private readonly Type _concreteType; + private readonly string _name; + private readonly Type _requestedType; + private BuildFrame _next; + private BuildFrame _parent; public BuildFrame(Type requestedType, string name, Type concreteType) { @@ -30,8 +32,10 @@ get { return _concreteType; } } - private BuildFrame _parent; - private BuildFrame _next; + internal BuildFrame Parent + { + get { return _parent; } + } internal void Attach(BuildFrame next) { @@ -45,24 +49,18 @@ return _parent; } - internal BuildFrame Parent - { - get - { - return _parent; - } - } - public override string ToString() { - return string.Format("RequestedType: {0}, Name: {1}, ConcreteType: {2}", _requestedType, _name, _concreteType); + return string.Format("RequestedType: {0}, Name: {1}, ConcreteType: {2}", _requestedType, _name, + _concreteType); } public bool Equals(BuildFrame obj) { if (ReferenceEquals(null, obj)) return false; if (ReferenceEquals(this, obj)) return true; - return Equals(obj._requestedType, _requestedType) && Equals(obj._name, _name) && Equals(obj._concreteType, _concreteType); + return Equals(obj._requestedType, _requestedType) && Equals(obj._name, _name) && + Equals(obj._concreteType, _concreteType); } public override bool Equals(object obj) Modified: trunk/Source/StructureMap/Pipeline/BuildStack.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/BuildStack.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Pipeline/BuildStack.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -1,15 +1,12 @@ -using System.Collections.Generic; - namespace StructureMap.Pipeline { public class BuildStack { - private BuildFrame _root; private BuildFrame _current; + private BuildFrame _root; internal BuildStack() { - } public BuildFrame Root @@ -24,10 +21,7 @@ public BuildFrame Parent { - get - { - return _current.Parent; - } + get { return _current.Parent; } } internal void Push(BuildFrame frame) Modified: trunk/Source/StructureMap/Pipeline/CacheInterceptor.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/CacheInterceptor.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Pipeline/CacheInterceptor.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -51,7 +51,7 @@ public override string ToString() { - return GetType().FullName + " / " + _innerPolicy.ToString(); + return GetType().FullName + " / " + _innerPolicy; } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Pipeline/ConfiguredInstance.Expressions.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/ConfiguredInstance.Expressions.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Pipeline/ConfiguredInstance.Expressions.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -1,6 +1,5 @@ using System; using StructureMap.Configuration.DSL; -using StructureMap.Graph; using StructureMap.Interceptors; namespace StructureMap.Pipeline @@ -15,7 +14,7 @@ public ConfiguredInstance OnCreation<TYPE>(Action<TYPE> handler) { - StartupInterceptor<TYPE> interceptor = new StartupInterceptor<TYPE>(handler); + var interceptor = new StartupInterceptor<TYPE>(handler); Interceptor = interceptor; return this; @@ -23,7 +22,7 @@ public ConfiguredInstance EnrichWith<TYPE>(EnrichmentHandler<TYPE> handler) { - EnrichmentInterceptor<TYPE> interceptor = new EnrichmentInterceptor<TYPE>(handler); + var interceptor = new EnrichmentInterceptor<TYPE>(handler); Interceptor = interceptor; return this; @@ -34,7 +33,7 @@ { validateTypeIsArray<PLUGINTYPE>(); - ChildArrayExpression expression = + var expression = new ChildArrayExpression(this, propertyName); return expression; @@ -84,7 +83,7 @@ /// <returns></returns> public ChildInstanceExpression Child<CONSTRUCTORARGUMENTTYPE>(string propertyName) { - ChildInstanceExpression child = new ChildInstanceExpression(this, propertyName); + var child = new ChildInstanceExpression(this, propertyName); child.ChildType = typeof (CONSTRUCTORARGUMENTTYPE); return child; @@ -161,7 +160,7 @@ /// <returns></returns> public ConfiguredInstance IsNamedInstance(string instanceKey) { - ReferencedInstance instance = new ReferencedInstance(instanceKey); + var instance = new ReferencedInstance(instanceKey); _instance.setChild(_propertyName, instance); return _instance; @@ -177,7 +176,7 @@ Type pluggedType = typeof (T); ExpressionValidator.ValidatePluggabilityOf(pluggedType).IntoPluginType(_childType); - ConfiguredInstance childInstance = new ConfiguredInstance(pluggedType); + var childInstance = new ConfiguredInstance(pluggedType); _instance.setChild(_propertyName, childInstance); return _instance; @@ -198,21 +197,17 @@ public ConfiguredInstance Is(object value) { - LiteralInstance instance = new LiteralInstance(value); + var instance = new LiteralInstance(value); return Is(instance); } public ConfiguredInstance IsAutoFilled() { - DefaultInstance instance = new DefaultInstance(); + var instance = new DefaultInstance(); return Is(instance); } } #endregion - - #region Nested type: PropertyExpression - - #endregion } } \ No newline at end of file Modified: trunk/Source/StructureMap/Pipeline/ConfiguredInstance.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/ConfiguredInstance.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Pipeline/ConfiguredInstance.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -1,20 +1,15 @@ using System; -using System.Collections.Generic; using StructureMap.Graph; namespace StructureMap.Pipeline { public partial class ConfiguredInstance : ConfiguredInstanceBase<ConfiguredInstance> { - public static Type GetGenericType(Type templateType, params Type[] types) + public ConfiguredInstance(InstanceMemento memento, PluginGraph graph, Type pluginType) + : base(memento, graph, pluginType) { - return templateType.MakeGenericType(types); } - public ConfiguredInstance(InstanceMemento memento, PluginGraph graph, Type pluginType) : base(memento, graph, pluginType) - { - } - public ConfiguredInstance(Type pluggedType, string name) : base(pluggedType, name) { } @@ -26,13 +21,13 @@ public ConfiguredInstance(Type templateType, params Type[] types) : base(GetGenericType(templateType, types)) { - } - #region IStructuredInstance Members + public static Type GetGenericType(Type templateType, params Type[] types) + { + return templateType.MakeGenericType(types); + } - #endregion - protected void setPluggedType(Type pluggedType) { _pluggedType = pluggedType; @@ -41,13 +36,12 @@ protected override void preprocess(PluginFamily family) { - } protected override string getDescription() { string typeName = _pluggedType.AssemblyQualifiedName; - Constructor ctor = new Constructor(_pluggedType); + var ctor = new Constructor(_pluggedType); if (ctor.HasArguments()) { return "Configured " + typeName; @@ -60,10 +54,12 @@ protected override void addTemplatedInstanceTo(PluginFamily family, Type[] templateTypes) { - Type specificType = _pluggedType.IsGenericTypeDefinition ? _pluggedType.MakeGenericType(templateTypes) : _pluggedType; + Type specificType = _pluggedType.IsGenericTypeDefinition + ? _pluggedType.MakeGenericType(templateTypes) + : _pluggedType; if (TypeRules.CanBeCast(family.PluginType, specificType)) { - ConfiguredInstance instance = new ConfiguredInstance(specificType); + var instance = new ConfiguredInstance(specificType); instance._arrays = _arrays; instance._children = _children; instance._properties = _properties; Modified: trunk/Source/StructureMap/Pipeline/ConfiguredInstanceBase.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/ConfiguredInstanceBase.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Pipeline/ConfiguredInstanceBase.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using StructureMap.Graph; @@ -16,10 +15,10 @@ public abstract class ConfiguredInstanceBase<T> : Instance, IConfiguredInstance, IStructuredInstance, Copyable { + protected Dictionary<string, Instance[]> _arrays = new Dictionary<string, Instance[]>(); protected Dictionary<string, Instance> _children = new Dictionary<string, Instance>(); + protected Type _pluggedType; protected Dictionary<string, string> _properties = new Dictionary<string, string>(); - protected Dictionary<string, Instance[]> _arrays = new Dictionary<string, Instance[]>(); - protected Type _pluggedType; protected ConfiguredInstanceBase(InstanceMemento memento, PluginGraph graph, Type pluginType) { @@ -41,14 +40,109 @@ } } + #region Copyable Members + Type Copyable.PluggedType + { + get { return _pluggedType; } + } + + Dictionary<string, string> Copyable.Properties + { + get { return _properties; } + } + + Dictionary<string, Instance> Copyable.Children + { + get { return _children; } + } + + Dictionary<string, Instance[]> Copyable.Arrays + { + get { return _arrays; } + } + + #endregion + + #region IConfiguredInstance Members + Type IConfiguredInstance.PluggedType { get { return _pluggedType; } } + Instance[] IConfiguredInstance.GetChildrenArray(string propertyName) + { + return _arrays.ContainsKey(propertyName) ? _arrays[propertyName] : null; + } + string IConfiguredInstance.GetProperty(string propertyName) + { + if (!_properties.ContainsKey(propertyName)) + { + throw new StructureMapException(205, propertyName, Name); + } + return _properties[propertyName]; + } + + object IConfiguredInstance.GetChild(string propertyName, Type pluginType, BuildSession buildSession) + { + return getChild(propertyName, pluginType, buildSession); + } + + object IConfiguredInstance.Build(Type pluginType, BuildSession session, InstanceBuilder builder) + { + if (builder == null) + { + throw new StructureMapException( + 201, _pluggedType.FullName, Name, pluginType); + } + + + try + { + return builder.BuildInstance(this, session); + } + catch (StructureMapException) + { + throw; + } + catch (InvalidCastException ex) + { + throw new StructureMapException(206, ex, Name); + } + catch (Exception ex) + { + throw new StructureMapException(207, ex, Name, pluginType.FullName); + } + } + + bool IConfiguredInstance.HasProperty(string propertyName) + { + return _properties.ContainsKey(propertyName) || _children.ContainsKey(propertyName) || + _arrays.ContainsKey(propertyName); + } + + void IConfiguredInstance.SetProperty(string propertyName, string propertyValue) + { + setProperty(propertyName, propertyValue); + } + + void IConfiguredInstance.SetChild(string name, Instance instance) + { + setChild(name, instance); + } + + void IConfiguredInstance.SetChildArray(string name, Type type, Instance[] children) + { + setChildArray(name, children); + } + + #endregion + + #region IStructuredInstance Members + Instance IStructuredInstance.GetChild(string name) { return _children[name]; @@ -64,6 +158,8 @@ _properties.Remove(name); } + #endregion + protected override object build(Type pluginType, BuildSession session) { InstanceBuilder builder = PluginCache.FindBuilder(_pluggedType); @@ -97,7 +193,7 @@ _pluggedType = plugin.PluggedType; - InstanceMementoPropertyReader reader = new InstanceMementoPropertyReader(this, memento, graph, pluginType); + var reader = new InstanceMementoPropertyReader(this, memento, graph, pluginType); plugin.VisitArguments(reader); } @@ -113,58 +209,6 @@ _arrays.Add(name, array); } - Instance[] IConfiguredInstance.GetChildrenArray(string propertyName) - { - return _arrays.ContainsKey(propertyName) ? _arrays[propertyName] : null; - } - - string IConfiguredInstance.GetProperty(string propertyName) - { - if (!_properties.ContainsKey(propertyName)) - { - throw new StructureMapException(205, propertyName, Name); - } - - return _properties[propertyName]; - } - - object IConfiguredInstance.GetChild(string propertyName, Type pluginType, BuildSession buildSession) - { - return getChild(propertyName, pluginType, buildSession); - } - - object IConfiguredInstance.Build(Type pluginType, BuildSession session, InstanceBuilder builder) - { - if (builder == null) - { - throw new StructureMapException( - 201, _pluggedType.FullName, Name, pluginType); - } - - - try - { - return builder.BuildInstance(this, session); - } - catch (StructureMapException) - { - throw; - } - catch (InvalidCastException ex) - { - throw new StructureMapException(206, ex, Name); - } - catch (Exception ex) - { - throw new StructureMapException(207, ex, Name, pluginType.FullName); - } - } - - bool IConfiguredInstance.HasProperty(string propertyName) - { - return _properties.ContainsKey(propertyName) || _children.ContainsKey(propertyName) || _arrays.ContainsKey(propertyName); - } - protected override Type getConcreteType(Type pluginType) { return _pluggedType; @@ -172,7 +216,7 @@ protected string findPropertyName<T>() { - Plugin plugin = new Plugin(_pluggedType); + var plugin = new Plugin(_pluggedType); string propertyName = plugin.FindArgumentNameForType<T>(); if (string.IsNullOrEmpty(propertyName)) @@ -191,32 +235,17 @@ } } - void IConfiguredInstance.SetProperty(string propertyName, string propertyValue) - { - setProperty(propertyName, propertyValue); - } - protected void setProperty(string propertyName, string propertyValue) { if (string.IsNullOrEmpty(propertyValue)) return; _properties[propertyName] = propertyValue; } - void IConfiguredInstance.SetChild(string name, Instance instance) - { - setChild(name, instance); - } - - void IConfiguredInstance.SetChildArray(string name, Type type, Instance[] children) - { - setChildArray(name, children); - } - protected void mergeIntoThis(Copyable instance) { _pluggedType = instance.PluggedType; - foreach (KeyValuePair<string, string> pair in instance.Properties) + foreach (var pair in instance.Properties) { if (!_properties.ContainsKey(pair.Key)) { @@ -224,7 +253,7 @@ } } - foreach (KeyValuePair<string, Instance> pair in instance.Children) + foreach (var pair in instance.Children) { if (!_children.ContainsKey(pair.Key)) { @@ -234,25 +263,5 @@ _arrays = instance.Arrays; } - - Type Copyable.PluggedType - { - get { return _pluggedType; } - } - - Dictionary<string, string> Copyable.Properties - { - get { return _properties; } - } - - Dictionary<string, Instance> Copyable.Children - { - get { return _children; } - } - - Dictionary<string, Instance[]> Copyable.Arrays - { - get { return _arrays; } - } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Pipeline/ConstructorInstance.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/ConstructorInstance.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Pipeline/ConstructorInstance.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -2,8 +2,6 @@ namespace StructureMap.Pipeline { - - public class ConstructorInstance<T> : ExpressedInstance<ConstructorInstance<T>> { private readonly Func<IContext, T> _builder; @@ -37,7 +35,7 @@ protected override string getDescription() { - return "Instance is created by Func<object> function: " + _builder.ToString(); + return "Instance is created by Func<object> function: " + _builder; } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Pipeline/DefaultInstance.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/DefaultInstance.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Pipeline/DefaultInstance.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -9,6 +9,11 @@ int x = 1; } + protected override bool doesRecordOnTheStack + { + get { return false; } + } + protected override object build(Type pluginType, BuildSession session) { return session.CreateInstance(pluginType); @@ -18,10 +23,5 @@ { return "Default"; } - - protected override bool doesRecordOnTheStack - { - get { return false; } - } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Pipeline/ExplicitArguments.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/ExplicitArguments.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Pipeline/ExplicitArguments.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -44,7 +44,7 @@ public void Configure(IConfiguredInstance instance) { - foreach (KeyValuePair<string, object> arg in _args) + foreach (var arg in _args) { if (arg.Value == null) continue; @@ -81,7 +81,7 @@ args.Configure(this); _args = args; - Copyable defaultConfiguration = defaultInstance as Copyable; + var defaultConfiguration = defaultInstance as Copyable; if (defaultConfiguration != null) { mergeIntoThis(defaultConfiguration); Modified: trunk/Source/StructureMap/Pipeline/HttpContextBuildPolicy.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/HttpContextBuildPolicy.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Pipeline/HttpContextBuildPolicy.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -5,7 +5,7 @@ { public class HttpContextBuildPolicy : CacheInterceptor { - private string _prefix = Guid.NewGuid().ToString(); + private readonly string _prefix = Guid.NewGuid().ToString(); public static bool HasContext() { Modified: trunk/Source/StructureMap/Pipeline/HybridBuildPolicy.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/HybridBuildPolicy.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Pipeline/HybridBuildPolicy.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -29,7 +29,7 @@ public IBuildPolicy Clone() { - HybridBuildPolicy policy = new HybridBuildPolicy(); + var policy = new HybridBuildPolicy(); policy.InnerPolicy = InnerPolicy.Clone(); return policy; Modified: trunk/Source/StructureMap/Pipeline/IConfiguredInstance.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/IConfiguredInstance.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Pipeline/IConfiguredInstance.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -15,6 +15,4 @@ void SetChild(string name, Instance instance); void SetChildArray(string name, Type type, Instance[] children); } - - } \ No newline at end of file Modified: trunk/Source/StructureMap/Pipeline/Instance.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/Instance.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Pipeline/Instance.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using StructureMap.Configuration.DSL; using StructureMap.Diagnostics; using StructureMap.Graph; using StructureMap.Interceptors; @@ -13,7 +11,7 @@ { string key = PluginCache.GetPlugin(type).ConcreteKey; return new ReferencedInstance(key); - } + } } public interface IInstance @@ -44,69 +42,25 @@ _originalName = _name; } - public string Name - { - get { return _name; } - set { _name = value; } - } - - public virtual object Build(Type pluginType, BuildSession session) - { - markBuildStackStart(session, pluginType); - - object rawValue = createRawObject(pluginType, session); - var finalValue = applyInterception(rawValue, pluginType); - - markBuildStackFinish(session); - - return finalValue; - } - - protected virtual void markBuildStackFinish(BuildSession session) - { - if (!doesRecordOnTheStack) return; - - session.BuildStack.Pop(); - } - - protected virtual void markBuildStackStart(BuildSession session, Type pluginType) - { - if (!doesRecordOnTheStack) return; - - session.BuildStack.Push(new BuildFrame(pluginType, Name, getConcreteType(pluginType))); - } - protected virtual bool doesRecordOnTheStack { get { return true; } } - private object createRawObject(Type pluginType, BuildSession session) - { - try - { - return build(pluginType, session); - } - catch (StructureMapException ex) - { - throw; - } - catch (Exception ex) - { - throw new StructureMapException(400, ex); - } - } - public InstanceInterceptor Interceptor { get { return _interceptor; } set { _interceptor = value; } } - - #region IDiagnosticInstance Members + public string Name + { + get { return _name; } + set { _name = value; } + } + bool IDiagnosticInstance.CanBePartOfPluginFamily(PluginFamily family) { return canBePartOfPluginFamily(family); @@ -142,6 +96,50 @@ get { return getDescription(); } } + #endregion + + public virtual object Build(Type pluginType, BuildSession session) + { + markBuildStackStart(session, pluginType); + + object rawValue = createRawObject(pluginType, session); + object finalValue = applyInterception(rawValue, pluginType); + + markBuildStackFinish(session); + + return finalValue; + } + + protected virtual void markBuildStackFinish(BuildSession session) + { + if (!doesRecordOnTheStack) return; + + session.BuildStack.Pop(); + } + + protected virtual void markBuildStackStart(BuildSession session, Type pluginType) + { + if (!doesRecordOnTheStack) return; + + session.BuildStack.Push(new BuildFrame(pluginType, Name, getConcreteType(pluginType))); + } + + private object createRawObject(Type pluginType, BuildSession session) + { + try + { + return build(pluginType, session); + } + catch (StructureMapException ex) + { + throw; + } + catch (Exception ex) + { + throw new StructureMapException(400, ex); + } + } + protected virtual Type getConcreteType(Type pluginType) { return pluginType; @@ -162,8 +160,6 @@ protected abstract string getDescription(); - #endregion - protected void replaceNameIfNotAlreadySet(string name) { if (_name == _originalName) @@ -173,7 +169,6 @@ } - private object applyInterception(object rawValue, Type pluginType) { try @@ -200,7 +195,6 @@ } - internal virtual bool Matches(Plugin plugin) { return false; @@ -219,7 +213,7 @@ public T OnCreation<TYPE>(Action<TYPE> handler) { - StartupInterceptor<TYPE> interceptor = new StartupInterceptor<TYPE>(handler); + var interceptor = new StartupInterceptor<TYPE>(handler); Interceptor = interceptor; return thisInstance; @@ -227,11 +221,10 @@ public T EnrichWith<TYPE>(EnrichmentHandler<TYPE> handler) { - EnrichmentInterceptor<TYPE> interceptor = new EnrichmentInterceptor<TYPE>(handler); + var interceptor = new EnrichmentInterceptor<TYPE>(handler); Interceptor = interceptor; return thisInstance; } } - } \ No newline at end of file Modified: trunk/Source/StructureMap/Pipeline/InstanceMementoPropertyReader.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/InstanceMementoPropertyReader.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Pipeline/InstanceMementoPropertyReader.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -82,7 +82,7 @@ { throw new StructureMapException(205, name, _memento.InstanceKey); } - + _instance.SetProperty(name, propertyValue); } @@ -97,7 +97,7 @@ { InstanceMemento[] mementoes = _memento.GetChildrenArray(name) ?? new InstanceMemento[0]; - Instance[] children = new Instance[mementoes.Length]; + var children = new Instance[mementoes.Length]; for (int i = 0; i < mementoes.Length; i++) { InstanceMemento memento = mementoes[i]; Modified: trunk/Source/StructureMap/Pipeline/LiteralInstance.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/LiteralInstance.cs 2008-10-05 02:43:34 UTC (rev 171) +++ trunk/Source/StructureMap/Pipeline/LiteralInstance.cs 2008-10-05 02:50:36 UTC (rev 172) @@ -41,7 +41,7 @@ protected override string getDescription() { - return "Object: " + _object.ToString(); + return "Object: " + _object; } public override string ToString() Modified: trunk/Source/StructureMap/Pipeline/Profile.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/Profile.cs 2008-10-05 02... [truncated message content] |
From: <jer...@us...> - 2008-10-05 02:43:43
|
Revision: 171 http://structuremap.svn.sourceforge.net/structuremap/?rev=171&view=rev Author: jeremydmiller Date: 2008-10-05 02:43:34 +0000 (Sun, 05 Oct 2008) Log Message: ----------- doing some ReSharper clean ups Modified Paths: -------------- trunk/Source/StructureMap/Attributes/DefaultConstructorAttribute.cs trunk/Source/StructureMap/Attributes/PluggableAttribute.cs trunk/Source/StructureMap/Attributes/PluginFamilyAttribute.cs trunk/Source/StructureMap/Attributes/SetterPropertyAttribute.cs trunk/Source/StructureMap/Attributes/ValidationMethodAttribute.cs trunk/Source/StructureMap/Configuration/ConfigurationParser.cs trunk/Source/StructureMap/Configuration/ConfigurationParserBuilder.cs trunk/Source/StructureMap/Configuration/DSL/Expressions/GenericFamilyExpression.cs trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs trunk/Source/StructureMap/Configuration/DSL/Expressions/ProfileExpression.cs trunk/Source/StructureMap/Configuration/DSL/Registry.cs trunk/Source/StructureMap/Configuration/DictionaryReader.cs trunk/Source/StructureMap/Configuration/FamilyParser.cs trunk/Source/StructureMap/Configuration/ITypeReader.cs trunk/Source/StructureMap/Configuration/PrimitiveArrayReader.cs trunk/Source/StructureMap/Configuration/ProfileAndMachineParser.cs trunk/Source/StructureMap/Configuration/ProfileBuilder.cs trunk/Source/StructureMap/Configuration/StructureMapConfigurationSection.cs trunk/Source/StructureMap/Configuration/TypeReaderFactory.cs trunk/Source/StructureMap/Configuration/XmlExtensions.cs trunk/Source/StructureMap/Diagnostics/BuildError.cs trunk/Source/StructureMap/Diagnostics/CharacterWidth.cs trunk/Source/StructureMap/Diagnostics/DividerLine.cs trunk/Source/StructureMap/Diagnostics/Doctor.cs trunk/Source/StructureMap/Diagnostics/DoctorReport.cs trunk/Source/StructureMap/Diagnostics/DoctorRunner.cs trunk/Source/StructureMap/Diagnostics/Error.cs trunk/Source/StructureMap/Diagnostics/ErrorCollection.cs trunk/Source/StructureMap/Diagnostics/GraphLog.cs trunk/Source/StructureMap/Diagnostics/TextLine.cs trunk/Source/StructureMap/Diagnostics/TextReportWriter.cs trunk/Source/StructureMap/Diagnostics/ValidationBuildSession.cs trunk/Source/StructureMap/Diagnostics/ValidationError.cs trunk/Source/StructureMap/Diagnostics/WhatDoIHaveWriter.cs trunk/Source/StructureMap/Emitting/ArgumentEmitter.cs trunk/Source/StructureMap/Emitting/BuildInstanceMethod.cs trunk/Source/StructureMap/Emitting/DynamicAssembly.cs trunk/Source/StructureMap/Emitting/InstanceBuilderAssembly.cs trunk/Source/StructureMap/Emitting/Method.cs trunk/Source/StructureMap/Emitting/Parameters/ChildArrayParameterEmitter.cs trunk/Source/StructureMap/Emitting/Parameters/Methods.cs trunk/Source/StructureMap/Emitting/Parameters/ParameterEmitter.cs trunk/Source/StructureMap/Emitting/Parameters/PrimitiveParameterEmitter.cs trunk/Source/StructureMap/Emitting/Parameters/StringParameterEmitter.cs Modified: trunk/Source/StructureMap/Attributes/DefaultConstructorAttribute.cs =================================================================== --- trunk/Source/StructureMap/Attributes/DefaultConstructorAttribute.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Attributes/DefaultConstructorAttribute.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -10,10 +10,6 @@ [AttributeUsage(AttributeTargets.Constructor)] public class DefaultConstructorAttribute : Attribute { - public DefaultConstructorAttribute() - { - } - /// <summary> /// Examines a System.Type object and determines the ConstructorInfo to use in creating /// instances of the Type Modified: trunk/Source/StructureMap/Attributes/PluggableAttribute.cs =================================================================== --- trunk/Source/StructureMap/Attributes/PluggableAttribute.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Attributes/PluggableAttribute.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -8,22 +8,16 @@ [AttributeUsage(AttributeTargets.Class)] public class PluggableAttribute : Attribute { - private string _concreteKey; - public PluggableAttribute(string concreteKey) { - _concreteKey = concreteKey; + ConcreteKey = concreteKey; } /// <summary> /// The ConcreteKey alias of the Type /// </summary> - public string ConcreteKey - { - get { return _concreteKey; } - set { _concreteKey = value; } - } + public string ConcreteKey { get; set; } /// <summary> /// Gets an instance of PluggableAttribute from a Type object Modified: trunk/Source/StructureMap/Attributes/PluginFamilyAttribute.cs =================================================================== --- trunk/Source/StructureMap/Attributes/PluginFamilyAttribute.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Attributes/PluginFamilyAttribute.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -9,9 +9,8 @@ /// </summary> public class PluginFamilyAttribute : Attribute { - private string _default = string.Empty; + private readonly string _default = string.Empty; private InstanceScope _scope = InstanceScope.PerRequest; - private Type _source = null; public PluginFamilyAttribute() { @@ -33,11 +32,7 @@ set { _scope = value; } } - public Type SourceType - { - get { return _source; } - set { _source = value; } - } + public Type SourceType { get; set; } /// <summary> /// InstanceKey of the default instance. Used to implicitly define the default without @@ -66,14 +61,14 @@ /// <returns></returns> public static bool MarkedAsPluginFamily(Type objectType) { - PluginFamilyAttribute att = + var att = GetCustomAttribute(objectType, typeof (PluginFamilyAttribute), false) as PluginFamilyAttribute; return (att != null); } public static void ConfigureFamily(IPluginFamily family) { - PluginFamilyAttribute att = + var att = GetCustomAttribute(family.PluginType, typeof (PluginFamilyAttribute), false) as PluginFamilyAttribute; @@ -89,7 +84,7 @@ { try { - MementoSource source = (MementoSource) Activator.CreateInstance(SourceType); + var source = (MementoSource) Activator.CreateInstance(SourceType); family.AddMementoSource(source); } catch (Exception ex) Modified: trunk/Source/StructureMap/Attributes/SetterPropertyAttribute.cs =================================================================== --- trunk/Source/StructureMap/Attributes/SetterPropertyAttribute.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Attributes/SetterPropertyAttribute.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -19,12 +19,12 @@ return new PropertyInfo[0]; } - ArrayList list = new ArrayList(); + var list = new ArrayList(); PropertyInfo[] properties = pluggedType.GetProperties(); foreach (PropertyInfo property in properties) { - SetterPropertyAttribute att = + var att = GetCustomAttribute(property, typeof (SetterPropertyAttribute)) as SetterPropertyAttribute; if (att != null) @@ -37,9 +37,5 @@ } #endregion - - public SetterPropertyAttribute() - { - } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Attributes/ValidationMethodAttribute.cs =================================================================== --- trunk/Source/StructureMap/Attributes/ValidationMethodAttribute.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Attributes/ValidationMethodAttribute.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -12,10 +12,6 @@ [AttributeUsage(AttributeTargets.Method)] public class ValidationMethodAttribute : Attribute { - public ValidationMethodAttribute() - { - } - /// <summary> /// Returns an array of any MethodInfo's on a Type that are marked as ValidationMethod /// </summary> @@ -23,12 +19,12 @@ /// <returns></returns> public static MethodInfo[] GetValidationMethods(Type objectType) { - ArrayList methodList = new ArrayList(); + var methodList = new ArrayList(); MethodInfo[] methods = objectType.GetMethods(); foreach (MethodInfo method in methods) { - ValidationMethodAttribute att = + var att = (ValidationMethodAttribute) GetCustomAttribute(method, typeof (ValidationMethodAttribute)); if (att != null) @@ -46,7 +42,7 @@ } } - MethodInfo[] returnValue = new MethodInfo[methodList.Count]; + var returnValue = new MethodInfo[methodList.Count]; methodList.CopyTo(returnValue, 0); return returnValue; Modified: trunk/Source/StructureMap/Configuration/ConfigurationParser.cs =================================================================== --- trunk/Source/StructureMap/Configuration/ConfigurationParser.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Configuration/ConfigurationParser.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -2,7 +2,6 @@ using System.IO; using System.Xml; using StructureMap.Diagnostics; -using StructureMap.Graph; using StructureMap.Source; namespace StructureMap.Configuration @@ -40,10 +39,12 @@ _structureMapNode = structureMapNode; XmlMementoStyle mementoStyle = XmlMementoStyle.NodeNormalized; - _structureMapNode.ForAttributeValue(MEMENTO_STYLE, style => - { - if (style == ATTRIBUTE_STYLE) mementoStyle = XmlMementoStyle.AttributeNormalized; - }); + _structureMapNode.ForAttributeValue(MEMENTO_STYLE, + style => + { + if (style == ATTRIBUTE_STYLE) + mementoStyle = XmlMementoStyle.AttributeNormalized; + }); _mementoCreator = new XmlMementoCreator( mementoStyle, @@ -114,6 +115,5 @@ ParseProfilesAndMachines(builder); } - } } \ No newline at end of file Modified: trunk/Source/StructureMap/Configuration/ConfigurationParserBuilder.cs =================================================================== --- trunk/Source/StructureMap/Configuration/ConfigurationParserBuilder.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Configuration/ConfigurationParserBuilder.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -29,6 +29,8 @@ _log = log; } + #region IConfigurationParserBuilder Members + public bool UseAndEnforceExistenceOfDefaultFile { get { return _useAndEnforceExistenceOfDefaultFile; } @@ -48,6 +50,22 @@ set { _pullConfigurationFromAppConfig = value; } } + public void IncludeFile(string filename) + { + _otherFiles.Add(filename); + } + + + public void IncludeNode(XmlNode node, string description) + { + var parser = new ConfigurationParser(node); + parser.Description = description; + + _parsers.Add(parser); + } + + #endregion + public ConfigurationParser[] GetParsers() { var list = new List<ConfigurationParser>(); @@ -126,20 +144,6 @@ } - public void IncludeFile(string filename) - { - _otherFiles.Add(filename); - } - - - public void IncludeNode(XmlNode node, string description) - { - var parser = new ConfigurationParser(node); - parser.Description = description; - - _parsers.Add(parser); - } - public static ConfigurationParser[] GetParsers(XmlNode node, GraphLog log) { var builder = new ConfigurationParserBuilder(log); Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/GenericFamilyExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/GenericFamilyExpression.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/GenericFamilyExpression.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -44,10 +44,7 @@ { var instance = new ConfiguredInstance(concreteType); - alterAndContinue(family => - { - family.AddInstance(instance); - }); + alterAndContinue(family => { family.AddInstance(instance); }); return instance; } @@ -77,7 +74,7 @@ { _registry.addExpression(graph => { - PluginTypeInterceptor interceptor = new PluginTypeInterceptor(_pluginType, func); + var interceptor = new PluginTypeInterceptor(_pluginType, func); graph.InterceptorLibrary.AddInterceptor(interceptor); }); Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -1,4 +1,4 @@ -using System; +using System; using StructureMap.Pipeline; namespace StructureMap.Configuration.DSL.Expressions @@ -38,6 +38,25 @@ _action = action; } + #region IsExpression<T> Members + + InstanceExpression<T> IsExpression<T>.Is + { + get { return this; } + } + + public void IsThis(Instance instance) + { + returnInstance(instance); + } + + public LiteralInstance IsThis(T obj) + { + return returnInstance(new LiteralInstance(obj)); + } + + #endregion + public void Instance(Instance instance) { _action(instance); @@ -64,21 +83,6 @@ return returnInstance(new LiteralInstance(theObject)); } - InstanceExpression<T> IsExpression<T>.Is - { - get { return this; } - } - - public void IsThis(Instance instance) - { - returnInstance(instance); - } - - public LiteralInstance IsThis(T obj) - { - return returnInstance(new LiteralInstance(obj)); - } - public ReferencedInstance References(string key) { return returnInstance(new ReferencedInstance(key)); @@ -114,4 +118,4 @@ return returnInstance(new UserControlInstance(url)); } } -} +} \ No newline at end of file Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/ProfileExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/ProfileExpression.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/ProfileExpression.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -1,5 +1,4 @@ using System; -using StructureMap.Graph; using StructureMap.Pipeline; namespace StructureMap.Configuration.DSL.Expressions @@ -39,6 +38,43 @@ return new GenericDefaultExpression(this, pluginType); } + #region Nested type: GenericDefaultExpression + + public class GenericDefaultExpression + { + private readonly ProfileExpression _parent; + private readonly Type _pluginType; + private readonly Registry _registry; + + internal GenericDefaultExpression(ProfileExpression parent, Type pluginType) + { + _parent = parent; + _registry = parent._registry; + _pluginType = pluginType; + } + + public ProfileExpression UseConcreteType(Type concreteType) + { + var instance = new ConfiguredInstance(concreteType); + return Use(instance); + } + + public ProfileExpression Use(Instance instance) + { + _registry.addExpression(graph => graph.SetDefault(_parent._profileName, _pluginType, instance)); + + return _parent; + } + + public ProfileExpression UseNamedInstance(string name) + { + var instance = new ReferencedInstance(name); + return Use(instance); + } + } + + #endregion + #region Nested type: InstanceDefaultExpression public class InstanceDefaultExpression<T> @@ -61,7 +97,8 @@ /// <returns></returns> public ProfileExpression UseNamedInstance(string instanceKey) { - _registry.addExpression(graph => graph.SetDefault(_profileName, typeof (T), new ReferencedInstance(instanceKey))); + _registry.addExpression( + graph => graph.SetDefault(_profileName, typeof (T), new ReferencedInstance(instanceKey))); return _parent; } @@ -82,62 +119,29 @@ public ProfileExpression Use(Func<T> func) { - ConstructorInstance<T> instance = new ConstructorInstance<T>(func); + var instance = new ConstructorInstance<T>(func); return Use(instance); } public ProfileExpression Use(T t) { - LiteralInstance instance = new LiteralInstance(t); + var instance = new LiteralInstance(t); return Use(instance); } public ProfileExpression UseConcreteType<CONCRETETYPE>() { - ConfiguredInstance instance = new ConfiguredInstance(typeof(CONCRETETYPE)); + var instance = new ConfiguredInstance(typeof (CONCRETETYPE)); return Use(instance); } public ProfileExpression UsePrototypeOf(T template) { - PrototypeInstance instance = new PrototypeInstance((ICloneable) template); + var instance = new PrototypeInstance((ICloneable) template); return Use(instance); } } #endregion - - public class GenericDefaultExpression - { - private readonly ProfileExpression _parent; - private readonly Type _pluginType; - private readonly Registry _registry; - - internal GenericDefaultExpression(ProfileExpression parent, Type pluginType) - { - _parent = parent; - _registry = parent._registry; - _pluginType = pluginType; - } - - public ProfileExpression UseConcreteType(Type concreteType) - { - ConfiguredInstance instance = new ConfiguredInstance(concreteType); - return Use(instance); - } - - public ProfileExpression Use(Instance instance) - { - _registry.addExpression(graph => graph.SetDefault(_parent._profileName, _pluginType, instance)); - - return _parent; - } - - public ProfileExpression UseNamedInstance(string name) - { - ReferencedInstance instance = new ReferencedInstance(name); - return Use(instance); - } - } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Configuration/DSL/Registry.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Registry.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Configuration/DSL/Registry.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -9,8 +9,8 @@ { public class Registry { - private readonly List<Action> _basicActions = new List<Action>(); private readonly List<Action<PluginGraph>> _actions = new List<Action<PluginGraph>>(); + private readonly List<Action> _basicActions = new List<Action>(); public Registry() { @@ -65,27 +65,9 @@ return new GenericFamilyExpression(pluginType, this); } - public class BuildWithExpression<T> - { - private SmartInstance<T> _instance; - - public BuildWithExpression(SmartInstance<T> instance) - { - _instance = instance; - } - - public SmartInstance<T> Configure - { - get - { - return _instance; - } - } - } - public BuildWithExpression<T> ForConcreteType<T>() { - var instance = ForRequestedType<T>().TheDefault.Is.OfConcreteType<T>(); + SmartInstance<T> instance = ForRequestedType<T>().TheDefault.Is.OfConcreteType<T>(); return new BuildWithExpression<T>(instance); } @@ -104,7 +86,7 @@ public PluginGraph Build() { - PluginGraph graph = new PluginGraph(); + var graph = new PluginGraph(); ConfigurePluginGraph(graph); graph.Seal(); @@ -122,13 +104,9 @@ public GenericIsExpression InstanceOf(Type pluginType) { - return new GenericIsExpression(instance => - { - _actions.Add(graph => - { - graph.FindFamily(pluginType).AddInstance(instance); - }); - }); + return + new GenericIsExpression( + instance => { _actions.Add(graph => { graph.FindFamily(pluginType).AddInstance(instance); }); }); } /// <summary> @@ -138,7 +116,7 @@ /// <returns></returns> public ProfileExpression CreateProfile(string profileName) { - ProfileExpression expression = new ProfileExpression(profileName, this); + var expression = new ProfileExpression(profileName, this); return expression; } @@ -165,7 +143,7 @@ public MatchedTypeInterceptor IfTypeMatches(Predicate<Type> match) { - MatchedTypeInterceptor interceptor = new MatchedTypeInterceptor(match); + var interceptor = new MatchedTypeInterceptor(match); _actions.Add(graph => graph.InterceptorLibrary.AddInterceptor(interceptor)); return interceptor; @@ -209,10 +187,27 @@ public CreatePluginFamilyExpression<PLUGINTYPE> FillAllPropertiesOfType<PLUGINTYPE>() { - PluginCache.AddFilledType(typeof(PLUGINTYPE)); + PluginCache.AddFilledType(typeof (PLUGINTYPE)); return ForRequestedType<PLUGINTYPE>(); } + #region Nested type: BuildWithExpression + public class BuildWithExpression<T> + { + private readonly SmartInstance<T> _instance; + + public BuildWithExpression(SmartInstance<T> instance) + { + _instance = instance; + } + + public SmartInstance<T> Configure + { + get { return _instance; } + } + } + + #endregion } } \ No newline at end of file Modified: trunk/Source/StructureMap/Configuration/DictionaryReader.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DictionaryReader.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Configuration/DictionaryReader.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -8,57 +8,89 @@ { public class DictionaryReader : ITypeReader { + #region ITypeReader Members + public bool CanProcess(Type pluginType) { - if (pluginType.Equals(typeof(NameValueCollection))) return true; + if (pluginType.Equals(typeof (NameValueCollection))) return true; if (!pluginType.IsGenericType) return false; - var definition = pluginType.GetGenericTypeDefinition(); + Type definition = pluginType.GetGenericTypeDefinition(); if (definition == null) return false; return definition.Equals(typeof (IDictionary<,>)) || definition.Equals(typeof (Dictionary<,>)); } + public Instance Read(XmlNode node, Type pluginType) + { + IBuilder builder = findBuilder(pluginType); + node.ForEachChild("Pair").Do( + element => builder.Read(element.GetAttribute("Key"), element.GetAttribute("Value"))); + + return new SerializedInstance(builder.Object); + } + + #endregion + private static IBuilder findBuilder(Type pluginType) { - if (pluginType.Equals(typeof(NameValueCollection))) return new NameValueCollectionBuilder(); + if (pluginType.Equals(typeof (NameValueCollection))) return new NameValueCollectionBuilder(); - var definition = pluginType.GetGenericTypeDefinition(); - if (definition.Equals(typeof(IDictionary<,>)) || definition.Equals(typeof(Dictionary<,>))) + Type definition = pluginType.GetGenericTypeDefinition(); + if (definition.Equals(typeof (IDictionary<,>)) || definition.Equals(typeof (Dictionary<,>))) { - var arguments = pluginType.GetGenericArguments(); - var builderType = typeof (DictionaryBuilder<,>).MakeGenericType(arguments); + Type[] arguments = pluginType.GetGenericArguments(); + Type builderType = typeof (DictionaryBuilder<,>).MakeGenericType(arguments); return (IBuilder) Activator.CreateInstance(builderType); } return null; } - public Instance Read(XmlNode node, Type pluginType) + #region Nested type: DictionaryBuilder + + internal class DictionaryBuilder<KEY, VALUE> : IBuilder { - var builder = findBuilder(pluginType); - node.ForEachChild("Pair").Do(element => builder.Read(element.GetAttribute("Key"), element.GetAttribute("Value"))); + private readonly Dictionary<KEY, VALUE> _dictionary = new Dictionary<KEY, VALUE>(); - return new SerializedInstance(builder.Object); - } + #region IBuilder Members - + public void Read(string name, string value) + { + var key = (KEY) Convert.ChangeType(name, typeof (KEY)); + var theValue = (VALUE) Convert.ChangeType(value, typeof (VALUE)); + _dictionary.Add(key, theValue); + } + public object Object + { + get { return _dictionary; } + } + #endregion + } + #endregion + #region Nested type: IBuilder internal interface IBuilder { + object Object { get; } void Read(string name, string value); - object Object { get; } } + #endregion + + #region Nested type: NameValueCollectionBuilder + internal class NameValueCollectionBuilder : IBuilder { private readonly NameValueCollection _collection = new NameValueCollection(); + #region IBuilder Members + public void Read(string name, string value) { _collection.Add(name, value); @@ -68,24 +100,10 @@ { get { return _collection; } } + + #endregion } - internal class DictionaryBuilder<KEY, VALUE> : IBuilder - { - private Dictionary<KEY, VALUE> _dictionary = new Dictionary<KEY, VALUE>(); - - public void Read(string name, string value) - { - KEY key = (KEY) Convert.ChangeType(name, typeof (KEY)); - VALUE theValue = (VALUE) Convert.ChangeType(value, typeof (VALUE)); - - _dictionary.Add(key, theValue); - } - - public object Object - { - get { return _dictionary; } - } - } + #endregion } } \ No newline at end of file Modified: trunk/Source/StructureMap/Configuration/FamilyParser.cs =================================================================== --- trunk/Source/StructureMap/Configuration/FamilyParser.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Configuration/FamilyParser.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -52,7 +52,7 @@ public void ParseDefaultElement(XmlElement element) { - TypePath pluginTypePath = new TypePath(element.GetAttribute(PLUGIN_TYPE)); + var pluginTypePath = new TypePath(element.GetAttribute(PLUGIN_TYPE)); _builder.ConfigureFamily(pluginTypePath, family => @@ -67,7 +67,7 @@ public void ParseInstanceElement(XmlElement element) { - TypePath pluginTypePath = new TypePath(element.GetAttribute(PLUGIN_TYPE)); + var pluginTypePath = new TypePath(element.GetAttribute(PLUGIN_TYPE)); _builder.ConfigureFamily(pluginTypePath, family => { @@ -81,10 +81,8 @@ { InstanceScope returnValue = InstanceScope.PerRequest; - familyElement.ForAttributeValue(SCOPE, scope => - { - returnValue = (InstanceScope)Enum.Parse(typeof(InstanceScope), scope); - }); + familyElement.ForAttributeValue(SCOPE, + scope => { returnValue = (InstanceScope) Enum.Parse(typeof (InstanceScope), scope); }); return returnValue; } @@ -95,7 +93,8 @@ { InstanceMemento sourceMemento = new XmlAttributeInstanceMemento(node); - string context = string.Format("MementoSource for {0}\n{1}", TypePath.GetAssemblyQualifiedName(family.PluginType), node.OuterXml); + string context = string.Format("MementoSource for {0}\n{1}", + TypePath.GetAssemblyQualifiedName(family.PluginType), node.OuterXml); _builder.WithSystemObject<MementoSource>(sourceMemento, context, source => family.AddMementoSource(source)); }); @@ -122,13 +121,14 @@ private void attachInterceptors(PluginFamily family, XmlElement familyElement) { - string contextBase = string.Format("creating an InstanceInterceptor for {0}\n", TypePath.GetAssemblyQualifiedName(family.PluginType)); + string contextBase = string.Format("creating an InstanceInterceptor for {0}\n", + TypePath.GetAssemblyQualifiedName(family.PluginType)); familyElement.ForEachChild("*/Interceptor").Do(element => { var interceptorMemento = new XmlAttributeInstanceMemento(element); string context = contextBase + element.OuterXml; _builder.WithSystemObject<IBuildInterceptor>( - interceptorMemento, + interceptorMemento, context, interceptor => family.AddInterceptor(interceptor)); }); Modified: trunk/Source/StructureMap/Configuration/ITypeReader.cs =================================================================== --- trunk/Source/StructureMap/Configuration/ITypeReader.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Configuration/ITypeReader.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -1,6 +1,4 @@ -using System; -using System.Linq; -using System.Text; +using System; using System.Xml; using StructureMap.Pipeline; @@ -11,4 +9,4 @@ bool CanProcess(Type pluginType); Instance Read(XmlNode node, Type pluginType); } -} +} \ No newline at end of file Modified: trunk/Source/StructureMap/Configuration/PrimitiveArrayReader.cs =================================================================== --- trunk/Source/StructureMap/Configuration/PrimitiveArrayReader.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Configuration/PrimitiveArrayReader.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -1,4 +1,4 @@ -using System; +using System; using System.Xml; using StructureMap.Graph; using StructureMap.Pipeline; @@ -19,11 +19,11 @@ Type elementType = pluginType.GetElementType(); char Delimiter = node.GetAttribute("Delimiter", ",").ToCharArray()[0]; - var valueString = node.GetAttribute("Values", string.Empty); - string[] rawValues = valueString.Split(new[]{Delimiter}, StringSplitOptions.RemoveEmptyEntries); + string valueString = node.GetAttribute("Values", string.Empty); + string[] rawValues = valueString.Split(new[] {Delimiter}, StringSplitOptions.RemoveEmptyEntries); - var array = Array.CreateInstance(elementType, rawValues.Length); + Array array = Array.CreateInstance(elementType, rawValues.Length); for (int i = 0; i < rawValues.Length; i++) { object convertedType = Convert.ChangeType(rawValues[i].Trim(), elementType); Modified: trunk/Source/StructureMap/Configuration/ProfileAndMachineParser.cs =================================================================== --- trunk/Source/StructureMap/Configuration/ProfileAndMachineParser.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Configuration/ProfileAndMachineParser.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -1,4 +1,3 @@ -using System; using System.Xml; using StructureMap.Graph; using StructureMap.Pipeline; @@ -23,7 +22,8 @@ public void Parse() { - _structureMapNode.ForAttributeValue(DEFAULT_PROFILE, profileName => _profileBuilder.SetDefaultProfileName(profileName)); + _structureMapNode.ForAttributeValue(DEFAULT_PROFILE, + profileName => _profileBuilder.SetDefaultProfileName(profileName)); forEachNode(PROFILE_NODE).Do(element => { @@ -31,7 +31,8 @@ _profileBuilder.AddProfile(profileName); writeOverrides(element, - (fullName, defaultKey) => _profileBuilder.OverrideProfile(new TypePath(fullName), defaultKey), profileName); + (fullName, defaultKey) => + _profileBuilder.OverrideProfile(new TypePath(fullName), defaultKey), profileName); }); @@ -43,7 +44,8 @@ _profileBuilder.AddMachine(machineName, profileName); writeOverrides(element, - (fullName, defaultKey) => _profileBuilder.OverrideMachine(new TypePath(fullName), defaultKey), machineName); + (fullName, defaultKey) => + _profileBuilder.OverrideMachine(new TypePath(fullName), defaultKey), machineName); }); } @@ -73,7 +75,7 @@ InstanceMemento memento = _creator.CreateMemento(instanceElement); memento.InstanceKey = key; - TypePath familyPath = new TypePath(fullName); + var familyPath = new TypePath(fullName); _graphBuilder.ConfigureFamily(familyPath, family => { Modified: trunk/Source/StructureMap/Configuration/ProfileBuilder.cs =================================================================== --- trunk/Source/StructureMap/Configuration/ProfileBuilder.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Configuration/ProfileBuilder.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -8,16 +8,6 @@ { private static string _overriden_machine_name; - public static void OverrideMachineName(string machineName) - { - _overriden_machine_name = machineName; - } - - public static void ResetMachineName() - { - _overriden_machine_name = string.Empty; - } - private readonly string _machineName; private readonly PluginGraph _pluginGraph; private readonly ProfileManager _profileManager; @@ -49,7 +39,7 @@ { _pluginGraph.Log.WithType(typePath, "while trying to add an override for a Profile", pluginType => { - ReferencedInstance instance = new ReferencedInstance(instanceKey); + var instance = new ReferencedInstance(instanceKey); _pluginGraph.SetDefault(_lastProfile, pluginType, instance); }); } @@ -71,11 +61,11 @@ return; } - _pluginGraph.Log.WithType(typePath, - "trying to configure a Machine Override", + _pluginGraph.Log.WithType(typePath, + "trying to configure a Machine Override", pluginType => { - ReferencedInstance instance = new ReferencedInstance(instanceKey); + var instance = new ReferencedInstance(instanceKey); _profileManager.SetMachineDefault(pluginType, instance); }); } @@ -87,6 +77,16 @@ #endregion + public static void OverrideMachineName(string machineName) + { + _overriden_machine_name = machineName; + } + + public static void ResetMachineName() + { + _overriden_machine_name = string.Empty; + } + public static string GetMachineName() { if (!string.IsNullOrEmpty(_overriden_machine_name)) Modified: trunk/Source/StructureMap/Configuration/StructureMapConfigurationSection.cs =================================================================== --- trunk/Source/StructureMap/Configuration/StructureMapConfigurationSection.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Configuration/StructureMapConfigurationSection.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -10,7 +10,7 @@ public object Create(object parent, object configContext, XmlNode section) { - IList<XmlNode> allNodes = parent as IList<XmlNode>; + var allNodes = parent as IList<XmlNode>; if (allNodes == null) { allNodes = new List<XmlNode>(); @@ -23,7 +23,7 @@ public static IList<XmlNode> GetStructureMapConfiguration() { - IList<XmlNode> nodes = ConfigurationSettings.GetConfig(XmlConstants.STRUCTUREMAP) as IList<XmlNode>; + var nodes = ConfigurationSettings.GetConfig(XmlConstants.STRUCTUREMAP) as IList<XmlNode>; if (nodes == null) { throw new StructureMapException(105, XmlConstants.STRUCTUREMAP); Modified: trunk/Source/StructureMap/Configuration/TypeReaderFactory.cs =================================================================== --- trunk/Source/StructureMap/Configuration/TypeReaderFactory.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Configuration/TypeReaderFactory.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -5,7 +5,7 @@ { public static class TypeReaderFactory { - private static List<ITypeReader> _readers = new List<ITypeReader>(); + private static readonly List<ITypeReader> _readers = new List<ITypeReader>(); static TypeReaderFactory() { @@ -15,7 +15,7 @@ public static ITypeReader GetReader(Type pluginType) { - foreach (var reader in _readers) + foreach (ITypeReader reader in _readers) { if (reader.CanProcess(pluginType)) { Modified: trunk/Source/StructureMap/Configuration/XmlExtensions.cs =================================================================== --- trunk/Source/StructureMap/Configuration/XmlExtensions.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Configuration/XmlExtensions.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -7,7 +7,7 @@ { public static string GetAttribute(this XmlNode node, string attributeName, string defaultValue) { - var attribute = node.Attributes.GetNamedItem(attributeName); + XmlNode attribute = node.Attributes.GetNamedItem(attributeName); return attribute == null ? defaultValue : attribute.InnerText; } @@ -35,13 +35,15 @@ return new HasXmlElementExpression(node, xpath); } + #region Nested type: HasXmlElementExpression + public class HasXmlElementExpression { - private XmlElement _element; + private readonly XmlElement _element; internal HasXmlElementExpression(XmlNode parent, string xpath) { - _element = (XmlElement)parent.SelectSingleNode(xpath); + _element = (XmlElement) parent.SelectSingleNode(xpath); } public HasXmlElementExpression Do(Action<XmlElement> action) @@ -63,10 +65,13 @@ } } + #endregion + #region Nested type: XmlNodeExpression + public class XmlNodeExpression { - private XmlNodeList _list; + private readonly XmlNodeList _list; internal XmlNodeExpression(XmlNode parent, string xpath) { @@ -79,11 +84,15 @@ foreach (XmlNode node in _list) { - action((XmlElement)node); + action((XmlElement) node); } } } + #endregion + + #region Nested type: XmlTextExpression + public class XmlTextExpression { private readonly XmlNodeList _list; @@ -104,6 +113,6 @@ } } - + #endregion } } \ No newline at end of file Modified: trunk/Source/StructureMap/Diagnostics/BuildError.cs =================================================================== --- trunk/Source/StructureMap/Diagnostics/BuildError.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Diagnostics/BuildError.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.IO; -using StructureMap.Graph; using StructureMap.Pipeline; namespace StructureMap.Diagnostics @@ -18,6 +17,7 @@ PluginType = pluginType; } + #region IEquatable<BuildDependency> Members public bool Equals(BuildDependency buildDependency) { @@ -25,6 +25,8 @@ return Equals(Instance, buildDependency.Instance) && Equals(PluginType, buildDependency.PluginType); } + #endregion + public override bool Equals(object obj) { if (ReferenceEquals(this, obj)) return true; @@ -33,16 +35,16 @@ public override int GetHashCode() { - return (Instance != null ? Instance.GetHashCode() : 0) + 29*(PluginType != null ? PluginType.GetHashCode() : 0); + return (Instance != null ? Instance.GetHashCode() : 0) + + 29*(PluginType != null ? PluginType.GetHashCode() : 0); } } public class BuildError { + private readonly List<BuildDependency> _dependencies = new List<BuildDependency>(); private readonly Instance _instance; private readonly Type _pluginType; - private StructureMapException _exception; - private readonly List<BuildDependency> _dependencies = new List<BuildDependency>(); public BuildError(Type pluginType, Instance instance) { @@ -50,14 +52,6 @@ _pluginType = pluginType; } - public void AddDependency(BuildDependency dependency) - { - if (!_dependencies.Contains(dependency)) - { - _dependencies.Add(dependency); - } - } - public List<BuildDependency> Dependencies { get { return _dependencies; } @@ -73,21 +67,27 @@ get { return _pluginType; } } - public StructureMapException Exception + public StructureMapException Exception { get; set; } + + public void AddDependency(BuildDependency dependency) { - get { return _exception; } - set { _exception = value; } + if (!_dependencies.Contains(dependency)) + { + _dependencies.Add(dependency); + } } public void Write(StringWriter writer) { - string description = ((IDiagnosticInstance)Instance).CreateToken().Description; + string description = ((IDiagnosticInstance) Instance).CreateToken().Description; writer.WriteLine(); - writer.WriteLine("-----------------------------------------------------------------------------------------------------"); - writer.WriteLine("Build Error on Instance '{0}' ({1})\n for PluginType {2}", Instance.Name, description, PluginType.AssemblyQualifiedName); + writer.WriteLine( + "-----------------------------------------------------------------------------------------------------"); + writer.WriteLine("Build Error on Instance '{0}' ({1})\n for PluginType {2}", Instance.Name, description, + PluginType.AssemblyQualifiedName); writer.WriteLine(); - + if (Exception != null) writer.WriteLine(Exception.ToString()); writer.WriteLine(); } Modified: trunk/Source/StructureMap/Diagnostics/CharacterWidth.cs =================================================================== --- trunk/Source/StructureMap/Diagnostics/CharacterWidth.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Diagnostics/CharacterWidth.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -2,9 +2,16 @@ { internal class CharacterWidth { + private int _width; + + internal int Width + { + get { return _width; } + } + internal static CharacterWidth[] For(int count) { - CharacterWidth[] widths = new CharacterWidth[count]; + var widths = new CharacterWidth[count]; for (int i = 0; i < widths.Length; i++) { widths[i] = new CharacterWidth(); @@ -13,8 +20,6 @@ return widths; } - private int _width = 0; - internal void SetWidth(int width) { if (width > _width) @@ -27,13 +32,5 @@ { _width += add; } - - internal int Width - { - get - { - return _width; - } - } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Diagnostics/DividerLine.cs =================================================================== --- trunk/Source/StructureMap/Diagnostics/DividerLine.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Diagnostics/DividerLine.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -10,7 +10,9 @@ { _character = character; } - + + #region Line Members + public void OverwriteCounts(CharacterWidth[] widths) { // no-op @@ -23,5 +25,7 @@ writer.Write(string.Empty.PadRight(width.Width, _character)); } } + + #endregion } } \ No newline at end of file Modified: trunk/Source/StructureMap/Diagnostics/Doctor.cs =================================================================== --- trunk/Source/StructureMap/Diagnostics/Doctor.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Diagnostics/Doctor.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -1,37 +1,37 @@ using System; -using System.Collections.Generic; -using System.Diagnostics; using System.IO; -using System.Text; namespace StructureMap.Diagnostics { public class Doctor { + public Doctor() + { + BinaryPath = AppDomain.CurrentDomain.BaseDirectory; + } + public string ConfigFile { get; set; } public string BootstrapperType { get; set; } public string BinaryPath { get; set; } public string OutputFile { get; set; } - public Doctor() - { - BinaryPath = AppDomain.CurrentDomain.BaseDirectory; - } - public DoctorReport RunReport() { AppDomain domain = null; try { - var setup = new AppDomainSetup() { ApplicationBase = BinaryPath, ConfigurationFile = ConfigFile }; + var setup = new AppDomainSetup {ApplicationBase = BinaryPath, ConfigurationFile = ConfigFile}; if (BinaryPath != null) setup.PrivateBinPath = BinaryPath; domain = AppDomain.CreateDomain("StructureMap-Diagnostics", null, setup); - var doctor = (DoctorRunner)domain.CreateInstanceAndUnwrap(typeof(DoctorRunner).Assembly.FullName, typeof(DoctorRunner).FullName); + var doctor = + (DoctorRunner) + domain.CreateInstanceAndUnwrap(typeof (DoctorRunner).Assembly.FullName, + typeof (DoctorRunner).FullName); DoctorReport report = doctor.RunReport(BootstrapperType); writeReport(report); - writeResults(System.Console.Out, report); + writeResults(Console.Out, report); return report; } @@ -48,7 +48,7 @@ return; } - using (StreamWriter writer = new StreamWriter(OutputFile)) + using (var writer = new StreamWriter(OutputFile)) { writeResults(writer, report); } @@ -56,28 +56,32 @@ private void writeResults(TextWriter writer, DoctorReport report) { - writer.WriteLine("StructureMap Configuration Report written at " + DateTime.Now.ToString()); - writer.WriteLine("Result: " + report.Result.ToString()); + writer.WriteLine("StructureMap Configuration Report written at " + DateTime.Now); + writer.WriteLine("Result: " + report.Result); writer.WriteLine(); writer.WriteLine("BootStrapper: " + BootstrapperType); writer.WriteLine("ConfigFile: " + ConfigFile); writer.WriteLine("BinaryPath: " + BinaryPath); - writer.WriteLine("===================================================================================================="); - + writer.WriteLine( + "===================================================================================================="); + writer.WriteLine(); writer.WriteLine(); if (!string.IsNullOrEmpty(report.ErrorMessages)) { - writer.WriteLine("===================================================================================================="); - writer.WriteLine("= Error Messages ="); - writer.WriteLine("===================================================================================================="); + writer.WriteLine( + "===================================================================================================="); + writer.WriteLine( + "= Error Messages ="); + writer.WriteLine( + "===================================================================================================="); writer.WriteLine(report.ErrorMessages); writer.WriteLine(); writer.WriteLine(); } - if (!string.IsNullOrEmpty(report.WhatDoIHave)) + if (!string.IsNullOrEmpty(report.WhatDoIHave)) { writer.WriteLine(report.WhatDoIHave); writer.WriteLine(); @@ -85,4 +89,4 @@ } } } -} +} \ No newline at end of file Modified: trunk/Source/StructureMap/Diagnostics/DoctorReport.cs =================================================================== --- trunk/Source/StructureMap/Diagnostics/DoctorReport.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Diagnostics/DoctorReport.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -5,8 +5,8 @@ [Serializable] public class DoctorReport { + public string ErrorMessages; + public DoctorResult Result; public string WhatDoIHave = string.Empty; - public DoctorResult Result; - public string ErrorMessages; } } \ No newline at end of file Modified: trunk/Source/StructureMap/Diagnostics/DoctorRunner.cs =================================================================== --- trunk/Source/StructureMap/Diagnostics/DoctorRunner.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Diagnostics/DoctorRunner.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -64,8 +64,6 @@ return report; } - - } private void writeConfigurationAndValidate(DoctorReport report, PluginGraph graph) Modified: trunk/Source/StructureMap/Diagnostics/Error.cs =================================================================== --- trunk/Source/StructureMap/Diagnostics/Error.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Diagnostics/Error.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -1,6 +1,5 @@ using System; using System.IO; -using System.Resources; namespace StructureMap.Diagnostics { @@ -28,7 +27,7 @@ public Error(int errorCode, Exception ex, params object[] args) : this(errorCode, args) { _message += "\n\n" + ex.Message; - + writeStackTrace(ex); } @@ -41,19 +40,7 @@ writeStackTrace(exception); } - private void writeStackTrace(Exception exception) - { - _stackTrace = string.Empty; - Exception ex = exception; - while (ex != null) - { - _stackTrace += exception.ToString(); - _stackTrace += "\n\n"; - ex = ex.InnerException; - } - } - public int Code { get { return _code; } @@ -73,6 +60,17 @@ #endregion + private void writeStackTrace(Exception exception) + { + _stackTrace = string.Empty; + Exception ex = exception; + while (ex != null) + { + _stackTrace += exception.ToString(); + _stackTrace += "\n\n"; + ex = ex.InnerException; + } + } public override bool Equals(object obj) { @@ -105,9 +103,9 @@ writer.WriteLine("Error: " + Code); if (Instance != null) writer.WriteLine(Instance.ToString()); writer.WriteLine("Source: " + Source); - + if (!string.IsNullOrEmpty(_message)) writer.WriteLine(_message); - if (!string.IsNullOrEmpty(_stackTrace)) writer.WriteLine(_stackTrace); + if (!string.IsNullOrEmpty(_stackTrace)) writer.WriteLine(_stackTrace); } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Diagnostics/ErrorCollection.cs =================================================================== --- trunk/Source/StructureMap/Diagnostics/ErrorCollection.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Diagnostics/ErrorCollection.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -6,14 +6,25 @@ { public class ErrorCollection { + private readonly List<Instance> _brokenInstances = new List<Instance>(); private readonly Dictionary<Instance, BuildError> _buildErrors = new Dictionary<Instance, BuildError>(); - private readonly List<Instance> _brokenInstances = new List<Instance>(); + public BuildError[] BuildErrors + { + get + { + var errors = new BuildError[_buildErrors.Count]; + _buildErrors.Values.CopyTo(errors, 0); + return errors; + } + } + + public void LogError( - Instance instance, - Type pluginType, - StructureMapException ex, + Instance instance, + Type pluginType, + StructureMapException ex, IEnumerable<BuildDependency> dependencies) { if (_buildErrors.ContainsKey(instance)) @@ -27,8 +38,8 @@ return; } - InstanceToken token = ((IDiagnosticInstance)instance).CreateToken(); - BuildError error = new BuildError(pluginType, instance); + InstanceToken token = ((IDiagnosticInstance) instance).CreateToken(); + var error = new BuildError(pluginType, instance); error.Exception = ex; _buildErrors.Add(instance, error); @@ -36,7 +47,8 @@ addDependenciesToError(instance, dependencies, error); } - private void addDependenciesToError(Instance instance, IEnumerable<BuildDependency> dependencies, BuildError error) + private void addDependenciesToError(Instance instance, IEnumerable<BuildDependency> dependencies, + BuildError error) { foreach (BuildDependency dependency in dependencies) { @@ -50,20 +62,9 @@ } } - public BuildError[] BuildErrors - { - get - { - BuildError[] errors = new BuildError[_buildErrors.Count]; - _buildErrors.Values.CopyTo(errors, 0); - - return errors; - } - } - public BuildError Find(Type pluginType, string name) { - foreach (KeyValuePair<Instance, BuildError> pair in _buildErrors) + foreach (var pair in _buildErrors) { BuildError error = pair.Value; if (error.PluginType == pluginType && error.Instance.Name == name) @@ -82,6 +83,5 @@ action(pair.Value); } } - } } \ No newline at end of file Modified: trunk/Source/StructureMap/Diagnostics/GraphLog.cs =================================================================== --- trunk/Source/StructureMap/Diagnostics/GraphLog.cs 2008-10-05 02:35:54 UTC (rev 170) +++ trunk/Source/StructureMap/Diagnostics/GraphLog.cs 2008-10-05 02:43:34 UTC (rev 171) @@ -1,5 +1,4 @@ using System; -using System.Collections; using System.Collections.Generic; using System.IO; using System.Text; @@ -11,9 +10,9 @@ { public class GraphLog { + private readonly List<Error> _errors = new List<Error>(); + private readonly List<string... [truncated message content] |
From: <jer...@us...> - 2008-10-05 02:38:28
|
Revision: 170 http://structuremap.svn.sourceforge.net/structuremap/?rev=170&view=rev Author: jeremydmiller Date: 2008-10-05 02:35:54 +0000 (Sun, 05 Oct 2008) Log Message: ----------- Removed all warnings except for the obsolete warnings on StructureMapConfiguration. Gonna leave that alone for awhile Modified Paths: -------------- trunk/Source/StructureMap/ObjectFactory.cs trunk/Source/StructureMap.Testing/Graph/ExplicitArgumentTester.cs trunk/Source/StructureMap.Testing/Graph/FullStackFacadeTester.cs trunk/Source/StructureMap.Testing/StructureMap.Testing.csproj Removed Paths: ------------- trunk/Source/StructureMap.Testing/Examples/ Modified: trunk/Source/StructureMap/ObjectFactory.cs =================================================================== --- trunk/Source/StructureMap/ObjectFactory.cs 2008-10-05 02:29:44 UTC (rev 169) +++ trunk/Source/StructureMap/ObjectFactory.cs 2008-10-05 02:35:54 UTC (rev 170) @@ -24,7 +24,7 @@ /// <summary> /// Restarts ObjectFactory and blows away all Singleton's and cached instances. Use with caution. /// </summary> - public static void Reset() + internal static void Reset() { lock (_lockObject) { Modified: trunk/Source/StructureMap.Testing/Graph/ExplicitArgumentTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/ExplicitArgumentTester.cs 2008-10-05 02:29:44 UTC (rev 169) +++ trunk/Source/StructureMap.Testing/Graph/ExplicitArgumentTester.cs 2008-10-05 02:35:54 UTC (rev 170) @@ -13,16 +13,12 @@ [SetUp] public void SetUp() { - StructureMapConfiguration.ResetAll(); - StructureMapConfiguration.UseDefaultStructureMapConfigFile = false; + ObjectFactory.Initialize(x => + { + x.UseDefaultStructureMapConfigFile = false; + }); } - [TearDown] - public void TearDown() - { - StructureMapConfiguration.ResetAll(); - } - #endregion public interface IExplicitTarget Modified: trunk/Source/StructureMap.Testing/Graph/FullStackFacadeTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/FullStackFacadeTester.cs 2008-10-05 02:29:44 UTC (rev 169) +++ trunk/Source/StructureMap.Testing/Graph/FullStackFacadeTester.cs 2008-10-05 02:35:54 UTC (rev 170) @@ -1,5 +1,4 @@ using NUnit.Framework; -using StructureMap.Configuration.DSL; using StructureMap.Graph; using StructureMap.Testing.TestData; using StructureMap.Testing.Widget; @@ -16,17 +15,29 @@ [SetUp] public void SetUp() { - StructureMapConfiguration.ResetAll(); - - DataMother.WriteDocument("SampleConfig.xml"); DataMother.WriteDocument("FullTesting.XML"); - ObjectFactory.Reset(); + ObjectFactory.Initialize(x => {}); } #endregion + public class AClass + { + private readonly string _name; + + public AClass(string name) + { + _name = name; + } + + public string Name + { + get { return _name; } + } + } + [Test] public void BuildAllInstances() { @@ -34,7 +45,7 @@ PluginGraph pluginGraph = DataMother.GetDiagnosticPluginGraph("SampleConfig.xml"); - Container manager = new Container(pluginGraph); + var manager = new Container(pluginGraph); IList list = manager.GetAllInstances(typeof (IWidget)); @@ -50,7 +61,7 @@ public void ChangeDefault() { ObjectFactory.SetDefaultInstanceName(typeof (IWidget), "Green"); - ColorWidget green = (ColorWidget) ObjectFactory.GetInstance(typeof (IWidget)); + var green = (ColorWidget) ObjectFactory.GetInstance(typeof (IWidget)); Assert.IsNotNull(green); Assert.AreEqual("Green", green.Color); } @@ -59,7 +70,7 @@ public void ChangeDefaultWithGenericMethod() { ObjectFactory.SetDefaultInstanceName<IWidget>("Green"); - ColorWidget green = (ColorWidget) ObjectFactory.GetInstance<IWidget>(); + var green = (ColorWidget) ObjectFactory.GetInstance<IWidget>(); Assert.IsNotNull(green); Assert.AreEqual("Green", green.Color); } @@ -67,7 +78,7 @@ [Test] public void FillDependenc1ies2() { - FilledTarget target = ObjectFactory.FillDependencies<FilledTarget>(); + var target = ObjectFactory.FillDependencies<FilledTarget>(); Assert.IsNotNull(target.Gateway); Assert.IsNotNull(target.Rule); } @@ -75,7 +86,7 @@ [Test] public void FillDependencies() { - FilledTarget target = (FilledTarget) ObjectFactory.FillDependencies(typeof (FilledTarget)); + var target = (FilledTarget) ObjectFactory.FillDependencies(typeof (FilledTarget)); Assert.IsNotNull(target.Gateway); Assert.IsNotNull(target.Rule); } @@ -83,7 +94,7 @@ [Test] public void GetChildWithDefinedGrandChild() { - Child child = ObjectFactory.GetNamedInstance(typeof (Child), "Tom") as Child; + var child = ObjectFactory.GetNamedInstance(typeof (Child), "Tom") as Child; Assert.IsNotNull(child); Assert.AreEqual("Tom", child.Name); @@ -97,13 +108,13 @@ [Test, ExpectedException(typeof (StructureMapException))] public void GetChildWithInvalidGrandChild() { - Child child = ObjectFactory.GetNamedInstance(typeof (Child), "Monte") as Child; + var child = ObjectFactory.GetNamedInstance(typeof (Child), "Monte") as Child; } [Test] public void GetChildWithReferencedGrandChild() { - Child child = ObjectFactory.GetNamedInstance(typeof (Child), "Marsha") as Child; + var child = ObjectFactory.GetNamedInstance(typeof (Child), "Marsha") as Child; Assert.IsNotNull(child); Assert.AreEqual("Marsha", child.Name); @@ -117,7 +128,7 @@ public void GetDefaultWidget() { // "Red" is marked as the default in the configuration - ColorWidget red = (ColorWidget) ObjectFactory.GetInstance(typeof (IWidget)); + var red = (ColorWidget) ObjectFactory.GetInstance(typeof (IWidget)); Assert.IsNotNull(red); Assert.AreEqual("Red", red.Color); } @@ -125,10 +136,10 @@ [Test] public void GetNamedWidgets() { - IWidget widget = (IWidget) ObjectFactory.GetNamedInstance(typeof (IWidget), "NotPluggableInstance"); + var widget = (IWidget) ObjectFactory.GetNamedInstance(typeof (IWidget), "NotPluggableInstance"); Assert.IsNotNull(widget); - ConfigurationWidget confWidget = + var confWidget = (ConfigurationWidget) ObjectFactory.GetNamedInstance(typeof (IWidget), "BigOne"); Assert.IsNotNull(confWidget); } @@ -137,7 +148,7 @@ [Test] public void GetParentWithDefinedChild() { - Parent parent = ObjectFactory.GetNamedInstance(typeof (Parent), "Jackie") as Parent; + var parent = ObjectFactory.GetNamedInstance(typeof (Parent), "Jackie") as Parent; Assert.IsNotNull(parent); Assert.AreEqual(70, parent.Age, "Age = 70"); Assert.AreEqual("Green", parent.EyeColor); @@ -155,7 +166,7 @@ [Test] public void GetParentWithReferencedChild() { - Parent parent = ObjectFactory.GetNamedInstance(typeof (Parent), "Jerry") as Parent; + var parent = ObjectFactory.GetNamedInstance(typeof (Parent), "Jerry") as Parent; Assert.IsNotNull(parent); Assert.AreEqual(72, parent.Age, "Age = 72"); Assert.AreEqual("Blue", parent.EyeColor); @@ -175,7 +186,7 @@ { ObjectFactory.SetDefaultInstanceName(typeof (GrandChild), "Trevor"); - Child child = ObjectFactory.GetNamedInstance(typeof (Child), "Jessica") as Child; + var child = ObjectFactory.GetNamedInstance(typeof (Child), "Jessica") as Child; Assert.IsNotNull(child); @@ -191,54 +202,38 @@ [Test] public void GetRules() { - ColorRule red = (ColorRule) ObjectFactory.GetNamedInstance(typeof (Rule), "Red"); + var red = (ColorRule) ObjectFactory.GetNamedInstance(typeof (Rule), "Red"); Assert.IsNotNull(red); Assert.AreEqual("Red", red.Color); - ColorRule blue = (ColorRule) ObjectFactory.GetNamedInstance(typeof (Rule), "Blue"); + var blue = (ColorRule) ObjectFactory.GetNamedInstance(typeof (Rule), "Blue"); Assert.IsNotNull(blue); Assert.AreEqual("Blue", blue.Color); - GreaterThanRule bigger = (GreaterThanRule) ObjectFactory.GetNamedInstance(typeof (Rule), "Bigger"); + var bigger = (GreaterThanRule) ObjectFactory.GetNamedInstance(typeof (Rule), "Bigger"); Assert.IsNotNull(bigger); } [Test] - public void SingletonInterceptorAlwaysReturnsSameInstance() - { - Rule rule1 = (Rule) ObjectFactory.GetNamedInstance(typeof (Rule), "Red"); - Rule rule2 = (Rule) ObjectFactory.GetNamedInstance(typeof (Rule), "Red"); - Rule rule3 = (Rule) ObjectFactory.GetNamedInstance(typeof (Rule), "Red"); - - Assert.AreSame(rule1, rule2); - Assert.AreSame(rule1, rule3); - } - - [Test] public void If_there_is_only_one_instance_of_a_type_use_that_as_default() { - AClass target = new AClass("Me"); + var target = new AClass("Me"); - Container container = new Container(registry => registry.InstanceOf<AClass>().Is.Object(target)); + var container = new Container(registry => registry.InstanceOf<AClass>().Is.Object(target)); Assert.AreSame(target, container.GetInstance<AClass>()); } - public class AClass + [Test] + public void SingletonInterceptorAlwaysReturnsSameInstance() { - private readonly string _name; + var rule1 = (Rule) ObjectFactory.GetNamedInstance(typeof (Rule), "Red"); + var rule2 = (Rule) ObjectFactory.GetNamedInstance(typeof (Rule), "Red"); + var rule3 = (Rule) ObjectFactory.GetNamedInstance(typeof (Rule), "Red"); - public AClass(string name) - { - _name = name; - } - - public string Name - { - get { return _name; } - } + Assert.AreSame(rule1, rule2); + Assert.AreSame(rule1, rule3); } - } Modified: trunk/Source/StructureMap.Testing/StructureMap.Testing.csproj =================================================================== --- trunk/Source/StructureMap.Testing/StructureMap.Testing.csproj 2008-10-05 02:29:44 UTC (rev 169) +++ trunk/Source/StructureMap.Testing/StructureMap.Testing.csproj 2008-10-05 02:35:54 UTC (rev 170) @@ -209,9 +209,6 @@ <Compile Include="Examples.cs"> <SubType>Form</SubType> </Compile> - <Compile Include="Examples\QuickStart.cs"> - <SubType>Component</SubType> - </Compile> <Compile Include="Graph\ArrayConstructorTester.cs"> <SubType>Code</SubType> </Compile> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jer...@us...> - 2008-10-05 02:32:37
|
Revision: 169 http://structuremap.svn.sourceforge.net/structuremap/?rev=169&view=rev Author: jeremydmiller Date: 2008-10-05 02:29:44 +0000 (Sun, 05 Oct 2008) Log Message: ----------- eliminating some obsolete methods from the DSL, adding ability to configure generics instances from DSL Modified Paths: -------------- trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs trunk/Source/StructureMap/Configuration/DSL/Expressions/GenericFamilyExpression.cs trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs trunk/Source/StructureMap/Configuration/DSL/Registry.cs trunk/Source/StructureMap/StructureMapConfiguration.cs trunk/Source/StructureMap.Testing/BuildSessionTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/ProfileExpressionTester.cs trunk/Source/StructureMap.Testing/Diagnostics/ValidationBuildSessionTester.cs trunk/Source/StructureMap.Testing/GenericsAcceptanceTester.cs trunk/Source/StructureMap.Testing/Pipeline/SmartInstanceTester.cs Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs 2008-10-04 01:08:55 UTC (rev 168) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs 2008-10-05 02:29:44 UTC (rev 169) @@ -15,7 +15,6 @@ private readonly List<Action<PluginFamily>> _alterations = new List<Action<PluginFamily>>(); private readonly List<Action<PluginGraph>> _children = new List<Action<PluginGraph>>(); private readonly Type _pluginType; - private readonly InstanceScope _scope = InstanceScope.PerRequest; public CreatePluginFamilyExpression(Registry registry) { @@ -24,18 +23,22 @@ registry.addExpression(graph => { PluginFamily family = graph.FindFamily(_pluginType); - family.SetScopeTo(_scope); _children.ForEach(action => action(graph)); _alterations.ForEach(action => action(family)); }); } + public IsExpression<PLUGINTYPE> TheDefault + { + get { return new InstanceExpression<PLUGINTYPE>(i => registerDefault(i)); } + } + public CreatePluginFamilyExpression<PLUGINTYPE> AddInstances(Action<InstanceExpression<PLUGINTYPE>> action) { - List<Instance> list = new List<Instance>(); + var list = new List<Instance>(); - InstanceExpression<PLUGINTYPE> child = new InstanceExpression<PLUGINTYPE>(i => list.Add(i)); + var child = new InstanceExpression<PLUGINTYPE>(i => list.Add(i)); action(child); return alterAndContinue(family => @@ -55,25 +58,6 @@ } /// <summary> - /// Sets the default instance of a Type to the definition represented by builder - /// </summary> - /// <param name="builder"></param> - /// <returns></returns> - public CreatePluginFamilyExpression<PLUGINTYPE> TheDefaultIs(Instance instance) - { - return alterAndContinue(family => - { - family.AddInstance(instance); - family.DefaultInstanceKey = instance.Name; - }); - } - - public CreatePluginFamilyExpression<PLUGINTYPE> AddInstance(Instance instance) - { - return alterAndContinue(family => family.AddInstance(instance)); - } - - /// <summary> /// Convenience method that sets the default concrete type of the PluginType. Type T /// can only accept types that do not have any primitive constructor arguments. /// StructureMap has to know how to construct all of the constructor argument types. @@ -83,13 +67,14 @@ public CreatePluginFamilyExpression<PLUGINTYPE> TheDefaultIsConcreteType<CONCRETETYPE>() where CONCRETETYPE : PLUGINTYPE { - var concreteType = typeof(CONCRETETYPE); + Type concreteType = typeof (CONCRETETYPE); ExpressionValidator.ValidatePluggabilityOf(concreteType).IntoPluginType(_pluginType); return alterAndContinue(family => { - ConfiguredInstance instance = new ConfiguredInstance(concreteType).WithName(concreteType.AssemblyQualifiedName); + ConfiguredInstance instance = + new ConfiguredInstance(concreteType).WithName(concreteType.AssemblyQualifiedName); family.AddInstance(instance); family.DefaultInstanceKey = instance.Name; }); @@ -130,7 +115,7 @@ return target; }; - PluginTypeInterceptor interceptor = new PluginTypeInterceptor(typeof (PLUGINTYPE), function); + var interceptor = new PluginTypeInterceptor(typeof (PLUGINTYPE), function); graph.InterceptorLibrary.AddInterceptor(interceptor); }); @@ -144,7 +129,7 @@ { Func<object, object> function = target => handler((PLUGINTYPE) target); - PluginTypeInterceptor interceptor = new PluginTypeInterceptor(typeof (PLUGINTYPE), function); + var interceptor = new PluginTypeInterceptor(typeof (PLUGINTYPE), function); graph.InterceptorLibrary.AddInterceptor(interceptor); }); @@ -157,7 +142,7 @@ _alterations.Add(family => { string name = PluginCache.GetPlugin(typeof (PLUGGEDTYPE)).ConcreteKey; - var instance = new SmartInstance<PLUGGEDTYPE>().WithName(name); + SmartInstance<PLUGGEDTYPE> instance = new SmartInstance<PLUGGEDTYPE>().WithName(name); family.AddInstance(instance); }); @@ -177,12 +162,13 @@ return this; } - public IsExpression<PLUGINTYPE> TheDefault + private void registerDefault(Instance instance) { - get + _alterations.Add(family => { - return new InstanceExpression<PLUGINTYPE>(i => TheDefaultIs(i)); - } + family.AddInstance(instance); + family.DefaultInstanceKey = instance.Name; + }); } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/GenericFamilyExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/GenericFamilyExpression.cs 2008-10-04 01:08:55 UTC (rev 168) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/GenericFamilyExpression.cs 2008-10-05 02:29:44 UTC (rev 169) @@ -53,7 +53,7 @@ } - public GenericFamilyExpression AddInstance(Instance instance) + private GenericFamilyExpression add(Instance instance) { return alterAndContinue(family => family.AddInstance(instance)); } @@ -92,12 +92,12 @@ public GenericFamilyExpression AddConcreteType(Type concreteType) { - return AddInstance(new ConfiguredInstance(concreteType)); + return add(new ConfiguredInstance(concreteType)); } public GenericFamilyExpression AddConcreteType(Type concreteType, string instanceName) { - return AddInstance(new ConfiguredInstance(concreteType).WithName(instanceName)); + return add(new ConfiguredInstance(concreteType).WithName(instanceName)); } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs 2008-10-04 01:08:55 UTC (rev 168) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs 2008-10-05 02:29:44 UTC (rev 169) @@ -10,6 +10,25 @@ LiteralInstance IsThis(T obj); } + public class GenericIsExpression + { + private readonly Action<Instance> _action; + + public GenericIsExpression(Action<Instance> action) + { + _action = action; + } + + + public ConfiguredInstance Is(Type concreteType) + { + var instance = new ConfiguredInstance(concreteType); + _action(instance); + + return instance; + } + } + public class InstanceExpression<T> : IsExpression<T> { private readonly Action<Instance> _action; Modified: trunk/Source/StructureMap/Configuration/DSL/Registry.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Registry.cs 2008-10-04 01:08:55 UTC (rev 168) +++ trunk/Source/StructureMap/Configuration/DSL/Registry.cs 2008-10-05 02:29:44 UTC (rev 169) @@ -120,6 +120,17 @@ }); } + public GenericIsExpression InstanceOf(Type pluginType) + { + return new GenericIsExpression(instance => + { + _actions.Add(graph => + { + graph.FindFamily(pluginType).AddInstance(instance); + }); + }); + } + /// <summary> /// Starts the definition of a new Profile /// </summary> @@ -173,18 +184,6 @@ _actions.Add(graph => graph.AddScanner(scanner)); } - [Obsolete("Like to get rid of this")] - public void AddInstanceOf(Type pluginType, Instance instance) - { - _actions.Add(graph => graph.FindFamily(pluginType).AddInstance(instance)); - } - - [Obsolete("Like to get rid of this")] - public void AddInstanceOf<PLUGINTYPE>(Instance instance) - { - _actions.Add(graph => graph.FindFamily(typeof (PLUGINTYPE)).AddInstance(instance)); - } - public bool Equals(Registry obj) { if (ReferenceEquals(null, obj)) return false; Modified: trunk/Source/StructureMap/StructureMapConfiguration.cs =================================================================== --- trunk/Source/StructureMap/StructureMapConfiguration.cs 2008-10-04 01:08:55 UTC (rev 168) +++ trunk/Source/StructureMap/StructureMapConfiguration.cs 2008-10-05 02:29:44 UTC (rev 169) @@ -197,17 +197,7 @@ return registry.ForRequestedType(pluginType); } - public static void AddInstanceOf<T>(Func<T> func) - { - registry.AddInstanceOf<T>(new ConstructorInstance<T>(func)); - } - public static void AddInstanceOf<T>(Instance instance) - { - registry.ForRequestedType<T>().AddInstance(instance); - } - - /// <summary> /// Starts the definition of a configuration Profile. /// </summary> Modified: trunk/Source/StructureMap.Testing/BuildSessionTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/BuildSessionTester.cs 2008-10-04 01:08:55 UTC (rev 168) +++ trunk/Source/StructureMap.Testing/BuildSessionTester.cs 2008-10-05 02:29:44 UTC (rev 169) @@ -126,7 +126,7 @@ return new ColorRule("Red"); }); Registry registry = new Registry(); - registry.ForRequestedType<ColorRule>().TheDefaultIs(instance); + registry.ForRequestedType<ColorRule>().TheDefault.IsThis(instance); PluginGraph graph = registry.Build(); BuildSession session = new BuildSession(graph); Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/ProfileExpressionTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/DSL/ProfileExpressionTester.cs 2008-10-04 01:08:55 UTC (rev 168) +++ trunk/Source/StructureMap.Testing/Configuration/DSL/ProfileExpressionTester.cs 2008-10-05 02:29:44 UTC (rev 169) @@ -45,8 +45,8 @@ manager.SetDefaultsToProfile(theProfileName); - IWidget widget1 = manager.GetInstance<IWidget>(); - IWidget widget2 = manager.GetInstance<IWidget>(); + var widget1 = manager.GetInstance<IWidget>(); + var widget2 = manager.GetInstance<IWidget>(); Assert.IsNotNull(widget1); Assert.IsNotNull(widget2); @@ -70,15 +70,15 @@ [Test] public void Add_default_instance_with_literal() { - Registry registry = new Registry(); - AWidget theWidget = new AWidget(); + var registry = new Registry(); + var theWidget = new AWidget(); string theProfileName = "something"; registry.CreateProfile(theProfileName) .For<IWidget>().Use(theWidget); PluginGraph graph = registry.Build(); - LiteralInstance instance = (LiteralInstance) graph.ProfileManager.GetDefault(typeof (IWidget), "something"); + var instance = (LiteralInstance) graph.ProfileManager.GetDefault(typeof (IWidget), "something"); Assert.AreSame(theWidget, instance.Object); } @@ -89,12 +89,13 @@ string theProfileName = "TheProfile"; string theDefaultName = "TheDefaultName"; - Registry registry = new Registry(); + var registry = new Registry(); registry.CreateProfile(theProfileName) .For<IWidget>().UseNamedInstance(theDefaultName) .For<Rule>().UseNamedInstance("DefaultRule"); - var masterInstance = registry.InstanceOf<IWidget>().Is.Object(new AWidget()).WithName(theDefaultName); + LiteralInstance masterInstance = + registry.InstanceOf<IWidget>().Is.Object(new AWidget()).WithName(theDefaultName); ProfileManager manager = registry.Build().ProfileManager; Assert.AreSame(masterInstance, manager.GetDefault(typeof (IWidget), theProfileName)); @@ -105,7 +106,7 @@ { string theProfileName = "TheProfile"; - Registry registry = new Registry(); + var registry = new Registry(); registry.CreateProfile(theProfileName) .For<IWidget>().UseConcreteType<AWidget>(); @@ -116,9 +117,9 @@ Assert.AreEqual(Profile.InstanceKeyForProfile(theProfileName), defaultInstance.Name); - Container manager = new Container(graph); + var manager = new Container(graph); manager.SetDefaultsToProfile(theProfileName); - AWidget widget = (AWidget) manager.GetInstance<IWidget>(); + var widget = (AWidget) manager.GetInstance<IWidget>(); Assert.IsNotNull(widget); } } Modified: trunk/Source/StructureMap.Testing/Diagnostics/ValidationBuildSessionTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Diagnostics/ValidationBuildSessionTester.cs 2008-10-04 01:08:55 UTC (rev 168) +++ trunk/Source/StructureMap.Testing/Diagnostics/ValidationBuildSessionTester.cs 2008-10-05 02:29:44 UTC (rev 169) @@ -41,7 +41,7 @@ { ValidationBuildSession session = validatedSession(r => { - r.AddInstanceOf<IWidget>(errorInstance().WithName("BadInstance")); + r.InstanceOf<IWidget>().IsThis(errorInstance().WithName("BadInstance")); r.InstanceOf<SomethingThatNeedsAWidget>().Is.OfConcreteType<SomethingThatNeedsAWidget>() .WithName("DependentInstance") @@ -71,8 +71,9 @@ { ValidationBuildSession session = validatedSession(r => { - r.AddInstanceOf<IWidget>(errorInstance().WithName("BadInstance")); + r.InstanceOf<IWidget>().IsThis(errorInstance().WithName("BadInstance")); + r.InstanceOf<SomethingThatNeedsAWidget>().Is.OfConcreteType<SomethingThatNeedsAWidget>() .WithName("DependentInstance") .CtorDependency<IWidget>().Is(x => x.References("BadInstance")); @@ -109,7 +110,7 @@ { Instance instance = errorInstance().WithName("Bad"); ValidationBuildSession session = - validatedSession(registry => registry.AddInstanceOf<IWidget>(instance)); + validatedSession(registry => registry.InstanceOf<IWidget>().IsThis(instance)); BuildError error = getFirstAndOnlyError(session); @@ -155,7 +156,7 @@ { var instance = new LiteralInstance(new WidgetWithOneValidationFailure()); ValidationBuildSession session = - validatedSession(registry => registry.AddInstanceOf<IWidget>(instance)); + validatedSession(registry => registry.InstanceOf<IWidget>().IsThis(instance)); Assert.AreEqual(1, session.ValidationErrors.Length); Modified: trunk/Source/StructureMap.Testing/GenericsAcceptanceTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/GenericsAcceptanceTester.cs 2008-10-04 01:08:55 UTC (rev 168) +++ trunk/Source/StructureMap.Testing/GenericsAcceptanceTester.cs 2008-10-05 02:29:44 UTC (rev 169) @@ -160,14 +160,13 @@ [Test] public void Define_profile_with_generics_with_named_instance() { - IContainer manager = new Container(registry => + IContainer manager = new Container(r => { - registry.AddInstanceOf(typeof (IService<>), - new ConfiguredInstance(typeof (Service<>)).WithName("Service1")); - registry.AddInstanceOf(typeof (IService<>), - new ConfiguredInstance(typeof (Service2<>)).WithName("Service2")); - registry.CreateProfile("1").For(typeof (IService<>)).UseNamedInstance("Service1"); - registry.CreateProfile("2").For(typeof (IService<>)).UseNamedInstance("Service2"); + r.InstanceOf(typeof (IService<>)).Is(typeof (Service<>)).WithName("Service1"); + r.InstanceOf(typeof (IService<>)).Is(typeof (Service2<>)).WithName("Service2"); + + r.CreateProfile("1").For(typeof (IService<>)).UseNamedInstance("Service1"); + r.CreateProfile("2").For(typeof (IService<>)).UseNamedInstance("Service2"); }); manager.SetDefaultsToProfile("1"); Modified: trunk/Source/StructureMap.Testing/Pipeline/SmartInstanceTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Pipeline/SmartInstanceTester.cs 2008-10-04 01:08:55 UTC (rev 168) +++ trunk/Source/StructureMap.Testing/Pipeline/SmartInstanceTester.cs 2008-10-05 02:29:44 UTC (rev 169) @@ -25,7 +25,7 @@ SmartInstance<T> instance = instanceOf<T>(); action(instance); - var container = new Container(r => r.ForRequestedType<T>().TheDefaultIs(instance)); + var container = new Container(r => r.ForRequestedType<T>().TheDefault.IsThis(instance)); return container.GetInstance<T>(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jer...@us...> - 2008-10-04 01:09:03
|
Revision: 168 http://structuremap.svn.sourceforge.net/structuremap/?rev=168&view=rev Author: jeremydmiller Date: 2008-10-04 01:08:55 +0000 (Sat, 04 Oct 2008) Log Message: ----------- Cleaning up some obsolete methods in the DSL and some obsolete code Modified Paths: -------------- trunk/Source/StructureMap/Configuration/DSL/Expressions/GenericFamilyExpression.cs trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs trunk/Source/StructureMap/Configuration/DSL/Registry.cs trunk/Source/StructureMap/Pipeline/SerializedInstance.cs trunk/Source/StructureMap/Pipeline/SmartInstance.cs trunk/Source/StructureMap/StructureMap.csproj trunk/Source/StructureMap.Testing/AlternativeConfigurationTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/AddInstanceTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/ConstructorExpressionTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/CreatePluginFamilyTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/DeepInstanceTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/GenericFamilyExpressionTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/InjectArrayTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/InstanceExpressionTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/InterceptAllInstancesOfPluginTypeTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/ProfileExpressionTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/RegistryIntegratedTester.cs trunk/Source/StructureMap.Testing/Diagnostics/DoctorTester.cs trunk/Source/StructureMap.Testing/Diagnostics/ValidationBuildSessionTester.cs trunk/Source/StructureMap.Testing/Graph/ContainerTester.cs trunk/Source/StructureMap.Testing/Graph/DynamicInjectionTester.cs trunk/Source/StructureMap.Testing/Graph/ExplicitArgumentTester.cs trunk/Source/StructureMap.Testing/Graph/Interceptors/TypeInterceptionTester.cs trunk/Source/StructureMap.Testing/Pipeline/OptionalSetterInjectionTester.cs Removed Paths: ------------- trunk/Source/StructureMap/Configuration/DSL/RegistryExpressions.cs Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/GenericFamilyExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/GenericFamilyExpression.cs 2008-10-03 16:34:30 UTC (rev 167) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/GenericFamilyExpression.cs 2008-10-04 01:08:55 UTC (rev 168) @@ -28,27 +28,31 @@ return this; } - public GenericFamilyExpression TheDefaultIsConcreteType(Type concreteType) + public ConfiguredInstance TheDefaultIsConcreteType(Type concreteType) { - ConfiguredInstance instance = new ConfiguredInstance(concreteType); - return TheDefaultIs(instance); + var instance = new ConfiguredInstance(concreteType); + alterAndContinue(family => + { + family.AddInstance(instance); + family.DefaultInstanceKey = instance.Name; + }); + + return instance; } - public GenericFamilyExpression TheDefaultIs(Instance instance) + public ConfiguredInstance AddType(Type concreteType) { - return alterAndContinue(family => + var instance = new ConfiguredInstance(concreteType); + + alterAndContinue(family => { family.AddInstance(instance); - family.DefaultInstanceKey = instance.Name; }); - } - public GenericFamilyExpression TheDefaultIs(Func<object> func) - { - ConstructorInstance<object> instance = new ConstructorInstance<object>(func); - return TheDefaultIs(instance); + return instance; } + public GenericFamilyExpression AddInstance(Instance instance) { return alterAndContinue(family => family.AddInstance(instance)); Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs 2008-10-03 16:34:30 UTC (rev 167) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs 2008-10-04 01:08:55 UTC (rev 168) @@ -84,5 +84,15 @@ { return returnInstance(new PrototypeInstance((ICloneable) template)); } + + public SerializedInstance SerializedCopyOf(T template) + { + return returnInstance(new SerializedInstance(template)); + } + + public UserControlInstance LoadControlFrom(string url) + { + return returnInstance(new UserControlInstance(url)); + } } } Modified: trunk/Source/StructureMap/Configuration/DSL/Registry.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Registry.cs 2008-10-03 16:34:30 UTC (rev 167) +++ trunk/Source/StructureMap/Configuration/DSL/Registry.cs 2008-10-04 01:08:55 UTC (rev 168) @@ -7,7 +7,7 @@ namespace StructureMap.Configuration.DSL { - public class Registry : RegistryExpressions + public class Registry { private readonly List<Action> _basicActions = new List<Action>(); private readonly List<Action<PluginGraph>> _actions = new List<Action<PluginGraph>>(); @@ -65,6 +65,30 @@ return new GenericFamilyExpression(pluginType, this); } + public class BuildWithExpression<T> + { + private SmartInstance<T> _instance; + + public BuildWithExpression(SmartInstance<T> instance) + { + _instance = instance; + } + + public SmartInstance<T> Configure + { + get + { + return _instance; + } + } + } + + public BuildWithExpression<T> ForConcreteType<T>() + { + var instance = ForRequestedType<T>().TheDefault.Is.OfConcreteType<T>(); + return new BuildWithExpression<T>(instance); + } + /// <summary> /// Direct StructureMap to build instances of type T, and look for concrete classes /// marked with the [Pluggable] attribute that implement type T. Deleted: trunk/Source/StructureMap/Configuration/DSL/RegistryExpressions.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/RegistryExpressions.cs 2008-10-03 16:34:30 UTC (rev 167) +++ trunk/Source/StructureMap/Configuration/DSL/RegistryExpressions.cs 2008-10-04 01:08:55 UTC (rev 168) @@ -1,64 +0,0 @@ -using System; -using StructureMap.Pipeline; - -namespace StructureMap.Configuration.DSL -{ - public class RegistryExpressions - { - /// <summary> - /// Convenience method to start the definition of an instance of type T - /// </summary> - /// <typeparam name="PLUGGEDTYPE"></typeparam> - /// <returns></returns> - public static ConfiguredInstance Instance<PLUGGEDTYPE>() - { - ConfiguredInstance instance = new ConfiguredInstance(typeof (PLUGGEDTYPE)); - - return instance; - } - - /// <summary> - /// Convenience method to register a prototype instance - /// </summary> - /// <typeparam name="PLUGINTYPE"></typeparam> - /// <param name="prototype"></param> - /// <returns></returns> - public static PrototypeInstance Prototype<PLUGINTYPE>(PLUGINTYPE prototype) - { - return new PrototypeInstance((ICloneable) prototype); - } - - /// <summary> - /// Convenience method to register a preconfigured instance of type T - /// </summary> - /// <typeparam name="PLUGINTYPE"></typeparam> - /// <param name="instance"></param> - /// <returns></returns> - public static LiteralInstance Object<PLUGINTYPE>(PLUGINTYPE instance) - { - return new LiteralInstance(instance); - } - - /// <summary> - /// Registers a UserControl as an instance - /// </summary> - /// <typeparam name="PLUGINTYPE"></typeparam> - /// <param name="url"></param> - /// <returns></returns> - public UserControlInstance LoadControlFromUrl(string url) - { - return new UserControlInstance(url); - } - - public static ConstructorInstance<T> ConstructedBy<T> - (Func<T> builder) - { - return new ConstructorInstance<T>(() => builder()); - } - - public static ReferencedInstance Instance(string referencedKey) - { - return new ReferencedInstance(referencedKey); - } - } -} \ No newline at end of file Modified: trunk/Source/StructureMap/Pipeline/SerializedInstance.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/SerializedInstance.cs 2008-10-03 16:34:30 UTC (rev 167) +++ trunk/Source/StructureMap/Pipeline/SerializedInstance.cs 2008-10-04 01:08:55 UTC (rev 168) @@ -7,7 +7,7 @@ namespace StructureMap.Pipeline { - public class SerializedInstance : Instance + public class SerializedInstance : ExpressedInstance<SerializedInstance> { private MemoryStream _stream; private object _locker = new object(); @@ -33,5 +33,10 @@ return formatter.Deserialize(_stream); } } + + protected override SerializedInstance thisInstance + { + get { return this; } + } } } Modified: trunk/Source/StructureMap/Pipeline/SmartInstance.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/SmartInstance.cs 2008-10-03 16:34:30 UTC (rev 167) +++ trunk/Source/StructureMap/Pipeline/SmartInstance.cs 2008-10-04 01:08:55 UTC (rev 168) @@ -121,9 +121,14 @@ Plugin plugin = PluginCache.GetPlugin(typeof (T)); string propertyName = plugin.FindArgumentNameForType(typeof (CHILD).MakeArrayType()); - return new ArrayDefinitionExpression<T, CHILD>(this, propertyName); + return TheArrayOf<CHILD>(propertyName); } + public ArrayDefinitionExpression<T, CHILD> TheArrayOf<CHILD>(string ctorOrPropertyName) + { + return new ArrayDefinitionExpression<T, CHILD>(this, ctorOrPropertyName); + } + public class ArrayDefinitionExpression<T, ARRAY> { private SmartInstance<T> _instance; @@ -147,7 +152,7 @@ return _instance; } - public SmartInstance<T> Contains(Instance[] arrayInstances) + public SmartInstance<T> Contains(params Instance[] arrayInstances) { _instance.setChildArray(_propertyName, arrayInstances); @@ -184,7 +189,19 @@ { return Is(new LiteralInstance(value)); } + + public SmartInstance<T> IsTheDefault() + { + return Is(new DefaultInstance()); + } + + public SmartInstance<T> Is<CONCRETETYPE>() where CONCRETETYPE : CHILD + { + return Is(new SmartInstance<CONCRETETYPE>()); + } } + + } Modified: trunk/Source/StructureMap/StructureMap.csproj =================================================================== --- trunk/Source/StructureMap/StructureMap.csproj 2008-10-03 16:34:30 UTC (rev 167) +++ trunk/Source/StructureMap/StructureMap.csproj 2008-10-04 01:08:55 UTC (rev 168) @@ -137,7 +137,6 @@ </Compile> <Compile Include="BuildSession.cs" /> <Compile Include="Configuration\DSL\Expressions\GenericFamilyExpression.cs" /> - <Compile Include="Configuration\DSL\RegistryExpressions.cs" /> <Compile Include="Configuration\ProfileBuilder.cs" /> <Compile Include="Diagnostics\BuildError.cs" /> <Compile Include="Diagnostics\CharacterWidth.cs" /> Modified: trunk/Source/StructureMap.Testing/AlternativeConfigurationTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/AlternativeConfigurationTester.cs 2008-10-03 16:34:30 UTC (rev 167) +++ trunk/Source/StructureMap.Testing/AlternativeConfigurationTester.cs 2008-10-04 01:08:55 UTC (rev 168) @@ -1,3 +1,4 @@ +using System; using System.Xml; using NUnit.Framework; using StructureMap.Testing.GenericWidgets; @@ -16,7 +17,6 @@ { DataMother.BackupStructureMapConfig(); - StructureMapConfiguration.ResetAll(); DataMother.WriteDocument("Config1.xml"); DataMother.WriteDocument("Config2.xml"); DataMother.WriteDocument("FullTesting.XML"); @@ -25,16 +25,16 @@ [TearDown] public void TearDown() { - StructureMapConfiguration.ResetAll(); DataMother.RestoreStructureMapConfig(); } #endregion - public void assertTheDefault(string color) + public void assertTheDefault(string color, Action<ConfigurationExpression> action) { - ColorWidget widget = (ColorWidget) ObjectFactory.GetInstance<IWidget>(); - Assert.AreEqual(color, widget.Color); + var container = new Container(action); + + container.GetInstance<IWidget>().ShouldBeOfType<ColorWidget>().Color.ShouldEqual(color); } [Test] @@ -45,27 +45,33 @@ doc.LoadXml(xml); - StructureMapConfiguration.UseDefaultStructureMapConfigFile = true; - StructureMapConfiguration.IncludeConfigurationFromNode(doc.DocumentElement, string.Empty); + var container = new Container(x => + { + x.AddConfigurationFromXmlFile("StructureMap.config"); + x.AddConfigurationFromNode(doc.DocumentElement); + }); - IPlug<string> service = ObjectFactory.GetInstance<IPlug<string>>(); - Assert.IsNotNull(service); + container.GetInstance<IPlug<string>>().ShouldNotBeNull(); } [Test] public void NotTheDefault() { - StructureMapConfiguration.UseDefaultStructureMapConfigFile = false; - StructureMapConfiguration.IgnoreStructureMapConfig = true; - StructureMapConfiguration.IncludeConfigurationFromFile("Config1.xml"); - - assertTheDefault("Orange"); + assertTheDefault("Orange", x => + { + x.AddConfigurationFromXmlFile("Config1.xml"); + }); } [Test] public void WithTheDefault() { - assertTheDefault("Red"); + ObjectFactory.Initialize(x => + { + x.UseDefaultStructureMapConfigFile = true; + }); + + ObjectFactory.GetInstance<IWidget>().ShouldBeOfType<ColorWidget>().Color.ShouldEqual("Red"); } } } \ No newline at end of file Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/AddInstanceTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/DSL/AddInstanceTester.cs 2008-10-03 16:34:30 UTC (rev 167) +++ trunk/Source/StructureMap.Testing/Configuration/DSL/AddInstanceTester.cs 2008-10-04 01:08:55 UTC (rev 168) @@ -7,7 +7,7 @@ namespace StructureMap.Testing.Configuration.DSL { [TestFixture] - public class AddInstanceTester : RegistryExpressions + public class AddInstanceTester { #region Setup/Teardown @@ -161,6 +161,32 @@ [Test] + public void UseAPreBuiltObjectForAnInstanceAsASerializedCopy() + { + // Build an instance for IWidget, then setup StructureMap to return cloned instances of the + // "Prototype" (GoF pattern) whenever someone asks for IWidget named "Jeremy" + var theWidget = new CloneableWidget("Jeremy"); + + + container = + new Container( + registry => registry.InstanceOf<IWidget>().Is.SerializedCopyOf(theWidget).WithName("Jeremy")); + + var widget1 = (CloneableWidget)container.GetInstance<IWidget>("Jeremy"); + var widget2 = (CloneableWidget)container.GetInstance<IWidget>("Jeremy"); + var widget3 = (CloneableWidget)container.GetInstance<IWidget>("Jeremy"); + + Assert.AreEqual("Jeremy", widget1.Name); + Assert.AreEqual("Jeremy", widget2.Name); + Assert.AreEqual("Jeremy", widget3.Name); + + Assert.AreNotSame(widget1, widget2); + Assert.AreNotSame(widget1, widget3); + Assert.AreNotSame(widget2, widget3); + } + + + [Test] public void UseAPreBuiltObjectWithAName() { // Return the specific instance when an IWidget named "Julia" is requested @@ -222,6 +248,7 @@ #endregion } + [Serializable] public class CloneableWidget : IWidget, ICloneable { private readonly string _name; Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/ConstructorExpressionTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/DSL/ConstructorExpressionTester.cs 2008-10-03 16:34:30 UTC (rev 167) +++ trunk/Source/StructureMap.Testing/Configuration/DSL/ConstructorExpressionTester.cs 2008-10-04 01:08:55 UTC (rev 168) @@ -6,16 +6,6 @@ [TestFixture] public class ConstructorExpressionTester : Registry { - #region Setup/Teardown - - [SetUp] - public void SetUp() - { - StructureMapConfiguration.ResetAll(); - } - - #endregion - public interface Abstraction { } @@ -46,11 +36,8 @@ { Concretion concretion = new Concretion(); - IContainer manager = new Container(registry => registry.ForRequestedType<Abstraction>().TheDefaultIs( - ConstructedBy<Abstraction>(() => concretion) - )); - - Assert.AreSame(concretion, manager.GetInstance<Abstraction>()); + IContainer container = new Container(registry => registry.ForRequestedType<Abstraction>().TheDefault.Is.ConstructedBy(() => concretion)); + container.GetInstance<Abstraction>().ShouldBeTheSameAs(concretion); } [Test] @@ -61,17 +48,16 @@ IContainer manager = new Container(registry => { - registry.ForRequestedType<Abstraction>().AddInstance( - ConstructedBy<Abstraction>(() => concretion1).WithName("One") - ); + registry.ForRequestedType<Abstraction>().AddInstances(x => + { + x.ConstructedBy(() => concretion1).WithName("One"); + x.ConstructedBy(() => concretion2).WithName("Two"); + }); - registry.ForRequestedType<Abstraction>().AddInstance( - ConstructedBy<Abstraction>(() => concretion2).WithName("Two") - ); }); - Assert.AreSame(concretion1, manager.GetInstance<Abstraction>("One")); - Assert.AreSame(concretion2, manager.GetInstance<Abstraction>("Two")); + manager.GetInstance<Abstraction>("One").ShouldBeTheSameAs(concretion1); + manager.GetInstance<Abstraction>("Two").ShouldBeTheSameAs(concretion2); } [Test] @@ -79,11 +65,12 @@ { Concretion concretion = new Concretion(); - IContainer manager = new Container(registry => registry.ForRequestedType<Abstraction>().AddInstance( - ConstructedBy<Abstraction>(() => concretion) - )); + var container = new Container(r => + { + r.InstanceOf<Abstraction>().Is.ConstructedBy(() => concretion); + }); - Abstraction actual = manager.GetAllInstances<Abstraction>()[0]; + Abstraction actual = container.GetAllInstances<Abstraction>()[0]; Assert.AreSame(concretion, actual); } } Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/CreatePluginFamilyTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/DSL/CreatePluginFamilyTester.cs 2008-10-03 16:34:30 UTC (rev 167) +++ trunk/Source/StructureMap.Testing/Configuration/DSL/CreatePluginFamilyTester.cs 2008-10-04 01:08:55 UTC (rev 168) @@ -59,11 +59,12 @@ [Test] public void AddInstanceByNameOnlyAddsOneInstanceToStructureMap() { - IContainer manager = new Container(registry => registry.ForRequestedType<Something>().AddInstance( - RegistryExpressions.Instance<RedSomething>().WithName( - "Red") - )); - IList<Something> instances = manager.GetAllInstances<Something>(); + var container = new Container(r => + { + r.InstanceOf<Something>().Is.OfConcreteType<RedSomething>().WithName("Red"); + }); + + IList<Something> instances = container.GetAllInstances<Something>(); Assert.AreEqual(1, instances.Count); } @@ -163,15 +164,13 @@ [Test] public void CreatePluginFamilyWithADefault() { - IContainer manager = new Container(registry => registry.BuildInstancesOf<IWidget>().TheDefaultIs( - RegistryExpressions.Instance<ColorWidget>().WithProperty( - "color"). - EqualTo( - "Red") - )); + var container = new Container(r => + { + r.ForRequestedType<IWidget>().TheDefault.Is.OfConcreteType<ColorWidget>() + .WithCtorArg("color").EqualTo("Red"); + }); - var widget = (ColorWidget) manager.GetInstance<IWidget>(); - Assert.AreEqual("Red", widget.Color); + container.GetInstance<IWidget>().ShouldBeOfType<ColorWidget>().Color.ShouldEqual("Red"); } [Test] Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/DeepInstanceTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/DSL/DeepInstanceTester.cs 2008-10-03 16:34:30 UTC (rev 167) +++ trunk/Source/StructureMap.Testing/Configuration/DSL/DeepInstanceTester.cs 2008-10-04 01:08:55 UTC (rev 168) @@ -7,7 +7,7 @@ namespace StructureMap.Testing.Configuration.DSL { [TestFixture] - public class DeepInstanceTester : RegistryExpressions + public class DeepInstanceTester { private readonly Thing _prototype = new Thing(4, "Jeremy", .333, new WidgetRule(new ColorWidget("yellow"))); @@ -21,41 +21,34 @@ [Test] public void DeepInstance2() { - assertThingMatches(registry => + assertThingMatches(r => { - registry.BuildInstancesOf<IWidget>().TheDefaultIs( - Instance<ColorWidget>() - .WithProperty("color").EqualTo("yellow") - ); + r.ForRequestedType<IWidget>().TheDefault.Is.OfConcreteType<ColorWidget>() + .WithProperty("color").EqualTo("yellow"); - registry.BuildInstancesOf<Rule>().TheDefaultIsConcreteType<WidgetRule>(); + r.ForRequestedType<Rule>().TheDefaultIsConcreteType<WidgetRule>(); - registry.BuildInstancesOf<Thing>().TheDefaultIs( - Instance<Thing>() - .WithProperty("average").EqualTo(.333) - .WithProperty("name").EqualTo("Jeremy") - .WithProperty("count").EqualTo(4) - ); + r.ForRequestedType<Thing>().TheDefault.Is.OfConcreteType<Thing>() + .WithCtorArg("average").EqualTo(.333) + .WithCtorArg("name").EqualTo("Jeremy") + .WithCtorArg("count").EqualTo(4); + }); } [Test] public void DeepInstance3() { - assertThingMatches(registry => + assertThingMatches(r => { - registry.BuildInstancesOf<IWidget>().TheDefaultIs( - Object<IWidget>(new ColorWidget("yellow")) - ); + r.ForRequestedType<IWidget>().TheDefault.IsThis(new ColorWidget("yellow")); - registry.BuildInstancesOf<Rule>().TheDefaultIsConcreteType<WidgetRule>(); + r.ForRequestedType<Rule>().TheDefaultIsConcreteType<WidgetRule>(); - registry.BuildInstancesOf<Thing>().TheDefaultIs( - Instance<Thing>() - .WithProperty("average").EqualTo(.333) - .WithProperty("name").EqualTo("Jeremy") - .WithProperty("count").EqualTo(4) - ); + r.ForRequestedType<Thing>().TheDefault.Is.OfConcreteType<Thing>() + .WithProperty("average").EqualTo(.333) + .WithProperty("name").EqualTo("Jeremy") + .WithProperty("count").EqualTo(4); }); } @@ -63,20 +56,16 @@ [Test] public void DeepInstance4() { - assertThingMatches(registry => + assertThingMatches(r => { - registry.BuildInstancesOf<IWidget>().TheDefaultIs( - Prototype<IWidget>(new ColorWidget("yellow")) - ); + r.ForRequestedType<IWidget>().TheDefault.Is.PrototypeOf(new ColorWidget("yellow")); - registry.BuildInstancesOf<Rule>().TheDefaultIsConcreteType<WidgetRule>(); + r.BuildInstancesOf<Rule>().TheDefaultIsConcreteType<WidgetRule>(); - registry.BuildInstancesOf<Thing>().TheDefaultIs( - Instance<Thing>() - .WithProperty("average").EqualTo(.333) - .WithProperty("name").EqualTo("Jeremy") - .WithProperty("count").EqualTo(4) - ); + r.ForRequestedType<Thing>().TheDefault.Is.OfConcreteType<Thing>() + .WithProperty("average").EqualTo(.333) + .WithProperty("name").EqualTo("Jeremy") + .WithProperty("count").EqualTo(4); }); } @@ -107,22 +96,25 @@ [Test] public void DeepInstanceTest1() { - ConfiguredInstance widgetExpression = Instance<ColorWidget>() - .WithProperty("color").EqualTo("yellow"); + assertThingMatches(r => + { + r.ForRequestedType<Thing>().TheDefault.Is.OfConcreteType<Thing>() + .WithProperty("name").EqualTo("Jeremy") + .WithProperty("count").EqualTo(4) + .WithProperty("average").EqualTo(.333) + .CtorDependency<Rule>().Is(x => + { + x.OfConcreteType<WidgetRule>() + .WithCtorArg("color").EqualTo("yellow") + .CtorDependency<IWidget>().Is( + w => + { + w.OfConcreteType<ColorWidget>().WithProperty("color").EqualTo("yellow"); + }); + }); + + }); - ConfiguredInstance ruleExpression = Instance<WidgetRule>() - .Child<IWidget>().Is(widgetExpression); - - - assertThingMatches(registry => registry.BuildInstancesOf<Thing>().TheDefaultIs( - Instance<Thing>() - .WithProperty("name").EqualTo("Jeremy") - .WithProperty("count").EqualTo(4) - .WithProperty("average").EqualTo(.333) - .Child<Rule>().Is( - ruleExpression - ) - )); } Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/GenericFamilyExpressionTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/DSL/GenericFamilyExpressionTester.cs 2008-10-03 16:34:30 UTC (rev 167) +++ trunk/Source/StructureMap.Testing/Configuration/DSL/GenericFamilyExpressionTester.cs 2008-10-04 01:08:55 UTC (rev 168) @@ -8,7 +8,7 @@ namespace StructureMap.Testing.Configuration.DSL { [TestFixture] - public class GenericFamilyExpressionTester : RegistryExpressions + public class GenericFamilyExpressionTester { public interface ITarget { @@ -104,11 +104,12 @@ [Test] public void Add_default_instance() { - Container manager = - new Container( - r => r.ForRequestedType(typeof (ITarget)).TheDefaultIs(Instance<Target2>())); + var container = new Container(r => + { + r.ForRequestedType(typeof (ITarget)).TheDefaultIsConcreteType(typeof (Target2)); + }); - Assert.IsInstanceOfType(typeof (Target2), manager.GetInstance<ITarget>()); + container.GetInstance<ITarget>().ShouldBeOfType<Target2>(); } [Test, Explicit] @@ -143,35 +144,29 @@ } public class Invoice{} - [Test] - public void Add_instance_by_lambda() - { - Container manager = - new Container( - r => r.ForRequestedType(typeof (ITarget)).TheDefaultIs(delegate { return new Target1(); })); - Assert.IsInstanceOfType(typeof (Target1), manager.GetInstance<ITarget>()); - } - [Test] public void Add_instance_directly() { - Container manager = - new Container( - r => r.ForRequestedType(typeof (ITarget)).AddInstance(Instance<Target2>())); + var container = new Container(r => + { + r.InstanceOf<ITarget>().Is.OfConcreteType<Target2>(); + }); - - Assert.IsInstanceOfType(typeof (Target2), manager.GetAllInstances<ITarget>()[0]); + Assert.IsInstanceOfType(typeof (Target2), container.GetAllInstances<ITarget>()[0]); } [Test] public void Enrichment() { - Container manager = new Container(r => r.ForRequestedType(typeof (ITarget)) - .TheDefaultIsConcreteType(typeof (Target1)) - .EnrichWith(raw => new WrappedTarget((ITarget) raw))); + var container = new Container(r => + { + r.ForRequestedType(typeof (ITarget)).EnrichWith(raw => new WrappedTarget((ITarget) raw)) + .TheDefaultIsConcreteType(typeof (Target1)); - WrappedTarget target = (WrappedTarget) manager.GetInstance<ITarget>(); + }); + + WrappedTarget target = (WrappedTarget) container.GetInstance<ITarget>(); Assert.IsInstanceOfType(typeof (Target1), target.Inner); } @@ -191,13 +186,13 @@ { ITarget created = null; - Container manager = new Container(r => r.ForRequestedType(typeof (ITarget)) - .TheDefaultIsConcreteType(typeof (Target3)) - .OnCreation(raw => created = (ITarget) raw)); + var container = new Container(r => + { + r.ForRequestedType(typeof (ITarget)).OnCreation(raw => created = (ITarget) raw) + .TheDefaultIsConcreteType(typeof (Target3)); + }); - manager.GetInstance<ITarget>(); - - Assert.IsInstanceOfType(typeof (Target3), created); + container.GetInstance<ITarget>().ShouldBeOfType<Target3>(); } [Test] Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/InjectArrayTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/DSL/InjectArrayTester.cs 2008-10-03 16:34:30 UTC (rev 167) +++ trunk/Source/StructureMap.Testing/Configuration/DSL/InjectArrayTester.cs 2008-10-04 01:08:55 UTC (rev 168) @@ -1,10 +1,11 @@ using NUnit.Framework; using StructureMap.Configuration.DSL; +using StructureMap.Pipeline; namespace StructureMap.Testing.Configuration.DSL { [TestFixture] - public class InjectArrayTester : RegistryExpressions + public class InjectArrayTester { #region Setup/Teardown @@ -82,40 +83,41 @@ [Test] public void CanStillAddOtherPropertiesAfterTheCallToChildArray() { - IContainer manager = new Container( - registry => registry.ForRequestedType<Processor>() - .TheDefaultIs( - Instance<Processor>() - .ChildArray<IHandler[]>().Contains( - Instance<Handler1>(), - Instance<Handler2>(), - Instance<Handler3>() - ) - .WithProperty("name").EqualTo("Jeremy") - )); + var container = new Container(x => + { + x.ForRequestedType<Processor>().TheDefault.Is + .OfConcreteType<Processor>() + .TheArrayOf<IHandler>().Contains( + new SmartInstance<Handler1>(), + new SmartInstance<Handler2>(), + new SmartInstance<Handler3>() + ) + .WithCtorArg("name").EqualTo("Jeremy"); + }); - var processor = manager.GetInstance<Processor>(); - Assert.AreEqual("Jeremy", processor.Name); + container.GetInstance<Processor>().Name.ShouldEqual("Jeremy"); } [Test] public void InjectPropertiesByName() { - IContainer manager = new Container(registry => registry.ForRequestedType<Processor2>() - .TheDefaultIs( - Instance<Processor2>() - .ChildArray<IHandler[]>("first").Contains( - Instance<Handler1>(), - Instance<Handler2>() - ) - .ChildArray<IHandler[]>("second").Contains( - Instance<Handler2>(), - Instance<Handler3>() - ) - )); + var container = new Container(r => + { + r.ForRequestedType<Processor2>().TheDefault.Is.OfConcreteType<Processor2>() + .TheArrayOf<IHandler>("first").Contains(x => + { + x.OfConcreteType<Handler1>(); + x.OfConcreteType<Handler2>(); + }) + .TheArrayOf<IHandler>("second").Contains(x => + { + x.OfConcreteType<Handler2>(); + x.OfConcreteType<Handler3>(); + }); + }); - var processor = manager.GetInstance<Processor2>(); + var processor = container.GetInstance<Processor2>(); Assert.IsInstanceOfType(typeof (Handler1), processor.First[0]); Assert.IsInstanceOfType(typeof (Handler2), processor.First[1]); @@ -123,28 +125,7 @@ Assert.IsInstanceOfType(typeof (Handler3), processor.Second[1]); } - [Test, - ExpectedException(typeof (StructureMapException), - ExpectedMessage = - "StructureMap Exception Code: 307\nIn the call to ChildArray<T>(), the type T must be an array")] - public void InjectPropertiesByNameButUseTheElementType() - { - var registry = new Registry(); - registry.ForRequestedType<Processor2>() - .TheDefaultIs( - Instance<Processor2>() - .ChildArray<IHandler>("first").Contains( - Instance<Handler1>(), - Instance<Handler2>() - ) - .ChildArray<IHandler[]>("second").Contains( - Instance<Handler2>(), - Instance<Handler3>() - ) - ); - } - [Test] public void PlaceMemberInArrayByReference() { @@ -153,15 +134,13 @@ r.InstanceOf<IHandler>().Is.OfConcreteType<Handler1>().WithName("One"); r.InstanceOf<IHandler>().Is.OfConcreteType<Handler2>().WithName("Two"); - r.ForRequestedType<Processor>() - .TheDefaultIs( - Instance<Processor>() - .WithProperty("name").EqualTo("Jeremy") - .ChildArray<IHandler[]>().Contains( - Instance("Two"), - Instance("One") - ) - ); + r.ForRequestedType<Processor>().TheDefault.Is.OfConcreteType<Processor>() + .WithCtorArg("name").EqualTo("Jeremy") + .TheArrayOf<IHandler>().Contains(x => + { + x.References("Two"); + x.References("One"); + }); }); var processor = manager.GetInstance<Processor>(); @@ -198,19 +177,21 @@ [Test] public void ProgrammaticallyInjectArrayAllInline() { - IContainer manager = new Container(registry => registry.ForRequestedType<Processor>() - .TheDefaultIs( - Instance<Processor>() - .ChildArray<IHandler[]>().Contains( - Instance<Handler1>(), - Instance<Handler2>(), - Instance<Handler3>() - ) - .WithProperty("name").EqualTo("Jeremy") - )); + var container = new Container(x => + { + x.ForRequestedType<Processor>().TheDefault.Is.OfConcreteType<Processor>() + .WithCtorArg("name").EqualTo("Jeremy") + .TheArrayOf<IHandler>().Contains(y => + { + y.OfConcreteType<Handler1>(); + y.OfConcreteType<Handler2>(); + y.OfConcreteType<Handler3>(); + }); + }); - var processor = manager.GetInstance<Processor>(); + var processor = container.GetInstance<Processor>(); + Assert.IsInstanceOfType(typeof (Handler1), processor.Handlers[0]); Assert.IsInstanceOfType(typeof (Handler2), processor.Handlers[1]); Assert.IsInstanceOfType(typeof (Handler3), processor.Handlers[2]); @@ -221,7 +202,6 @@ { IContainer container = new Container(r => { -// ReSharper disable ConvertToLambdaExpression r.ForRequestedType<Processor>().TheDefault.Is.OfConcreteType<Processor>() .WithCtorArg("name").EqualTo("Jeremy") .TheArrayOf<IHandler>().Contains(x => @@ -230,7 +210,6 @@ x.OfConcreteType<Handler2>(); x.OfConcreteType<Handler3>(); }); -// ReSharper restore ConvertToLambdaExpression }); @@ -241,21 +220,5 @@ Assert.IsInstanceOfType(typeof(Handler3), processor.Handlers[2]); } - [Test, - ExpectedException(typeof (StructureMapException), - ExpectedMessage = - "StructureMap Exception Code: 307\nIn the call to ChildArray<T>(), the type T must be an array")] - public void TryToInjectByTheElementTypeInsteadOfTheArrayType() - { - var registry = new Registry(); - - registry.ForRequestedType<Processor>() - .TheDefaultIs( - Instance<Processor>() - .WithProperty("name").EqualTo("Jeremy") - .ChildArray<IHandler>().Contains( - Instance<Handler1>()) - ); - } } } \ No newline at end of file Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/InstanceExpressionTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/DSL/InstanceExpressionTester.cs 2008-10-03 16:34:30 UTC (rev 167) +++ trunk/Source/StructureMap.Testing/Configuration/DSL/InstanceExpressionTester.cs 2008-10-04 01:08:55 UTC (rev 168) @@ -1,5 +1,6 @@ using NUnit.Framework; using StructureMap.Configuration.DSL; +using StructureMap.Pipeline; using StructureMap.Testing.Widget; namespace StructureMap.Testing.Configuration.DSL @@ -19,7 +20,7 @@ [Test, ExpectedException(typeof (StructureMapException))] public void BlowUpIfNoPropertyIsFoundForType() { - RegistryExpressions.Instance<AWidget>().Child<Rule>(); + new SmartInstance<AWidget>().CtorDependency<Rule>(); } } } \ No newline at end of file Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/InterceptAllInstancesOfPluginTypeTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/DSL/InterceptAllInstancesOfPluginTypeTester.cs 2008-10-03 16:34:30 UTC (rev 167) +++ trunk/Source/StructureMap.Testing/Configuration/DSL/InterceptAllInstancesOfPluginTypeTester.cs 2008-10-04 01:08:55 UTC (rev 168) @@ -52,7 +52,7 @@ private IContainer _manager; private Action<Registry> _defaultRegistry; - private IService getService(Action<Registry> action, string name) + private IService getService(string name, Action<Registry> action) { if (_manager == null) { @@ -69,41 +69,42 @@ [Test] public void EnrichForAll() { - Action<Registry> action = registry => registry.ForRequestedType<IService>() - .EnrichWith(s => new DecoratorService(s)) - .AddInstance( - ConstructedBy<IService>(() => new ColorService("Green")) - .WithName("Green")); + var green = getService("Green", r => + { + r.ForRequestedType<IService>().EnrichWith(s => new DecoratorService(s)) + .AddInstances(x => + { + x.ConstructedBy(() => new ColorService("Green")).WithName("Green"); + }); + }); - - IService green = getService(action, "Green"); - - - var decoratorService = (DecoratorService) green; - var innerService = (ColorService) decoratorService.Inner; - Assert.AreEqual("Green", innerService.Color); + green.ShouldBeOfType<DecoratorService>() + .Inner.ShouldBeOfType<ColorService>().Color.ShouldEqual("Green"); } [Test] public void OnStartupForAll() { - Action<Registry> action = registry => registry.ForRequestedType<IService>() - .OnCreation(s => _lastService = s) - .AddInstance( - ConstructedBy<IService>(() => new ColorService("Green")) - .WithName("Green")); + Action<Registry> action = r => + { + r.ForRequestedType<IService>().OnCreation(s => _lastService = s) + .AddInstances(x => + { + x.ConstructedBy(() => new ColorService("Green")).WithName("Green"); + }); + }; - - IService red = getService(action, "Red"); + + IService red = getService("Red", action); Assert.AreSame(red, _lastService); - IService purple = getService(action, "Purple"); + IService purple = getService("Purple", action); Assert.AreSame(purple, _lastService); - IService green = getService(action, "Green"); + IService green = getService("Green", action); Assert.AreSame(green, _lastService); - IService yellow = getService(action, "Yellow"); + IService yellow = getService("Yellow", action); Assert.AreEqual(yellow, _lastService); } } @@ -157,11 +158,14 @@ [Test] public void EnrichForAll() { - Action<Registry> action = registry => registry.ForRequestedType<IService>() - .EnrichWith(s => new DecoratorService(s)) - .AddInstance( - ConstructedBy<IService>(() => new ColorService("Green")) - .WithName("Green")); + Action<Registry> action = r => + { + r.ForRequestedType<IService>().EnrichWith(s => new DecoratorService(s)) + .AddInstances(x => + { + x.ConstructedBy(() => new ColorService("Green")).WithName("Green"); + }); + }; IService green = getService(action, "Green"); @@ -175,13 +179,15 @@ [Test] public void OnStartupForAll() { - Action<Registry> action = registry => registry.ForRequestedType<IService>() - .OnCreation(s => _lastService = s) - .AddInstance( - ConstructedBy<IService>(() => new ColorService("Green")) - .WithName("Green")); + Action<Registry> action = r => + { + r.ForRequestedType<IService>().OnCreation(s => _lastService = s) + .AddInstances(x => + { + x.ConstructedBy(() => new ColorService("Green")).WithName("Green"); + }); + }; - IService red = getService(action, "Red"); Assert.AreSame(red, _lastService); Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/ProfileExpressionTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/DSL/ProfileExpressionTester.cs 2008-10-03 16:34:30 UTC (rev 167) +++ trunk/Source/StructureMap.Testing/Configuration/DSL/ProfileExpressionTester.cs 2008-10-04 01:08:55 UTC (rev 168) @@ -107,9 +107,7 @@ Registry registry = new Registry(); registry.CreateProfile(theProfileName) - .For<IWidget>().Use( - Instance<AWidget>() - ); + .For<IWidget>().UseConcreteType<AWidget>(); PluginGraph graph = registry.Build(); Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/RegistryIntegratedTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/DSL/RegistryIntegratedTester.cs 2008-10-03 16:34:30 UTC (rev 167) +++ trunk/Source/StructureMap.Testing/Configuration/DSL/RegistryIntegratedTester.cs 2008-10-04 01:08:55 UTC (rev 168) @@ -9,21 +9,6 @@ [TestFixture] public class RegistryIntegratedTester { - #region Setup/Teardown - - [SetUp] - public void SetUp() - { - } - - [TearDown] - public void TearDown() - { - StructureMapConfiguration.ResetAll(); - } - - #endregion - [Test] public void AutomaticallyFindRegistryFromAssembly() { Modified: trunk/Source/StructureMap.Testing/Diagnostics/DoctorTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Diagnostics/DoctorTester.cs 2008-10-03 16:34:30 UTC (rev 167) +++ trunk/Source/StructureMap.Testing/Diagnostics/DoctorTester.cs 2008-10-04 01:08:55 UTC (rev 168) @@ -4,7 +4,6 @@ using System.Reflection; using System.Xml; using NUnit.Framework; -using StructureMap.Configuration.DSL; using StructureMap.Diagnostics; using StructureMap.Graph; using StructureMap.Pipeline; @@ -13,7 +12,7 @@ namespace StructureMap.Testing.Diagnostics { [TestFixture] - public class DoctorTester : RegistryExpressions + public class DoctorTester { private DoctorReport fetchReport<T>(string config) where T : IBootstrapper { @@ -167,7 +166,8 @@ public void BootstrapStructureMap() { - StructureMapConfiguration.AddInstanceOf<IWidget>(new ConfiguredInstance(typeof (ColorRule))); + ObjectFactory.Initialize( + x => { x.InstanceOf<IWidget>().IsThis(new ConfiguredInstance(typeof (ColorRule))); }); } #endregion @@ -210,15 +210,8 @@ public void BootstrapStructureMap() { - ObjectFactory.Initialize(x => - { - x.InstanceOf<IWidget>().Is.ConstructedBy(() => - { - throw new NotImplementedException(); - }); - }); - - + ObjectFactory.Initialize( + x => { x.InstanceOf<IWidget>().Is.ConstructedBy(() => { throw new NotImplementedException(); }); }); } #endregion @@ -230,8 +223,11 @@ public void BootstrapStructureMap() { - StructureMapConfiguration.IgnoreStructureMapConfig = true; - StructureMapConfiguration.BuildInstancesOf<IWidget>().TheDefault.Is.Object(new ColorWidget("Red")); + ObjectFactory.Initialize(x => + { + x.IgnoreStructureMapConfig = true; + x.BuildInstancesOf<IWidget>().TheDefault.Is.Object(new ColorWidget("Red")); + }); } #endregion @@ -243,9 +239,13 @@ public void BootstrapStructureMap() { - StructureMapConfiguration.IgnoreStructureMapConfig = true; - StructureMapConfiguration.ForRequestedType<IWidget>().TheDefaultIs( - RegistryExpressions.Instance<DoctorTester.NumberWidget>().WithProperty("age").EqualToAppSetting("age")); + ObjectFactory.Initialize(x => + { + x.IgnoreStructureMapConfig = true; + x.ForRequestedType<IWidget>().TheDefault.Is + .OfConcreteType<DoctorTester.NumberWidget>() + .WithCtorArg("age").EqualToAppSetting("age"); + }); } #endregion Modified: trunk/Source/StructureMap.Testing/Diagnostics/ValidationBuildSessionTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Diagnostics/ValidationBuildSessionTester.cs 2008-10-03 16:34:30 UTC (rev 167) +++ trunk/Source/StructureMap.Testing/Diagnostics/ValidationBuildSessionTester.cs 2008-10-04 01:08:55 UTC (rev 168) @@ -13,11 +13,11 @@ { private ValidationBuildSession validatedSession(Action<Registry> action) { - Registry registry = new Registry(); + var registry = new Registry(); action(registry); PluginGraph graph = registry.Build(); - ValidationBuildSession session = new ValidationBuildSession(graph); + var session = new ValidationBuildSession(graph); session.PerformValidations(); return session; @@ -32,20 +32,20 @@ private ConstructorInstance<IWidget> errorInstance() { - return ConstructedBy<IWidget>(delegate { throw new NotSupportedException("You can't make me!"); }); + return + new ConstructorInstance<IWidget>(delegate() { throw new NotSupportedException("You can't make me!"); }); } [Test] public void Attach_dependency_to_the_build_error_but_do_not_create_new_error_for_dependency() { - ValidationBuildSession session = validatedSession(registry => + ValidationBuildSession session = validatedSession(r => { - registry.AddInstanceOf<IWidget>(errorInstance().WithName("BadInstance")); + r.AddInstanceOf<IWidget>(errorInstance().WithName("BadInstance")); - registry.AddInstanceOf<SomethingThatNeedsAWidget>( - Instance<SomethingThatNeedsAWidget>().WithName("DependentInstance") - .Child<IWidget>().IsNamedInstance("BadInstance") - ); + r.InstanceOf<SomethingThatNeedsAWidget>().Is.OfConcreteType<SomethingThatNeedsAWidget>() + .WithName("DependentInstance") + .CtorDependency<IWidget>().Is(x => x.References("BadInstance")); }); BuildError error = getFirstAndOnlyError(session); @@ -69,14 +69,13 @@ [Test] public void Create_an_instance_that_fails_and_an_instance_that_depends_on_that_exception() { - ValidationBuildSession session = validatedSession(registry => + ValidationBuildSession session = validatedSession(r => { - registry.AddInstanceOf<IWidget>(errorInstance().WithName("BadInstance")); + r.AddInstanceOf<IWidget>(errorInstance().WithName("BadInstance")); - registry.AddInstanceOf<SomethingThatNeedsAWidget>( - Instance<SomethingThatNeedsAWidget>().WithName("DependentInstance") - .Child<IWidget>().IsNamedInstance("BadInstance") - ); + r.InstanceOf<SomethingThatNeedsAWidget>().Is.OfConcreteType<SomethingThatNeedsAWidget>() + .WithName("DependentInstance") + .CtorDependency<IWidget>().Is(x => x.References("BadInstance")); }); Assert.AreEqual(1, session.BuildErrors.Length); @@ -92,10 +91,12 @@ public void Create_an_instance_that_fails_because_of_an_inline_child() { ValidationBuildSession session = validatedSession( - registry => registry.AddInstanceOf<SomethingThatNeedsAWidget>( - Instance<SomethingThatNeedsAWidget>().WithName("BadInstance") - .Child<IWidget>().Is(errorInstance()) - )); + r => + { + r.InstanceOf<SomethingThatNeedsAWidget>().Is.OfConcreteType<SomethingThatNeedsAWidget>() + .WithName("BadInstance") + .CtorDependency<IWidget>().Is(errorInstance()); + }); BuildError error = getFirstAndOnlyError(session); @@ -130,9 +131,9 @@ [Test] public void Request_an_instance_for_the_second_time_successfully_and_get_the_same_object() { - ValidationBuildSession session = new ValidationBuildSession(new PluginGraph()); + var session = new ValidationBuildSession(new PluginGraph()); - LiteralInstance instance = Object(new ColorWidget("Red")); + var instance = new LiteralInstance(new ColorWidget("Red")); object widget1 = session.CreateInstance(typeof (IWidget), instance); object widget2 = session.CreateInstance(typeof (IWidget), instance); @@ -152,7 +153,7 @@ [Test] public void Validate_a_single_object_with_both_a_passing_validation_method_and_a_failing_validation_method() { - LiteralInstance instance = new LiteralInstance(new WidgetWithOneValidationFailure()); + var instance = new LiteralInstance(new WidgetWithOneValidationFailure()); ValidationBuildSession session = validatedSession(registry => registry.AddInstanceOf<IWidget>(instance)); Modified: trunk/Source/StructureMap.Testing/Graph/ContainerTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/ContainerTester.cs 2008-10-03 16:34:30 UTC (rev 167) +++ trunk/Source/StructureMap.Testing/Graph/ContainerTester.cs 2008-10-04 01:08:55 UTC (rev 168) @@ -80,28 +80,32 @@ [Test] public void Can_set_profile_name_and_reset_defaults() { - IContainer manager = new Container(registry => + var container = new Container(r => { - registry.ForRequestedType<IService>() - .TheDefaultIs(Instance<ColorService>().WithName("Orange").WithProperty("color").EqualTo("Orange")) - .AddInstance(Instance<ColorService>().WithName("Red").WithProperty("color").EqualTo("Red")) - .AddInstance(Instance<ColorService>().WithName("Blue").WithProperty("color").EqualTo("Blue")) - .AddInstance(Instance<ColorService>().WithName("Green").WithProperty("color").EqualTo("Green")); + r.ForRequestedType<IService>() + .TheDefault.Is.OfConcreteType<ColorService>().WithName("Orange").WithProperty("color").EqualTo("Orange"); - registry.CreateProfile("Red").For<IService>().UseNamedInstance("Red"); - registry.CreateProfile(... [truncated message content] |
From: <jer...@us...> - 2008-10-03 16:34:42
|
Revision: 167 http://structuremap.svn.sourceforge.net/structuremap/?rev=167&view=rev Author: jeremydmiller Date: 2008-10-03 16:34:30 +0000 (Fri, 03 Oct 2008) Log Message: ----------- more tests Modified Paths: -------------- trunk/Source/StructureMap/Container.cs trunk/Source/StructureMap/IContainer.cs trunk/Source/StructureMap/Model.cs trunk/Source/StructureMap/ObjectFactory.cs Modified: trunk/Source/StructureMap/Container.cs =================================================================== --- trunk/Source/StructureMap/Container.cs 2008-10-03 16:24:32 UTC (rev 166) +++ trunk/Source/StructureMap/Container.cs 2008-10-03 16:34:30 UTC (rev 167) @@ -79,7 +79,7 @@ #region IContainer Members - public Model Model + public IModel Model { get { return _model; } } Modified: trunk/Source/StructureMap/IContainer.cs =================================================================== --- trunk/Source/StructureMap/IContainer.cs 2008-10-03 16:24:32 UTC (rev 166) +++ trunk/Source/StructureMap/IContainer.cs 2008-10-03 16:34:30 UTC (rev 167) @@ -9,7 +9,7 @@ { public interface IContainer { - Model Model { get; } + IModel Model { get; } T GetInstance<T>(string instanceKey); T GetInstance<T>(); Modified: trunk/Source/StructureMap/Model.cs =================================================================== --- trunk/Source/StructureMap/Model.cs 2008-10-03 16:24:32 UTC (rev 166) +++ trunk/Source/StructureMap/Model.cs 2008-10-03 16:34:30 UTC (rev 167) @@ -6,8 +6,19 @@ namespace StructureMap { - public class Model : TypeRules + public interface IModel { + bool HasDefaultImplementationFor(Type pluginType); + bool HasDefaultImplementationFor<T>(); + IEnumerable<PluginTypeConfiguration> PluginTypes { get; } + IEnumerable<IInstance> InstancesOf(Type pluginType); + IEnumerable<IInstance> InstancesOf<T>(); + bool HasImplementationsFor(Type pluginType); + bool HasImplementationsFor<T>(); + } + + public class Model : TypeRules, IModel + { private readonly PipelineGraph _graph; internal Model(PipelineGraph graph) Modified: trunk/Source/StructureMap/ObjectFactory.cs =================================================================== --- trunk/Source/StructureMap/ObjectFactory.cs 2008-10-03 16:24:32 UTC (rev 166) +++ trunk/Source/StructureMap/ObjectFactory.cs 2008-10-03 16:34:30 UTC (rev 167) @@ -105,7 +105,7 @@ container.Inject(name, instance); } - public static Model Model + public static IModel Model { get { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jer...@us...> - 2008-10-03 16:24:42
|
Revision: 166 http://structuremap.svn.sourceforge.net/structuremap/?rev=166&view=rev Author: jeremydmiller Date: 2008-10-03 16:24:32 +0000 (Fri, 03 Oct 2008) Log Message: ----------- the ability to query what StructureMap has Modified Paths: -------------- trunk/Source/StructureMap/Container.cs trunk/Source/StructureMap/Graph/Constructor.cs trunk/Source/StructureMap/IContainer.cs trunk/Source/StructureMap/ObjectFactory.cs trunk/Source/StructureMap/PipelineGraph.cs trunk/Source/StructureMap/StructureMap.csproj trunk/Source/StructureMap.Testing/Graph/PluginTester.cs trunk/Source/StructureMap.Testing/ObjectFactoryTester.cs trunk/Source/StructureMap.Testing/PipelineGraphTester.cs trunk/Source/StructureMap.Testing/StructureMap.Testing.csproj Added Paths: ----------- trunk/Source/StructureMap/Model.cs trunk/Source/StructureMap.Testing/ModelQueryTester.cs Modified: trunk/Source/StructureMap/Container.cs =================================================================== --- trunk/Source/StructureMap/Container.cs 2008-10-03 15:36:06 UTC (rev 165) +++ trunk/Source/StructureMap/Container.cs 2008-10-03 16:24:32 UTC (rev 166) @@ -20,6 +20,7 @@ private InterceptorLibrary _interceptorLibrary; private PipelineGraph _pipelineGraph; private PluginGraph _pluginGraph; + private Model _model; public Container(Action<ConfigurationExpression> action) { @@ -66,6 +67,7 @@ pluginGraph.Log.AssertFailures(); _pipelineGraph = new PipelineGraph(pluginGraph); + _model = new Model(_pipelineGraph); PluginCache.Compile(); } @@ -77,6 +79,11 @@ #region IContainer Members + public Model Model + { + get { return _model; } + } + public T GetInstance<T>(string instanceKey) { return (T) GetInstance(typeof (T), instanceKey); Modified: trunk/Source/StructureMap/Graph/Constructor.cs =================================================================== --- trunk/Source/StructureMap/Graph/Constructor.cs 2008-10-03 15:36:06 UTC (rev 165) +++ trunk/Source/StructureMap/Graph/Constructor.cs 2008-10-03 16:24:32 UTC (rev 166) @@ -64,6 +64,8 @@ public bool CanBeAutoFilled() { + if (_ctor == null) return false; + foreach (ParameterInfo parameter in _ctor.GetParameters()) { if (!IsAutoFillable(parameter.ParameterType)) Modified: trunk/Source/StructureMap/IContainer.cs =================================================================== --- trunk/Source/StructureMap/IContainer.cs 2008-10-03 15:36:06 UTC (rev 165) +++ trunk/Source/StructureMap/IContainer.cs 2008-10-03 16:24:32 UTC (rev 166) @@ -9,6 +9,8 @@ { public interface IContainer { + Model Model { get; } + T GetInstance<T>(string instanceKey); T GetInstance<T>(); T FillDependencies<T>(); Added: trunk/Source/StructureMap/Model.cs =================================================================== --- trunk/Source/StructureMap/Model.cs (rev 0) +++ trunk/Source/StructureMap/Model.cs 2008-10-03 16:24:32 UTC (rev 166) @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using StructureMap.Graph; +using StructureMap.Pipeline; + +namespace StructureMap +{ + public class Model : TypeRules + { + private readonly PipelineGraph _graph; + + internal Model(PipelineGraph graph) + { + _graph = graph; + } + + public bool HasDefaultImplementationFor(Type pluginType) + { + var family = PluginTypes.FirstOrDefault(x => x.PluginType == pluginType); + return family == null ? false : family.Default != null; + } + + public bool HasDefaultImplementationFor<T>() + { + return HasDefaultImplementationFor(typeof (T)); + } + + public IEnumerable<PluginTypeConfiguration> PluginTypes + { + get + { + return _graph.PluginTypes; + } + } + + public IEnumerable<IInstance> InstancesOf(Type pluginType) + { + return _graph.InstancesOf(pluginType); + } + + public IEnumerable<IInstance> InstancesOf<T>() + { + return _graph.InstancesOf(typeof(T)); + } + + public bool HasImplementationsFor(Type pluginType) + { + return _graph.InstancesOf(pluginType).Count() > 0; + } + + public bool HasImplementationsFor<T>() + { + return HasImplementationsFor(typeof(T)); + } + } +} \ No newline at end of file Modified: trunk/Source/StructureMap/ObjectFactory.cs =================================================================== --- trunk/Source/StructureMap/ObjectFactory.cs 2008-10-03 15:36:06 UTC (rev 165) +++ trunk/Source/StructureMap/ObjectFactory.cs 2008-10-03 16:24:32 UTC (rev 166) @@ -105,6 +105,14 @@ container.Inject(name, instance); } + public static Model Model + { + get + { + return container.Model; + } + } + [Obsolete("Please use Inject<PLUGINTYPE>(name) instead.")] public static void InjectStub<PLUGINTYPE>(string name, PLUGINTYPE stub) { Modified: trunk/Source/StructureMap/PipelineGraph.cs =================================================================== --- trunk/Source/StructureMap/PipelineGraph.cs 2008-10-03 15:36:06 UTC (rev 165) +++ trunk/Source/StructureMap/PipelineGraph.cs 2008-10-03 16:24:32 UTC (rev 166) @@ -173,7 +173,12 @@ return _genericsGraph.FindFamily(pluginType).Instances; } - return ForType(pluginType).Instances; + if (_factories.ContainsKey(pluginType)) + { + return _factories[pluginType].Instances; + } + + return new IInstance[0]; } public IEnumerable<PluginTypeConfiguration> PluginTypes Modified: trunk/Source/StructureMap/StructureMap.csproj =================================================================== --- trunk/Source/StructureMap/StructureMap.csproj 2008-10-03 15:36:06 UTC (rev 165) +++ trunk/Source/StructureMap/StructureMap.csproj 2008-10-03 16:24:32 UTC (rev 166) @@ -410,6 +410,7 @@ <Compile Include="Graph\PluginCache.cs" /> <Compile Include="IBootstrapper.cs" /> <Compile Include="InitializationExpression.cs" /> + <Compile Include="Model.cs" /> <Compile Include="Pipeline\BuildFrame.cs" /> <Compile Include="Pipeline\BuildStack.cs" /> <Compile Include="Pipeline\ConfiguredInstanceBase.cs" /> Modified: trunk/Source/StructureMap.Testing/Graph/PluginTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/PluginTester.cs 2008-10-03 15:36:06 UTC (rev 165) +++ trunk/Source/StructureMap.Testing/Graph/PluginTester.cs 2008-10-03 16:24:32 UTC (rev 166) @@ -112,7 +112,19 @@ container.GetInstance<IEngine>(instance).ShouldBeOfType(typeof (DOHCEngine)); } + public class ClassWithNoConstructor + { + private ClassWithNoConstructor(){} + } + [Test] + public void cannot_be_auto_filled_with_no_contructors() + { + var plugin = new Plugin(typeof (ClassWithNoConstructor)); + plugin.CanBeAutoFilled.ShouldBeFalse(); + } + + [Test] public void CanBeAutoFilled_with_child_array_in_ctor() { var ctor = new Constructor(typeof (CanBeAutoFilledWithArray)); Added: trunk/Source/StructureMap.Testing/ModelQueryTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/ModelQueryTester.cs (rev 0) +++ trunk/Source/StructureMap.Testing/ModelQueryTester.cs 2008-10-03 16:24:32 UTC (rev 166) @@ -0,0 +1,104 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using NUnit.Framework; +using StructureMap.Configuration.DSL; +using StructureMap.Graph; +using StructureMap.Testing.GenericWidgets; +using StructureMap.Testing.Graph; + +namespace StructureMap.Testing +{ + [TestFixture] + public class ModelQueryTester + { + private Model _model; + private Container _container; + + [SetUp] + public void SetUp() + { + Registry registry = new Registry(); + registry.ForRequestedType(typeof(IService<>)) + .AddConcreteType(typeof(Service<>)) + .AddConcreteType(typeof(Service2<>)); + + registry.BuildInstancesOf<ISomething>() + .TheDefaultIsConcreteType<SomethingOne>() + .AddConcreteType<SomethingTwo>(); + + registry.BuildInstancesOf<IServiceProvider>().AddConcreteType<DataSet>().AddConcreteType<DataView>(); + + PluginGraph graph = registry.Build(); + PipelineGraph pipeline = new PipelineGraph(graph); + + _model = new Model(pipeline); + + _container = new Container(graph); + + } + + + [Test] + public void HasImplementationFor() + { + _model.HasDefaultImplementationFor(typeof(ISomething)).ShouldBeTrue(); + _model.HasDefaultImplementationFor(GetType()).ShouldBeFalse(); + _model.HasDefaultImplementationFor(typeof(IServiceProvider)).ShouldBeFalse(); + } + + [Test] + public void HasImplementationsFor() + { + _model.HasImplementationsFor(typeof(ISomething)).ShouldBeTrue(); + _model.HasImplementationsFor(GetType()).ShouldBeFalse(); + _model.HasImplementationsFor(typeof(IServiceProvider)).ShouldBeTrue(); + } + + [Test] + public void Iterate_over_pluginTypes() + { + _model.PluginTypes.Count().ShouldEqual(3); + } + + [Test] + public void iterate_over_instances_of_a_type() + { + _model.InstancesOf(typeof (IServiceProvider)).Count().ShouldEqual(2); + _model.InstancesOf(typeof (IService<>)).Count().ShouldEqual(2); + _model.InstancesOf<IServiceProvider>().Count().ShouldEqual(2); + } + + [Test] + public void HasImplementationFor_w_container() + { + _container.Model.HasDefaultImplementationFor(typeof(ISomething)).ShouldBeTrue(); + _container.Model.HasDefaultImplementationFor(GetType()).ShouldBeFalse(); + _container.Model.HasDefaultImplementationFor(typeof(IServiceProvider)).ShouldBeFalse(); + } + + [Test] + public void HasImplementationsFor_w_container() + { + _container.Model.HasImplementationsFor(typeof(ISomething)).ShouldBeTrue(); + _container.Model.HasImplementationsFor(GetType()).ShouldBeFalse(); + _container.Model.HasImplementationsFor(typeof(IServiceProvider)).ShouldBeTrue(); + } + + [Test] + public void Iterate_over_pluginTypes_w_container() + { + _container.Model.PluginTypes.Count().ShouldEqual(3); + } + + [Test] + public void iterate_over_instances_of_a_type_w_container() + { + _container.Model.InstancesOf(typeof (IServiceProvider)).Count().ShouldEqual(2); + _container.Model.InstancesOf(typeof (IService<>)).Count().ShouldEqual(2); + _container.Model.InstancesOf<IServiceProvider>().Count().ShouldEqual(2); + } + } +} Modified: trunk/Source/StructureMap.Testing/ObjectFactoryTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/ObjectFactoryTester.cs 2008-10-03 15:36:06 UTC (rev 165) +++ trunk/Source/StructureMap.Testing/ObjectFactoryTester.cs 2008-10-03 16:24:32 UTC (rev 166) @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Diagnostics; +using System.Linq; using System.Threading; using System.Xml; using NUnit.Framework; @@ -31,6 +32,12 @@ } [Test] + public void SmokeTestModelAccess() + { + ObjectFactory.Model.PluginTypes.Count().ShouldBeGreaterThan(0); + } + + [Test] public void SmokeTestGetAllInstancesGeneric() { IList<GrandChild> list = ObjectFactory.GetAllInstances<GrandChild>(); Modified: trunk/Source/StructureMap.Testing/PipelineGraphTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/PipelineGraphTester.cs 2008-10-03 15:36:06 UTC (rev 165) +++ trunk/Source/StructureMap.Testing/PipelineGraphTester.cs 2008-10-03 16:24:32 UTC (rev 166) @@ -25,9 +25,6 @@ #endregion - - - [Test] public void can_iterate_through_instances_of_pipelineGraph_for_generics_if_not_registered() { @@ -53,6 +50,7 @@ pipeline.PluginTypes.Count().ShouldEqual(2); } + [Test] public void can_iterate_through_instance_of_pipelineGraph_for_generics() { Modified: trunk/Source/StructureMap.Testing/StructureMap.Testing.csproj =================================================================== --- trunk/Source/StructureMap.Testing/StructureMap.Testing.csproj 2008-10-03 15:36:06 UTC (rev 165) +++ trunk/Source/StructureMap.Testing/StructureMap.Testing.csproj 2008-10-03 16:24:32 UTC (rev 166) @@ -349,6 +349,7 @@ <Compile Include="InstanceMementoInstanceCreationTester.cs" /> <Compile Include="MementoTester.cs" /> <Compile Include="MergingTester.cs" /> + <Compile Include="ModelQueryTester.cs" /> <Compile Include="ObjectFactoryInitializeTester.cs" /> <Compile Include="ObjectFactoryTester.cs"> <SubType>Code</SubType> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jer...@us...> - 2008-10-03 15:36:15
|
Revision: 165 http://structuremap.svn.sourceforge.net/structuremap/?rev=165&view=rev Author: jeremydmiller Date: 2008-10-03 15:36:06 +0000 (Fri, 03 Oct 2008) Log Message: ----------- The PluginGraphVisitor is DEAD!!!!!!!!!! Modified Paths: -------------- trunk/Source/StructureMap/Diagnostics/ValidationBuildSession.cs trunk/Source/StructureMap/Diagnostics/WhatDoIHaveWriter.cs trunk/Source/StructureMap/IInstanceFactory.cs trunk/Source/StructureMap/InstanceFactory.cs trunk/Source/StructureMap/PipelineGraph.cs trunk/Source/StructureMap.Testing/PipelineGraphTester.cs Modified: trunk/Source/StructureMap/Diagnostics/ValidationBuildSession.cs =================================================================== --- trunk/Source/StructureMap/Diagnostics/ValidationBuildSession.cs 2008-10-03 15:12:28 UTC (rev 164) +++ trunk/Source/StructureMap/Diagnostics/ValidationBuildSession.cs 2008-10-03 15:36:06 UTC (rev 165) @@ -10,13 +10,13 @@ namespace StructureMap.Diagnostics { - public class ValidationBuildSession : BuildSession, IPipelineGraphVisitor + public class ValidationBuildSession : BuildSession { private ErrorCollection _errors; private readonly List<ValidationError> _validationErrors = new List<ValidationError>(); private readonly Stack<BuildDependency> _dependencyStack = new Stack<BuildDependency>(); - private List<Instance> _explicitInstances; + private List<IInstance> _explicitInstances; public ValidationBuildSession(PipelineGraph pipelineGraph, InterceptorLibrary interceptorLibrary) : base(pipelineGraph, interceptorLibrary) @@ -84,15 +84,8 @@ return _errors.Find(pluginType, name); } - - - void IPipelineGraphVisitor.PluginType(Type pluginType, Instance defaultInstance, IBuildPolicy policy) + private void validateInstance(Type pluginType, Instance instance) { - // don't care - } - - void IPipelineGraphVisitor.Instance(Type pluginType, Instance instance) - { try { _dependencyStack.Clear(); @@ -107,11 +100,6 @@ } } - public void Source(string source) - { - throw new NotImplementedException(); - } - private void validate(Type pluginType, Instance instance, object builtObject) { if (builtObject == null) return; @@ -136,7 +124,13 @@ _explicitInstances = pipelineGraph.GetAllInstances(); _errors = new ErrorCollection(); - pipelineGraph.Visit(this); + foreach (var pluginType in pipelineGraph.PluginTypes) + { + foreach (Instance instance in pluginType.Instances) + { + validateInstance(pluginType.PluginType, instance); + } + } } public string BuildErrorMessages() Modified: trunk/Source/StructureMap/Diagnostics/WhatDoIHaveWriter.cs =================================================================== --- trunk/Source/StructureMap/Diagnostics/WhatDoIHaveWriter.cs 2008-10-03 15:12:28 UTC (rev 164) +++ trunk/Source/StructureMap/Diagnostics/WhatDoIHaveWriter.cs 2008-10-03 15:36:06 UTC (rev 165) @@ -7,7 +7,7 @@ namespace StructureMap.Diagnostics { - public class WhatDoIHaveWriter : IPipelineGraphVisitor + public class WhatDoIHaveWriter { private readonly PipelineGraph _graph; private TextReportWriter _writer; @@ -99,22 +99,6 @@ } - void IPipelineGraphVisitor.PluginType(Type pluginType, Instance defaultInstance, IBuildPolicy policy) - { - _writer.AddDivider('-'); - string[] contents = new string[]{TypePath.GetAssemblyQualifiedName(pluginType), string.Empty, string.Empty}; - - if (defaultInstance != null) - { - setContents(contents, defaultInstance); - - } - - _writer.AddText(contents); - - _writer.AddContent("Built by: " + policy.ToString()); - } - private void setContents(string[] contents, IInstance instance) { contents[1] = instance.Name; @@ -123,18 +107,6 @@ _instances.Add(instance); } - void IPipelineGraphVisitor.Instance(Type pluginType, Instance instance) - { - if (_instances.Contains(instance)) - { - return; - } - string[] contents = new string[]{string.Empty, string.Empty, string.Empty}; - setContents(contents, instance); - - _writer.AddText(contents); - } - } } Modified: trunk/Source/StructureMap/IInstanceFactory.cs =================================================================== --- trunk/Source/StructureMap/IInstanceFactory.cs 2008-10-03 15:12:28 UTC (rev 164) +++ trunk/Source/StructureMap/IInstanceFactory.cs 2008-10-03 15:36:06 UTC (rev 165) @@ -24,7 +24,6 @@ void ForEachInstance(Action<Instance> action); void ImportFrom(PluginFamily family); - void AcceptVisitor(IPipelineGraphVisitor visitor, Instance defaultInstance); void EjectAllInstances(); } } \ No newline at end of file Modified: trunk/Source/StructureMap/InstanceFactory.cs =================================================================== --- trunk/Source/StructureMap/InstanceFactory.cs 2008-10-03 15:12:28 UTC (rev 164) +++ trunk/Source/StructureMap/InstanceFactory.cs 2008-10-03 15:36:06 UTC (rev 165) @@ -141,12 +141,6 @@ family.EachInstance(instance => _instances.Fill(instance.Name, instance)); } - public void AcceptVisitor(IPipelineGraphVisitor visitor, Instance defaultInstance) - { - visitor.PluginType(PluginType, defaultInstance, _policy); - ForEachInstance(i => visitor.Instance(PluginType, i)); - } - public void EjectAllInstances() { _instances.Clear(); Modified: trunk/Source/StructureMap/PipelineGraph.cs =================================================================== --- trunk/Source/StructureMap/PipelineGraph.cs 2008-10-03 15:12:28 UTC (rev 164) +++ trunk/Source/StructureMap/PipelineGraph.cs 2008-10-03 15:36:06 UTC (rev 165) @@ -9,12 +9,6 @@ { public delegate InstanceFactory MissingFactoryFunction(Type pluginType, ProfileManager profileManager); - [Obsolete("I think we can eliminate this in favor of IEnumerable")] - public interface IPipelineGraphVisitor - { - void PluginType(Type pluginType, Instance defaultInstance, IBuildPolicy policy); - void Instance(Type pluginType, Instance instance); - } public class PluginTypeConfiguration { @@ -90,44 +84,6 @@ set { _profileManager.CurrentProfile = value; } } - public void Visit(IPipelineGraphVisitor visitor) - { - var factories = new IInstanceFactory[_factories.Count]; - _factories.Values.CopyTo(factories, 0); - - foreach (IInstanceFactory factory in factories) - { - Type pluginType = factory.PluginType; - Instance defaultInstance = _profileManager.GetDefault(pluginType); - - factory.AcceptVisitor(visitor, defaultInstance); - } - } - - // Useful for the validation logic - public List<Instance> GetAllInstances() - { - PipelineGraphFlattener flattener = new PipelineGraphFlattener(); - Visit(flattener); - - return flattener.Instances; - } - - internal class PipelineGraphFlattener : IPipelineGraphVisitor - { - internal List<Instance> Instances = new List<Instance>(); - - public void PluginType(Type pluginType, Instance defaultInstance, IBuildPolicy policy) - { - // don't care - } - - public void Instance(Type pluginType, Instance instance) - { - Instances.Add(instance); - } - } - public IInstanceFactory ForType(Type pluginType) { createFactoryIfMissing(pluginType); @@ -245,5 +201,17 @@ } + + public List<IInstance> GetAllInstances() + { + List<IInstance> list = new List<IInstance>(); + + foreach (var pair in _factories) + { + list.AddRange(pair.Value.Instances); + } + + return list; + } } } \ No newline at end of file Modified: trunk/Source/StructureMap.Testing/PipelineGraphTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/PipelineGraphTester.cs 2008-10-03 15:12:28 UTC (rev 164) +++ trunk/Source/StructureMap.Testing/PipelineGraphTester.cs 2008-10-03 15:36:06 UTC (rev 165) @@ -25,48 +25,10 @@ #endregion - private void expectVisits(Registry registry, Action<IPipelineGraphVisitor> action) - { - MockRepository mocks = new MockRepository(); - IPipelineGraphVisitor visitor = mocks.StrictMock<IPipelineGraphVisitor>(); - using (mocks.Record()) - { - action(visitor); - } - using (mocks.Playback()) - { - PluginGraph graph = registry.Build(); - PipelineGraph pipeline = new PipelineGraph(graph); - pipeline.Visit(visitor); - } - } - - [Test] - public void Visit_a_single_family_with_a_default_and_another_instance() - { - Registry registry = new Registry(); - registry.BuildInstancesOf<ISomething>() - .TheDefaultIsConcreteType<SomethingOne>() - .AddConcreteType<SomethingTwo>(); - - expectVisits(registry, visitor => - { - visitor.PluginType(typeof (ISomething), null, null); - LastCall.Constraints(Is.Equal(typeof (ISomething)), Is.TypeOf(typeof (ConfiguredInstance)), Is.TypeOf<BuildPolicy>()); - - visitor.Instance(typeof(ISomething), null); - LastCall.Constraints(Is.Equal(typeof(ISomething)), Is.TypeOf(typeof(ConfiguredInstance))); - - visitor.Instance(typeof (ISomething), null); - LastCall.Constraints(Is.Equal(typeof(ISomething)), Is.TypeOf(typeof(SmartInstance<SomethingTwo>))); - }); - } - - [Test] public void can_iterate_through_instances_of_pipelineGraph_for_generics_if_not_registered() { PipelineGraph pipeline = new PipelineGraph(new PluginGraph()); @@ -138,58 +100,6 @@ pipeline.InstancesOf(typeof(ISomething)).Count().ShouldEqual(0); } - [Test] - public void Visit_a_single_family_with_no_default() - { - Registry registry = new Registry(); - registry.BuildInstancesOf<ISomething>() - .AddConcreteType<SomethingOne>() - .AddConcreteType<SomethingTwo>(); - expectVisits(registry, visitor => - { - visitor.PluginType(typeof(ISomething), null, new BuildPolicy()); - - visitor.Instance(typeof (ISomething), null); - LastCall.Constraints(Is.Equal(typeof (ISomething)), Is.TypeOf(typeof (SmartInstance<SomethingOne>))); - - visitor.Instance(typeof(ISomething), null); - LastCall.Constraints(Is.Equal(typeof(ISomething)), Is.TypeOf(typeof(SmartInstance<SomethingTwo>))); - }); - } - - [Test] - public void Visit_a_single_family_with_only_a_default() - { - Registry registry = new Registry(); - registry.BuildInstancesOf<ISomething>() - .TheDefaultIsConcreteType<SomethingOne>(); - - expectVisits(registry, visitor => - { - visitor.PluginType(typeof(ISomething), null, null); - LastCall.Constraints(Is.Equal(typeof (ISomething)), Is.TypeOf(typeof (ConfiguredInstance)), Is.TypeOf<BuildPolicy>()); - - visitor.Instance(typeof (ISomething), null); - LastCall.Constraints(Is.Equal(typeof (ISomething)), Is.TypeOf(typeof (ConfiguredInstance))); - }); - } - - - [Test] - public void Visit_three_families() - { - Registry registry = new Registry(); - registry.BuildInstancesOf<ISomething>(); - registry.BuildInstancesOf<IWidget>(); - registry.BuildInstancesOf<Rule>(); - - expectVisits(registry, visitor => - { - visitor.PluginType(typeof(ISomething), null, new BuildPolicy()); - visitor.PluginType(typeof(IWidget), null, new BuildPolicy()); - visitor.PluginType(typeof(Rule), null, new BuildPolicy()); - }); - } } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jer...@us...> - 2008-10-03 15:12:58
|
Revision: 164 http://structuremap.svn.sourceforge.net/structuremap/?rev=164&view=rev Author: jeremydmiller Date: 2008-10-03 15:12:28 +0000 (Fri, 03 Oct 2008) Log Message: ----------- Getting ready to eliminate IPluginGraphVisitor and finish out querying the model Modified Paths: -------------- trunk/Source/StructureMap/Diagnostics/TextLine.cs trunk/Source/StructureMap/Diagnostics/WhatDoIHaveWriter.cs trunk/Source/StructureMap/Graph/PluginFamily.cs trunk/Source/StructureMap/PipelineGraph.cs trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs Modified: trunk/Source/StructureMap/Diagnostics/TextLine.cs =================================================================== --- trunk/Source/StructureMap/Diagnostics/TextLine.cs 2008-10-03 14:47:59 UTC (rev 163) +++ trunk/Source/StructureMap/Diagnostics/TextLine.cs 2008-10-03 15:12:28 UTC (rev 164) @@ -9,6 +9,11 @@ internal TextLine(string[] contents) { _contents = contents; + for (int i = 0; i < contents.Length; i++) + { + if (contents[i] == null) contents[i] = string.Empty; + + } } public void OverwriteCounts(CharacterWidth[] widths) Modified: trunk/Source/StructureMap/Diagnostics/WhatDoIHaveWriter.cs =================================================================== --- trunk/Source/StructureMap/Diagnostics/WhatDoIHaveWriter.cs 2008-10-03 14:47:59 UTC (rev 163) +++ trunk/Source/StructureMap/Diagnostics/WhatDoIHaveWriter.cs 2008-10-03 15:12:28 UTC (rev 164) @@ -11,7 +11,7 @@ { private readonly PipelineGraph _graph; private TextReportWriter _writer; - private List<Instance> _instances; + private List<IInstance> _instances; public WhatDoIHaveWriter(PipelineGraph graph) { @@ -33,12 +33,15 @@ private void writeContentsOfPluginTypes(StringWriter stringWriter) { _writer = new TextReportWriter(3); - _instances = new List<Instance>(); + _instances = new List<IInstance>(); _writer.AddDivider('='); _writer.AddText("PluginType", "Name", "Description"); - _graph.Visit(this); + foreach (var pluginType in _graph.PluginTypes) + { + writePluginType(pluginType); + } _writer.AddDivider('='); @@ -61,6 +64,41 @@ writer.WriteLine(); } + private void writePluginType(PluginTypeConfiguration pluginType) + { + _writer.AddDivider('-'); + string[] contents = new string[] { pluginType.PluginType.AssemblyQualifiedName ?? pluginType.PluginType.Name, string.Empty, string.Empty }; + + if (pluginType.Default != null) + { + setContents(contents, pluginType.Default); + + } + + _writer.AddText(contents); + + _writer.AddContent("Built by: " + pluginType.Policy.ToString()); + + foreach (var instance in pluginType.Instances) + { + writeInstance(instance); + } + } + + private void writeInstance(IInstance instance) + { + if (_instances.Contains(instance)) + { + return; + } + + string[] contents = new[] { string.Empty, string.Empty, string.Empty }; + setContents(contents, instance); + + _writer.AddText(contents); + } + + void IPipelineGraphVisitor.PluginType(Type pluginType, Instance defaultInstance, IBuildPolicy policy) { _writer.AddDivider('-'); @@ -77,11 +115,10 @@ _writer.AddContent("Built by: " + policy.ToString()); } - private void setContents(string[] contents, Instance instance) + private void setContents(string[] contents, IInstance instance) { - InstanceToken token = ((IDiagnosticInstance)instance).CreateToken(); - contents[1] = token.Name; - contents[2] = token.Description; + contents[1] = instance.Name; + contents[2] = instance.Description; _instances.Add(instance); } Modified: trunk/Source/StructureMap/Graph/PluginFamily.cs =================================================================== --- trunk/Source/StructureMap/Graph/PluginFamily.cs 2008-10-03 14:47:59 UTC (rev 163) +++ trunk/Source/StructureMap/Graph/PluginFamily.cs 2008-10-03 15:12:28 UTC (rev 164) @@ -366,7 +366,7 @@ { return new PluginTypeConfiguration() { - Instance = GetDefaultInstance(), + Default = GetDefaultInstance(), PluginType = PluginType, Policy = _buildPolicy, Instances = Instances Modified: trunk/Source/StructureMap/PipelineGraph.cs =================================================================== --- trunk/Source/StructureMap/PipelineGraph.cs 2008-10-03 14:47:59 UTC (rev 163) +++ trunk/Source/StructureMap/PipelineGraph.cs 2008-10-03 15:12:28 UTC (rev 164) @@ -19,7 +19,7 @@ public class PluginTypeConfiguration { public Type PluginType { get; set; } - public IInstance Instance { get; set; } + public IInstance Default { get; set; } public IBuildPolicy Policy { get; set; } public IEnumerable<IInstance> Instances { get; set; } @@ -235,7 +235,7 @@ yield return new PluginTypeConfiguration() { - Instance = _profileManager.GetDefault(factory.PluginType), + Default = _profileManager.GetDefault(factory.PluginType), PluginType = factory.PluginType, Policy = factory.Policy, Instances = factory.Instances Modified: trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs 2008-10-03 14:47:59 UTC (rev 163) +++ trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs 2008-10-03 15:12:28 UTC (rev 164) @@ -48,7 +48,7 @@ var configuration = family.GetConfiguration(); - configuration.Instance.ShouldBeTheSameAs(instance1); + configuration.Default.ShouldBeTheSameAs(instance1); configuration.PluginType.ShouldEqual(typeof (IWidget)); configuration.Policy.ShouldBeTheSameAs(family.Policy); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jer...@us...> - 2008-10-03 14:48:09
|
Revision: 163 http://structuremap.svn.sourceforge.net/structuremap/?rev=163&view=rev Author: jeremydmiller Date: 2008-10-03 14:47:59 +0000 (Fri, 03 Oct 2008) Log Message: ----------- doing some work for querying the state of the container Modified Paths: -------------- trunk/Source/StructureMap/Graph/GenericsPluginGraph.cs trunk/Source/StructureMap/Graph/PluginFamily.cs trunk/Source/StructureMap/IContainer.cs trunk/Source/StructureMap/IInstanceFactory.cs trunk/Source/StructureMap/InstanceFactory.cs trunk/Source/StructureMap/ObjectFactory.cs trunk/Source/StructureMap/Pipeline/ConfiguredInstance.cs trunk/Source/StructureMap/Pipeline/Instance.cs trunk/Source/StructureMap/Pipeline/Profile.cs trunk/Source/StructureMap/Pipeline/ProfileManager.cs trunk/Source/StructureMap/PipelineGraph.cs trunk/Source/StructureMap.Testing/Configuration/DSL/RegistryIntegratedTester.cs trunk/Source/StructureMap.Testing/Graph/GenericsPluginGraphTester.cs trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs trunk/Source/StructureMap.Testing/Pipeline/ConfiguredInstanceTester.cs trunk/Source/StructureMap.Testing/PipelineGraphTester.cs Modified: trunk/Source/StructureMap/Graph/GenericsPluginGraph.cs =================================================================== --- trunk/Source/StructureMap/Graph/GenericsPluginGraph.cs 2008-10-02 18:44:00 UTC (rev 162) +++ trunk/Source/StructureMap/Graph/GenericsPluginGraph.cs 2008-10-03 14:47:59 UTC (rev 163) @@ -1,4 +1,5 @@ using System; +using System.Collections; using System.Collections.Generic; using StructureMap.Pipeline; using StructureMap.Util; @@ -19,6 +20,17 @@ get { return _families.Count; } } + public IEnumerable<PluginTypeConfiguration> Families + { + get + { + foreach (var family in _families) + { + yield return family.GetConfiguration(); + } + } + } + public static bool CanBeCast(Type pluginType, Type pluggedType) { try @@ -101,9 +113,6 @@ { PluginFamily templatedFamily = baseFamily.CreateTemplatedClone(templateTypes); - - - return templatedFamily; } @@ -155,5 +164,10 @@ { return _families.Retrieve(pluginType); } + + public bool HasFamily(Type pluginType) + { + return _families.Has(pluginType); + } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Graph/PluginFamily.cs =================================================================== --- trunk/Source/StructureMap/Graph/PluginFamily.cs 2008-10-02 18:44:00 UTC (rev 162) +++ trunk/Source/StructureMap/Graph/PluginFamily.cs 2008-10-03 14:47:59 UTC (rev 163) @@ -257,6 +257,11 @@ get { return _instances.Count; } } + public IEnumerable<IInstance> Instances + { + get { return _instances.GetAll(); } + } + #endregion public Plugin FindPlugin(Type pluggedType) @@ -356,5 +361,16 @@ AddPlugin(concreteType, name); } } + + public PluginTypeConfiguration GetConfiguration() + { + return new PluginTypeConfiguration() + { + Instance = GetDefaultInstance(), + PluginType = PluginType, + Policy = _buildPolicy, + Instances = Instances + }; + } } } \ No newline at end of file Modified: trunk/Source/StructureMap/IContainer.cs =================================================================== --- trunk/Source/StructureMap/IContainer.cs 2008-10-02 18:44:00 UTC (rev 162) +++ trunk/Source/StructureMap/IContainer.cs 2008-10-03 14:47:59 UTC (rev 163) @@ -34,9 +34,6 @@ string WhatDoIHave(); - - - /// <summary> /// Creates a new object instance of the requested type /// </summary> @@ -70,5 +67,6 @@ void AssertConfigurationIsValid(); object GetInstance(Type type, ExplicitArguments args); PluginGraph PluginGraph { get; } + void EjectAllInstancesOf<T>(); } } \ No newline at end of file Modified: trunk/Source/StructureMap/IInstanceFactory.cs =================================================================== --- trunk/Source/StructureMap/IInstanceFactory.cs 2008-10-02 18:44:00 UTC (rev 162) +++ trunk/Source/StructureMap/IInstanceFactory.cs 2008-10-03 14:47:59 UTC (rev 163) @@ -1,5 +1,6 @@ using System; using System.Collections; +using System.Collections.Generic; using StructureMap.Graph; using StructureMap.Pipeline; @@ -11,6 +12,8 @@ public interface IInstanceFactory { Type PluginType { get; } + IEnumerable<IInstance> Instances { get; } + IBuildPolicy Policy { get; } void AddInstance(Instance instance); Instance AddType<T>(); Modified: trunk/Source/StructureMap/InstanceFactory.cs =================================================================== --- trunk/Source/StructureMap/InstanceFactory.cs 2008-10-02 18:44:00 UTC (rev 162) +++ trunk/Source/StructureMap/InstanceFactory.cs 2008-10-03 14:47:59 UTC (rev 163) @@ -79,6 +79,16 @@ get { return _pluginType; } } + public IEnumerable<IInstance> Instances + { + get { return _instances.GetAll(); } + } + + public IBuildPolicy Policy + { + get { return _policy; } + } + public void ForEachInstance(Action<Instance> action) { _instances.Each(action); Modified: trunk/Source/StructureMap/ObjectFactory.cs =================================================================== --- trunk/Source/StructureMap/ObjectFactory.cs 2008-10-02 18:44:00 UTC (rev 162) +++ trunk/Source/StructureMap/ObjectFactory.cs 2008-10-03 14:47:59 UTC (rev 163) @@ -2,8 +2,6 @@ using System.Collections; using System.Collections.Generic; using System.Security.Permissions; -using StructureMap.Configuration.DSL; -using StructureMap.Diagnostics; using StructureMap.Graph; using StructureMap.Pipeline; @@ -14,7 +12,7 @@ /// <summary> /// The main static Facade for the StructureMap container /// </summary> - [EnvironmentPermission(SecurityAction.Assert, Read="COMPUTERNAME")] + [EnvironmentPermission(SecurityAction.Assert, Read = "COMPUTERNAME")] public class ObjectFactory { private static readonly object _lockObject = new object(); @@ -44,17 +42,17 @@ public static void Initialize(Action<InitializationExpression> action) { - lock (typeof(ObjectFactory)) + lock (typeof (ObjectFactory)) { - InitializationExpression expression = new InitializationExpression(); + var expression = new InitializationExpression(); action(expression); - var graph = expression.BuildGraph(); + PluginGraph graph = expression.BuildGraph(); StructureMapConfiguration.Seal(); _container = new Container(graph); Profile = expression.DefaultProfileName; - } + } } @@ -94,30 +92,26 @@ [Obsolete("Please use Inject() instead.")] public static void InjectStub<PLUGINTYPE>(PLUGINTYPE stub) { - Inject<PLUGINTYPE>(stub); + Inject(stub); } public static void Inject<PLUGINTYPE>(PLUGINTYPE instance) { - container.Inject<PLUGINTYPE>(instance); + container.Inject(instance); } public static void Inject<PLUGINTYPE>(string name, PLUGINTYPE instance) { - container.Inject<PLUGINTYPE>(name, instance); + container.Inject(name, instance); } [Obsolete("Please use Inject<PLUGINTYPE>(name) instead.")] public static void InjectStub<PLUGINTYPE>(string name, PLUGINTYPE stub) { - Inject<PLUGINTYPE>(name, stub); + Inject(name, stub); } - - - - public static string WhatDoIHave() { return container.WhatDoIHave(); @@ -128,7 +122,114 @@ container.AssertConfigurationIsValid(); } + /// <summary> + /// Returns and/or constructs the default instance of the requested System.Type + /// </summary> + /// <param name="pluginType"></param> + /// <returns></returns> + public static object GetInstance(Type pluginType) + { + return container.GetInstance(pluginType); + } + /// <summary> + /// Returns and/or constructs the default instance of the requested System.Type + /// </summary> + /// <typeparam name="PLUGINTYPE"></typeparam> + /// <returns></returns> + public static PLUGINTYPE GetInstance<PLUGINTYPE>() + { + return (PLUGINTYPE) container.GetInstance(typeof (PLUGINTYPE)); + } + + public static object GetInstance(Type TargetType, Instance instance) + { + return container.GetInstance(TargetType, instance); + } + + public static TargetType GetInstance<TargetType>(Instance instance) + { + return (TargetType) container.GetInstance(typeof (TargetType), instance); + } + + /// <summary> + /// Retrieves an instance of pluginType by name + /// </summary> + /// <param name="pluginType">The PluginType</param> + /// <param name="name">The instance name</param> + /// <returns></returns> + public static object GetNamedInstance(Type pluginType, string name) + { + return container.GetInstance(pluginType, name); + } + + /// <summary> + /// Retrieves an instance of PLUGINTYPE by name + /// </summary> + /// <typeparam name="PLUGINTYPE">The PluginType</typeparam> + /// <param name="name">The instance name</param> + /// <returns></returns> + public static PLUGINTYPE GetNamedInstance<PLUGINTYPE>(string name) + { + return (PLUGINTYPE) container.GetInstance(typeof (PLUGINTYPE), name); + } + + public static void SetDefaultInstanceName(Type TargetType, string InstanceName) + { + container.SetDefault(TargetType, InstanceName); + } + + public static void SetDefaultInstanceName<TargetType>(string InstanceName) + { + container.SetDefault(typeof (TargetType), InstanceName); + } + + /// <summary> + /// Retrieves all instances of the pluginType + /// </summary> + /// <param name="pluginType"></param> + /// <returns></returns> + public static IList GetAllInstances(Type pluginType) + { + return container.GetAllInstances(pluginType); + } + + /// <summary> + /// Retrieves all instances of the PLUGINTYPE + /// </summary> + /// <typeparam name="PLUGINTYPE"></typeparam> + /// <returns></returns> + public static IList<PLUGINTYPE> GetAllInstances<PLUGINTYPE>() + { + return container.GetAllInstances<PLUGINTYPE>(); + } + + /// <summary> + /// Pass in an explicit argument of Type T + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="arg"></param> + /// <returns></returns> + public static ExplicitArgsExpression With<T>(T arg) + { + return container.With(arg); + } + + /// <summary> + /// Pass in an explicit argument by name + /// </summary> + /// <param name="argName"></param> + /// <returns></returns> + public static IExplicitProperty With(string argName) + { + return container.With(argName); + } + + public static void EjectAllInstancesOf<T>() + { + container.EjectAllInstancesOf<T>(); + } + #region Container and setting defaults private static IContainer container @@ -149,7 +250,6 @@ return _container; } } - public static string Profile @@ -185,7 +285,7 @@ { container.SetDefault(pluginType, instance); } - + public static void SetDefault<PLUGINTYPE>(Instance instance) { container.SetDefault<PLUGINTYPE>(instance); @@ -232,120 +332,12 @@ PluginGraph graph = StructureMapConfiguration.GetPluginGraph(); StructureMapConfiguration.Seal(); - Container container = new Container(graph); + var container = new Container(graph); container.SetDefaultsToProfile(_profile); return container; } #endregion - - - /// <summary> - /// Returns and/or constructs the default instance of the requested System.Type - /// </summary> - /// <param name="pluginType"></param> - /// <returns></returns> - public static object GetInstance(Type pluginType) - { - return container.GetInstance(pluginType); - } - - /// <summary> - /// Returns and/or constructs the default instance of the requested System.Type - /// </summary> - /// <typeparam name="PLUGINTYPE"></typeparam> - /// <returns></returns> - public static PLUGINTYPE GetInstance<PLUGINTYPE>() - { - return (PLUGINTYPE) container.GetInstance(typeof (PLUGINTYPE)); - } - - public static object GetInstance(Type TargetType, Instance instance) - { - return container.GetInstance(TargetType, instance); - } - - public static TargetType GetInstance<TargetType>(Instance instance) - { - return (TargetType) container.GetInstance(typeof (TargetType), instance); - } - - /// <summary> - /// Retrieves an instance of pluginType by name - /// </summary> - /// <param name="pluginType">The PluginType</param> - /// <param name="name">The instance name</param> - /// <returns></returns> - public static object GetNamedInstance(Type pluginType, string name) - { - return container.GetInstance(pluginType, name); - } - - /// <summary> - /// Retrieves an instance of PLUGINTYPE by name - /// </summary> - /// <typeparam name="PLUGINTYPE">The PluginType</typeparam> - /// <param name="name">The instance name</param> - /// <returns></returns> - public static PLUGINTYPE GetNamedInstance<PLUGINTYPE>(string name) - { - return (PLUGINTYPE) container.GetInstance(typeof (PLUGINTYPE), name); - } - - public static void SetDefaultInstanceName(Type TargetType, string InstanceName) - { - container.SetDefault(TargetType, InstanceName); - } - - public static void SetDefaultInstanceName<TargetType>(string InstanceName) - { - container.SetDefault(typeof (TargetType), InstanceName); - } - - /// <summary> - /// Retrieves all instances of the pluginType - /// </summary> - /// <param name="pluginType"></param> - /// <returns></returns> - public static IList GetAllInstances(Type pluginType) - { - return container.GetAllInstances(pluginType); - } - - /// <summary> - /// Retrieves all instances of the PLUGINTYPE - /// </summary> - /// <typeparam name="PLUGINTYPE"></typeparam> - /// <returns></returns> - public static IList<PLUGINTYPE> GetAllInstances<PLUGINTYPE>() - { - return container.GetAllInstances<PLUGINTYPE>(); - } - - /// <summary> - /// Pass in an explicit argument of Type T - /// </summary> - /// <typeparam name="T"></typeparam> - /// <param name="arg"></param> - /// <returns></returns> - public static ExplicitArgsExpression With<T>(T arg) - { - return container.With(arg); - } - - /// <summary> - /// Pass in an explicit argument by name - /// </summary> - /// <param name="argName"></param> - /// <returns></returns> - public static IExplicitProperty With(string argName) - { - return container.With(argName); - } - - } - - } \ No newline at end of file Modified: trunk/Source/StructureMap/Pipeline/ConfiguredInstance.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/ConfiguredInstance.cs 2008-10-02 18:44:00 UTC (rev 162) +++ trunk/Source/StructureMap/Pipeline/ConfiguredInstance.cs 2008-10-03 14:47:59 UTC (rev 163) @@ -46,7 +46,7 @@ protected override string getDescription() { - string typeName = TypePath.GetAssemblyQualifiedName(_pluggedType); + string typeName = _pluggedType.AssemblyQualifiedName; Constructor ctor = new Constructor(_pluggedType); if (ctor.HasArguments()) { Modified: trunk/Source/StructureMap/Pipeline/Instance.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/Instance.cs 2008-10-02 18:44:00 UTC (rev 162) +++ trunk/Source/StructureMap/Pipeline/Instance.cs 2008-10-03 14:47:59 UTC (rev 163) @@ -16,14 +16,20 @@ } } - public interface IDiagnosticInstance + public interface IInstance { + string Name { get; } + Type ConcreteType { get; } + string Description { get; } + } + + public interface IDiagnosticInstance : IInstance + { bool CanBePartOfPluginFamily(PluginFamily family); Instance FindInstanceForProfile(PluginFamily family, string profileName, GraphLog log); InstanceToken CreateToken(); void Preprocess(PluginFamily family); void AddTemplatedInstanceTo(PluginFamily family, Type[] templateTypes); - Type ConcreteType { get; } } public abstract class Instance : IDiagnosticInstance @@ -126,11 +132,16 @@ addTemplatedInstanceTo(family, templateTypes); } - Type IDiagnosticInstance.ConcreteType + Type IInstance.ConcreteType { get { return getConcreteType(null); } } + string IInstance.Description + { + get { return getDescription(); } + } + protected virtual Type getConcreteType(Type pluginType) { return pluginType; Modified: trunk/Source/StructureMap/Pipeline/Profile.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/Profile.cs 2008-10-02 18:44:00 UTC (rev 162) +++ trunk/Source/StructureMap/Pipeline/Profile.cs 2008-10-03 14:47:59 UTC (rev 163) @@ -108,5 +108,9 @@ } + public void Remove<T>() + { + _instances.Remove(typeof (T)); + } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Pipeline/ProfileManager.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/ProfileManager.cs 2008-10-02 18:44:00 UTC (rev 162) +++ trunk/Source/StructureMap/Pipeline/ProfileManager.cs 2008-10-03 14:47:59 UTC (rev 163) @@ -231,5 +231,14 @@ CurrentProfile = CurrentProfile; } + + public void EjectAllInstancesOf<T>() + { + _currentProfile.Remove<T>(); + foreach (var pair in _profiles) + { + pair.Value.Remove<T>(); + } + } } } \ No newline at end of file Modified: trunk/Source/StructureMap/PipelineGraph.cs =================================================================== --- trunk/Source/StructureMap/PipelineGraph.cs 2008-10-02 18:44:00 UTC (rev 162) +++ trunk/Source/StructureMap/PipelineGraph.cs 2008-10-03 14:47:59 UTC (rev 163) @@ -3,17 +3,28 @@ using StructureMap.Diagnostics; using StructureMap.Graph; using StructureMap.Pipeline; +using System.Linq; namespace StructureMap { public delegate InstanceFactory MissingFactoryFunction(Type pluginType, ProfileManager profileManager); + [Obsolete("I think we can eliminate this in favor of IEnumerable")] public interface IPipelineGraphVisitor { void PluginType(Type pluginType, Instance defaultInstance, IBuildPolicy policy); void Instance(Type pluginType, Instance instance); } + public class PluginTypeConfiguration + { + public Type PluginType { get; set; } + public IInstance Instance { get; set; } + public IBuildPolicy Policy { get; set; } + + public IEnumerable<IInstance> Instances { get; set; } + } + public class PipelineGraph { private readonly Dictionary<Type, IInstanceFactory> _factories @@ -166,6 +177,7 @@ public void SetDefault(Type pluginType, Instance instance) { createFactoryIfMissing(pluginType); + ForType(pluginType).AddInstance(instance); _profileManager.SetDefault(pluginType, instance); } @@ -195,6 +207,43 @@ public void EjectAllInstancesOf<T>() { ForType(typeof (T)).EjectAllInstances(); + _profileManager.EjectAllInstancesOf<T>(); } + + public IEnumerable<IInstance> InstancesOf(Type pluginType) + { + if (_genericsGraph.HasFamily(pluginType)) + { + return _genericsGraph.FindFamily(pluginType).Instances; + } + + return ForType(pluginType).Instances; + } + + public IEnumerable<PluginTypeConfiguration> PluginTypes + { + get + { + foreach (PluginTypeConfiguration configuration in _genericsGraph.Families) + { + yield return configuration; + } + + foreach (var pair in _factories) + { + var factory = pair.Value; + + yield return new PluginTypeConfiguration() + { + Instance = _profileManager.GetDefault(factory.PluginType), + PluginType = factory.PluginType, + Policy = factory.Policy, + Instances = factory.Instances + }; + } + } + + + } } } \ No newline at end of file Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/RegistryIntegratedTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/DSL/RegistryIntegratedTester.cs 2008-10-02 18:44:00 UTC (rev 162) +++ trunk/Source/StructureMap.Testing/Configuration/DSL/RegistryIntegratedTester.cs 2008-10-03 14:47:59 UTC (rev 163) @@ -27,7 +27,11 @@ [Test] public void AutomaticallyFindRegistryFromAssembly() { - ObjectFactory.Initialize(x => { x.Scan(s => { s.AssemblyContainingType<RedGreenRegistry>(); }); }); + ObjectFactory.Initialize(x => { x.Scan(s => + { + s.AssemblyContainingType<RedGreenRegistry>(); + s.LookForRegistries(); + }); }); var colors = new List<string>(); foreach (IWidget widget in ObjectFactory.GetAllInstances<IWidget>()) @@ -57,6 +61,7 @@ var scanner = new AssemblyScanner(); scanner.AssemblyContainingType(typeof (RedGreenRegistry)); + scanner.LookForRegistries(); scanner.ScanForAll(graph); graph.Seal(); Modified: trunk/Source/StructureMap.Testing/Graph/GenericsPluginGraphTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/GenericsPluginGraphTester.cs 2008-10-02 18:44:00 UTC (rev 162) +++ trunk/Source/StructureMap.Testing/Graph/GenericsPluginGraphTester.cs 2008-10-03 14:47:59 UTC (rev 163) @@ -1,7 +1,10 @@ using System; using NUnit.Framework; +using StructureMap.Configuration.DSL; using StructureMap.Graph; using StructureMap.Pipeline; +using StructureMap.Testing.GenericWidgets; +using System.Linq; namespace StructureMap.Testing.Graph { @@ -27,7 +30,16 @@ Assert.IsFalse(GenericsPluginGraph.CanBeCast(pluginType, pluggedType)); } + [Test] + public void can_iterate_through_families() + { + GenericsPluginGraph graph = new GenericsPluginGraph(); + graph.FindFamily(typeof(IGenericService<>)).AddType(typeof(GenericService<>)); + graph.FindFamily(typeof(IService<>)).AddType(typeof(Service<>)); + graph.Families.Count().ShouldEqual(2); + } + [Test] public void Check_the_generic_plugin_family_expression() { Modified: trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs 2008-10-02 18:44:00 UTC (rev 162) +++ trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs 2008-10-03 14:47:59 UTC (rev 163) @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Data; +using System.Linq; using System.Reflection; using NUnit.Framework; using StructureMap.Attributes; @@ -33,6 +34,29 @@ } [Test] + public void can_get_configuration_object_from_PluginFamily() + { + PluginFamily family = new PluginFamily(typeof(IWidget)); + + var instance1 = new SmartInstance<ColorWidget>().WithCtorArg("color").EqualTo("Red"); + var instance2 = new SmartInstance<ColorWidget>().WithCtorArg("color").EqualTo("Blue"); + + family.AddInstance(instance1); + family.AddInstance(instance2); + + family.DefaultInstanceKey = instance1.Name; + + var configuration = family.GetConfiguration(); + + configuration.Instance.ShouldBeTheSameAs(instance1); + configuration.PluginType.ShouldEqual(typeof (IWidget)); + configuration.Policy.ShouldBeTheSameAs(family.Policy); + + configuration.Instances.Count().ShouldEqual(2); + } + + + [Test] public void add_plugins_at_seal_from_the_list_of_types() { var family = new PluginFamily(typeof (IServiceProvider)); Modified: trunk/Source/StructureMap.Testing/Pipeline/ConfiguredInstanceTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Pipeline/ConfiguredInstanceTester.cs 2008-10-02 18:44:00 UTC (rev 162) +++ trunk/Source/StructureMap.Testing/Pipeline/ConfiguredInstanceTester.cs 2008-10-03 14:47:59 UTC (rev 163) @@ -138,7 +138,7 @@ public void Create_description_if_has_plugged_type_and_plugged_type_has_no_arguments() { var instance = new ConfiguredInstance(GetType()); - TestUtility.AssertDescriptionIs(instance, TypePath.GetAssemblyQualifiedName(GetType())); + TestUtility.AssertDescriptionIs(instance, GetType().AssemblyQualifiedName); } [Test] @@ -146,7 +146,7 @@ { var instance = new ConfiguredInstance(typeof (ColorService)); TestUtility.AssertDescriptionIs(instance, - "Configured " + TypePath.GetAssemblyQualifiedName(typeof (ColorService))); + "Configured " + typeof (ColorService).AssemblyQualifiedName); } [Test] Modified: trunk/Source/StructureMap.Testing/PipelineGraphTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/PipelineGraphTester.cs 2008-10-02 18:44:00 UTC (rev 162) +++ trunk/Source/StructureMap.Testing/PipelineGraphTester.cs 2008-10-03 14:47:59 UTC (rev 163) @@ -1,12 +1,15 @@ using System; +using System.Diagnostics; using NUnit.Framework; using Rhino.Mocks; using Rhino.Mocks.Constraints; using StructureMap.Configuration.DSL; using StructureMap.Graph; using StructureMap.Pipeline; +using StructureMap.Testing.GenericWidgets; using StructureMap.Testing.Graph; using StructureMap.Testing.Widget; +using System.Linq; namespace StructureMap.Testing { @@ -62,8 +65,80 @@ LastCall.Constraints(Is.Equal(typeof(ISomething)), Is.TypeOf(typeof(SmartInstance<SomethingTwo>))); }); } + + [Test] + public void can_iterate_through_instances_of_pipelineGraph_for_generics_if_not_registered() + { + PipelineGraph pipeline = new PipelineGraph(new PluginGraph()); + pipeline.InstancesOf(typeof(IService<>)).Count().ShouldEqual(0); + } [Test] + public void can_iterate_through_families_including_both_generics_and_normal() + { + Registry registry = new Registry(); + registry.ForRequestedType(typeof(IService<>)) + .AddConcreteType(typeof(Service<>)) + .AddConcreteType(typeof(Service2<>)); + + registry.BuildInstancesOf<ISomething>() + .TheDefaultIsConcreteType<SomethingOne>() + .AddConcreteType<SomethingTwo>(); + + PluginGraph graph = registry.Build(); + PipelineGraph pipeline = new PipelineGraph(graph); + + pipeline.PluginTypes.Count().ShouldEqual(2); + } + + [Test] + public void can_iterate_through_instance_of_pipelineGraph_for_generics() + { + Registry registry = new Registry(); + registry.ForRequestedType(typeof (IService<>)) + .AddConcreteType(typeof (Service<>)) + .AddConcreteType(typeof (Service2<>)); + + var graph = registry.Build(); + var pipeline = new PipelineGraph(graph); + + foreach (var instance in pipeline.InstancesOf(typeof(IService<>))) + { + Debug.WriteLine(instance.Description); + } + + pipeline.InstancesOf(typeof (IService<>)).Count().ShouldEqual(2); + } + + [Test] + public void can_iterate_through_instances_of_pipelineGraph_on_a_type_that_is_registered() + { + Registry registry = new Registry(); + registry.BuildInstancesOf<ISomething>() + .TheDefaultIsConcreteType<SomethingOne>() + .AddConcreteType<SomethingTwo>(); + + PluginGraph graph = registry.Build(); + + PipelineGraph pipeline = new PipelineGraph(graph); + + pipeline.InstancesOf(typeof(ISomething)).Count().ShouldEqual(2); + + pipeline.Inject<ISomething>(new SomethingTwo()); + + pipeline.InstancesOf(typeof(ISomething)).Count().ShouldEqual(3); + } + + [Test] + public void can_iterate_through_empty_array_of_pipelineGraph_for_a_type_that_is_not_registered() + { + PluginGraph graph = new PluginGraph(); + PipelineGraph pipeline = new PipelineGraph(graph); + + pipeline.InstancesOf(typeof(ISomething)).Count().ShouldEqual(0); + } + + [Test] public void Visit_a_single_family_with_no_default() { Registry registry = new Registry(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jer...@us...> - 2008-10-02 18:44:12
|
Revision: 162 http://structuremap.svn.sourceforge.net/structuremap/?rev=162&view=rev Author: jeremydmiller Date: 2008-10-02 18:44:00 +0000 (Thu, 02 Oct 2008) Log Message: ----------- assembly scanning updates Modified Paths: -------------- trunk/Source/StructureMap/Configuration/DSL/Registry.cs trunk/Source/StructureMap/Configuration/GraphBuilder.cs trunk/Source/StructureMap/Diagnostics/ValidationBuildSession.cs trunk/Source/StructureMap/Graph/AssemblyScanner.cs trunk/Source/StructureMap/Graph/PluginFamily.cs trunk/Source/StructureMap/Graph/PluginGraph.cs trunk/Source/StructureMap.Testing/Configuration/DSL/RegistryTester.cs trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs trunk/Source/StructureMap.Testing/StructureMap.Testing.csproj Added Paths: ----------- trunk/Source/StructureMap.Testing/Graph/AssemblyScannerTester.cs Modified: trunk/Source/StructureMap/Configuration/DSL/Registry.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Registry.cs 2008-10-02 01:05:46 UTC (rev 161) +++ trunk/Source/StructureMap/Configuration/DSL/Registry.cs 2008-10-02 18:44:00 UTC (rev 162) @@ -9,6 +9,7 @@ { public class Registry : RegistryExpressions { + private readonly List<Action> _basicActions = new List<Action>(); private readonly List<Action<PluginGraph>> _actions = new List<Action<PluginGraph>>(); public Registry() @@ -24,6 +25,11 @@ // no-op; } + protected void registerAction(Action action) + { + _basicActions.Add(action); + } + internal void addExpression(Action<PluginGraph> alteration) { _actions.Add(alteration); @@ -35,10 +41,8 @@ graph.Log.StartSource("Registry: " + TypePath.GetAssemblyQualifiedName(GetType())); - foreach (Action<PluginGraph> action in _actions) - { - action(graph); - } + _basicActions.ForEach(action => action()); + _actions.ForEach(action => action(graph)); graph.Registries.Add(this); } Modified: trunk/Source/StructureMap/Configuration/GraphBuilder.cs =================================================================== --- trunk/Source/StructureMap/Configuration/GraphBuilder.cs 2008-10-02 01:05:46 UTC (rev 161) +++ trunk/Source/StructureMap/Configuration/GraphBuilder.cs 2008-10-02 18:44:00 UTC (rev 162) @@ -33,7 +33,6 @@ _systemScanner = new AssemblyScanner(); _systemScanner.Assembly(Assembly.GetExecutingAssembly()); - _systemScanner.IgnoreRegistries(); _systemGraph = new PluginGraph(_systemScanner); } Modified: trunk/Source/StructureMap/Diagnostics/ValidationBuildSession.cs =================================================================== --- trunk/Source/StructureMap/Diagnostics/ValidationBuildSession.cs 2008-10-02 01:05:46 UTC (rev 161) +++ trunk/Source/StructureMap/Diagnostics/ValidationBuildSession.cs 2008-10-02 18:44:00 UTC (rev 162) @@ -147,6 +147,12 @@ _validationErrors.ForEach(e => e.Write(writer)); _errors.ForEach(e => e.Write(writer)); + writer.WriteLine(); + writer.WriteLine(); + + + writer.WriteLine("StructureMap Failures: {0} Build/Configuration Failures and {1} Validation Errors", _errors.BuildErrors.Length, _validationErrors.Count); + return builder.ToString(); } Modified: trunk/Source/StructureMap/Graph/AssemblyScanner.cs =================================================================== --- trunk/Source/StructureMap/Graph/AssemblyScanner.cs 2008-10-02 01:05:46 UTC (rev 161) +++ trunk/Source/StructureMap/Graph/AssemblyScanner.cs 2008-10-02 18:44:00 UTC (rev 162) @@ -8,16 +8,25 @@ namespace StructureMap.Graph { + public static class TypeExtensions + { + public static bool IsInNamespace(this Type type, string nameSpace) + { + return type.Namespace.StartsWith(nameSpace); + } + } + public class AssemblyScanner { private readonly List<Assembly> _assemblies = new List<Assembly>(); private readonly List<ITypeScanner> _scanners = new List<ITypeScanner>(); + private readonly List<Predicate<Type>> _includes = new List<Predicate<Type>>(); + private readonly List<Predicate<Type>> _excludes = new List<Predicate<Type>>(); public AssemblyScanner() { With<FamilyAttributeScanner>(); With<PluggableAttributeScanner>(); - With<FindRegistriesScanner>(); } public int Count @@ -25,6 +34,8 @@ get { return _assemblies.Count; } } + + public void ScanForAll(PluginGraph pluginGraph) { _assemblies.ForEach(assem => scanTypesInAssembly(assem, pluginGraph)); @@ -37,6 +48,9 @@ { foreach (Type type in assembly.GetExportedTypes()) { + if (!isInTheIncludes(type)) continue; + if (isInTheExcludes(type)) continue; + _scanners.ForEach(scanner => scanner.Process(type, graph)); } } @@ -46,6 +60,31 @@ } } + private bool isInTheExcludes(Type type) + { + if (_excludes.Count == 0) return false; + + foreach (var exclude in _excludes) + { + if (exclude(type)) return true; + } + + return false; + } + + private bool isInTheIncludes(Type type) + { + if (_includes.Count == 0) return true; + + + foreach (var include in _includes) + { + if (include(type)) return true; + } + + return false; + } + public void Assembly(Assembly assembly) { if (!_assemblies.Contains(assembly)) @@ -79,8 +118,15 @@ _scanners.Add(scanner); } + public void WithDefaultConventions() + { + With<DefaultConventionScanner>(); + } + public void With<T>() where T : ITypeScanner, new() { + _scanners.RemoveAll(scanner => scanner is T); + ITypeScanner previous = _scanners.FirstOrDefault(scanner => scanner is T); if (previous == null) { @@ -88,9 +134,9 @@ } } - public void IgnoreRegistries() + public void LookForRegistries() { - _scanners.RemoveAll(x => x is FindRegistriesScanner); + With<FindRegistriesScanner>(); } public void TheCallingAssembly() @@ -142,5 +188,46 @@ With(new FindAllTypesFilter(pluginType)); } + public void IgnoreStructureMapAttributes() + { + _scanners.RemoveAll(scanner => scanner is FamilyAttributeScanner); + _scanners.RemoveAll(scanner => scanner is PluggableAttributeScanner); + } + + + public void Exclude(Predicate<Type> exclude) + { + _excludes.Add(exclude); + } + + public void ExcludeNamespace(string nameSpace) + { + Exclude(type => type.IsInNamespace(nameSpace)); + } + + public void ExcludeNamespaceContainingType<T>() + { + ExcludeNamespace(typeof(T).Namespace); + } + + public void Include(Predicate<Type> predicate) + { + _includes.Add(predicate); + } + + public void IncludeNamespace(string nameSpace) + { + Include(type => type.IsInNamespace(nameSpace)); + } + + public void IncludeNamespaceContainingType<T>() + { + IncludeNamespace(typeof (T).Namespace); + } + + public void ExcludeType<T>() + { + Exclude(type => type == typeof (T)); + } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Graph/PluginFamily.cs =================================================================== --- trunk/Source/StructureMap/Graph/PluginFamily.cs 2008-10-02 01:05:46 UTC (rev 161) +++ trunk/Source/StructureMap/Graph/PluginFamily.cs 2008-10-02 18:44:00 UTC (rev 162) @@ -346,5 +346,15 @@ AddPlugin(concreteType); } } + + public void AddType(Type concreteType, string name) + { + if (!CanBeCast(_pluginType, concreteType)) return; + + if (FindPlugin(name) == null) + { + AddPlugin(concreteType, name); + } + } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Graph/PluginGraph.cs =================================================================== --- trunk/Source/StructureMap/Graph/PluginGraph.cs 2008-10-02 01:05:46 UTC (rev 161) +++ trunk/Source/StructureMap/Graph/PluginGraph.cs 2008-10-02 18:44:00 UTC (rev 162) @@ -156,9 +156,22 @@ FindFamily(pluginType).AddType(concreteType); } + public void AddType(Type pluginType, Type concreteType, string name) + { + FindFamily(pluginType).AddType(concreteType, name); + } + public void AddType(Type pluggedType) { _pluggedTypes.Add(pluggedType); } + + public void Configure(Action<Registry> action) + { + var registry = new Registry(); + action(registry); + + registry.ConfigurePluginGraph(this); + } } } \ No newline at end of file Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/RegistryTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/DSL/RegistryTester.cs 2008-10-02 01:05:46 UTC (rev 161) +++ trunk/Source/StructureMap.Testing/Configuration/DSL/RegistryTester.cs 2008-10-02 18:44:00 UTC (rev 162) @@ -18,6 +18,8 @@ #endregion + + [Test] public void Equals_check_true() { @@ -59,6 +61,13 @@ Container container = new Container(registry); } + + [Test] + public void use_the_basic_actions_as_part_of_building_a_PluginGraph() + { + var container = new Container(new BasicActionRegistry()); + container.GetInstance<IGateway>().ShouldBeOfType<Fake3Gateway>(); + } } public class ConcreteWithNoConstructor @@ -142,4 +151,12 @@ #endregion } + + public class BasicActionRegistry : Registry + { + public BasicActionRegistry() + { + registerAction(() => ForRequestedType<IGateway>().TheDefaultIsConcreteType<Fake3Gateway>()); + } + } } \ No newline at end of file Added: trunk/Source/StructureMap.Testing/Graph/AssemblyScannerTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/AssemblyScannerTester.cs (rev 0) +++ trunk/Source/StructureMap.Testing/Graph/AssemblyScannerTester.cs 2008-10-02 18:44:00 UTC (rev 162) @@ -0,0 +1,299 @@ +using System; +using NUnit.Framework; +using StructureMap.Configuration.DSL; +using StructureMap.Graph; +using StructureMap.Testing.Widget; +using StructureMap.Testing.Widget5; + +namespace StructureMap.Testing.Graph +{ + public class TestingRegistry : Registry + { + public static bool WasUsed; + + public TestingRegistry() + { + WasUsed = true; + + ForRequestedType<Rule>().TheDefault.IsThis(new ColorRule("Green")); + } + + public static void Reset() + { + WasUsed = false; + } + } + + [TestFixture] + public class AssemblyScannerTester + { + #region Setup/Teardown + + [SetUp] + public void SetUp() + { + TestingRegistry.Reset(); + + theGraph = null; + } + + #endregion + + private PluginGraph theGraph; + + private void Scan(Action<AssemblyScanner> action) + { + var scanner = new AssemblyScanner(); + action(scanner); + theGraph = new PluginGraph(); + scanner.ScanForAll(theGraph); + } + + + private void shouldHaveFamily<T>() + { + theGraph.PluginFamilies.Contains(typeof (T)).ShouldBeTrue(); + } + + private void shouldNotHaveFamily<T>() + { + theGraph.PluginFamilies.Contains(typeof (T)).ShouldBeFalse(); + } + + [Test] + public void AssemblyScanner_will_scan_for_attributes_by_default() + { + Scan(x => { x.AssemblyContainingType<ITypeThatHasAttributeButIsNotInRegistry>(); }); + + shouldHaveFamily<ITypeThatHasAttributeButIsNotInRegistry>(); + } + + [Test] + public void is_in_namespace() + { + GetType().IsInNamespace("blah").ShouldBeFalse(); + GetType().IsInNamespace("StructureMap").ShouldBeTrue(); + GetType().IsInNamespace("StructureMap.Testing").ShouldBeTrue(); + GetType().IsInNamespace("StructureMap.Testing.Graph").ShouldBeTrue(); + GetType().IsInNamespace("StructureMap.Testing.Graph.Something").ShouldBeFalse(); + } + + [Test] + public void Only_scan_for_registries_ignores_attributes() + { + Scan(x => + { + x.AssemblyContainingType<ITypeThatHasAttributeButIsNotInRegistry>(); + x.IgnoreStructureMapAttributes(); + }); + + shouldNotHaveFamily<ITypeThatHasAttributeButIsNotInRegistry>(); + } + + [Test] + public void scan_but_ignore_registries_by_default() + { + Scan(x => + { + x.TheCallingAssembly(); + }); + + TestingRegistry.WasUsed.ShouldBeFalse(); + } + + [Test] + public void Search_for_registries_by_default() + { + Scan(x => + { + x.TheCallingAssembly(); + x.LookForRegistries(); + }); + + TestingRegistry.WasUsed.ShouldBeTrue(); + } + + [Test] + public void test_the_family_attribute_scanner() + { + var scanner = new FamilyAttributeScanner(); + var graph = new PluginGraph(); + + scanner.Process(typeof (ITypeThatHasAttributeButIsNotInRegistry), graph); + graph.PluginFamilies.Contains(typeof (ITypeThatHasAttributeButIsNotInRegistry)).ShouldBeTrue(); + + scanner.Process(GetType(), graph); + graph.PluginFamilies.Contains(GetType()).ShouldBeFalse(); + } + + [Test] + public void use_a_dual_exclude() + { + Scan(x => + { + x.AssemblyContainingType<ITypeThatHasAttributeButIsNotInRegistry>(); + x.Exclude(type => type == typeof (ITypeThatHasAttributeButIsNotInRegistry)); + x.Exclude(type => type == typeof (IInterfaceInWidget5)); + }); + + shouldNotHaveFamily<IInterfaceInWidget5>(); + shouldNotHaveFamily<ITypeThatHasAttributeButIsNotInRegistry>(); + } + + + [Test] + public void use_a_dual_exclude2() + { + Scan(x => + { + x.AssemblyContainingType<ITypeThatHasAttributeButIsNotInRegistry>(); + x.Exclude(type => type == typeof (ITypeThatHasAttributeButIsNotInRegistry)); + x.Exclude(type => type == GetType()); + }); + + shouldHaveFamily<IInterfaceInWidget5>(); + shouldNotHaveFamily<ITypeThatHasAttributeButIsNotInRegistry>(); + } + + [Test] + public void use_a_single_exclude() + { + Scan(x => + { + x.AssemblyContainingType<ITypeThatHasAttributeButIsNotInRegistry>(); + x.Exclude(type => type == typeof (ITypeThatHasAttributeButIsNotInRegistry)); + }); + + shouldHaveFamily<IInterfaceInWidget5>(); + shouldNotHaveFamily<ITypeThatHasAttributeButIsNotInRegistry>(); + } + + + [Test] + public void use_a_single_exclude2() + { + Scan(x => + { + x.AssemblyContainingType<ITypeThatHasAttributeButIsNotInRegistry>(); + x.ExcludeNamespace("StructureMap.Testing.Widget5"); + }); + + shouldNotHaveFamily<IInterfaceInWidget5>(); + shouldNotHaveFamily<ITypeThatHasAttributeButIsNotInRegistry>(); + } + + + [Test] + public void use_a_single_exclude3() + { + Scan(x => + { + x.AssemblyContainingType<ITypeThatHasAttributeButIsNotInRegistry>(); + x.ExcludeNamespaceContainingType<ITypeThatHasAttributeButIsNotInRegistry>(); + }); + + shouldNotHaveFamily<IInterfaceInWidget5>(); + shouldNotHaveFamily<ITypeThatHasAttributeButIsNotInRegistry>(); + } + + + [Test] + public void use_a_single_exclude_of_type() + { + Scan(x => + { + x.AssemblyContainingType<ITypeThatHasAttributeButIsNotInRegistry>(); + x.ExcludeType<ITypeThatHasAttributeButIsNotInRegistry>(); + }); + + shouldHaveFamily<IInterfaceInWidget5>(); + shouldNotHaveFamily<ITypeThatHasAttributeButIsNotInRegistry>(); + } + + [Test] + public void Use_a_single_include_predicate() + { + Scan(x => { x.AssemblyContainingType<ITypeThatHasAttributeButIsNotInRegistry>(); }); + + shouldHaveFamily<IInterfaceInWidget5>(); + shouldHaveFamily<ITypeThatHasAttributeButIsNotInRegistry>(); + + Scan(x => + { + x.AssemblyContainingType<ITypeThatHasAttributeButIsNotInRegistry>(); + x.Include(type => type == typeof (ITypeThatHasAttributeButIsNotInRegistry)); + }); + + shouldNotHaveFamily<IInterfaceInWidget5>(); + shouldHaveFamily<ITypeThatHasAttributeButIsNotInRegistry>(); + } + + + [Test] + public void Use_a_single_include_predicate_2() + { + Scan(x => { x.AssemblyContainingType<ITypeThatHasAttributeButIsNotInRegistry>(); }); + + shouldHaveFamily<IInterfaceInWidget5>(); + shouldHaveFamily<ITypeThatHasAttributeButIsNotInRegistry>(); + + Scan(x => + { + x.AssemblyContainingType<ITypeThatHasAttributeButIsNotInRegistry>(); + x.IncludeNamespace(typeof (ITypeThatHasAttributeButIsNotInRegistry).Namespace); + }); + + shouldHaveFamily<IInterfaceInWidget5>(); + shouldHaveFamily<ITypeThatHasAttributeButIsNotInRegistry>(); + } + + + [Test] + public void Use_a_single_include_predicate_3() + { + Scan(x => { x.AssemblyContainingType<ITypeThatHasAttributeButIsNotInRegistry>(); }); + + shouldHaveFamily<IInterfaceInWidget5>(); + shouldHaveFamily<ITypeThatHasAttributeButIsNotInRegistry>(); + + Scan(x => + { + x.AssemblyContainingType<ITypeThatHasAttributeButIsNotInRegistry>(); + x.IncludeNamespaceContainingType<ITypeThatHasAttributeButIsNotInRegistry>(); + }); + + shouldHaveFamily<IInterfaceInWidget5>(); + shouldHaveFamily<ITypeThatHasAttributeButIsNotInRegistry>(); + } + + + [Test] + public void use_two_predicates_for_includes() + { + Scan(x => + { + x.AssemblyContainingType<ITypeThatHasAttributeButIsNotInRegistry>(); + x.Include(type => type == typeof (ITypeThatHasAttributeButIsNotInRegistry)); + x.Include(type => type == typeof (IInterfaceInWidget5)); + }); + + shouldHaveFamily<IInterfaceInWidget5>(); + shouldHaveFamily<ITypeThatHasAttributeButIsNotInRegistry>(); + } + + + [Test] + public void use_two_predicates_for_includes2() + { + Scan(x => + { + x.AssemblyContainingType<ITypeThatHasAttributeButIsNotInRegistry>(); + x.Include(type => type == typeof (ITypeThatHasAttributeButIsNotInRegistry)); + x.Include(type => type == GetType()); + }); + + shouldNotHaveFamily<IInterfaceInWidget5>(); + shouldHaveFamily<ITypeThatHasAttributeButIsNotInRegistry>(); + } + } +} \ No newline at end of file Modified: trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs 2008-10-02 01:05:46 UTC (rev 161) +++ trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs 2008-10-02 18:44:00 UTC (rev 162) @@ -73,6 +73,17 @@ } [Test] + public void add_type_by_name() + { + var family = new PluginFamily(typeof(IServiceProvider)); + family.AddType(typeof(DataTable), "table"); + + family.PluginCount.ShouldEqual(1); + + family.FindPlugin("table").ShouldNotBeNull(); + } + + [Test] public void AddAPluggedType() { var family = new PluginFamily(typeof (IWidget)); Modified: trunk/Source/StructureMap.Testing/StructureMap.Testing.csproj =================================================================== --- trunk/Source/StructureMap.Testing/StructureMap.Testing.csproj 2008-10-02 01:05:46 UTC (rev 161) +++ trunk/Source/StructureMap.Testing/StructureMap.Testing.csproj 2008-10-02 18:44:00 UTC (rev 162) @@ -215,6 +215,7 @@ <Compile Include="Graph\ArrayConstructorTester.cs"> <SubType>Code</SubType> </Compile> + <Compile Include="Graph\AssemblyScannerTester.cs" /> <Compile Include="Graph\ContainerConstructorAttributeTester.cs"> <SubType>Code</SubType> </Compile> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jer...@us...> - 2008-10-02 01:05:56
|
Revision: 161 http://structuremap.svn.sourceforge.net/structuremap/?rev=161&view=rev Author: jeremydmiller Date: 2008-10-02 01:05:46 +0000 (Thu, 02 Oct 2008) Log Message: ----------- did some cleanup Modified Paths: -------------- trunk/Source/StructureMap.AutoMocking/AutoMockedContainer.cs trunk/Source/StructureMap.AutoMocking/Properties/AssemblyInfo.cs trunk/Source/StructureMap.DataAccess/AssemblyInfo.cs trunk/Source/StructureMap.DataAccess/CommandCollection.cs trunk/Source/StructureMap.DataAccess/CommandFactory.cs trunk/Source/StructureMap.DataAccess/CommandFailureException.cs trunk/Source/StructureMap.DataAccess/Commands/CommandBase.cs trunk/Source/StructureMap.DataAccess/Commands/QueryFilter.cs trunk/Source/StructureMap.DataAccess/Commands/StoredProcedureCommand.cs trunk/Source/StructureMap.DataAccess/Commands/TemplatedCommand.cs trunk/Source/StructureMap.DataAccess/Commands/TemplatedQuery.cs trunk/Source/StructureMap.DataAccess/ExecutionStates/AutoCommitExecutionState.cs trunk/Source/StructureMap.DataAccess/ExecutionStates/TransactionalExecutionState.cs trunk/Source/StructureMap.DataAccess/IDatabaseEngine.cs trunk/Source/StructureMap.DataAccess/JSON/Field.cs trunk/Source/StructureMap.DataAccess/JSON/JSONArray.cs trunk/Source/StructureMap.DataAccess/JSON/JSONObject.cs trunk/Source/StructureMap.DataAccess/JSON/JSONSerializer.cs trunk/Source/StructureMap.DataAccess/JSON/Part.cs trunk/Source/StructureMap.DataAccess/MSSQL/MSSQLDatabaseEngine.cs trunk/Source/StructureMap.DataAccess/Oracle/OracleDatabaseEngine.cs trunk/Source/StructureMap.DataAccess/ParameterCollection.cs trunk/Source/StructureMap.DataAccess/Parameterization/ParameterizedCommand.cs trunk/Source/StructureMap.DataAccess/Parameterization/ParameterizedCommandBuilder.cs trunk/Source/StructureMap.DataAccess/Parameters/Parameter.cs trunk/Source/StructureMap.DataAccess/ReaderSourceCollection.cs trunk/Source/StructureMap.DataAccess/TemplateParser.cs trunk/Source/StructureMap.DataAccess/Tools/Mocks/CommandExpectation.cs trunk/Source/StructureMap.DataAccess/Tools/Mocks/MockCommand.cs trunk/Source/StructureMap.DataAccess/Tools/Mocks/MockDataSession.cs trunk/Source/StructureMap.DataAccess/Tools/Mocks/MockReaderSource.cs trunk/Source/StructureMap.DataAccess/Tools/Mocks/NotExecutedCommandException.cs trunk/Source/StructureMap.DataAccess/Tools/Mocks/ParameterList.cs trunk/Source/StructureMap.DataAccess/Tools/Mocks/ParameterValidationFailureException.cs trunk/Source/StructureMap.DataAccess/Tools/Mocks/StubbedCommandCollection.cs trunk/Source/StructureMap.DataAccess/Tools/Mocks/StubbedReaderSource.cs trunk/Source/StructureMap.DataAccess/Tools/Mocks/StubbedReaderSourceCollection.cs trunk/Source/StructureMap.DataAccess/Tools/TableDataReader.cs trunk/Source/StructureMap.DeploymentTasks/AddAssembly.cs trunk/Source/StructureMap.DeploymentTasks/AssemblyInfo.cs trunk/Source/StructureMap.DeploymentTasks/SetOverrideTask.cs trunk/Source/StructureMap.DeploymentTasks/SubstitutionTask.cs trunk/Source/StructureMap.DeploymentTasks/Versioning/CheckVersionTask.cs trunk/Source/StructureMap.DeploymentTasks/Versioning/DeployedDirectory.cs trunk/Source/StructureMap.DeploymentTasks/Versioning/DeployedFile.cs trunk/Source/StructureMap.DeploymentTasks/Versioning/DotNetAssembly.cs trunk/Source/StructureMap.DeploymentTasks/Versioning/GenerateVersionReport.cs trunk/Source/StructureMap.Testing.GenericWidgets/Properties/AssemblyInfo.cs trunk/Source/StructureMap.Testing.GenericWidgets/Widgets.cs trunk/Source/StructureMap.Testing.Widget/BuilderSamples.cs trunk/Source/StructureMap.Testing.Widget/IWidget.cs trunk/Source/StructureMap.Testing.Widget/Rule.cs trunk/Source/StructureMap.Testing.Widget2/Rule1.cs trunk/Source/StructureMap.Testing.Widget3/Gateways.cs trunk/Source/StructureMap.Testing.Widget5/AutoFilledGridColumn.cs trunk/Source/StructureMap.Testing.Widget5/BasicGridColumn.cs trunk/Source/StructureMap.Testing.Widget5/CannotBeAutoFilledGridColumn.cs trunk/Source/StructureMap.Testing.Widget5/GridColumns.cs trunk/Source/StructureMap.Testing.Widget5/OtherGridColumn.cs trunk/Source/StructureMap.Testing.Widget5/WidgetRegistry.cs trunk/Source/StructureMapDoctor/Properties/AssemblyInfo.cs Modified: trunk/Source/StructureMap.AutoMocking/AutoMockedContainer.cs =================================================================== --- trunk/Source/StructureMap.AutoMocking/AutoMockedContainer.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.AutoMocking/AutoMockedContainer.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -23,13 +23,13 @@ return null; } - InstanceFactory factory = new InstanceFactory(new PluginFamily(pluginType)); + var factory = new InstanceFactory(new PluginFamily(pluginType)); try { object service = _locator.Service(pluginType); - LiteralInstance instance = new LiteralInstance(service); + var instance = new LiteralInstance(service); profileManager.SetDefault(pluginType, instance); } Modified: trunk/Source/StructureMap.AutoMocking/Properties/AssemblyInfo.cs =================================================================== --- trunk/Source/StructureMap.AutoMocking/Properties/AssemblyInfo.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.AutoMocking/Properties/AssemblyInfo.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -1,8 +1,8 @@ -using System.Reflection; +using System.Reflection; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly : AssemblyTitle("StructureMap.AutoMocking")] -[assembly : AssemblyDescription("")] \ No newline at end of file +[assembly: AssemblyTitle("StructureMap.AutoMocking")] +[assembly: AssemblyDescription("")] \ No newline at end of file Modified: trunk/Source/StructureMap.DataAccess/AssemblyInfo.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/AssemblyInfo.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/AssemblyInfo.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -6,5 +6,5 @@ // associated with an assembly. // -[assembly : AssemblyTitle("StructureMap DataAccess")] -[assembly : AssemblyDescription("An interface to databases done the StructureMap way")] \ No newline at end of file +[assembly: AssemblyTitle("StructureMap DataAccess")] +[assembly: AssemblyDescription("An interface to databases done the StructureMap way")] \ No newline at end of file Modified: trunk/Source/StructureMap.DataAccess/CommandCollection.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/CommandCollection.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/CommandCollection.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -6,8 +6,8 @@ public class CommandCollection : ICommandCollection { private readonly ICommandFactory _commandFactory; + private readonly Hashtable _commands; private readonly DataSession _parent; - private Hashtable _commands; public CommandCollection(DataSession parent, ICommandFactory commandFactory) { Modified: trunk/Source/StructureMap.DataAccess/CommandFactory.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/CommandFactory.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/CommandFactory.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -14,7 +14,7 @@ public ICommand BuildCommand(string commandName) { - ICommand command = (ICommand) ObjectFactory.GetNamedInstance(typeof (ICommand), commandName); + var command = (ICommand) ObjectFactory.GetNamedInstance(typeof (ICommand), commandName); initialize(command); command.Name = commandName; @@ -23,7 +23,7 @@ public IReaderSource BuildReaderSource(string name) { - IReaderSource source = (IReaderSource) ObjectFactory.GetNamedInstance(typeof (IReaderSource), name); + var source = (IReaderSource) ObjectFactory.GetNamedInstance(typeof (IReaderSource), name); initialize(source); source.Name = name; @@ -34,7 +34,7 @@ private void initialize(object target) { - IInitializable initializable = target as IInitializable; + var initializable = target as IInitializable; if (initializable != null) { initializable.Initialize(_engine); Modified: trunk/Source/StructureMap.DataAccess/CommandFailureException.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/CommandFailureException.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/CommandFailureException.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -38,7 +38,7 @@ private void buildMessage(IDbCommand command) { - StringBuilder SB = new StringBuilder(); + var SB = new StringBuilder(); SB.Append("Command Failure!\r\n"); SB.Append(InnerException.Message); Modified: trunk/Source/StructureMap.DataAccess/Commands/CommandBase.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/Commands/CommandBase.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/Commands/CommandBase.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -8,7 +8,6 @@ public abstract class CommandBase : IInitializable, IReaderSource, ICommand { private IDbCommand _innerCommand; - private string _name; private ParameterCollection _parameters; private IDataSession _session; @@ -57,11 +56,7 @@ #region IReaderSource Members - public string Name - { - get { return _name; } - set { _name = value; } - } + public string Name { get; set; } [IndexerName("Parameter")] public object this[string parameterName] @@ -83,7 +78,7 @@ public string ExecuteJSON() { DataSet dataSet = ExecuteDataSet(); - JSONSerializer serializer = new JSONSerializer(dataSet.Tables[0]); + var serializer = new JSONSerializer(dataSet.Tables[0]); return serializer.CreateJSON(); } Modified: trunk/Source/StructureMap.DataAccess/Commands/QueryFilter.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/Commands/QueryFilter.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/Commands/QueryFilter.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -6,7 +6,7 @@ { protected const string REPLACEMENT_VALUE = "{Value}"; private readonly string _parameterName; - protected object _innerValue = null; + protected object _innerValue; protected string _sqlSnippet; Modified: trunk/Source/StructureMap.DataAccess/Commands/StoredProcedureCommand.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/Commands/StoredProcedureCommand.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/Commands/StoredProcedureCommand.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -34,7 +34,7 @@ public override void Initialize(IDatabaseEngine engine) { IDbCommand innerCommand = engine.CreateStoredProcedureCommand(_commandText); - ParameterCollection parameters = new ParameterCollection(innerCommand.Parameters); + var parameters = new ParameterCollection(innerCommand.Parameters); initializeMembers(parameters, innerCommand); } Modified: trunk/Source/StructureMap.DataAccess/Commands/TemplatedCommand.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/Commands/TemplatedCommand.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/Commands/TemplatedCommand.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -7,14 +7,14 @@ [Pluggable("Templated")] public class TemplatedCommand : CommandBase { - private string[] _substitutions; - private string _template; + private readonly string[] _substitutions; + private readonly string _template; [DefaultConstructor] - public TemplatedCommand(string template) : base() + public TemplatedCommand(string template) { _template = template; - TemplateParser parser = new TemplateParser(template); + var parser = new TemplateParser(template); _substitutions = parser.Parse(); } @@ -31,10 +31,10 @@ public override void Initialize(IDatabaseEngine engine) { - ParameterCollection parameters = new ParameterCollection(); + var parameters = new ParameterCollection(); foreach (string substitution in _substitutions) { - TemplateParameter parameter = new TemplateParameter(substitution); + var parameter = new TemplateParameter(substitution); parameters.AddParameter(parameter); } @@ -44,7 +44,7 @@ public string GetSql() { - StringBuilder sb = new StringBuilder(_template); + var sb = new StringBuilder(_template); foreach (TemplateParameter parameter in Parameters) { parameter.Substitute(sb); Modified: trunk/Source/StructureMap.DataAccess/Commands/TemplatedQuery.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/Commands/TemplatedQuery.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/Commands/TemplatedQuery.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -10,9 +10,9 @@ { private readonly IQueryFilter[] _filters; private readonly string _selectAndFromClause; - private ArrayList _templatedParameters = new ArrayList(); + private readonly ArrayList _templatedParameters = new ArrayList(); - public TemplatedQuery(string selectAndFromClause, IQueryFilter[] filters) : base() + public TemplatedQuery(string selectAndFromClause, IQueryFilter[] filters) { _selectAndFromClause = selectAndFromClause; _filters = filters; @@ -20,14 +20,14 @@ public override void Initialize(IDatabaseEngine engine) { - ParameterCollection parameters = new ParameterCollection(_filters); + var parameters = new ParameterCollection(_filters); IDbCommand command = engine.GetCommand(); - TemplateParser parser = new TemplateParser(_selectAndFromClause); + var parser = new TemplateParser(_selectAndFromClause); string[] substitutions = parser.Parse(); foreach (string substitution in substitutions) { - TemplateParameter parameter = new TemplateParameter(substitution); + var parameter = new TemplateParameter(substitution); _templatedParameters.Add(parameter); parameters.AddParameter(parameter); } @@ -44,13 +44,13 @@ { command.Parameters.Clear(); - StringBuilder sb = new StringBuilder(_selectAndFromClause); + var sb = new StringBuilder(_selectAndFromClause); foreach (TemplateParameter parameter in _templatedParameters) { parameter.Substitute(sb); } - ArrayList whereList = new ArrayList(); + var whereList = new ArrayList(); foreach (IQueryFilter filter in _filters) { if (filter.IsActive()) @@ -63,7 +63,7 @@ if (whereList.Count > 0) { sb.Append(" where "); - string[] filterStrings = (string[]) whereList.ToArray(typeof (string)); + var filterStrings = (string[]) whereList.ToArray(typeof (string)); string whereClause = string.Join(" and ", filterStrings); sb.Append(whereClause); } Modified: trunk/Source/StructureMap.DataAccess/ExecutionStates/AutoCommitExecutionState.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/ExecutionStates/AutoCommitExecutionState.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/ExecutionStates/AutoCommitExecutionState.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -49,7 +49,7 @@ { setupConnection(command); _adapter.SelectCommand = command; - DataSet dataSet = new DataSet(); + var dataSet = new DataSet(); _adapter.Fill(dataSet); return dataSet; Modified: trunk/Source/StructureMap.DataAccess/ExecutionStates/TransactionalExecutionState.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/ExecutionStates/TransactionalExecutionState.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/ExecutionStates/TransactionalExecutionState.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -47,7 +47,7 @@ { prepareCommand(command); _adapter.SelectCommand = command; - DataSet dataSet = new DataSet(); + var dataSet = new DataSet(); _adapter.Fill(dataSet); Modified: trunk/Source/StructureMap.DataAccess/IDatabaseEngine.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/IDatabaseEngine.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/IDatabaseEngine.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -15,6 +15,4 @@ IDataParameter CreateParameter(string parameterName, DbType dbType, bool isNullable); string GetParameterName(string logicalName); } - - } \ No newline at end of file Modified: trunk/Source/StructureMap.DataAccess/JSON/Field.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/JSON/Field.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/JSON/Field.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -32,7 +32,7 @@ public static Field[] GetFields(DataTable table) { - Field[] returnValue = new Field[table.Columns.Count]; + var returnValue = new Field[table.Columns.Count]; for (int i = 0; i < table.Columns.Count; i++) Modified: trunk/Source/StructureMap.DataAccess/JSON/JSONArray.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/JSON/JSONArray.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/JSON/JSONArray.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -6,8 +6,8 @@ { public class JSONArray : Part { - private ArrayList _parts = new ArrayList(); - private bool _pretty; + private readonly ArrayList _parts = new ArrayList(); + private readonly bool _pretty; public JSONArray(bool pretty) { Modified: trunk/Source/StructureMap.DataAccess/JSON/JSONObject.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/JSON/JSONObject.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/JSON/JSONObject.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -6,12 +6,8 @@ { public class JSONObject : Part { - private ArrayList _parts = new ArrayList(); + private readonly ArrayList _parts = new ArrayList(); - public JSONObject() - { - } - public JSONObject AddString(string propertyName, string propertyValue) { _parts.Add(JSONProperty.String(propertyName, propertyValue)); Modified: trunk/Source/StructureMap.DataAccess/JSON/JSONSerializer.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/JSON/JSONSerializer.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/JSON/JSONSerializer.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -16,7 +16,7 @@ { _fields = Field.GetFields(_table); - JSONArray array = new JSONArray(true); + var array = new JSONArray(true); foreach (DataRow row in _table.Rows) @@ -29,7 +29,7 @@ private void writeObject(JSONArray array, DataRow row) { - JSONObject obj = new JSONObject(); + var obj = new JSONObject(); foreach (Field field in _fields) { Modified: trunk/Source/StructureMap.DataAccess/JSON/Part.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/JSON/Part.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/JSON/Part.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -8,7 +8,7 @@ public string ToJSON() { - StringBuilder sb = new StringBuilder(); + var sb = new StringBuilder(); Write(sb); return sb.ToString().Trim(); } Modified: trunk/Source/StructureMap.DataAccess/MSSQL/MSSQLDatabaseEngine.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/MSSQL/MSSQLDatabaseEngine.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/MSSQL/MSSQLDatabaseEngine.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -67,7 +67,7 @@ public IDbCommand CreateStoredProcedureCommand(string commandText) { SqlCommand command = null; - SqlConnection connection = new SqlConnection(_connectionString); + var connection = new SqlConnection(_connectionString); try { @@ -90,8 +90,8 @@ } catch (SqlException e) { - Exception ex = new Exception("Error connecting or executing database command " + e.Message); - throw(ex); + var ex = new Exception("Error connecting or executing database command " + e.Message); + throw (ex); } finally { @@ -112,7 +112,7 @@ private SqlParameter createParameter(string logicalName) { - SqlParameter parameter = new SqlParameter(); + var parameter = new SqlParameter(); parameter.ParameterName = "@" + logicalName; return parameter; } @@ -124,9 +124,9 @@ private void pruneDuplicates(SqlCommand command) { - ArrayList list = new ArrayList(); + var list = new ArrayList(); - SqlParameter[] parameters = new SqlParameter[command.Parameters.Count]; + var parameters = new SqlParameter[command.Parameters.Count]; command.Parameters.CopyTo(parameters, 0); foreach (SqlParameter parameter in parameters) Modified: trunk/Source/StructureMap.DataAccess/Oracle/OracleDatabaseEngine.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/Oracle/OracleDatabaseEngine.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/Oracle/OracleDatabaseEngine.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -1,20 +1,20 @@ -using System; -using System.Collections.Generic; +using System; using System.Data; using System.Data.OracleClient; -using System.Text; namespace StructureMap.DataAccess.Oracle { public class OracleDatabaseEngine : IDatabaseEngine { - private IConnectionStringProvider _provider; + private readonly IConnectionStringProvider _provider; public OracleDatabaseEngine(IConnectionStringProvider provider) { _provider = provider; } + #region IDatabaseEngine Members + public IDbConnection GetConnection() { return new OracleConnection(_provider.GetConnectionString()); @@ -27,7 +27,7 @@ public IDbCommand CreateStoredProcedureCommand(string commandText) { - throw new System.NotImplementedException(); + throw new NotImplementedException(); } public IDbDataAdapter GetDataAdapter() @@ -37,17 +37,19 @@ public IDataParameter CreateStringParameter(string parameterName, int size, bool isNullable) { - throw new System.NotImplementedException(); + throw new NotImplementedException(); } public IDataParameter CreateParameter(string parameterName, DbType dbType, bool isNullable) { - throw new System.NotImplementedException(); + throw new NotImplementedException(); } public string GetParameterName(string logicalName) { - throw new System.NotImplementedException(); + throw new NotImplementedException(); } + + #endregion } -} +} \ No newline at end of file Modified: trunk/Source/StructureMap.DataAccess/ParameterCollection.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/ParameterCollection.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/ParameterCollection.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -7,7 +7,7 @@ { public class ParameterCollection : IEnumerable { - private Hashtable _parameters = new Hashtable(); + private readonly Hashtable _parameters = new Hashtable(); public ParameterCollection() { @@ -17,7 +17,7 @@ { foreach (IDataParameter innerParameter in parameters) { - Parameter parameter = new Parameter(innerParameter); + var parameter = new Parameter(innerParameter); AddParameter(parameter); } } Modified: trunk/Source/StructureMap.DataAccess/Parameterization/ParameterizedCommand.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/Parameterization/ParameterizedCommand.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/Parameterization/ParameterizedCommand.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -14,7 +14,7 @@ public override void Initialize(IDatabaseEngine engine) { - ParameterizedCommandBuilder builder = new ParameterizedCommandBuilder(engine, _commandText); + var builder = new ParameterizedCommandBuilder(engine, _commandText); builder.Build(); initializeMembers(builder.Parameters, builder.Command); Modified: trunk/Source/StructureMap.DataAccess/Parameterization/ParameterizedCommandBuilder.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/Parameterization/ParameterizedCommandBuilder.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/Parameterization/ParameterizedCommandBuilder.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -7,13 +7,13 @@ { public class ParameterizedCommandBuilder { + private readonly IDbCommand _command; private readonly string _commandTemplate; + private readonly StringBuilder _commandTextBuilder; private readonly IDatabaseEngine _engine; - private IDbCommand _command; - private StringBuilder _commandTextBuilder; - private bool _hasBuilt = false; - private string[] _parameterNames; - private ParameterCollection _parameters; + private readonly string[] _parameterNames; + private readonly ParameterCollection _parameters; + private bool _hasBuilt; public ParameterizedCommandBuilder(IDatabaseEngine engine, string commandTemplate) { @@ -21,7 +21,7 @@ _commandTemplate = commandTemplate; _parameters = new ParameterCollection(); - TemplateParser parser = new TemplateParser(_commandTemplate); + var parser = new TemplateParser(_commandTemplate); _parameterNames = parser.Parse(); _commandTextBuilder = new StringBuilder(_commandTemplate); Modified: trunk/Source/StructureMap.DataAccess/Parameters/Parameter.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/Parameters/Parameter.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/Parameters/Parameter.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -5,7 +5,7 @@ public class Parameter : IParameter { private readonly IDataParameter _innerParameter; - private string _parameterName; + private readonly string _parameterName; public Parameter(IDataParameter innerParameter) : this(innerParameter, innerParameter.ParameterName) { Modified: trunk/Source/StructureMap.DataAccess/ReaderSourceCollection.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/ReaderSourceCollection.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/ReaderSourceCollection.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -7,7 +7,7 @@ { private readonly ICommandFactory _commandFactory; private readonly DataSession _parent; - private Hashtable _sources; + private readonly Hashtable _sources; public ReaderSourceCollection(DataSession session, ICommandFactory commandFactory) { Modified: trunk/Source/StructureMap.DataAccess/TemplateParser.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/TemplateParser.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/TemplateParser.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -24,13 +24,13 @@ throw new ApplicationException(_template); } - string[] tempValues = new string[_leftCurlyIndexes.Length]; + var tempValues = new string[_leftCurlyIndexes.Length]; for (int i = 0; i < _leftCurlyIndexes.Length; i++) { tempValues[i] = getSubstitution(i); } - ArrayList list = new ArrayList(); + var list = new ArrayList(); foreach (string tempValue in tempValues) { if (!list.Contains(tempValue)) @@ -58,7 +58,7 @@ private int[] findAllOccurrences(string bracket) { - ArrayList list = new ArrayList(); + var list = new ArrayList(); int curlyIndex = _template.IndexOf(bracket, 0); while (curlyIndex > -1) Modified: trunk/Source/StructureMap.DataAccess/Tools/Mocks/CommandExpectation.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/Tools/Mocks/CommandExpectation.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/Tools/Mocks/CommandExpectation.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -4,10 +4,10 @@ { public class CommandExpectation : ICloneable { + private readonly ParameterList _inputs; + private readonly ParameterList _outputs; private readonly int _rowsAffected; - private ParameterList _inputs; - private ParameterList _outputs; - private bool _wasExecuted = false; + private bool _wasExecuted; public CommandExpectation() : this(1) { Modified: trunk/Source/StructureMap.DataAccess/Tools/Mocks/MockCommand.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/Tools/Mocks/MockCommand.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/Tools/Mocks/MockCommand.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -5,25 +5,20 @@ { public class MockCommand : ICommand { + private readonly Queue _expectations; + private readonly ParameterList _inputs; private CommandExpectation _currentExpectation; - private Queue _expectations; - private ParameterList _inputs; - private string _name; public MockCommand(string name) { - _name = name; + Name = name; _expectations = new Queue(); _inputs = new ParameterList(); } #region ICommand Members - public string Name - { - get { return _name; } - set { _name = value; } - } + public string Name { get; set; } public int Execute() @@ -57,7 +52,7 @@ if (_expectations.Count > 0) { - CommandExpectation nextExpectation = (CommandExpectation) _expectations.Peek(); + var nextExpectation = (CommandExpectation) _expectations.Peek(); if (nextExpectation.IsOutput(parameterName)) { throw new NotExecutedCommandException(parameterName, Name); Modified: trunk/Source/StructureMap.DataAccess/Tools/Mocks/MockDataSession.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/Tools/Mocks/MockDataSession.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/Tools/Mocks/MockDataSession.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -5,8 +5,8 @@ { public class MockDataSession : IDataSession { - private StubbedCommandCollection _commands; - private StubbedReaderSourceCollection _sources; + private readonly StubbedCommandCollection _commands; + private readonly StubbedReaderSourceCollection _sources; public MockDataSession() { @@ -105,14 +105,14 @@ public void AddReaderExpectation(string name, ReaderExpectation expectation) { - MockReaderSource source = (MockReaderSource) _sources[name]; + var source = (MockReaderSource) _sources[name]; source.AddExpectation(expectation); } public void AddCommandExpectation(string name, CommandExpectation expectation) { - MockCommand command = (MockCommand) _commands[name]; + var command = (MockCommand) _commands[name]; command.AddExpectation(expectation); } } Modified: trunk/Source/StructureMap.DataAccess/Tools/Mocks/MockReaderSource.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/Tools/Mocks/MockReaderSource.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/Tools/Mocks/MockReaderSource.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -7,25 +7,20 @@ { public class MockReaderSource : IReaderSource { - private Queue _expectations; - private string _name; - private ParameterList _parameters; + private readonly Queue _expectations; + private readonly ParameterList _parameters; public MockReaderSource(string name) { - _name = name; + Name = name; _parameters = new ParameterList(); _expectations = new Queue(); } #region IReaderSource Members - public string Name - { - get { return _name; } - set { _name = value; } - } + public string Name { get; set; } public IDataReader ExecuteReader() { @@ -34,7 +29,7 @@ throw new UnExpectedCallException(Name); } - ReaderExpectation expectation = (ReaderExpectation) _expectations.Dequeue(); + var expectation = (ReaderExpectation) _expectations.Dequeue(); return expectation.VerifyAndGetReader(_parameters); } Modified: trunk/Source/StructureMap.DataAccess/Tools/Mocks/NotExecutedCommandException.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/Tools/Mocks/NotExecutedCommandException.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/Tools/Mocks/NotExecutedCommandException.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -7,7 +7,7 @@ private readonly string _parameterName; private string _commandName = string.Empty; - public NotExecutedCommandException(string parameterName) : base() + public NotExecutedCommandException(string parameterName) { _parameterName = parameterName; } Modified: trunk/Source/StructureMap.DataAccess/Tools/Mocks/ParameterList.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/Tools/Mocks/ParameterList.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/Tools/Mocks/ParameterList.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -24,7 +24,7 @@ { get { - string[] returnValue = new string[_values.Count]; + var returnValue = new string[_values.Count]; _values.Keys.CopyTo(returnValue, 0); Array.Sort(returnValue); @@ -37,7 +37,7 @@ public object Clone() { - ParameterList clone = new ParameterList(); + var clone = new ParameterList(); clone._values = (Hashtable) _values.Clone(); return clone; @@ -47,11 +47,11 @@ public void Verify(ParameterList actualList) { - ArrayList expectedKeys = new ArrayList(AllKeys); - ArrayList actualKeys = new ArrayList(actualList.AllKeys); - ArrayList unionKeys = new ArrayList(); + var expectedKeys = new ArrayList(AllKeys); + var actualKeys = new ArrayList(actualList.AllKeys); + var unionKeys = new ArrayList(); - string[] keys = (string[]) actualKeys.ToArray(typeof (string)); + var keys = (string[]) actualKeys.ToArray(typeof (string)); foreach (string key in keys) { @@ -63,7 +63,7 @@ } } - ParameterValidationFailureException failureCondition = new ParameterValidationFailureException(); + var failureCondition = new ParameterValidationFailureException(); checkForWrongParameterValues(unionKeys, actualList, failureCondition); checkForMissingParameters(expectedKeys, failureCondition); Modified: trunk/Source/StructureMap.DataAccess/Tools/Mocks/ParameterValidationFailureException.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/Tools/Mocks/ParameterValidationFailureException.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/Tools/Mocks/ParameterValidationFailureException.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -6,10 +6,6 @@ { private string _message = string.Empty; - public ParameterValidationFailureException() : base() - { - } - public override string Message { get { return _message; } Modified: trunk/Source/StructureMap.DataAccess/Tools/Mocks/StubbedCommandCollection.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/Tools/Mocks/StubbedCommandCollection.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/Tools/Mocks/StubbedCommandCollection.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -5,7 +5,7 @@ { public class StubbedCommandCollection : ICommandCollection { - private Hashtable _commands; + private readonly Hashtable _commands; public StubbedCommandCollection() { @@ -21,7 +21,7 @@ { if (!_commands.ContainsKey(commandName)) { - MockCommand command = new MockCommand(commandName); + var command = new MockCommand(commandName); _commands.Add(commandName, command); } Modified: trunk/Source/StructureMap.DataAccess/Tools/Mocks/StubbedReaderSource.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/Tools/Mocks/StubbedReaderSource.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/Tools/Mocks/StubbedReaderSource.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -2,8 +2,5 @@ { public class StubbedReaderSource { - public StubbedReaderSource() - { - } } } \ No newline at end of file Modified: trunk/Source/StructureMap.DataAccess/Tools/Mocks/StubbedReaderSourceCollection.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/Tools/Mocks/StubbedReaderSourceCollection.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/Tools/Mocks/StubbedReaderSourceCollection.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -5,7 +5,7 @@ { public class StubbedReaderSourceCollection : IReaderSourceCollection { - private Hashtable _sources; + private readonly Hashtable _sources; public StubbedReaderSourceCollection() { @@ -31,7 +31,7 @@ { if (!_sources.ContainsKey(name)) { - MockReaderSource source = new MockReaderSource(name); + var source = new MockReaderSource(name); _sources.Add(name, source); } Modified: trunk/Source/StructureMap.DataAccess/Tools/TableDataReader.cs =================================================================== --- trunk/Source/StructureMap.DataAccess/Tools/TableDataReader.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DataAccess/Tools/TableDataReader.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -5,12 +5,12 @@ { public class TableDataReader : IDataReader { + private readonly DataTable[] _tables; private int _currentPosition; private DataRow _currentRow; private DataTable _currentTable; private bool _isClosed; private int _tableIndex = -1; - private DataTable[] _tables; public TableDataReader() : this(new DataTable()) @@ -18,7 +18,7 @@ } public TableDataReader(DataTable table) - : this(new DataTable[] {table}) + : this(new[] {table}) { } Modified: trunk/Source/StructureMap.DeploymentTasks/AddAssembly.cs =================================================================== --- trunk/Source/StructureMap.DeploymentTasks/AddAssembly.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DeploymentTasks/AddAssembly.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -11,18 +11,14 @@ private string _assemblyName; private string _configPath; - public AddAssembly() - { - } - - [TaskAttribute("configPath", Required=true)] + [TaskAttribute("configPath", Required = true)] public string ConfigPath { get { return _configPath; } set { _configPath = value; } } - [TaskAttribute("assemblyName", Required=true)] + [TaskAttribute("assemblyName", Required = true)] public string AssemblyName { get { return _assemblyName; } @@ -41,7 +37,7 @@ public XmlDocument AddAssemblyNode() { - XmlDocument document = new XmlDocument(); + var document = new XmlDocument(); document.Load(_configPath); AddAssemblyToDocument(document); Modified: trunk/Source/StructureMap.DeploymentTasks/AssemblyInfo.cs =================================================================== --- trunk/Source/StructureMap.DeploymentTasks/AssemblyInfo.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DeploymentTasks/AssemblyInfo.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -7,6 +7,6 @@ // associated with an assembly. // -[assembly : AssemblyTitle("StructureMap v0.91")] -[assembly : AssemblyDescription("Deployment Tasks for NAnt")] -[assembly : ReflectionPermission(SecurityAction.RequestMinimum, ReflectionEmit=true)] \ No newline at end of file +[assembly: AssemblyTitle("StructureMap v0.91")] +[assembly: AssemblyDescription("Deployment Tasks for NAnt")] +[assembly: ReflectionPermission(SecurityAction.RequestMinimum, ReflectionEmit = true)] \ No newline at end of file Modified: trunk/Source/StructureMap.DeploymentTasks/SetOverrideTask.cs =================================================================== --- trunk/Source/StructureMap.DeploymentTasks/SetOverrideTask.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DeploymentTasks/SetOverrideTask.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -13,32 +13,28 @@ private string _profileName = string.Empty; private string _typeName = string.Empty; - public SetOverrideTask() : base() - { - } - - [TaskAttribute("configPath", Required=true)] + [TaskAttribute("configPath", Required = true)] public string ConfigPath { get { return _configPath; } set { _configPath = value; } } - [TaskAttribute("profileName", Required=false)] + [TaskAttribute("profileName", Required = false)] public string ProfileName { get { return _profileName; } set { _profileName = value; } } - [TaskAttribute("typeName", Required=true)] + [TaskAttribute("typeName", Required = true)] public string TypeName { get { return _typeName; } set { _typeName = value; } } - [TaskAttribute("key", Required=true)] + [TaskAttribute("key", Required = true)] public string DefaultKey { get { return _defaultKey; } @@ -48,7 +44,7 @@ protected override void ExecuteTask() { - XmlDocument document = new XmlDocument(); + var document = new XmlDocument(); document.Load(_configPath); ApplyToDocument(document); @@ -85,7 +81,7 @@ private XmlElement findOverrideElement(XmlElement profileElement, XmlDocument document) { string overrideXPath = string.Format("Override[@Type='{0}']", _typeName); - XmlElement overrideElement = (XmlElement) profileElement.SelectSingleNode(overrideXPath); + var overrideElement = (XmlElement) profileElement.SelectSingleNode(overrideXPath); if (overrideElement == null) { overrideElement = document.CreateElement("Override"); @@ -98,7 +94,7 @@ private XmlElement findProfileElement(string profileName, XmlDocument document) { string profileXPath = string.Format("Profile[@Name='{0}']", profileName); - XmlElement profileElement = (XmlElement) document.DocumentElement.SelectSingleNode(profileXPath); + var profileElement = (XmlElement) document.DocumentElement.SelectSingleNode(profileXPath); if (profileElement == null) { profileElement = document.CreateElement("Profile"); Modified: trunk/Source/StructureMap.DeploymentTasks/SubstitutionTask.cs =================================================================== --- trunk/Source/StructureMap.DeploymentTasks/SubstitutionTask.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DeploymentTasks/SubstitutionTask.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -12,25 +12,21 @@ private string _flag; private string _value; - public SubstitutionTask() : base() - { - } - - [TaskAttribute("flag", Required=true)] + [TaskAttribute("flag", Required = true)] public string Flag { get { return _flag; } set { _flag = value; } } - [TaskAttribute("value", Required=true)] + [TaskAttribute("value", Required = true)] public string Value { get { return _value; } set { _value = value; } } - [TaskAttribute("file", Required=true)] + [TaskAttribute("file", Required = true)] public string FilePath { get { return _filePath; } @@ -47,16 +43,16 @@ { string xml = string.Empty; - using (FileStream stream = new FileStream(_filePath, FileMode.Open, FileAccess.Read)) + using (var stream = new FileStream(_filePath, FileMode.Open, FileAccess.Read)) { - StreamReader reader = new StreamReader(stream); + var reader = new StreamReader(stream); xml = reader.ReadToEnd(); } string searchString = string.Format("{{{0}}}", _flag); xml = xml.Replace(searchString, _value); - XmlDocument document = new XmlDocument(); + var document = new XmlDocument(); document.LoadXml(xml); document.Save(_filePath); } Modified: trunk/Source/StructureMap.DeploymentTasks/Versioning/CheckVersionTask.cs =================================================================== --- trunk/Source/StructureMap.DeploymentTasks/Versioning/CheckVersionTask.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DeploymentTasks/Versioning/CheckVersionTask.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -8,15 +8,11 @@ [TaskName("structuremap.checkversion")] public class CheckVersionTask : Task, IVersionReport { - private ArrayList _exclusionList = new ArrayList(); + private readonly ArrayList _exclusionList = new ArrayList(); private string _manifestFile; private bool _succeeded = true; private string _targetFolder; - public CheckVersionTask() : base() - { - } - [TaskAttribute("manifest", Required = true)] public string ManifestFile { @@ -97,8 +93,8 @@ string.Format("Starting version checking of folder {0} against manifest file {1}", _targetFolder, _manifestFile)); - DirectoryInfo targetDirectoryInfo = new DirectoryInfo(TargetFolder); - DeployedDirectory actualDirectory = new DeployedDirectory(targetDirectoryInfo); + var targetDirectoryInfo = new DirectoryInfo(TargetFolder); + var actualDirectory = new DeployedDirectory(targetDirectoryInfo); DeployedDirectory expectedDirectory = DeployedDirectory.ReadFromXml(_manifestFile); Modified: trunk/Source/StructureMap.DeploymentTasks/Versioning/DeployedDirectory.cs =================================================================== --- trunk/Source/StructureMap.DeploymentTasks/Versioning/DeployedDirectory.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DeploymentTasks/Versioning/DeployedDirectory.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -9,7 +9,6 @@ private Hashtable _assemblies; private Hashtable _childDirectories; private Hashtable _files; - private string _name; public DeployedDirectory() { @@ -20,7 +19,7 @@ public DeployedDirectory(DirectoryInfo directory) : this() { - _name = directory.Name; + Name = directory.Name; // foreach (DirectoryInfo childDirectory in directory.GetDirectories()) // { @@ -43,11 +42,7 @@ } } - public string Name - { - get { return _name; } - set { _name = value; } - } + public string Name { get; set; } // public DeployedDirectory[] ChildDeployedDirectories // { @@ -83,7 +78,7 @@ { get { - DeployedFile[] children = new DeployedFile[_files.Count]; + var children = new DeployedFile[_files.Count]; _files.Values.CopyTo(children, 0); return children; @@ -102,7 +97,7 @@ { get { - DotNetAssembly[] assemblies = new DotNetAssembly[_assemblies.Count]; + var assemblies = new DotNetAssembly[_assemblies.Count]; _assemblies.Values.CopyTo(assemblies, 0); return assemblies; @@ -155,8 +150,8 @@ public void WriteToXml(string fileName) { - XmlSerializer serializer = new XmlSerializer(GetType()); - using (FileStream stream = new FileStream(fileName, FileMode.Create, FileAccess.Write)) + var serializer = new XmlSerializer(GetType()); + using (var stream = new FileStream(fileName, FileMode.Create, FileAccess.Write)) { serializer.Serialize(stream, this); } @@ -165,8 +160,8 @@ public static DeployedDirectory ReadFromXml(string fileName) { - XmlSerializer serializer = new XmlSerializer(typeof (DeployedDirectory)); - using (FileStream stream = new FileStream(fileName, FileMode.Open, FileAccess.Read)) + var serializer = new XmlSerializer(typeof (DeployedDirectory)); + using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { return (DeployedDirectory) serializer.Deserialize(stream); } Modified: trunk/Source/StructureMap.DeploymentTasks/Versioning/DeployedFile.cs =================================================================== --- trunk/Source/StructureMap.DeploymentTasks/Versioning/DeployedFile.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DeploymentTasks/Versioning/DeployedFile.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -31,8 +31,8 @@ public static DeployedFile CreateFile(FileInfo fileInfo) { - DeployedFile deployedFile = new DeployedFile(fileInfo.Name); - SHA1CryptoServiceProvider crypto = new SHA1CryptoServiceProvider(); + var deployedFile = new DeployedFile(fileInfo.Name); + var crypto = new SHA1CryptoServiceProvider(); using (FileStream stream = fileInfo.OpenRead()) { Modified: trunk/Source/StructureMap.DeploymentTasks/Versioning/DotNetAssembly.cs =================================================================== --- trunk/Source/StructureMap.DeploymentTasks/Versioning/DotNetAssembly.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DeploymentTasks/Versioning/DotNetAssembly.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -6,9 +6,7 @@ { public class DotNetAssembly { - private string _assemblyName; private byte[] _publicKey = new byte[0]; - private string _version; public DotNetAssembly() { @@ -17,20 +15,20 @@ public DotNetAssembly(byte[] publicKey, string assemblyName, string version) { _publicKey = publicKey; - _assemblyName = assemblyName; - _version = version; + AssemblyName = assemblyName; + Version = version; } public DotNetAssembly(string assemblyName, string version) { - _assemblyName = assemblyName; - _version = version; + AssemblyName = assemblyName; + Version = version; } public DotNetAssembly(Assembly assembly) { - _assemblyName = assembly.GetName().Name; - _version = assembly.GetName().Version.ToString(); + AssemblyName = assembly.GetName().Name; + Version = assembly.GetName().Version.ToString(); _publicKey = assembly.GetName().GetPublicKey(); } @@ -40,17 +38,9 @@ set { _publicKey = value; } } - public string AssemblyName - { - get { return _assemblyName; } - set { _assemblyName = value; } - } + public string AssemblyName { get; set; } - public string Version - { - get { return _version; } - set { _version = value; } - } + public string Version { get; set; } public static DotNetAssembly TryCreateAssembly(FileInfo fileInfo) { Modified: trunk/Source/StructureMap.DeploymentTasks/Versioning/GenerateVersionReport.cs =================================================================== --- trunk/Source/StructureMap.DeploymentTasks/Versioning/GenerateVersionReport.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.DeploymentTasks/Versioning/GenerateVersionReport.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -10,18 +10,14 @@ private string _directory; private string _outputPath; - public GenerateVersionReport() : base() - { - } - - [TaskAttribute("directory", Required=true)] + [TaskAttribute("directory", Required = true)] public string Directory { get { return _directory; } set { _directory = value; } } - [TaskAttribute("manifest", Required=true)] + [TaskAttribute("manifest", Required = true)] public string OutputPath { get { return _outputPath; } @@ -33,8 +29,8 @@ Log(Level.Info, string.Format("Generating a versioning manifest file for {0} to {1}", _directory, _outputPath)); - DirectoryInfo directoryInfo = new DirectoryInfo(_directory); - DeployedDirectory deployedDirectory = new DeployedDirectory(directoryInfo); + var directoryInfo = new DirectoryInfo(_directory); + var deployedDirectory = new DeployedDirectory(directoryInfo); deployedDirectory.WriteToXml(_outputPath); } Modified: trunk/Source/StructureMap.Testing.GenericWidgets/Properties/AssemblyInfo.cs =================================================================== --- trunk/Source/StructureMap.Testing.GenericWidgets/Properties/AssemblyInfo.cs 2008-10-01 18:29:38 UTC (rev 160) +++ trunk/Source/StructureMap.Testing.GenericWidgets/Properties/AssemblyInfo.cs 2008-10-02 01:05:46 UTC (rev 161) @@ -5,24 +5,24 @@ // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly : AssemblyTitle("StructureMap.Testing.GenericWidgets")] -[assembly : AssemblyDescription("")] -[assembly : AssemblyConfiguration("")] -[assembly : AssemblyCompany("")] -[assembly : AssemblyProduct("StructureMap.Testing.GenericWidgets")] -[assembly : AssemblyCopyright("Copyright \xA9 2006")] -[assembly : AssemblyTrademark("")] -[assembly : AssemblyCulture("")] +[assembly: AssemblyTitle("StructureMap.Testing.GenericWidgets")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("StructureMap.Testing.GenericWidgets")] +[assembly: AssemblyCopyright("Copyright \xA9 2006")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. -[assembly : ComVisible(false)] +[assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly : Guid("1af9fe... [truncated message content] |
From: <jer...@us...> - 2008-10-01 18:30:02
|
Revision: 160 http://structuremap.svn.sourceforge.net/structuremap/?rev=160&view=rev Author: jeremydmiller Date: 2008-10-01 18:29:38 +0000 (Wed, 01 Oct 2008) Log Message: ----------- type scanning overhaul part #1 Modified Paths: -------------- trunk/Source/StructureMap/Configuration/DSL/Registry.cs trunk/Source/StructureMap/Configuration/GraphBuilder.cs trunk/Source/StructureMap/Graph/AssemblyScanner.cs trunk/Source/StructureMap/Graph/PluginGraph.cs trunk/Source/StructureMap/StructureMap.csproj trunk/Source/StructureMap/StructureMapConfiguration.cs trunk/Source/StructureMap.Testing/Configuration/DSL/AddInstanceTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/CreatePluginFamilyTester.cs trunk/Source/StructureMap.Testing/Configuration/DSL/RegistryIntegratedTester.cs trunk/Source/StructureMap.Testing/Configuration/IncludeTesting.cs trunk/Source/StructureMap.Testing/Configuration/NormalGraphBuilderTester.cs trunk/Source/StructureMap.Testing/DataAccess/Debugging.cs trunk/Source/StructureMap.Testing/GenericsAcceptanceTester.cs trunk/Source/StructureMap.Testing/Graph/ArrayConstructorTester.cs trunk/Source/StructureMap.Testing/Graph/ContainerTester.cs trunk/Source/StructureMap.Testing/Graph/DefaultConventionScanningTester.cs trunk/Source/StructureMap.Testing/Graph/DynamicInjectionTester.cs trunk/Source/StructureMap.Testing/Graph/FillDependenciesTester.cs trunk/Source/StructureMap.Testing/Graph/InstanceFactoryTester.cs trunk/Source/StructureMap.Testing/Graph/IntegratedTester.cs trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs trunk/Source/StructureMap.Testing/Graph/PluginGraphBuilderTester.cs trunk/Source/StructureMap.Testing/Graph/PluginGraphTester.cs trunk/Source/StructureMap.Testing/Graph/PluginTester.cs trunk/Source/StructureMap.Testing/Graph/TypeFindingTester.cs trunk/Source/StructureMap.Testing/ObjectFactoryInitializeTester.cs trunk/Source/StructureMap.Testing/Pipeline/ConfiguredInstanceTester.cs trunk/Source/StructureMap.Testing/Pipeline/OptionalSetterInjectionTester.cs trunk/Source/StructureMap.Testing/StructureMap.Testing.csproj trunk/Source/StructureMap.Testing/StructureMapConfigurationDefensiveChecksTester.cs Removed Paths: ------------- trunk/Source/StructureMap/Configuration/DSL/Expressions/ScanAssembliesExpression.cs trunk/Source/StructureMap.Testing/Configuration/DSL/ScanAssembliesTester.cs trunk/Source/StructureMap.Testing/ObjectMother.cs Deleted: trunk/Source/StructureMap/Configuration/DSL/Expressions/ScanAssembliesExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/ScanAssembliesExpression.cs 2008-10-01 15:53:44 UTC (rev 159) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/ScanAssembliesExpression.cs 2008-10-01 18:29:38 UTC (rev 160) @@ -1,123 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Reflection; -using System.Threading; -using StructureMap.Graph; - -namespace StructureMap.Configuration.DSL.Expressions -{ - /// <summary> - /// Expression that directs StructureMap to scan the named assemblies - /// for [PluginFamily] and [Plugin] attributes - /// </summary> - public class ScanAssembliesExpression - { - private readonly List<Assembly> _assemblies = new List<Assembly>(); - private readonly Registry _registry; - - public ScanAssembliesExpression(Registry registry) - { - _registry = registry; - _registry.addExpression(graph => - { - foreach (Assembly assembly in _assemblies) - { - graph.Assemblies.Add(assembly); - } - }); - } - - public ScanAssembliesExpression IncludeTheCallingAssembly() - { - Assembly callingAssembly = findTheCallingAssembly(); - - if (callingAssembly != null) - { - _assemblies.Add(callingAssembly); - } - - return this; - } - - private static Assembly findTheCallingAssembly() - { - StackTrace trace = new StackTrace(Thread.CurrentThread, false); - - Assembly thisAssembly = Assembly.GetExecutingAssembly(); - Assembly callingAssembly = null; - for (int i = 0; i < trace.FrameCount; i++) - { - StackFrame frame = trace.GetFrame(i); - Assembly assembly = frame.GetMethod().DeclaringType.Assembly; - if (assembly != thisAssembly) - { - callingAssembly = assembly; - break; - } - } - return callingAssembly; - } - - public ScanAssembliesExpression IncludeAssemblyContainingType<T>() - { - _assemblies.Add(typeof (T).Assembly); - - return this; - } - - public ScanAssembliesExpression IncludeAssemblyContainingType(Type type) - { - _assemblies.Add(type.Assembly); - - return this; - } - - public ScanAssembliesExpression AddAllTypesOf<PLUGINTYPE>() - { - return AddAllTypesOf(typeof (PLUGINTYPE)); - } - - public ScanAssembliesExpression AddAllTypesOf(Type pluginType) - { - _registry.addExpression(pluginGraph => - { - pluginGraph.Assemblies.AddScanner(new FindAllTypesFilter(pluginType)); - }); - - return this; - } - - public ScanAssembliesExpression IncludeAssembly(string assemblyName) - { - Assembly assembly = AppDomain.CurrentDomain.Load(assemblyName); - _assemblies.Add(assembly); - - return this; - } - - public ScanAssembliesExpression With(ITypeScanner scanner) - { - _registry.addExpression(graph => graph.Assemblies.AddScanner(scanner)); - - - return this; - } - - public ScanAssembliesExpression With<T>() where T : ITypeScanner, new() - { - _registry.addExpression(graph => graph.Assemblies.AddScanner<T>()); - return this; - } - - // TODO: Need a test here - public ScanAssembliesExpression With<T>(Action<T> configure) where T : ITypeScanner, new() - { - T scanner = new T(); - configure(scanner); - - _registry.addExpression(graph => graph.Assemblies.AddScanner(scanner)); - return this; - } - } -} \ No newline at end of file Modified: trunk/Source/StructureMap/Configuration/DSL/Registry.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Registry.cs 2008-10-01 15:53:44 UTC (rev 159) +++ trunk/Source/StructureMap/Configuration/DSL/Registry.cs 2008-10-01 18:29:38 UTC (rev 160) @@ -137,9 +137,12 @@ /// Programmatically determine Assembly's to be scanned for attribute configuration /// </summary> /// <returns></returns> - public ScanAssembliesExpression ScanAssemblies() + public void Scan(Action<AssemblyScanner> action) { - return new ScanAssembliesExpression(this); + var scanner = new AssemblyScanner(); + action(scanner); + + _actions.Add(graph => graph.AddScanner(scanner)); } [Obsolete("Like to get rid of this")] Modified: trunk/Source/StructureMap/Configuration/GraphBuilder.cs =================================================================== --- trunk/Source/StructureMap/Configuration/GraphBuilder.cs 2008-10-01 15:53:44 UTC (rev 159) +++ trunk/Source/StructureMap/Configuration/GraphBuilder.cs 2008-10-01 18:29:38 UTC (rev 160) @@ -1,7 +1,6 @@ using System; using System.Reflection; using StructureMap.Configuration.DSL; -using StructureMap.Diagnostics; using StructureMap.Graph; using StructureMap.Pipeline; @@ -9,8 +8,10 @@ { public class GraphBuilder : IGraphBuilder { + private readonly AssemblyScanner _assemblyScanner; private readonly PluginGraph _pluginGraph; private readonly PluginGraph _systemGraph; + private readonly AssemblyScanner _systemScanner; private Profile _profile; private Container _systemContainer; @@ -22,16 +23,19 @@ public GraphBuilder(Registry[] registries, PluginGraph pluginGraph) { _pluginGraph = pluginGraph; + _assemblyScanner = new AssemblyScanner(); + _pluginGraph.AddScanner(_assemblyScanner); + foreach (Registry registry in registries) { registry.ConfigurePluginGraph(_pluginGraph); } - AssemblyScanner scanner = new AssemblyScanner(new GraphLog()); - scanner.Add(Assembly.GetExecutingAssembly()); - scanner.IgnoreRegistries(); + _systemScanner = new AssemblyScanner(); + _systemScanner.Assembly(Assembly.GetExecutingAssembly()); + _systemScanner.IgnoreRegistries(); - _systemGraph = new PluginGraph(scanner); + _systemGraph = new PluginGraph(_systemScanner); } #region IGraphBuilder Members @@ -56,8 +60,8 @@ try { Assembly assembly = AppDomain.CurrentDomain.Load(assemblyName); - _pluginGraph.Assemblies.Add(assembly); - _systemGraph.Assemblies.Add(assembly); + _assemblyScanner.Assembly(assembly); + _systemScanner.Assembly(assembly); } catch (Exception ex) { @@ -94,7 +98,7 @@ { try { - T systemObject = (T) buildSystemObject(typeof (T), memento); + var systemObject = (T) buildSystemObject(typeof (T), memento); action(systemObject); } catch (Exception ex) Modified: trunk/Source/StructureMap/Graph/AssemblyScanner.cs =================================================================== --- trunk/Source/StructureMap/Graph/AssemblyScanner.cs 2008-10-01 15:53:44 UTC (rev 159) +++ trunk/Source/StructureMap/Graph/AssemblyScanner.cs 2008-10-01 18:29:38 UTC (rev 160) @@ -1,24 +1,23 @@ using System; using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; using System.Reflection; -using StructureMap.Configuration.DSL; +using System.Threading; using StructureMap.Diagnostics; -using System.Linq; namespace StructureMap.Graph { public class AssemblyScanner { private readonly List<Assembly> _assemblies = new List<Assembly>(); - private readonly GraphLog _log; private readonly List<ITypeScanner> _scanners = new List<ITypeScanner>(); - public AssemblyScanner(GraphLog log) + public AssemblyScanner() { - _log = log; - AddScanner<FamilyAttributeScanner>(); - AddScanner<PluggableAttributeScanner>(); - AddScanner<FindRegistriesScanner>(); + With<FamilyAttributeScanner>(); + With<PluggableAttributeScanner>(); + With<FindRegistriesScanner>(); } public int Count @@ -28,70 +27,26 @@ public void ScanForAll(PluginGraph pluginGraph) { - // Don't do this for SystemScan - scanTypes(type => - { - if (!Registry.IsPublicRegistry(type)) return; - - foreach (var previous in pluginGraph.Registries) - { - if (previous.GetType().Equals(type)) - { - return; - } - } - - Registry registry = (Registry) Activator.CreateInstance(type); - registry.ConfigurePluginGraph(pluginGraph); - }); - - runScanners(pluginGraph); + _assemblies.ForEach(assem => scanTypesInAssembly(assem, pluginGraph)); } - private void runScanners(PluginGraph graph) + private void scanTypesInAssembly(Assembly assembly, PluginGraph graph) { - scanTypes(type => _scanners.ForEach(scanner => scanner.Process(type, graph))); - } - - public void ScanForStructureMapObjects(PluginGraph pluginGraph) - { - // I think this just needs to look for attributes only - throw new NotImplementedException(); - } - - private void scanTypes(Action<Type> action) - { - scanTypes(new[] {action}); - } - - private void scanTypes(IEnumerable<Action<Type>> actions) - { - foreach (Assembly assembly in _assemblies.ToArray()) - { - scanTypesInAssembly(assembly, actions); - } - } - - private void scanTypesInAssembly(Assembly assembly, IEnumerable<Action<Type>> actions) - { Type[] exportedTypes; try { foreach (Type type in assembly.GetExportedTypes()) { - foreach (Action<Type> action in actions) - { - action(type); - } + _scanners.ForEach(scanner => scanner.Process(type, graph)); } } catch (Exception ex) { - _log.RegisterError(170, ex, assembly.FullName); + graph.Log.RegisterError(170, ex, assembly.FullName); } } - public void Add(Assembly assembly) + public void Assembly(Assembly assembly) { if (!_assemblies.Contains(assembly)) { @@ -99,9 +54,9 @@ } } - public void Add(string assemblyName) + public void Assembly(string assemblyName) { - Add(AppDomain.CurrentDomain.Load(assemblyName)); + Assembly(AppDomain.CurrentDomain.Load(assemblyName)); } public bool Contains(string assemblyName) @@ -117,19 +72,19 @@ return false; } - public void AddScanner(ITypeScanner scanner) + public void With(ITypeScanner scanner) { if (_scanners.Contains(scanner)) return; _scanners.Add(scanner); } - public void AddScanner<T>() where T : ITypeScanner, new() + public void With<T>() where T : ITypeScanner, new() { - var previous = _scanners.FirstOrDefault(scanner => scanner is T); + ITypeScanner previous = _scanners.FirstOrDefault(scanner => scanner is T); if (previous == null) { - AddScanner(new T()); + With(new T()); } } @@ -137,5 +92,55 @@ { _scanners.RemoveAll(x => x is FindRegistriesScanner); } + + public void TheCallingAssembly() + { + Assembly callingAssembly = findTheCallingAssembly(); + + if (callingAssembly != null) + { + _assemblies.Add(callingAssembly); + } + } + + private static Assembly findTheCallingAssembly() + { + StackTrace trace = new StackTrace(Thread.CurrentThread, false); + + Assembly thisAssembly = System.Reflection.Assembly.GetExecutingAssembly(); + Assembly callingAssembly = null; + for (int i = 0; i < trace.FrameCount; i++) + { + StackFrame frame = trace.GetFrame(i); + Assembly assembly = frame.GetMethod().DeclaringType.Assembly; + if (assembly != thisAssembly) + { + callingAssembly = assembly; + break; + } + } + return callingAssembly; + } + + public void AssemblyContainingType<T>() + { + _assemblies.Add(typeof(T).Assembly); + } + + public void AssemblyContainingType(Type type) + { + _assemblies.Add(type.Assembly); + } + + public void AddAllTypesOf<PLUGINTYPE>() + { + AddAllTypesOf(typeof(PLUGINTYPE)); + } + + public void AddAllTypesOf(Type pluginType) + { + With(new FindAllTypesFilter(pluginType)); + } + } } \ No newline at end of file Modified: trunk/Source/StructureMap/Graph/PluginGraph.cs =================================================================== --- trunk/Source/StructureMap/Graph/PluginGraph.cs 2008-10-01 15:53:44 UTC (rev 159) +++ trunk/Source/StructureMap/Graph/PluginGraph.cs 2008-10-01 18:29:38 UTC (rev 160) @@ -16,41 +16,48 @@ [Serializable] public class PluginGraph { - private readonly AssemblyScanner _assemblies; private readonly InterceptorLibrary _interceptorLibrary = new InterceptorLibrary(); - private GraphLog _log = new GraphLog(); + private readonly List<Type> _pluggedTypes = new List<Type>(); private readonly PluginFamilyCollection _pluginFamilies; private readonly ProfileManager _profileManager = new ProfileManager(); - private bool _sealed = false; private readonly List<Registry> _registries = new List<Registry>(); - private readonly List<Type> _pluggedTypes = new List<Type>(); - + private readonly List<AssemblyScanner> _scanners = new List<AssemblyScanner>(); + private GraphLog _log = new GraphLog(); + private bool _sealed; + /// <summary> /// Default constructor /// </summary> - public PluginGraph() : base() + public PluginGraph() { - _assemblies = new AssemblyScanner(_log); _pluginFamilies = new PluginFamilyCollection(this); } public PluginGraph(AssemblyScanner assemblies) { - _assemblies = assemblies; _pluginFamilies = new PluginFamilyCollection(this); + _scanners.Add(assemblies); } - public List<Registry> Registries + public void Scan(Action<AssemblyScanner> action) { - get { return _registries; } + var scanner = new AssemblyScanner(); + action(scanner); + + AddScanner(scanner); } - public AssemblyScanner Assemblies + public void ScanThisAssembly() { - get { return _assemblies; } + Scan(x => x.TheCallingAssembly()); } + public List<Registry> Registries + { + get { return _registries; } + } + public PluginFamilyCollection PluginFamilies { get { return _pluginFamilies; } @@ -95,7 +102,7 @@ return; } - _assemblies.ScanForAll(this); + _scanners.ForEach(scanner => scanner.ScanForAll(this)); _pluginFamilies.Each(family => family.AddTypes(_pluggedTypes)); _pluginFamilies.Each(family => family.Seal()); @@ -107,14 +114,19 @@ #endregion + public void AddScanner(AssemblyScanner scanner) + { + _scanners.Add(scanner); + } + public static PluginGraph BuildGraphFromAssembly(Assembly assembly) { - PluginGraph pluginGraph = new PluginGraph(); - pluginGraph.Assemblies.Add(assembly); + var graph = new PluginGraph(); + graph.Scan(x => x.Assembly(assembly)); - pluginGraph.Seal(); + graph.Seal(); - return pluginGraph; + return graph; } public PluginFamily FindFamily(Type pluginType) Modified: trunk/Source/StructureMap/StructureMap.csproj =================================================================== --- trunk/Source/StructureMap/StructureMap.csproj 2008-10-01 15:53:44 UTC (rev 159) +++ trunk/Source/StructureMap/StructureMap.csproj 2008-10-01 18:29:38 UTC (rev 160) @@ -218,7 +218,6 @@ <Compile Include="Pipeline\ExplicitArguments.cs" /> <Compile Include="Configuration\DSL\Expressions\ProfileExpression.cs" /> <Compile Include="Configuration\DSL\Registry.cs" /> - <Compile Include="Configuration\DSL\Expressions\ScanAssembliesExpression.cs" /> <Compile Include="Configuration\FamilyParser.cs"> <SubType>Code</SubType> </Compile> Modified: trunk/Source/StructureMap/StructureMapConfiguration.cs =================================================================== --- trunk/Source/StructureMap/StructureMapConfiguration.cs 2008-10-01 15:53:44 UTC (rev 159) +++ trunk/Source/StructureMap/StructureMapConfiguration.cs 2008-10-01 18:29:38 UTC (rev 160) @@ -167,9 +167,9 @@ /// Programmatically determine Assembly's to be scanned for attribute configuration /// </summary> /// <returns></returns> - public static ScanAssembliesExpression ScanAssemblies() + public static void Scan(Action<AssemblyScanner> action) { - return registry.ScanAssemblies(); + registry.Scan(action); } /// <summary> Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/AddInstanceTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/DSL/AddInstanceTester.cs 2008-10-01 15:53:44 UTC (rev 159) +++ trunk/Source/StructureMap.Testing/Configuration/DSL/AddInstanceTester.cs 2008-10-01 18:29:38 UTC (rev 160) @@ -16,7 +16,7 @@ { container = new Container(registry => { - registry.ScanAssemblies().IncludeAssemblyContainingType<ColorWidget>(); + registry.Scan(x => x.AssemblyContainingType<ColorWidget>()); // Add an instance with properties registry.InstanceOf<IWidget>() @@ -64,8 +64,8 @@ { IContainer container = new Container( registry => registry.InstanceOf<Rule>().Is.OfConcreteType<WidgetRule>() - .WithName("AWidgetRule") - .CtorDependency<IWidget>().Is(i => i.OfConcreteType<AWidget>())); + .WithName("AWidgetRule") + .CtorDependency<IWidget>().Is(i => i.OfConcreteType<AWidget>())); container.GetInstance<Rule>("AWidgetRule") .IsType<WidgetRule>() @@ -124,9 +124,10 @@ IContainer manager = new Container( registry => registry.InstanceOf<Rule>().Is.OfConcreteType<WidgetRule>().WithName(instanceKey) - .CtorDependency<IWidget>().Is(i => i.OfConcreteType<ColorWidget>().WithCtorArg("color").EqualTo("Orange").WithName("Orange")) - - ); + .CtorDependency<IWidget>().Is( + i => + i.OfConcreteType<ColorWidget>().WithCtorArg("color").EqualTo("Orange").WithName("Orange")) + ); var rule = (WidgetRule) manager.GetInstance<Rule>(instanceKey); var widget = (ColorWidget) rule.Widget; @@ -178,7 +179,6 @@ } } - public class WidgetRule : Rule { Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/CreatePluginFamilyTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/DSL/CreatePluginFamilyTester.cs 2008-10-01 15:53:44 UTC (rev 159) +++ trunk/Source/StructureMap.Testing/Configuration/DSL/CreatePluginFamilyTester.cs 2008-10-01 18:29:38 UTC (rev 160) @@ -38,7 +38,7 @@ [Test] public void Add_an_instance_by_lambda() { - Container manager = + var manager = new Container( r => r.InstanceOf<IWidget>().Is.ConstructedBy(() => new AWidget())); @@ -48,9 +48,9 @@ [Test] public void Add_an_instance_by_literal() { - AWidget aWidget = new AWidget(); + var aWidget = new AWidget(); - Container manager = + var manager = new Container(registry => registry.InstanceOf<IWidget>().Is.Object(aWidget)); Assert.IsInstanceOfType(typeof (AWidget), manager.GetAllInstances<IWidget>()[0]); @@ -60,7 +60,8 @@ public void AddInstanceByNameOnlyAddsOneInstanceToStructureMap() { IContainer manager = new Container(registry => registry.ForRequestedType<Something>().AddInstance( - RegistryExpressions.Instance<RedSomething>().WithName("Red") + RegistryExpressions.Instance<RedSomething>().WithName( + "Red") )); IList<Something> instances = manager.GetAllInstances<Something>(); Assert.AreEqual(1, instances.Count); @@ -70,7 +71,8 @@ public void AddInstanceWithNameOnlyAddsOneInstanceToStructureMap() { IContainer manager = - new Container(registry => registry.InstanceOf<Something>().Is.OfConcreteType<RedSomething>().WithName("Red")); + new Container( + registry => registry.InstanceOf<Something>().Is.OfConcreteType<RedSomething>().WithName("Red")); IList<Something> instances = manager.GetAllInstances<Something>(); Assert.AreEqual(1, instances.Count); } @@ -78,7 +80,7 @@ [Test] public void AsAnotherScope() { - Registry registry = new Registry(); + var registry = new Registry(); CreatePluginFamilyExpression<IGateway> expression = registry.BuildInstancesOf<IGateway>().CacheBy(InstanceScope.ThreadLocal); Assert.IsNotNull(expression); @@ -92,7 +94,7 @@ [Test] public void BuildInstancesOfType() { - Registry registry = new Registry(); + var registry = new Registry(); registry.BuildInstancesOf<IGateway>(); PluginGraph pluginGraph = registry.Build(); @@ -103,7 +105,7 @@ [Test] public void BuildPluginFamilyAsPerRequest() { - Registry registry = new Registry(); + var registry = new Registry(); CreatePluginFamilyExpression<IGateway> expression = registry.BuildInstancesOf<IGateway>(); Assert.IsNotNull(expression); @@ -117,7 +119,7 @@ [Test] public void BuildPluginFamilyAsSingleton() { - Registry registry = new Registry(); + var registry = new Registry(); CreatePluginFamilyExpression<IGateway> expression = registry.BuildInstancesOf<IGateway>().AsSingletons(); Assert.IsNotNull(expression); @@ -130,15 +132,15 @@ [Test] public void CanOverrideTheDefaultInstance1() { - Registry registry = new Registry(); + var registry = new Registry(); // Specify the default implementation for an interface registry.BuildInstancesOf<IGateway>().TheDefaultIsConcreteType<StubbedGateway>(); PluginGraph pluginGraph = registry.Build(); Assert.IsTrue(pluginGraph.ContainsFamily(typeof (IGateway))); - Container manager = new Container(pluginGraph); - IGateway gateway = (IGateway) manager.GetInstance(typeof (IGateway)); + var manager = new Container(pluginGraph); + var gateway = (IGateway) manager.GetInstance(typeof (IGateway)); Assert.IsInstanceOfType(typeof (StubbedGateway), gateway); } @@ -146,14 +148,14 @@ [Test] public void CanOverrideTheDefaultInstanceAndCreateAnAllNewPluginOnTheFly() { - Registry registry = new Registry(); + var registry = new Registry(); registry.BuildInstancesOf<IGateway>().TheDefaultIsConcreteType<FakeGateway>(); PluginGraph pluginGraph = registry.Build(); Assert.IsTrue(pluginGraph.ContainsFamily(typeof (IGateway))); - Container manager = new Container(pluginGraph); - IGateway gateway = (IGateway) manager.GetInstance(typeof (IGateway)); + var manager = new Container(pluginGraph); + var gateway = (IGateway) manager.GetInstance(typeof (IGateway)); Assert.IsInstanceOfType(typeof (FakeGateway), gateway); } @@ -162,21 +164,22 @@ public void CreatePluginFamilyWithADefault() { IContainer manager = new Container(registry => registry.BuildInstancesOf<IWidget>().TheDefaultIs( - RegistryExpressions.Instance<ColorWidget>().WithProperty("color"). + RegistryExpressions.Instance<ColorWidget>().WithProperty( + "color"). EqualTo( "Red") )); - ColorWidget widget = (ColorWidget) manager.GetInstance<IWidget>(); + var widget = (ColorWidget) manager.GetInstance<IWidget>(); Assert.AreEqual("Red", widget.Color); } [Test] public void PutAnInterceptorIntoTheInterceptionChainOfAPluginFamilyInTheDSL() { - StubbedInstanceFactoryInterceptor factoryInterceptor = new StubbedInstanceFactoryInterceptor(); + var factoryInterceptor = new StubbedInstanceFactoryInterceptor(); - Registry registry = new Registry(); + var registry = new Registry(); registry.BuildInstancesOf<IGateway>().InterceptConstructionWith(factoryInterceptor); PluginGraph pluginGraph = registry.Build(); @@ -187,7 +190,7 @@ [Test] public void Set_the_default_by_a_lambda() { - Container manager = + var manager = new Container( registry => registry.ForRequestedType<IWidget>().TheDefault.Is.ConstructedBy(() => new AWidget())); @@ -197,15 +200,28 @@ [Test] public void Set_the_default_to_a_built_object() { - AWidget aWidget = new AWidget(); + var aWidget = new AWidget(); - Container manager = + var manager = new Container( registry => registry.ForRequestedType<IWidget>().TheDefault.Is.Object(aWidget)); Assert.AreSame(aWidget, manager.GetInstance<IWidget>()); } + [Test( + Description = + "Guid test based on problems encountered by Paul Segaro. See http://groups.google.com/group/structuremap-users/browse_thread/thread/34ddaf549ebb14f7?hl=en" + )] + public void TheDefaultInstanceIsALambdaForGuidNewGuid() + { + var manager = + new Container( + registry => registry.ForRequestedType<Guid>().TheDefault.Is.ConstructedBy(() => Guid.NewGuid())); + + Assert.IsInstanceOfType(typeof (Guid), manager.GetInstance<Guid>()); + } + [Test] public void TheDefaultInstanceIsConcreteType() { @@ -218,29 +234,19 @@ [Test] public void TheDefaultInstanceIsPickedUpFromTheAttribute() { - Registry registry = new Registry(); + var registry = new Registry(); registry.BuildInstancesOf<IGateway>(); - registry.ScanAssemblies().IncludeAssemblyContainingType<IGateway>(); + registry.Scan(x => x.AssemblyContainingType<IGateway>()); PluginGraph pluginGraph = registry.Build(); Assert.IsTrue(pluginGraph.ContainsFamily(typeof (IGateway))); - Container manager = new Container(pluginGraph); - IGateway gateway = (IGateway) manager.GetInstance(typeof (IGateway)); + var manager = new Container(pluginGraph); + var gateway = (IGateway) manager.GetInstance(typeof (IGateway)); Assert.IsInstanceOfType(typeof (DefaultGateway), gateway); } - - [Test(Description = "Guid test based on problems encountered by Paul Segaro. See http://groups.google.com/group/structuremap-users/browse_thread/thread/34ddaf549ebb14f7?hl=en")] - public void TheDefaultInstanceIsALambdaForGuidNewGuid() - { - Container manager = - new Container( - registry => registry.ForRequestedType<Guid>().TheDefault.Is.ConstructedBy(()=>Guid.NewGuid())); - - Assert.IsInstanceOfType(typeof(Guid), manager.GetInstance<Guid>()); - } } public class StubbedInstanceFactoryInterceptor : IBuildInterceptor Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/RegistryIntegratedTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/DSL/RegistryIntegratedTester.cs 2008-10-01 15:53:44 UTC (rev 159) +++ trunk/Source/StructureMap.Testing/Configuration/DSL/RegistryIntegratedTester.cs 2008-10-01 18:29:38 UTC (rev 160) @@ -1,7 +1,6 @@ using System.Collections.Generic; using NUnit.Framework; using StructureMap.Graph; -using StructureMap.Pipeline; using StructureMap.Testing.Widget; using StructureMap.Testing.Widget5; @@ -28,10 +27,9 @@ [Test] public void AutomaticallyFindRegistryFromAssembly() { - StructureMapConfiguration.ResetAll(); - StructureMapConfiguration.ScanAssemblies().IncludeAssemblyContainingType<RedGreenRegistry>(); + ObjectFactory.Initialize(x => { x.Scan(s => { s.AssemblyContainingType<RedGreenRegistry>(); }); }); - List<string> colors = new List<string>(); + var colors = new List<string>(); foreach (IWidget widget in ObjectFactory.GetAllInstances<IWidget>()) { if (!(widget is ColorWidget)) @@ -39,7 +37,7 @@ continue; } - ColorWidget color = (ColorWidget) widget; + var color = (ColorWidget) widget; colors.Add(color.Color); } @@ -55,11 +53,15 @@ [Test] public void FindRegistriesWithinPluginGraphSeal() { - PluginGraph graph = new PluginGraph(); - graph.Assemblies.Add(typeof (RedGreenRegistry).Assembly); + var graph = new PluginGraph(); + + var scanner = new AssemblyScanner(); + scanner.AssemblyContainingType(typeof (RedGreenRegistry)); + scanner.ScanForAll(graph); + graph.Seal(); - List<string> colors = new List<string>(); + var colors = new List<string>(); PluginFamily family = graph.FindFamily(typeof (IWidget)); family.EachInstance(instance => colors.Add(instance.Name)); Deleted: trunk/Source/StructureMap.Testing/Configuration/DSL/ScanAssembliesTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/DSL/ScanAssembliesTester.cs 2008-10-01 15:53:44 UTC (rev 159) +++ trunk/Source/StructureMap.Testing/Configuration/DSL/ScanAssembliesTester.cs 2008-10-01 18:29:38 UTC (rev 160) @@ -1,89 +0,0 @@ -using System.Reflection; -using NUnit.Framework; -using StructureMap.Configuration.DSL.Expressions; -using StructureMap.Graph; -using StructureMap.Testing.Widget3; - -namespace StructureMap.Testing.Configuration.DSL -{ - [TestFixture] - public class ScanAssembliesTester - { - #region Setup/Teardown - - [SetUp] - public void SetUp() - { - StructureMapConfiguration.ResetAll(); - } - - [TearDown] - public void TearDown() - { - StructureMapConfiguration.ResetAll(); - } - - #endregion - - [Test] - public void Combination1() - { - StructureMapConfiguration.ScanAssemblies() - .IncludeAssemblyContainingType<IGateway>() - .IncludeTheCallingAssembly(); - PluginGraph graph = StructureMapConfiguration.GetPluginGraph(); - - Assembly assembly = typeof (IGateway).Assembly; - Assert.IsTrue(graph.Assemblies.Contains(assembly.GetName().Name)); - - Assert.IsTrue(graph.Assemblies.Contains(Assembly.GetExecutingAssembly().GetName().Name)); - } - - - [Test] - public void Combination2() - { - StructureMapConfiguration.ScanAssemblies() - .IncludeTheCallingAssembly() - .IncludeAssemblyContainingType<IGateway>(); - PluginGraph graph = StructureMapConfiguration.GetPluginGraph(); - - Assembly assembly = typeof (IGateway).Assembly; - Assert.IsTrue(graph.Assemblies.Contains(assembly.GetName().Name)); - - Assert.IsTrue(graph.Assemblies.Contains(Assembly.GetExecutingAssembly().GetName().Name)); - } - - [Test] - public void ScanAssemblyByName() - { - ScanAssembliesExpression expression = StructureMapConfiguration.ScanAssemblies() - .IncludeAssembly(typeof (IGateway).Assembly.FullName); - Assert.IsNotNull(expression); - - PluginGraph graph = StructureMapConfiguration.GetPluginGraph(); - - Assembly assembly = typeof (IGateway).Assembly; - Assert.IsTrue(graph.Assemblies.Contains(assembly.GetName().Name)); - } - - [Test] - public void ScanAssemblyContainingType() - { - StructureMapConfiguration.ScanAssemblies().IncludeAssemblyContainingType<IGateway>(); - PluginGraph graph = StructureMapConfiguration.GetPluginGraph(); - - Assembly assembly = typeof (IGateway).Assembly; - Assert.IsTrue(graph.Assemblies.Contains(assembly.GetName().Name)); - } - - [Test] - public void ScanCallingAssembly() - { - StructureMapConfiguration.ScanAssemblies().IncludeTheCallingAssembly(); - PluginGraph graph = StructureMapConfiguration.GetPluginGraph(); - - Assert.IsTrue(graph.Assemblies.Contains(Assembly.GetExecutingAssembly().GetName().Name)); - } - } -} \ No newline at end of file Modified: trunk/Source/StructureMap.Testing/Configuration/IncludeTesting.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/IncludeTesting.cs 2008-10-01 15:53:44 UTC (rev 159) +++ trunk/Source/StructureMap.Testing/Configuration/IncludeTesting.cs 2008-10-01 18:29:38 UTC (rev 160) @@ -32,19 +32,6 @@ } [Test] - public void GetAssembliesFromIncludes() - { - PluginGraph graph = buildGraph(); - - Assert.AreEqual(4, graph.Assemblies.Count); - - Assert.IsTrue(graph.Assemblies.Contains("StructureMap.Testing.Widget")); - Assert.IsTrue(graph.Assemblies.Contains("StructureMap.Testing.Widget2")); - Assert.IsTrue(graph.Assemblies.Contains("StructureMap.Testing.Widget3")); - Assert.IsTrue(graph.Assemblies.Contains("StructureMap.Testing.Widget4")); - } - - [Test] public void GetFamilyFromIncludeAndMaster() { PluginGraph graph = buildGraph(); Modified: trunk/Source/StructureMap.Testing/Configuration/NormalGraphBuilderTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/NormalGraphBuilderTester.cs 2008-10-01 15:53:44 UTC (rev 159) +++ trunk/Source/StructureMap.Testing/Configuration/NormalGraphBuilderTester.cs 2008-10-01 18:29:38 UTC (rev 160) @@ -1,4 +1,3 @@ -using System; using NUnit.Framework; using StructureMap.Configuration; using StructureMap.Configuration.DSL; @@ -21,20 +20,9 @@ #endregion [Test] - public void AddAssembly_HappyPath() - { - GraphBuilder builder = new GraphBuilder(new Registry[0]); - string assemblyName = GetType().Assembly.GetName().Name; - builder.AddAssembly(assemblyName); - - Assert.IsTrue(builder.PluginGraph.Assemblies.Contains(assemblyName)); - Assert.AreEqual(0, builder.PluginGraph.Log.ErrorCount); - } - - [Test] public void AddAssembly_SadPath() { - GraphBuilder builder = new GraphBuilder(new Registry[0]); + var builder = new GraphBuilder(new Registry[0]); builder.AddAssembly("something"); builder.PluginGraph.Log.AssertHasError(101); @@ -43,10 +31,10 @@ [Test] public void Call_the_action_on_configure_family_if_the_pluginType_is_found() { - TypePath typePath = new TypePath(typeof (IGateway)); + var typePath = new TypePath(typeof (IGateway)); bool iWasCalled = false; - GraphBuilder builder = new GraphBuilder(new Registry[0]); + var builder = new GraphBuilder(new Registry[0]); builder.ConfigureFamily(typePath, f => { Assert.AreEqual(typeof (IGateway), f.PluginType); @@ -60,7 +48,7 @@ [Test] public void Configure_a_family_that_does_not_exist_and_log_an_error_with_PluginGraph() { - GraphBuilder builder = new GraphBuilder(new Registry[0]); + var builder = new GraphBuilder(new Registry[0]); builder.ConfigureFamily(new TypePath("a,a"), delegate { }); builder.PluginGraph.Log.AssertHasError(103); @@ -69,11 +57,11 @@ [Test] public void Create_system_object_successfully_and_call_the_requested_action() { - MemoryInstanceMemento memento = new MemoryInstanceMemento("Singleton", "anything"); + var memento = new MemoryInstanceMemento("Singleton", "anything"); bool iWasCalled = false; - GraphBuilder builder = new GraphBuilder(new Registry[0]); + var builder = new GraphBuilder(new Registry[0]); builder.PrepareSystemObjects(); builder.WithSystemObject<IBuildInterceptor>(memento, "singleton", policy => { @@ -87,15 +75,15 @@ [Test] public void Do_not_call_the_action_on_ConfigureFamily_if_the_type_path_blows_up() { - GraphBuilder builder = new GraphBuilder(new Registry[0]); + var builder = new GraphBuilder(new Registry[0]); builder.ConfigureFamily(new TypePath("a,a"), obj => Assert.Fail("Should not be called")); } [Test] public void Do_not_try_to_execute_the_action_when_requested_system_object_if_it_cannot_be_created() { - MemoryInstanceMemento memento = new MemoryInstanceMemento(); - GraphBuilder builder = new GraphBuilder(new Registry[0]); + var memento = new MemoryInstanceMemento(); + var builder = new GraphBuilder(new Registry[0]); builder.WithSystemObject<MementoSource>(memento, "I am going to break here", delegate { Assert.Fail("Wasn't supposed to be called"); }); @@ -104,8 +92,8 @@ [Test] public void Log_an_error_for_a_requested_system_object_if_it_cannot_be_created() { - MemoryInstanceMemento memento = new MemoryInstanceMemento(); - GraphBuilder builder = new GraphBuilder(new Registry[0]); + var memento = new MemoryInstanceMemento(); + var builder = new GraphBuilder(new Registry[0]); builder.WithSystemObject<MementoSource>(memento, "I am going to break here", delegate { }); @@ -115,7 +103,7 @@ [Test] public void WithType_calls_through_to_the_Action_if_the_type_can_be_found() { - GraphBuilder builder = new GraphBuilder(new Registry[0]); + var builder = new GraphBuilder(new Registry[0]); bool iWasCalled = true; builder.WithType(new TypePath(GetType()), "creating a Plugin", t => @@ -130,7 +118,7 @@ [Test] public void WithType_fails_and_logs_error_with_the_context() { - GraphBuilder builder = new GraphBuilder(new Registry[0]); + var builder = new GraphBuilder(new Registry[0]); builder.WithType(new TypePath("a,a"), "creating a Plugin", obj => Assert.Fail("Should not be called")); builder.PluginGraph.Log.AssertHasError(131); Modified: trunk/Source/StructureMap.Testing/DataAccess/Debugging.cs =================================================================== --- trunk/Source/StructureMap.Testing/DataAccess/Debugging.cs 2008-10-01 15:53:44 UTC (rev 159) +++ trunk/Source/StructureMap.Testing/DataAccess/Debugging.cs 2008-10-01 18:29:38 UTC (rev 160) @@ -11,6 +11,7 @@ [TestFixture] public class Debugging { + [Test, Explicit] public void GiveJSONAWhirl() { Modified: trunk/Source/StructureMap.Testing/GenericsAcceptanceTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/GenericsAcceptanceTester.cs 2008-10-01 15:53:44 UTC (rev 159) +++ trunk/Source/StructureMap.Testing/GenericsAcceptanceTester.cs 2008-10-01 18:29:38 UTC (rev 160) @@ -1,7 +1,6 @@ using System; using System.Reflection; using NUnit.Framework; -using StructureMap.Configuration.DSL; using StructureMap.Graph; using StructureMap.Pipeline; using StructureMap.Testing.GenericWidgets; @@ -20,20 +19,20 @@ #endregion - - [Test] public void BuildFamilyAndPluginThenSealAndCreateInstanceManagerWithGenericTypeWithOpenGenericParameters() { - PluginGraph graph = new PluginGraph(); - graph.Assemblies.Add(Assembly.GetExecutingAssembly()); + var graph = new PluginGraph(); + graph.Scan(x => x.TheCallingAssembly()); + + PluginFamily family = graph.FindFamily(typeof (IGenericService<>)); family.DefaultInstanceKey = "Default"; family.AddPlugin(typeof (GenericService<>), "Default"); graph.Seal(); - Container manager = new Container(graph); + var manager = new Container(graph); } [Test] @@ -41,11 +40,11 @@ { Type serviceType = typeof (IService<double>); PluginGraph pluginGraph = PluginGraph.BuildGraphFromAssembly(serviceType.Assembly); - Container manager = new Container(pluginGraph); + var manager = new Container(pluginGraph); Type doubleServiceType = typeof (IService<double>); - ServiceWithPlug<double> service = + var service = (ServiceWithPlug<double>) manager.GetInstance(doubleServiceType, "Plugged"); Assert.AreEqual(typeof (double), service.Plug.PlugType); } @@ -53,53 +52,53 @@ [Test] public void CanCreatePluginFamilyForGenericTypeWithGenericParameter() { - PluginFamily family = new PluginFamily(typeof (IGenericService<int>)); + var family = new PluginFamily(typeof (IGenericService<int>)); } [Test] public void CanCreatePluginFamilyForGenericTypeWithoutGenericParameter() { - PluginFamily family = new PluginFamily(typeof (IGenericService<>)); + var family = new PluginFamily(typeof (IGenericService<>)); } [Test] public void CanCreatePluginForGenericTypeWithGenericParameter() { - Plugin plugin = new Plugin(typeof (GenericService<int>)); + var plugin = new Plugin(typeof (GenericService<int>)); } [Test] public void CanCreatePluginForGenericTypeWithoutGenericParameter() { - Plugin plugin = new Plugin(typeof (GenericService<>)); + var plugin = new Plugin(typeof (GenericService<>)); } [Test] public void CanEmitForATemplateWithTwoTemplates() { - PluginFamily family = new PluginFamily(typeof (ITarget<int, string>)); + var family = new PluginFamily(typeof (ITarget<int, string>)); family.AddPlugin(typeof (SpecificTarget<int, string>), "specific"); - InstanceFactory factory = new InstanceFactory(family); + var factory = new InstanceFactory(family); } [Test] public void CanEmitInstanceBuilderForATypeWithConstructorArguments() { - PluginGraph graph = new PluginGraph(); + var graph = new PluginGraph(); PluginFamily family = graph.FindFamily(typeof (ComplexType<int>)); family.AddPlugin(typeof (ComplexType<int>), "complex"); - Container manager = new Container(graph); + var manager = new Container(graph); - ConfiguredInstance instance = new ConfiguredInstance(typeof(ComplexType<int>)) + ConfiguredInstance instance = new ConfiguredInstance(typeof (ComplexType<int>)) .WithProperty("name").EqualTo("Jeremy") .WithProperty("age").EqualTo(32); - ComplexType<int> com = manager.GetInstance<ComplexType<int>>(instance); + var com = manager.GetInstance<ComplexType<int>>(instance); Assert.AreEqual("Jeremy", com.Name); Assert.AreEqual(32, com.Age); } @@ -107,8 +106,9 @@ [Test] public void CanGetPluginFamilyFromPluginGraphWithNoParameters() { - PluginGraph graph = new PluginGraph(); - graph.Assemblies.Add(Assembly.GetExecutingAssembly()); + var graph = new PluginGraph(); + graph.Scan(x => x.TheCallingAssembly()); + PluginFamily family1 = graph.FindFamily(typeof (IGenericService<int>)); PluginFamily family2 = graph.FindFamily(typeof (IGenericService<string>)); PluginFamily family3 = graph.FindFamily(typeof (IGenericService<>)); @@ -121,8 +121,9 @@ [Test] public void CanGetPluginFamilyFromPluginGraphWithParameters() { - PluginGraph graph = new PluginGraph(); - graph.Assemblies.Add(Assembly.GetExecutingAssembly()); + var graph = new PluginGraph(); + graph.Scan(x => x.TheCallingAssembly()); + PluginFamily family1 = graph.FindFamily(typeof (IGenericService<int>)); PluginFamily family2 = graph.FindFamily(typeof (IGenericService<string>)); @@ -185,9 +186,9 @@ pluginGraph.SetDefault("2", typeof (IService<>), new ReferencedInstance("Plugged")); - Container manager = new Container(pluginGraph); + var manager = new Container(pluginGraph); - IPlug<string> plug = manager.GetInstance<IPlug<string>>(); + var plug = manager.GetInstance<IPlug<string>>(); manager.SetDefaultsToProfile("1"); Assert.IsInstanceOfType(typeof (Service<string>), manager.GetInstance(typeof (IService<string>))); Modified: trunk/Source/StructureMap.Testing/Graph/ArrayConstructorTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/ArrayConstructorTester.cs 2008-10-01 15:53:44 UTC (rev 159) +++ trunk/Source/StructureMap.Testing/Graph/ArrayConstructorTester.cs 2008-10-01 18:29:38 UTC (rev 160) @@ -8,16 +8,7 @@ [TestFixture] public class ArrayConstructorTester { - #region Setup/Teardown - [TearDown] - public void TearDown() - { - ObjectMother.Reset(); - } - - #endregion - [Test] public void BuildDecisionWithRules() { Modified: trunk/Source/StructureMap.Testing/Graph/ContainerTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/ContainerTester.cs 2008-10-01 15:53:44 UTC (rev 159) +++ trunk/Source/StructureMap.Testing/Graph/ContainerTester.cs 2008-10-01 18:29:38 UTC (rev 160) @@ -20,7 +20,7 @@ { _manager = new Container(registry => { - registry.ScanAssemblies().IncludeAssembly("StructureMap.Testing.Widget"); + registry.Scan(x => x.Assembly("StructureMap.Testing.Widget")); registry.BuildInstancesOf<Rule>(); registry.BuildInstancesOf<IWidget>(); registry.BuildInstancesOf<WidgetMaker>(); @@ -36,8 +36,10 @@ _manager.Configure(r => { r.InstanceOf<Rule>().Is.OfConcreteType<ColorRule>().WithCtorArg("color").EqualTo(Color).WithName(Color); - r.InstanceOf<IWidget>().Is.OfConcreteType<ColorWidget>().WithCtorArg("color").EqualTo(Color).WithName(Color); - r.InstanceOf<WidgetMaker>().Is.OfConcreteType<ColorWidgetMaker>().WithCtorArg("color").EqualTo(Color).WithName(Color); + r.InstanceOf<IWidget>().Is.OfConcreteType<ColorWidget>().WithCtorArg("color").EqualTo(Color).WithName( + Color); + r.InstanceOf<WidgetMaker>().Is.OfConcreteType<ColorWidgetMaker>().WithCtorArg("color").EqualTo(Color). + WithName(Color); }); } @@ -71,7 +73,7 @@ private void assertColorIs(IContainer manager, string color) { - ColorService rule = (ColorService) manager.GetInstance<IService>(); + var rule = (ColorService) manager.GetInstance<IService>(); Assert.AreEqual(color, rule.Color); } @@ -111,7 +113,7 @@ // Now, have that same Container create a ClassThatUsesProvider. StructureMap will // see that ClassThatUsesProvider is concrete, determine its constructor args, and build one // for you with the default IProvider. No other configuration necessary. - ClassThatUsesProvider classThatUsesProvider = manager.GetInstance<ClassThatUsesProvider>(); + var classThatUsesProvider = manager.GetInstance<ClassThatUsesProvider>(); Assert.IsInstanceOfType(typeof (Provider), classThatUsesProvider.Provider); } @@ -122,18 +124,18 @@ new Container( registry => registry.ForRequestedType<IProvider>().TheDefaultIsConcreteType<Provider>()); - DifferentProvider differentProvider = new DifferentProvider(); - ExplicitArguments args = new ExplicitArguments(); + var differentProvider = new DifferentProvider(); + var args = new ExplicitArguments(); args.Set<IProvider>(differentProvider); - ClassThatUsesProvider classThatUsesProvider = manager.GetInstance<ClassThatUsesProvider>(args); + var classThatUsesProvider = manager.GetInstance<ClassThatUsesProvider>(args); Assert.AreSame(differentProvider, classThatUsesProvider.Provider); } [Test, ExpectedException(typeof (StructureMapConfigurationException))] public void CTOR_throws_StructureMapConfigurationException_if_there_is_an_error() { - PluginGraph graph = new PluginGraph(); + var graph = new PluginGraph(); graph.Log.RegisterError(400, new ApplicationException("Bad!")); new Container(graph); @@ -145,12 +147,12 @@ { Type serviceType = typeof (IService<string>); PluginGraph pluginGraph = PluginGraph.BuildGraphFromAssembly(serviceType.Assembly); - PipelineGraph pipelineGraph = new PipelineGraph(pluginGraph); + var pipelineGraph = new PipelineGraph(pluginGraph); Type stringService = typeof (IService<string>); IInstanceFactory factory = pipelineGraph.ForType(stringService); - Assert.AreEqual(stringService, factory.PluginType); + Assert.AreEqual((object) stringService, factory.PluginType); } [Test] @@ -161,7 +163,7 @@ addColorMemento("Blue"); _manager.SetDefault(typeof (Rule), "Blue"); - ColorRule rule = _manager.GetInstance(typeof (Rule)) as ColorRule; + var rule = _manager.GetInstance(typeof (Rule)) as ColorRule; Assert.IsNotNull(rule); Assert.AreEqual("Blue", rule.Color); @@ -174,15 +176,15 @@ addColorMemento("Orange"); addColorMemento("Blue"); - ColorRule rule = _manager.GetInstance(typeof (Rule), "Blue") as ColorRule; + var rule = _manager.GetInstance(typeof (Rule), "Blue") as ColorRule; Assert.IsNotNull(rule); Assert.AreEqual("Blue", rule.Color); - ColorWidget widget = _manager.GetInstance(typeof (IWidget), "Red") as ColorWidget; + var widget = _manager.GetInstance(typeof (IWidget), "Red") as ColorWidget; Assert.IsNotNull(widget); Assert.AreEqual("Red", widget.Color); - ColorWidgetMaker maker = _manager.GetInstance(typeof (WidgetMaker), "Orange") as ColorWidgetMaker; + var maker = _manager.GetInstance(typeof (WidgetMaker), "Orange") as ColorWidgetMaker; Assert.IsNotNull(maker); Assert.AreEqual("Orange", maker.Color); } @@ -198,8 +200,8 @@ { IContainer container = new Container(); - ColorRule red = new ColorRule("Red"); - ColorRule blue = new ColorRule("Blue"); + var red = new ColorRule("Red"); + var blue = new ColorRule("Blue"); container.Inject<Rule>("Red", red); container.Inject<Rule>("Blue", blue); @@ -236,12 +238,8 @@ [Test, ExpectedException(typeof (StructureMapException))] public void TryToGetDefaultInstanceWithNoInstance() { - Container manager = new Container(new PluginGraph()); + var manager = new Container(new PluginGraph()); manager.GetInstance<IService>(); } - - } - - } \ No newline at end of file Modified: trunk/Source/StructureMap.Testing/Graph/DefaultConventionScanningTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/DefaultConventionScanningTester.cs 2008-10-01 15:53:44 UTC (rev 159) +++ trunk/Source/StructureMap.Testing/Graph/DefaultConventionScanningTester.cs 2008-10-01 18:29:38 UTC (rev 160) @@ -38,8 +38,14 @@ [Test] public void Process_to_Container() { - Container container = new Container(registry => registry.ScanAssemblies().IncludeTheCallingAssembly() - .With(new DefaultConventionScanner())); + Container container = new Container(registry => + { + registry.Scan(x => + { + x.TheCallingAssembly(); + x.With<DefaultConventionScanner>(); + }); + }); Debug.WriteLine(container.WhatDoIHave()); @@ -50,8 +56,14 @@ [Test] public void Process_to_Container_2() { - Container container = new Container(registry => registry.ScanAssemblies().IncludeTheCallingAssembly() - .With<DefaultConventionScanner>()); + Container container = new Container(registry => + { + registry.Scan(x => + { + x.TheCallingAssembly(); + x.With(new DefaultConventionScanner()); + }); + }); Assert.IsInstanceOfType... [truncated message content] |
From: <jer...@us...> - 2008-10-01 15:54:16
|
Revision: 159 http://structuremap.svn.sourceforge.net/structuremap/?rev=159&view=rev Author: jeremydmiller Date: 2008-10-01 15:53:44 +0000 (Wed, 01 Oct 2008) Log Message: ----------- AssemblyScanner refactoring Modified Paths: -------------- trunk/Source/StructureMap/BuildSession.cs trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs trunk/Source/StructureMap/Configuration/DSL/Expressions/ScanAssembliesExpression.cs trunk/Source/StructureMap/Configuration/GraphBuilder.cs trunk/Source/StructureMap/Diagnostics/BuildError.cs trunk/Source/StructureMap/Diagnostics/ValidationBuildSession.cs trunk/Source/StructureMap/Diagnostics/ValidationError.cs trunk/Source/StructureMap/Graph/AssemblyScanner.cs trunk/Source/StructureMap/Graph/ITypeScanner.cs trunk/Source/StructureMap/Graph/PluginFamily.cs trunk/Source/StructureMap/Graph/PluginFamilyCollection.cs trunk/Source/StructureMap/Graph/PluginGraph.cs trunk/Source/StructureMap/Graph/TypeRules.cs trunk/Source/StructureMap/InstanceFactory.cs trunk/Source/StructureMap/Pipeline/ConfiguredInstance.Expressions.cs trunk/Source/StructureMap/Pipeline/ConfiguredInstance.cs trunk/Source/StructureMap/Pipeline/ConfiguredInstanceBase.cs trunk/Source/StructureMap/Pipeline/ProfileManager.cs trunk/Source/StructureMap/Pipeline/SmartInstance.cs trunk/Source/StructureMap/StructureMap.csproj trunk/Source/StructureMap/StructureMapConfiguration.cs trunk/Source/StructureMap.Testing/GenericsAcceptanceTester.cs trunk/Source/StructureMap.Testing/Graph/ArrayConstructorTester.cs trunk/Source/StructureMap.Testing/Graph/DefaultConventionScanningTester.cs trunk/Source/StructureMap.Testing/Graph/ExplicitArgumentTester.cs trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs trunk/Source/StructureMap.Testing/Graph/PluginGraphTester.cs trunk/Source/StructureMap.Testing/Pipeline/ConfiguredInstanceTester.cs trunk/Source/StructureMap.Testing/Pipeline/OptionalSetterInjectionTester.cs trunk/Source/StructureMap.Testing/SpecificationExtensions.cs Added Paths: ----------- trunk/Source/StructureMap/Graph/FamilyAttributeScanner.cs trunk/Source/StructureMap/Graph/FindAllTypesFilter.cs trunk/Source/StructureMap/Graph/FindRegistriesScanner.cs trunk/Source/StructureMap/Graph/PluggableAttributeScanner.cs Modified: trunk/Source/StructureMap/BuildSession.cs =================================================================== --- trunk/Source/StructureMap/BuildSession.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap/BuildSession.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -120,6 +120,7 @@ public virtual object ApplyInterception(Type pluginType, object actualValue) { + if (actualValue == null) return null; return _interceptorLibrary.FindInterceptor(actualValue.GetType()).Process(actualValue); } Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -6,6 +6,8 @@ public interface IsExpression<T> { InstanceExpression<T> Is { get; } + void IsThis(Instance instance); + LiteralInstance IsThis(T obj); } public class InstanceExpression<T> : IsExpression<T> @@ -17,14 +19,14 @@ _action = action; } - public void Is(Instance instance) + public void Instance(Instance instance) { _action(instance); } private T returnInstance<T>(T instance) where T : Instance { - Is(instance); + Instance(instance); return instance; } @@ -48,6 +50,16 @@ get { return this; } } + public void IsThis(Instance instance) + { + returnInstance(instance); + } + + public LiteralInstance IsThis(T obj) + { + return returnInstance(new LiteralInstance(obj)); + } + public ReferencedInstance References(string key) { return returnInstance(new ReferencedInstance(key)); Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/ScanAssembliesExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/ScanAssembliesExpression.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/ScanAssembliesExpression.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -82,9 +82,7 @@ { _registry.addExpression(pluginGraph => { - PluginFamily family = - pluginGraph.FindFamily(pluginType); - family.SearchForImplicitPlugins = true; + pluginGraph.Assemblies.AddScanner(new FindAllTypesFilter(pluginType)); }); return this; @@ -108,7 +106,18 @@ public ScanAssembliesExpression With<T>() where T : ITypeScanner, new() { - return With(new T()); + _registry.addExpression(graph => graph.Assemblies.AddScanner<T>()); + return this; } + + // TODO: Need a test here + public ScanAssembliesExpression With<T>(Action<T> configure) where T : ITypeScanner, new() + { + T scanner = new T(); + configure(scanner); + + _registry.addExpression(graph => graph.Assemblies.AddScanner(scanner)); + return this; + } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Configuration/GraphBuilder.cs =================================================================== --- trunk/Source/StructureMap/Configuration/GraphBuilder.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap/Configuration/GraphBuilder.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -1,6 +1,7 @@ using System; using System.Reflection; using StructureMap.Configuration.DSL; +using StructureMap.Diagnostics; using StructureMap.Graph; using StructureMap.Pipeline; @@ -26,8 +27,11 @@ registry.ConfigurePluginGraph(_pluginGraph); } - _systemGraph = new PluginGraph(false); - _systemGraph.Assemblies.Add(Assembly.GetExecutingAssembly()); + AssemblyScanner scanner = new AssemblyScanner(new GraphLog()); + scanner.Add(Assembly.GetExecutingAssembly()); + scanner.IgnoreRegistries(); + + _systemGraph = new PluginGraph(scanner); } #region IGraphBuilder Members Modified: trunk/Source/StructureMap/Diagnostics/BuildError.cs =================================================================== --- trunk/Source/StructureMap/Diagnostics/BuildError.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap/Diagnostics/BuildError.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -85,7 +85,9 @@ writer.WriteLine(); writer.WriteLine("-----------------------------------------------------------------------------------------------------"); - writer.WriteLine("Build Error on Instance '{0}' ({1}) in PluginType {2}", Instance.Name, description, TypePath.GetAssemblyQualifiedName(PluginType)); + writer.WriteLine("Build Error on Instance '{0}' ({1})\n for PluginType {2}", Instance.Name, description, PluginType.AssemblyQualifiedName); + writer.WriteLine(); + if (Exception != null) writer.WriteLine(Exception.ToString()); writer.WriteLine(); } Modified: trunk/Source/StructureMap/Diagnostics/ValidationBuildSession.cs =================================================================== --- trunk/Source/StructureMap/Diagnostics/ValidationBuildSession.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap/Diagnostics/ValidationBuildSession.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -114,6 +114,8 @@ private void validate(Type pluginType, Instance instance, object builtObject) { + if (builtObject == null) return; + MethodInfo[] methods = ValidationMethodAttribute.GetValidationMethods(builtObject.GetType()); foreach (MethodInfo method in methods) { Modified: trunk/Source/StructureMap/Diagnostics/ValidationError.cs =================================================================== --- trunk/Source/StructureMap/Diagnostics/ValidationError.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap/Diagnostics/ValidationError.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -27,7 +27,8 @@ writer.WriteLine(); writer.WriteLine("-----------------------------------------------------------------------------------------------------"); - writer.WriteLine("Validation Error in Method {0} of Instance {1} in PluginType {2}", MethodName, description, TypePath.GetAssemblyQualifiedName(PluginType)); + writer.WriteLine("Validation Error in Method {0} of Instance '{1}' ({2})\n in PluginType {3}", MethodName, Instance.Name, description, TypePath.GetAssemblyQualifiedName(PluginType)); + writer.WriteLine(); writer.WriteLine(Exception.ToString()); writer.WriteLine(); } Modified: trunk/Source/StructureMap/Graph/AssemblyScanner.cs =================================================================== --- trunk/Source/StructureMap/Graph/AssemblyScanner.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap/Graph/AssemblyScanner.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -3,6 +3,7 @@ using System.Reflection; using StructureMap.Configuration.DSL; using StructureMap.Diagnostics; +using System.Linq; namespace StructureMap.Graph { @@ -15,6 +16,9 @@ public AssemblyScanner(GraphLog log) { _log = log; + AddScanner<FamilyAttributeScanner>(); + AddScanner<PluggableAttributeScanner>(); + AddScanner<FindRegistriesScanner>(); } public int Count @@ -41,42 +45,18 @@ registry.ConfigurePluginGraph(pluginGraph); }); - - findFamiliesAndPlugins(pluginGraph); runScanners(pluginGraph); } private void runScanners(PluginGraph graph) { - Registry registry = new Registry(); - scanTypes(type => _scanners.ForEach(scanner => scanner.Process(type, registry))); - - registry.ConfigurePluginGraph(graph); + scanTypes(type => _scanners.ForEach(scanner => scanner.Process(type, graph))); } - private void findFamiliesAndPlugins(PluginGraph pluginGraph) - { - scanTypes(type => - { - if (PluginFamilyAttribute.MarkedAsPluginFamily(type)) - { - pluginGraph.CreateFamily(type); - } - }); - - scanTypes(type => - { - foreach (PluginFamily family in pluginGraph.PluginFamilies) - { - family.AnalyzeTypeForPlugin(type); - } - }); - } - - public void ScanForStructureMapObjects(PluginGraph pluginGraph) { - findFamiliesAndPlugins(pluginGraph); + // I think this just needs to look for attributes only + throw new NotImplementedException(); } private void scanTypes(Action<Type> action) @@ -139,7 +119,23 @@ public void AddScanner(ITypeScanner scanner) { + if (_scanners.Contains(scanner)) return; + _scanners.Add(scanner); } + + public void AddScanner<T>() where T : ITypeScanner, new() + { + var previous = _scanners.FirstOrDefault(scanner => scanner is T); + if (previous == null) + { + AddScanner(new T()); + } + } + + public void IgnoreRegistries() + { + _scanners.RemoveAll(x => x is FindRegistriesScanner); + } } } \ No newline at end of file Added: trunk/Source/StructureMap/Graph/FamilyAttributeScanner.cs =================================================================== --- trunk/Source/StructureMap/Graph/FamilyAttributeScanner.cs (rev 0) +++ trunk/Source/StructureMap/Graph/FamilyAttributeScanner.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -0,0 +1,15 @@ +using System; + +namespace StructureMap.Graph +{ + public class FamilyAttributeScanner : ITypeScanner + { + public void Process(Type type, PluginGraph graph) + { + if (PluginFamilyAttribute.MarkedAsPluginFamily(type)) + { + graph.CreateFamily(type); + } + } + } +} \ No newline at end of file Added: trunk/Source/StructureMap/Graph/FindAllTypesFilter.cs =================================================================== --- trunk/Source/StructureMap/Graph/FindAllTypesFilter.cs (rev 0) +++ trunk/Source/StructureMap/Graph/FindAllTypesFilter.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -0,0 +1,22 @@ +using System; + +namespace StructureMap.Graph +{ + public class FindAllTypesFilter : TypeRules, ITypeScanner + { + private readonly Type _pluginType; + + public FindAllTypesFilter(Type pluginType) + { + _pluginType = pluginType; + } + + public void Process(Type type, PluginGraph graph) + { + if (CanBeCast(_pluginType, type)) + { + graph.AddType(_pluginType, type); + } + } + } +} \ No newline at end of file Added: trunk/Source/StructureMap/Graph/FindRegistriesScanner.cs =================================================================== --- trunk/Source/StructureMap/Graph/FindRegistriesScanner.cs (rev 0) +++ trunk/Source/StructureMap/Graph/FindRegistriesScanner.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -0,0 +1,24 @@ +using System; +using StructureMap.Configuration.DSL; + +namespace StructureMap.Graph +{ + public class FindRegistriesScanner : ITypeScanner + { + public void Process(Type type, PluginGraph graph) + { + if (!Registry.IsPublicRegistry(type)) return; + + foreach (var previous in graph.Registries) + { + if (previous.GetType().Equals(type)) + { + return; + } + } + + Registry registry = (Registry)Activator.CreateInstance(type); + registry.ConfigurePluginGraph(graph); + } + } +} \ No newline at end of file Modified: trunk/Source/StructureMap/Graph/ITypeScanner.cs =================================================================== --- trunk/Source/StructureMap/Graph/ITypeScanner.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap/Graph/ITypeScanner.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -1,31 +1,30 @@ using System; using System.Collections.Generic; -using System.Text; -using StructureMap.Configuration.DSL; -using StructureMap.Pipeline; namespace StructureMap.Graph { public interface ITypeScanner { - void Process(Type type, Registry registry); + void Process(Type type, PluginGraph graph); } public class DefaultConventionScanner : TypeRules, ITypeScanner { - public void Process(Type type, Registry registry) + #region ITypeScanner Members + + public void Process(Type type, PluginGraph graph) { if (!IsConcrete(type)) return; - - Type pluginType = FindPluginType(type); if (pluginType != null && Constructor.HasConstructors(type)) { - registry.ForRequestedType(pluginType).AddInstance(new ConfiguredInstance(type)); + graph.AddType(pluginType, type); } } + #endregion + public virtual Type FindPluginType(Type concreteType) { string interfaceName = "I" + concreteType.Name; @@ -33,4 +32,4 @@ return Array.Find(interfaces, t => t.Name == interfaceName); } } -} +} \ No newline at end of file Added: trunk/Source/StructureMap/Graph/PluggableAttributeScanner.cs =================================================================== --- trunk/Source/StructureMap/Graph/PluggableAttributeScanner.cs (rev 0) +++ trunk/Source/StructureMap/Graph/PluggableAttributeScanner.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -0,0 +1,15 @@ +using System; + +namespace StructureMap.Graph +{ + public class PluggableAttributeScanner : ITypeScanner + { + public void Process(Type type, PluginGraph graph) + { + if (PluggableAttribute.MarkedAsPluggable(type)) + { + graph.AddType(type); + } + } + } +} \ No newline at end of file Modified: trunk/Source/StructureMap/Graph/PluginFamily.cs =================================================================== --- trunk/Source/StructureMap/Graph/PluginFamily.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap/Graph/PluginFamily.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -13,16 +13,13 @@ /// </summary> public class PluginFamily : TypeRules, IPluginFamily { - private readonly Predicate<Type> _explicitlyMarkedPluginFilter; - private readonly Predicate<Type> _implicitPluginFilter; private readonly Cache<string, Instance> _instances = new Cache<string, Instance>(delegate { return null; }); private readonly List<InstanceMemento> _mementoList = new List<InstanceMemento>(); - private Cache<string, Plugin> _pluggedTypes = new Cache<string, Plugin>(); + private readonly Cache<string, Plugin> _pluggedTypes = new Cache<string, Plugin>(); private readonly Type _pluginType; private IBuildPolicy _buildPolicy = new BuildPolicy(); private string _defaultKey = string.Empty; private PluginGraph _parent; - private Predicate<Type> _pluginFilter; private IBuildPolicy _policy; public PluginFamily(Type pluginType) @@ -37,10 +34,6 @@ PluginFamilyAttribute.ConfigureFamily(this); - _explicitlyMarkedPluginFilter = (type => IsExplicitlyMarkedAsPlugin(PluginType, type)); - _implicitPluginFilter = (type => CanBeCast(PluginType, type)); - _pluginFilter = _explicitlyMarkedPluginFilter; - if (IsConcrete(pluginType)) { Plugin plugin = PluginCache.GetPlugin(pluginType); @@ -113,6 +106,11 @@ } + public void AddTypes(List<Type> pluggedTypes) + { + pluggedTypes.ForEach(type => AddType(type)); + } + public void Seal() { _mementoList.ForEach(memento => _parent.Log.Try(() => @@ -175,18 +173,6 @@ return _instances.Retrieve(name); } - - public void AnalyzeTypeForPlugin(Type pluggedType) - { - if (_pluginFilter(pluggedType)) - { - if (!HasPlugin(pluggedType)) - { - AddPlugin(pluggedType); - } - } - } - public bool HasPlugin(Type pluggedType) { return _pluggedTypes.Exists(plugin => plugin.PluggedType == pluggedType); @@ -235,15 +221,9 @@ public bool IsGenericTemplate { - get { return _pluginType.IsGenericTypeDefinition; } + get { return _pluginType.IsGenericTypeDefinition || _pluginType.ContainsGenericParameters; } } - public bool SearchForImplicitPlugins - { - get { return ReferenceEquals(_pluginFilter, _implicitPluginFilter); } - set { _pluginFilter = value ? _implicitPluginFilter : _explicitlyMarkedPluginFilter; } - } - public IBuildPolicy Policy { get { return _buildPolicy; } @@ -356,5 +336,15 @@ return templatedFamily; } + + public void AddType(Type concreteType) + { + if (!CanBeCast(_pluginType, concreteType)) return; + + if (FindPlugin(concreteType) == null) + { + AddPlugin(concreteType); + } + } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Graph/PluginFamilyCollection.cs =================================================================== --- trunk/Source/StructureMap/Graph/PluginFamilyCollection.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap/Graph/PluginFamilyCollection.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -92,5 +92,13 @@ { return Contains(typeof (T)); } + + public void Each(Action<PluginFamily> action) + { + foreach (var family in All) + { + action(family); + } + } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Graph/PluginGraph.cs =================================================================== --- trunk/Source/StructureMap/Graph/PluginGraph.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap/Graph/PluginGraph.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -21,10 +21,9 @@ private GraphLog _log = new GraphLog(); private readonly PluginFamilyCollection _pluginFamilies; private readonly ProfileManager _profileManager = new ProfileManager(); - private readonly bool _useExternalRegistries = true; private bool _sealed = false; private readonly List<Registry> _registries = new List<Registry>(); - + private readonly List<Type> _pluggedTypes = new List<Type>(); /// <summary> @@ -36,10 +35,10 @@ _pluginFamilies = new PluginFamilyCollection(this); } - - public PluginGraph(bool useExternalRegistries) : this() + public PluginGraph(AssemblyScanner assemblies) { - _useExternalRegistries = useExternalRegistries; + _assemblies = assemblies; + _pluginFamilies = new PluginFamilyCollection(this); } public List<Registry> Registries @@ -96,24 +95,13 @@ return; } - if (_useExternalRegistries) - { - _assemblies.ScanForAll(this); - } - else - { - _assemblies.ScanForStructureMapObjects(this); - } + _assemblies.ScanForAll(this); - foreach (PluginFamily family in _pluginFamilies.All) - { - family.Seal(); - } + _pluginFamilies.Each(family => family.AddTypes(_pluggedTypes)); + _pluginFamilies.Each(family => family.Seal()); _profileManager.Seal(this); - - _sealed = true; } @@ -150,5 +138,15 @@ FindFamily(pluginType).AddInstance(instance); _profileManager.SetDefault(profileName, pluginType, instance); } + + public void AddType(Type pluginType, Type concreteType) + { + FindFamily(pluginType).AddType(concreteType); + } + + public void AddType(Type pluggedType) + { + _pluggedTypes.Add(pluggedType); + } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Graph/TypeRules.cs =================================================================== --- trunk/Source/StructureMap/Graph/TypeRules.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap/Graph/TypeRules.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -62,7 +62,7 @@ protected bool IsPrimitive(Type type) { - return type.IsPrimitive && !IsString(type); + return type.IsPrimitive && !IsString(type) && type != typeof(IntPtr); } protected bool IsSimple(Type type) Modified: trunk/Source/StructureMap/InstanceFactory.cs =================================================================== --- trunk/Source/StructureMap/InstanceFactory.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap/InstanceFactory.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -1,5 +1,6 @@ using System; using System.Collections; +using System.Collections.Generic; using StructureMap.Graph; using StructureMap.Pipeline; using StructureMap.Util; Modified: trunk/Source/StructureMap/Pipeline/ConfiguredInstance.Expressions.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/ConfiguredInstance.Expressions.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap/Pipeline/ConfiguredInstance.Expressions.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -35,14 +35,14 @@ validateTypeIsArray<PLUGINTYPE>(); ChildArrayExpression expression = - new ChildArrayExpression(this, propertyName, typeof (PLUGINTYPE)); + new ChildArrayExpression(this, propertyName); return expression; } - public ChildArrayExpression ChildArray(string propertyName, Type childType) + public ChildArrayExpression ChildArray(string propertyName) { - return new ChildArrayExpression(this, propertyName, childType); + return new ChildArrayExpression(this, propertyName); } public ChildArrayExpression ChildArray<PLUGINTYPE>() @@ -104,16 +104,13 @@ public class ChildArrayExpression { - private readonly Type _childType; private readonly ConfiguredInstance _instance; private readonly string _propertyName; - public ChildArrayExpression(ConfiguredInstance instance, string propertyName, Type childType) + public ChildArrayExpression(ConfiguredInstance instance, string propertyName) { _instance = instance; _propertyName = propertyName; - - _childType = _childType; } public ConfiguredInstance Contains(params Instance[] instances) Modified: trunk/Source/StructureMap/Pipeline/ConfiguredInstance.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/ConfiguredInstance.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap/Pipeline/ConfiguredInstance.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -6,6 +6,11 @@ { public partial class ConfiguredInstance : ConfiguredInstanceBase<ConfiguredInstance> { + public static Type GetGenericType(Type templateType, params Type[] types) + { + return templateType.MakeGenericType(types); + } + public ConfiguredInstance(InstanceMemento memento, PluginGraph graph, Type pluginType) : base(memento, graph, pluginType) { } @@ -19,6 +24,11 @@ { } + public ConfiguredInstance(Type templateType, params Type[] types) : base(GetGenericType(templateType, types)) + { + + } + #region IStructuredInstance Members #endregion Modified: trunk/Source/StructureMap/Pipeline/ConfiguredInstanceBase.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/ConfiguredInstanceBase.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap/Pipeline/ConfiguredInstanceBase.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -162,7 +162,7 @@ bool IConfiguredInstance.HasProperty(string propertyName) { - return _properties.ContainsKey(propertyName) || _children.ContainsKey(propertyName) || _arrays.ContainsKey(propertyName); + return _properties.ContainsKey(propertyName) || _children.ContainsKey(propertyName) || _arrays.ContainsKey(propertyName); } protected override Type getConcreteType(Type pluginType) @@ -198,6 +198,7 @@ protected void setProperty(string propertyName, string propertyValue) { + if (string.IsNullOrEmpty(propertyValue)) return; _properties[propertyName] = propertyValue; } Modified: trunk/Source/StructureMap/Pipeline/ProfileManager.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/ProfileManager.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap/Pipeline/ProfileManager.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -203,7 +203,14 @@ pair.Value.CopyDefault(basicType, templatedType, family); } - CurrentProfile = CurrentProfile; + if (!string.IsNullOrEmpty(CurrentProfile)) + { + Profile theSourceProfile = getProfile(CurrentProfile); + theSourceProfile.FillAllTypesInto(_currentProfile); + } + + _default.FillAllTypesInto(_currentProfile); + } public void ImportFrom(ProfileManager source) Modified: trunk/Source/StructureMap/Pipeline/SmartInstance.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/SmartInstance.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap/Pipeline/SmartInstance.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -146,6 +146,13 @@ return _instance; } + + public SmartInstance<T> Contains(Instance[] arrayInstances) + { + _instance.setChildArray(_propertyName, arrayInstances); + + return _instance; + } } public class DependencyExpression<T, CHILD> @@ -166,6 +173,17 @@ return _instance; } + + public SmartInstance<T> Is(Instance instance) + { + _instance.setChild(_propertyName, instance); + return _instance; + } + + public SmartInstance<T> Is(CHILD value) + { + return Is(new LiteralInstance(value)); + } } } Modified: trunk/Source/StructureMap/StructureMap.csproj =================================================================== --- trunk/Source/StructureMap/StructureMap.csproj 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap/StructureMap.csproj 2008-10-01 15:53:44 UTC (rev 159) @@ -403,7 +403,11 @@ <Compile Include="Diagnostics\ValidationError.cs" /> <Compile Include="Emitting\Parameters\Methods.cs" /> <Compile Include="ErrorMessages.cs" /> + <Compile Include="Graph\FamilyAttributeScanner.cs" /> + <Compile Include="Graph\FindAllTypesFilter.cs" /> + <Compile Include="Graph\FindRegistriesScanner.cs" /> <Compile Include="Graph\ITypeScanner.cs" /> + <Compile Include="Graph\PluggableAttributeScanner.cs" /> <Compile Include="Graph\PluginCache.cs" /> <Compile Include="IBootstrapper.cs" /> <Compile Include="InitializationExpression.cs" /> Modified: trunk/Source/StructureMap/StructureMapConfiguration.cs =================================================================== --- trunk/Source/StructureMap/StructureMapConfiguration.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap/StructureMapConfiguration.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -92,7 +92,7 @@ /// Returns the path to the StructureMap.config file /// </summary> /// <returns></returns> - internal static string GetStructureMapConfigurationPath() + public static string GetStructureMapConfigurationPath() { string basePath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase; string configPath = Path.Combine(basePath, CONFIG_FILE_NAME); Modified: trunk/Source/StructureMap.Testing/GenericsAcceptanceTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/GenericsAcceptanceTester.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap.Testing/GenericsAcceptanceTester.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -20,6 +20,8 @@ #endregion + + [Test] public void BuildFamilyAndPluginThenSealAndCreateInstanceManagerWithGenericTypeWithOpenGenericParameters() { Modified: trunk/Source/StructureMap.Testing/Graph/ArrayConstructorTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/ArrayConstructorTester.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap.Testing/Graph/ArrayConstructorTester.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -1,8 +1,4 @@ using NUnit.Framework; -using StructureMap.Configuration; -using StructureMap.Configuration.DSL; -using StructureMap.Diagnostics; -using StructureMap.Graph; using StructureMap.Source; using StructureMap.Testing.TestData; using StructureMap.Testing.Widget; @@ -26,35 +22,26 @@ public void BuildDecisionWithRules() { // May need to add a Plugin for Decision to Decision labelled "Default" - DataMother.WriteDocument("FullTesting.XML"); DataMother.WriteDocument("Array.xml"); DataMother.WriteDocument("ObjectMother.config"); - Registry registry = new Registry(); XmlMementoSource source = new XmlFileMementoSource("Array.xml", string.Empty, "Decision"); - registry.ForRequestedType<Decision>().AddInstancesFrom(source); - PluginGraphBuilder builder = - new PluginGraphBuilder(new ConfigurationParser[] {ConfigurationParser.FromFile("ObjectMother.config")}, - new Registry[] {registry}, new GraphLog()); + var container = new Container(x => + { + x.AddConfigurationFromXmlFile("ObjectMother.config"); + x.ForRequestedType<Decision>().AddInstancesFrom(source); + }); - PluginGraph graph = builder.Build(); + container.GetInstance<Decision>("RedBlue").Rules.Length.ShouldEqual(2); - Container manager = new Container(graph); + var d2 = container.GetInstance(typeof (Decision), "GreenBluePurple").ShouldBeOfType<Decision>(); + d2.Rules.Length.ShouldEqual(3); - Decision d1 = manager.GetInstance<Decision>("RedBlue"); - Assert.IsNotNull(d1); - Assert.AreEqual(2, d1.Rules.Length, "2 Rules"); - - Decision d2 = (Decision) manager.GetInstance(typeof (Decision), "GreenBluePurple"); - Assert.IsNotNull(d2); - Assert.AreEqual(3, d2.Rules.Length, "3 Rules"); - - - Assert.AreEqual("Green", ((ColorRule) d2.Rules[0]).Color); - Assert.AreEqual("Blue", ((ColorRule) d2.Rules[1]).Color); - Assert.AreEqual("Purple", ((ColorRule) d2.Rules[2]).Color); + d2.Rules[0].ShouldBeOfType<ColorRule>().Color.ShouldEqual("Green"); + d2.Rules[1].ShouldBeOfType<ColorRule>().Color.ShouldEqual("Blue"); + d2.Rules[2].ShouldBeOfType<ColorRule>().Color.ShouldEqual("Purple"); } } } \ No newline at end of file Modified: trunk/Source/StructureMap.Testing/Graph/DefaultConventionScanningTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/DefaultConventionScanningTester.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap.Testing/Graph/DefaultConventionScanningTester.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -23,16 +23,15 @@ [Test] public void Process_to_PluginGraph() { - Registry registry = new Registry(); + PluginGraph graph = new PluginGraph(); DefaultConventionScanner scanner = new DefaultConventionScanner(); - scanner.Process(typeof(Convention), registry); + scanner.Process(typeof(Convention), graph); - PluginGraph graph = registry.Build(); - Assert.IsFalse(graph.PluginFamilies.Contains(typeof(IServer))); Assert.IsTrue(graph.PluginFamilies.Contains(typeof(IConvention))); PluginFamily family = graph.FindFamily(typeof (IConvention)); + family.Seal(); Assert.AreEqual(1, family.InstanceCount); } Modified: trunk/Source/StructureMap.Testing/Graph/ExplicitArgumentTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/ExplicitArgumentTester.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap.Testing/Graph/ExplicitArgumentTester.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -288,9 +288,13 @@ [Test] public void pass_explicit_service_into_all_instances() { + // The Container is constructed with 2 instances + // of TradeView var container = new Container(r => { - r.ForRequestedType<TradeView>().TheDefaultIsConcreteType<TradeView>().AddConcreteType<SecuredTradeView>(); + r.ForRequestedType<TradeView>() + .TheDefaultIsConcreteType<TradeView>() + .AddConcreteType<SecuredTradeView>(); }); Trade theTrade = new Trade(); @@ -300,6 +304,17 @@ views[0].Trade.ShouldBeTheSameAs(theTrade); views[1].Trade.ShouldBeTheSameAs(theTrade); } + + [Test] + public void Example() + { + IContainer container = new Container(); + Trade theTrade = new Trade(); + + var view = container.With<Trade>(theTrade).GetInstance<TradeView>(); + + view.Trade.ShouldBeTheSameAs(theTrade); + } } public class Lump Modified: trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -1,4 +1,6 @@ using System; +using System.Collections.Generic; +using System.Data; using System.Reflection; using NUnit.Framework; using StructureMap.Attributes; @@ -6,6 +8,7 @@ using StructureMap.Pipeline; using StructureMap.Testing.Widget; using StructureMap.Testing.Widget3; +using Rule=StructureMap.Testing.Widget.Rule; namespace StructureMap.Testing.Graph { @@ -30,93 +33,83 @@ } [Test] - public void AddAPluggedType() + public void add_type_does_not_add_if_the_concrete_type_can_not_be_cast_to_plugintype() { - PluginFamily family = new PluginFamily(typeof (IWidget)); - family.DefaultInstanceKey = "DefaultKey"; - family.AddPlugin(typeof (NotPluggableWidget), "NotPlugged"); + var family = new PluginFamily(typeof(IServiceProvider)); + family.AddType(this.GetType()); - Assert.AreEqual(1, family.PluginCount, "Plugin Count"); + family.PluginCount.ShouldEqual(0); } - [Test, ExpectedException(typeof (StructureMapException))] - public void AddAWrongType() - { - PluginFamily family = new PluginFamily(typeof (IWidget)); - family.DefaultInstanceKey = "DefaultKey"; - family.AddPlugin(typeof (Rule), "Rule"); - } - - [Test] - public void Analyze_a_type_for_a_plugin_that_does_not_match() + public void add_type_works_if_the_concrete_type_can_be_cast_to_plugintype() { - PluginFamily family = new PluginFamily(typeof (ISingletonRepository)); - family.AnalyzeTypeForPlugin(typeof (RandomClass)); + var family = new PluginFamily(typeof (IServiceProvider)); - Assert.AreEqual(0, family.PluginCount); + family.AddType(typeof(DataTable)); + family.PluginCount.ShouldEqual(1); + + family.AddType(typeof(DataTable)); + family.PluginCount.ShouldEqual(1); } [Test] - public void - Analyze_a_type_for_a_plugin_that_is_not_explicitly_marked_when_the_family_is_not_considering_implicit_plugins - () + public void add_plugins_at_seal_from_the_list_of_types() { - PluginFamily family = new PluginFamily(typeof (ISingletonRepository)); - family.SearchForImplicitPlugins = false; + var family = new PluginFamily(typeof(IServiceProvider)); + family.AddType(typeof(DataTable)); - family.AnalyzeTypeForPlugin(typeof (SingletonRepositoryWithoutPluginAttribute)); + // DataView, DataSet, and DataTable are all IServiceProvider implementations, and should get added + // to the PluginFamily + List<Type> pluggedTypes = new List<Type>(){typeof(DataView), typeof(DataSet), typeof(DataTable), GetType()}; + + family.AddTypes(pluggedTypes); - Assert.AreEqual(0, family.PluginCount); + family.PluginCount.ShouldEqual(3); + + family.FindPlugin(typeof(DataView)).ShouldNotBeNull(); + family.FindPlugin(typeof(DataTable)).ShouldNotBeNull(); + family.FindPlugin(typeof(DataSet)).ShouldNotBeNull(); } [Test] - public void Analyze_a_type_for_implicit_plugins() + public void AddAPluggedType() { - PluginFamily family = new PluginFamily(typeof (ISingletonRepository)); - family.SearchForImplicitPlugins = true; + var family = new PluginFamily(typeof (IWidget)); + family.DefaultInstanceKey = "DefaultKey"; + family.AddPlugin(typeof (NotPluggableWidget), "NotPlugged"); - family.AnalyzeTypeForPlugin(typeof (SingletonRepositoryWithoutPluginAttribute)); + Assert.AreEqual(1, family.PluginCount, "Plugin Count"); + } - Assert.AreEqual(1, family.PluginCount); - Assert.IsTrue(family.HasPlugin(typeof (SingletonRepositoryWithoutPluginAttribute))); + [Test, ExpectedException(typeof (StructureMapException))] + public void AddAWrongType() + { + var family = new PluginFamily(typeof (IWidget)); + family.DefaultInstanceKey = "DefaultKey"; + family.AddPlugin(typeof (Rule), "Rule"); } [Test] public void Create_PluginFamily_for_concrete_type_that_can_be_autofilled_and_create_default_instance() { - PluginFamily family = new PluginFamily(GetType()); + var family = new PluginFamily(GetType()); family.Seal(); Assert.AreEqual(Plugin.DEFAULT, family.DefaultInstanceKey); Assert.AreEqual(1, family.PluginCount); Assert.AreEqual(1, family.InstanceCount); - IConfiguredInstance instance = (IConfiguredInstance) family.FirstInstance(); + var instance = (IConfiguredInstance) family.FirstInstance(); Assert.AreEqual(Plugin.DEFAULT, instance.Name); Assert.AreEqual(GetType(), instance.PluggedType); } [Test] - public void Do_not_add_Plugin_that_already_exists() - { - PluginFamily family = new PluginFamily(typeof (ISingletonRepository)); - family.AddPlugin(typeof (SingletonRepositoryWithAttribute)); - - - family.AnalyzeTypeForPlugin(typeof (SingletonRepositoryWithAttribute)); - family.AnalyzeTypeForPlugin(typeof (SingletonRepositoryWithAttribute)); - family.AnalyzeTypeForPlugin(typeof (SingletonRepositoryWithAttribute)); - family.AnalyzeTypeForPlugin(typeof (SingletonRepositoryWithAttribute)); - - Assert.AreEqual(1, family.PluginCount); - } - - [Test] public void FillDefault_happy_path() { - PluginFamily family = new PluginFamily(typeof (IWidget)); + var family = new PluginFamily(typeof (IWidget)); family.Parent = new PluginGraph(); - family.AddInstance(new ConfiguredInstance(typeof(ColorWidget)).WithName("Default")); + family.AddInstance(new ConfiguredInstance(typeof (ColorWidget)).WithName("Default")); family.DefaultInstanceKey = "Default"; @@ -128,7 +121,7 @@ [Test] public void FillDefault_sad_path_when_the_default_instance_key_does_not_exist_throws_210() { - PluginFamily family = new PluginFamily(typeof (IWidget)); + var family = new PluginFamily(typeof (IWidget)); family.Parent = new PluginGraph(); family.DefaultInstanceKey = "something that cannot be found"; @@ -140,9 +133,9 @@ [Test] public void If_PluginFamily_only_has_one_instance_make_that_the_default() { - PluginFamily family = new PluginFamily(typeof (IGateway)); + var family = new PluginFamily(typeof (IGateway)); string theInstanceKey = "the default"; - family.AddInstance(new ConfiguredInstance(typeof(TheGateway)).WithName(theInstanceKey)); + family.AddInstance(new ConfiguredInstance(typeof (TheGateway)).WithName(theInstanceKey)); family.Seal(); @@ -152,7 +145,7 @@ [Test] public void If_PluginType_is_concrete_automatically_add_a_plugin_called_default() { - PluginFamily family = new PluginFamily(GetType()); + var family = new PluginFamily(GetType()); family.PluginCount.ShouldEqual(1); family.FindPlugin(Plugin.DEFAULT).PluggedType.ShouldEqual(GetType()); } @@ -160,10 +153,10 @@ [Test] public void ImplicitPluginFamilyCreatesASingletonInterceptorWhenIsSingletonIsTrue() { - PluginFamily family = new PluginFamily(typeof (ISingletonRepository)); + var family = new PluginFamily(typeof (ISingletonRepository)); Assert.IsInstanceOfType(typeof (SingletonPolicy), family.Policy); - PluginFamily family2 = new PluginFamily(typeof (IDevice)); + var family2 = new PluginFamily(typeof (IDevice)); Assert.IsInstanceOfType(typeof (BuildPolicy), family2.Policy); } @@ -172,8 +165,8 @@ { TestUtility.AssertErrorIsLogged(104, graph => { - PluginFamily family = new PluginFamily(typeof (IGateway), graph); - ConfiguredInstance instance = new ConfiguredInstance(typeof (ColorRule)); + var family = new PluginFamily(typeof (IGateway), graph); + var instance = new ConfiguredInstance(typeof (ColorRule)); Assert.IsFalse(TypeRules.CanBeCast(typeof (IGateway), typeof (Rule))); @@ -184,41 +177,23 @@ } [Test] - public void PluginFamily_adds_an_explicitly_marked_Plugin_when_only_looking_for_Explicit_plugins() - { - PluginFamily family = new PluginFamily(typeof (ISingletonRepository)); - family.SearchForImplicitPlugins = false; - family.AnalyzeTypeForPlugin(typeof (SingletonRepositoryWithAttribute)); - - Assert.AreEqual(1, family.PluginCount); - Assert.IsTrue(family.HasPlugin(typeof (SingletonRepositoryWithAttribute))); - } - - [Test] - public void PluginFamily_only_looks_for_explicit_plugins_by_default() - { - PluginFamily family = new PluginFamily(typeof (ISingletonRepository)); - Assert.IsFalse(family.SearchForImplicitPlugins); - } - - [Test] public void PluginFamilyImplicitlyConfiguredAsASingletonBehavesAsASingleton() { - PluginGraph pluginGraph = new PluginGraph(); + var pluginGraph = new PluginGraph(); pluginGraph.Assemblies.Add(Assembly.GetExecutingAssembly()); pluginGraph.Seal(); - Container manager = new Container(pluginGraph); + var manager = new Container(pluginGraph); - ISingletonRepository repository1 = + var repository1 = (ISingletonRepository) manager.GetInstance(typeof (ISingletonRepository)); - ISingletonRepository repository2 = + var repository2 = (ISingletonRepository) manager.GetInstance(typeof (ISingletonRepository)); - ISingletonRepository repository3 = + var repository3 = (ISingletonRepository) manager.GetInstance(typeof (ISingletonRepository)); - ISingletonRepository repository4 = + var repository4 = (ISingletonRepository) manager.GetInstance(typeof (ISingletonRepository)); - ISingletonRepository repository5 = + var repository5 = (ISingletonRepository) manager.GetInstance(typeof (ISingletonRepository)); Assert.AreSame(repository1, repository2); @@ -230,7 +205,7 @@ [Test] public void SetScopeToHttpContext() { - PluginFamily family = new PluginFamily(typeof (IServiceProvider)); + var family = new PluginFamily(typeof (IServiceProvider)); Assert.IsInstanceOfType(typeof (BuildPolicy), family.Policy); family.SetScopeTo(InstanceScope.HttpContext); @@ -241,7 +216,7 @@ [Test] public void SetScopeToHybrid() { - PluginFamily family = new PluginFamily(typeof (IServiceProvider)); + var family = new PluginFamily(typeof (IServiceProvider)); Assert.IsInstanceOfType(typeof (BuildPolicy), family.Policy); family.SetScopeTo(InstanceScope.Hybrid); @@ -251,7 +226,7 @@ [Test] public void SetScopeToSingleton() { - PluginFamily family = new PluginFamily(typeof (IServiceProvider)); + var family = new PluginFamily(typeof (IServiceProvider)); Assert.IsInstanceOfType(typeof (BuildPolicy), family.Policy); family.SetScopeTo(InstanceScope.Singleton); @@ -261,7 +236,7 @@ [Test] public void SetScopeToThreadLocal() { - PluginFamily family = new PluginFamily(typeof (IServiceProvider)); + var family = new PluginFamily(typeof (IServiceProvider)); Assert.IsInstanceOfType(typeof (BuildPolicy), family.Policy); family.SetScopeTo(InstanceScope.ThreadLocal); Modified: trunk/Source/StructureMap.Testing/Graph/PluginGraphTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/PluginGraphTester.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap.Testing/Graph/PluginGraphTester.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -114,6 +114,22 @@ graph.Seal(); } + + [Test] + public void add_type_adds_a_plugin_for_type_once_and_only_once() + { + var graph = new PluginGraph(); + + graph.AddType(typeof (IThingy), typeof (BigThingy)); + + var family = graph.FindFamily(typeof (IThingy)); + family.PluginCount.ShouldEqual(1); + family.FindPlugin(typeof(BigThingy)).ShouldNotBeNull(); + + graph.AddType(typeof(IThingy), typeof(BigThingy)); + + family.PluginCount.ShouldEqual(1); + } } [PluginFamily] Modified: trunk/Source/StructureMap.Testing/Pipeline/ConfiguredInstanceTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Pipeline/ConfiguredInstanceTester.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap.Testing/Pipeline/ConfiguredInstanceTester.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -4,6 +4,7 @@ using StructureMap.Configuration.DSL; using StructureMap.Graph; using StructureMap.Pipeline; +using StructureMap.Testing.GenericWidgets; using StructureMap.Testing.Widget; using StructureMap.Testing.Widget2; using StructureMap.Testing.Widget3; @@ -50,6 +51,15 @@ } [Test] + public void can_use_a_configured_instance_with_generic_template_type_and_arguments() + { + var instance = new ConfiguredInstance(typeof (Service2<>), typeof (string)); + Container container = new Container(); + + container.GetInstance<IService<string>>(instance).ShouldBeOfType(typeof(Service2<string>)); + } + + [Test] public void get_the_concrete_type_from_diagnostic_instance() { var instance = new ConfiguredInstance(typeof (ColorRule)) as IDiagnosticInstance; Modified: trunk/Source/StructureMap.Testing/Pipeline/OptionalSetterInjectionTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Pipeline/OptionalSetterInjectionTester.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap.Testing/Pipeline/OptionalSetterInjectionTester.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -135,9 +135,6 @@ PluggedType='StructureMap.Testing.Pipeline.ClassWithDependency, StructureMap.Testing'> <Rule PluggedType='StructureMap.Testing.Widget.ColorRule, StructureMap.Testing.Widget' color='Red' /> - - - </DefaultInstance> </StructureMap> Modified: trunk/Source/StructureMap.Testing/SpecificationExtensions.cs =================================================================== --- trunk/Source/StructureMap.Testing/SpecificationExtensions.cs 2008-09-30 18:00:10 UTC (rev 158) +++ trunk/Source/StructureMap.Testing/SpecificationExtensions.cs 2008-10-01 15:53:44 UTC (rev 159) @@ -63,6 +63,12 @@ Assert.IsInstanceOfType(expected, actual); } + public static T ShouldBeOfType<T>(this object actual) + { + Assert.IsInstanceOfType(typeof(T), actual); + return (T) actual; + } + public static void ShouldNotBeOfType(this object actual, Type expected) { Assert.IsNotInstanceOfType(expected, actual); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fli...@us...> - 2008-09-30 18:00:39
|
Revision: 158 http://structuremap.svn.sourceforge.net/structuremap/?rev=158&view=rev Author: flimflan Date: 2008-09-30 18:00:10 +0000 (Tue, 30 Sep 2008) Log Message: ----------- Steven Harman thought it was non-intuitive that he had to run the cruise build locally. A little renaming should help him get over that fear. Added Paths: ----------- trunk/RunBuild.BAT Removed Paths: ------------- trunk/RunCruiseBuild.BAT Copied: trunk/RunBuild.BAT (from rev 157, trunk/RunCruiseBuild.BAT) =================================================================== --- trunk/RunBuild.BAT (rev 0) +++ trunk/RunBuild.BAT 2008-09-30 18:00:10 UTC (rev 158) @@ -0,0 +1,2 @@ +bin\nant\nant.exe -buildfile:cruise.build cruise +pause Property changes on: trunk/RunBuild.BAT ___________________________________________________________________ Added: svn:mergeinfo + Deleted: trunk/RunCruiseBuild.BAT =================================================================== --- trunk/RunCruiseBuild.BAT 2008-09-26 01:03:19 UTC (rev 157) +++ trunk/RunCruiseBuild.BAT 2008-09-30 18:00:10 UTC (rev 158) @@ -1,2 +0,0 @@ -bin\nant\nant.exe -buildfile:cruise.build cruise -pause This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fli...@us...> - 2008-09-26 01:03:25
|
Revision: 157 http://structuremap.svn.sourceforge.net/structuremap/?rev=157&view=rev Author: flimflan Date: 2008-09-26 01:03:19 +0000 (Fri, 26 Sep 2008) Log Message: ----------- Cleaning up AAA support in RhinoAutoMocker Modified Paths: -------------- trunk/Source/CommonAssemblyInfo.cs trunk/Source/StructureMap.AutoMocking/RhinoAutoMocker.cs trunk/Source/StructureMap.AutoMocking/RhinoMocksServiceLocator.cs trunk/Source/StructureMap.Testing/AutoMocking/RhinoAutoMockerTester.cs Modified: trunk/Source/CommonAssemblyInfo.cs =================================================================== --- trunk/Source/CommonAssemblyInfo.cs 2008-09-25 23:18:11 UTC (rev 156) +++ trunk/Source/CommonAssemblyInfo.cs 2008-09-26 01:03:19 UTC (rev 157) @@ -5,7 +5,7 @@ //------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. -// Runtime Version:2.0.50727.1434 +// Runtime Version:2.0.50727.1433 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. Modified: trunk/Source/StructureMap.AutoMocking/RhinoAutoMocker.cs =================================================================== --- trunk/Source/StructureMap.AutoMocking/RhinoAutoMocker.cs 2008-09-25 23:18:11 UTC (rev 156) +++ trunk/Source/StructureMap.AutoMocking/RhinoAutoMocker.cs 2008-09-26 01:03:19 UTC (rev 157) @@ -11,7 +11,7 @@ public delegate void VoidMethod(); - public enum MockStyle { Dynamic, DynamicWithAAASupport } + public enum MockMode { Record, Replay } // Note that it subclasses the RhinoMocks.MockRepository class /// <summary> @@ -23,23 +23,27 @@ private readonly AutoMockedContainer _container; private TARGETCLASS _classUnderTest; - public RhinoAutoMocker() : this(MockStyle.Dynamic) {} + public RhinoAutoMocker() : this(MockMode.Record) {} - public RhinoAutoMocker(MockStyle mockStyle) + public RhinoAutoMocker(MockMode mockMode) { - ServiceLocator serviceLocator; - switch (mockStyle) + var mockCreationStrategy = getMockCreationStrategy(mockMode); + var serviceLocator = new RhinoMocksServiceLocator(this, mockCreationStrategy); + _container = new AutoMockedContainer(serviceLocator); + } + + + private static Func<MockRepository, Type, object> getMockCreationStrategy(MockMode mockMode) + { + switch (mockMode) { - case MockStyle.DynamicWithAAASupport: - serviceLocator = new RhinoMocksAAAServiceLocator(this); - break; - case MockStyle.Dynamic: - serviceLocator = new RhinoMocksServiceLocator(this); - break; + case MockMode.Record: + return MockCreationStrategy.RecordMode; + case MockMode.Replay: + return MockCreationStrategy.ReplayMode; default: - throw new InvalidOperationException("Unsupported MockStyle " + mockStyle); + throw new InvalidOperationException("Unsupported MockMode " + mockMode); } - _container = new AutoMockedContainer(serviceLocator); } Modified: trunk/Source/StructureMap.AutoMocking/RhinoMocksServiceLocator.cs =================================================================== --- trunk/Source/StructureMap.AutoMocking/RhinoMocksServiceLocator.cs 2008-09-25 23:18:11 UTC (rev 156) +++ trunk/Source/StructureMap.AutoMocking/RhinoMocksServiceLocator.cs 2008-09-26 01:03:19 UTC (rev 157) @@ -6,12 +6,17 @@ public class RhinoMocksServiceLocator : ServiceLocator { private readonly MockRepository _mocks; + private readonly Func<MockRepository, Type, object> mockCreationStrategy; - public RhinoMocksServiceLocator(MockRepository mocks) + public RhinoMocksServiceLocator(MockRepository mocks, Func<MockRepository, Type, object> mockCreationStrategy) { _mocks = mocks; + this.mockCreationStrategy = mockCreationStrategy; } + public RhinoMocksServiceLocator(MockRepository mocks) : this(mocks, MockCreationStrategy.RecordMode) + { + } public RhinoMocksServiceLocator() : this(new MockRepository()) { @@ -21,46 +26,30 @@ public T Service<T>() { - return _mocks.DynamicMock<T>(); + return (T)mockCreationStrategy(_mocks, typeof (T)); } public object Service(Type serviceType) { - return _mocks.DynamicMock(serviceType); + return mockCreationStrategy(_mocks, serviceType); } #endregion } - public class RhinoMocksAAAServiceLocator : ServiceLocator + public static class MockCreationStrategy { - private readonly MockRepository _mocks; - - public RhinoMocksAAAServiceLocator(MockRepository mocks) + public static object RecordMode(MockRepository repository, Type type) { - _mocks = mocks; + return repository.DynamicMock(type); } - - public RhinoMocksAAAServiceLocator() - : this(new MockRepository()) + public static object ReplayMode(MockRepository repository, Type type) { - } - - #region ServiceLocator Members - - public T Service<T>() - { - return MockRepository.GenerateMock<T>(); - } - - public object Service(Type serviceType) - { - var mock = _mocks.DynamicMock(serviceType); - _mocks.Replay(mock); + var mock = repository.DynamicMock(type); + repository.Replay(mock); return mock; } - - #endregion } + } \ No newline at end of file Modified: trunk/Source/StructureMap.Testing/AutoMocking/RhinoAutoMockerTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/AutoMocking/RhinoAutoMockerTester.cs 2008-09-25 23:18:11 UTC (rev 156) +++ trunk/Source/StructureMap.Testing/AutoMocking/RhinoAutoMockerTester.cs 2008-09-26 01:03:19 UTC (rev 157) @@ -335,7 +335,7 @@ [Test] public void TheAutoMockerOptionallyPushesInMocksInReplayModeToAllowForAAAsyntax() { - var autoMocker = new RhinoAutoMocker<ConcreteClass>(MockStyle.DynamicWithAAASupport); + var autoMocker = new RhinoAutoMocker<ConcreteClass>(MockMode.Replay); autoMocker.ClassUnderTest.CallService(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fli...@us...> - 2008-09-25 23:18:22
|
Revision: 156 http://structuremap.svn.sourceforge.net/structuremap/?rev=156&view=rev Author: flimflan Date: 2008-09-25 23:18:11 +0000 (Thu, 25 Sep 2008) Log Message: ----------- Added support for automatically creating mocks that are compatible with the Rhino.Mocks AAA style of tests. Modified Paths: -------------- trunk/Source/StructureMap.AutoMocking/RhinoAutoMocker.cs trunk/Source/StructureMap.AutoMocking/RhinoMocksServiceLocator.cs trunk/Source/StructureMap.Testing/AutoMocking/RhinoAutoMockerTester.cs Property Changed: ---------------- trunk/Source/StructureMap.AutoMocking/ Property changes on: trunk/Source/StructureMap.AutoMocking ___________________________________________________________________ Modified: svn:ignore - bin obj + bin obj [Bb]in [Dd]ebug [Rr]elease *.user *.aps *.eto Modified: trunk/Source/StructureMap.AutoMocking/RhinoAutoMocker.cs =================================================================== --- trunk/Source/StructureMap.AutoMocking/RhinoAutoMocker.cs 2008-09-25 17:38:24 UTC (rev 155) +++ trunk/Source/StructureMap.AutoMocking/RhinoAutoMocker.cs 2008-09-25 23:18:11 UTC (rev 156) @@ -11,6 +11,9 @@ public delegate void VoidMethod(); + public enum MockStyle { Dynamic, DynamicWithAAASupport } + + // Note that it subclasses the RhinoMocks.MockRepository class /// <summary> /// Provides an "Auto Mocking Container" for the concrete class TARGETCLASS /// </summary> @@ -20,10 +23,23 @@ private readonly AutoMockedContainer _container; private TARGETCLASS _classUnderTest; - public RhinoAutoMocker() + public RhinoAutoMocker() : this(MockStyle.Dynamic) {} + + public RhinoAutoMocker(MockStyle mockStyle) { - var locator = new RhinoMocksServiceLocator(this); - _container = new AutoMockedContainer(locator); + ServiceLocator serviceLocator; + switch (mockStyle) + { + case MockStyle.DynamicWithAAASupport: + serviceLocator = new RhinoMocksAAAServiceLocator(this); + break; + case MockStyle.Dynamic: + serviceLocator = new RhinoMocksServiceLocator(this); + break; + default: + throw new InvalidOperationException("Unsupported MockStyle " + mockStyle); + } + _container = new AutoMockedContainer(serviceLocator); } Modified: trunk/Source/StructureMap.AutoMocking/RhinoMocksServiceLocator.cs =================================================================== --- trunk/Source/StructureMap.AutoMocking/RhinoMocksServiceLocator.cs 2008-09-25 17:38:24 UTC (rev 155) +++ trunk/Source/StructureMap.AutoMocking/RhinoMocksServiceLocator.cs 2008-09-25 23:18:11 UTC (rev 156) @@ -31,4 +31,36 @@ #endregion } + + public class RhinoMocksAAAServiceLocator : ServiceLocator + { + private readonly MockRepository _mocks; + + public RhinoMocksAAAServiceLocator(MockRepository mocks) + { + _mocks = mocks; + } + + + public RhinoMocksAAAServiceLocator() + : this(new MockRepository()) + { + } + + #region ServiceLocator Members + + public T Service<T>() + { + return MockRepository.GenerateMock<T>(); + } + + public object Service(Type serviceType) + { + var mock = _mocks.DynamicMock(serviceType); + _mocks.Replay(mock); + return mock; + } + + #endregion + } } \ No newline at end of file Modified: trunk/Source/StructureMap.Testing/AutoMocking/RhinoAutoMockerTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/AutoMocking/RhinoAutoMockerTester.cs 2008-09-25 17:38:24 UTC (rev 155) +++ trunk/Source/StructureMap.Testing/AutoMocking/RhinoAutoMockerTester.cs 2008-09-25 23:18:11 UTC (rev 156) @@ -85,6 +85,11 @@ { get { return _service3; } } + + public void CallService() + { + _service.Go(); + } } public interface IMockedService @@ -326,5 +331,16 @@ Assert.AreEqual("Max", concreteClass.Name); } + + [Test] + public void TheAutoMockerOptionallyPushesInMocksInReplayModeToAllowForAAAsyntax() + { + var autoMocker = new RhinoAutoMocker<ConcreteClass>(MockStyle.DynamicWithAAASupport); + + autoMocker.ClassUnderTest.CallService(); + + autoMocker.Get<IMockedService>().AssertWasCalled(s => s.Go()); + } + } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jer...@us...> - 2008-09-25 17:38:36
|
Revision: 155 http://structuremap.svn.sourceforge.net/structuremap/?rev=155&view=rev Author: jeremydmiller Date: 2008-09-25 17:38:24 +0000 (Thu, 25 Sep 2008) Log Message: ----------- adding some autoscan capabilities for generics Modified Paths: -------------- trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs trunk/Source/StructureMap/Configuration/DSL/Expressions/ScanAssembliesExpression.cs trunk/Source/StructureMap/Pipeline/Instance.cs trunk/Source/StructureMap.AutoMocking/RhinoAutoMocker.cs trunk/Source/StructureMap.AutoMocking/StructureMap.AutoMocking.csproj trunk/Source/StructureMap.Testing/AutoMocking/RhinoAutoMockerTester.cs trunk/Source/StructureMap.Testing/Graph/DynamicInjectionTester.cs trunk/Source/StructureMap.Testing/Graph/PluginTester.cs Removed Paths: ------------- trunk/Source/StructureMap.AutoMocking/IntegrationSpecification.cs Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs 2008-09-24 21:47:17 UTC (rev 154) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/CreatePluginFamilyExpression.cs 2008-09-25 17:38:24 UTC (rev 155) @@ -154,7 +154,13 @@ public CreatePluginFamilyExpression<PLUGINTYPE> AddConcreteType<PLUGGEDTYPE>() { - _alterations.Add(family => family.AddInstance(new SmartInstance<PLUGGEDTYPE>())); + _alterations.Add(family => + { + string name = PluginCache.GetPlugin(typeof (PLUGGEDTYPE)).ConcreteKey; + var instance = new SmartInstance<PLUGGEDTYPE>().WithName(name); + family.AddInstance(instance); + }); + return this; } Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/ScanAssembliesExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/ScanAssembliesExpression.cs 2008-09-24 21:47:17 UTC (rev 154) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/ScanAssembliesExpression.cs 2008-09-25 17:38:24 UTC (rev 155) @@ -66,12 +66,24 @@ return this; } + public ScanAssembliesExpression IncludeAssemblyContainingType(Type type) + { + _assemblies.Add(type.Assembly); + + return this; + } + public ScanAssembliesExpression AddAllTypesOf<PLUGINTYPE>() { + return AddAllTypesOf(typeof (PLUGINTYPE)); + } + + public ScanAssembliesExpression AddAllTypesOf(Type pluginType) + { _registry.addExpression(pluginGraph => { PluginFamily family = - pluginGraph.FindFamily(typeof (PLUGINTYPE)); + pluginGraph.FindFamily(pluginType); family.SearchForImplicitPlugins = true; }); Modified: trunk/Source/StructureMap/Pipeline/Instance.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/Instance.cs 2008-09-24 21:47:17 UTC (rev 154) +++ trunk/Source/StructureMap/Pipeline/Instance.cs 2008-09-25 17:38:24 UTC (rev 155) @@ -7,6 +7,15 @@ namespace StructureMap.Pipeline { + public static class TypeExtensions + { + public static ReferencedInstance GetReferenceTo(this Type type) + { + string key = PluginCache.GetPlugin(type).ConcreteKey; + return new ReferencedInstance(key); + } + } + public interface IDiagnosticInstance { bool CanBePartOfPluginFamily(PluginFamily family); Deleted: trunk/Source/StructureMap.AutoMocking/IntegrationSpecification.cs =================================================================== --- trunk/Source/StructureMap.AutoMocking/IntegrationSpecification.cs 2008-09-24 21:47:17 UTC (rev 154) +++ trunk/Source/StructureMap.AutoMocking/IntegrationSpecification.cs 2008-09-25 17:38:24 UTC (rev 155) @@ -1,6 +0,0 @@ -namespace StructureMap.AutoMocking -{ - public class IntegrationSpecification<TARGETCLASS> - { - } -} \ No newline at end of file Modified: trunk/Source/StructureMap.AutoMocking/RhinoAutoMocker.cs =================================================================== --- trunk/Source/StructureMap.AutoMocking/RhinoAutoMocker.cs 2008-09-24 21:47:17 UTC (rev 154) +++ trunk/Source/StructureMap.AutoMocking/RhinoAutoMocker.cs 2008-09-25 17:38:24 UTC (rev 155) @@ -1,4 +1,5 @@ using System; +using System.Collections; using System.Collections.Generic; using System.Reflection; using Rhino.Mocks; @@ -10,7 +11,10 @@ public delegate void VoidMethod(); - // Note that it subclasses the RhinoMocks.MockRepository class + /// <summary> + /// Provides an "Auto Mocking Container" for the concrete class TARGETCLASS + /// </summary> + /// <typeparam name="TARGETCLASS">The concrete class being tested</typeparam> public class RhinoAutoMocker<TARGETCLASS> : MockRepository where TARGETCLASS : class { private readonly AutoMockedContainer _container; @@ -18,16 +22,15 @@ public RhinoAutoMocker() { - RhinoMocksServiceLocator locator = new RhinoMocksServiceLocator(this); + var locator = new RhinoMocksServiceLocator(this); _container = new AutoMockedContainer(locator); } - // Replaces the inner Container in ObjectFactory with the mocked - // Container from the auto mocking container. This will make ObjectFactory - // return mocks for everything. Use cautiously!!!!!!!!!!!!!!! - // Gets the ClassUnderTest with mock objects (or stubs) pushed in + /// <summary> + ///Gets an instance of the ClassUnderTest with mock objects (or stubs) pushed in // for all of its dependencies + /// </summary> public TARGETCLASS ClassUnderTest { get @@ -41,13 +44,27 @@ } } + /// <summary> + /// Accesses the underlying AutoMockedContainer + /// </summary> + public AutoMockedContainer Container + { + get { return _container; } + } + + /// <summary> + /// Use this with EXTREME caution. This will replace the active "Container" in accessed + /// by ObjectFactory with the AutoMockedContainer from this instance + /// </summary> public void MockObjectFactory() { ObjectFactory.ReplaceManager(_container); } - // I find it useful from time to time to use partial mocks for the ClassUnderTest - // Especially in Presenter testing + /// <summary> + /// Calling this method will immediately create a "Partial" mock + /// for the ClassUnderTest using the "Greediest" constructor. + /// </summary> public void PartialMockTheClassUnderTest() { _classUnderTest = PartialMock<TARGETCLASS>(getConstructorArgs()); @@ -56,97 +73,123 @@ private object[] getConstructorArgs() { ConstructorInfo ctor = Constructor.GetGreediestConstructor(typeof (TARGETCLASS)); - List<object> list = new List<object>(); + var list = new List<object>(); foreach (ParameterInfo parameterInfo in ctor.GetParameters()) { Type dependencyType = parameterInfo.ParameterType; if (dependencyType.IsArray) { - var values = _container.GetAllInstances(dependencyType.GetElementType()); - var array = Array.CreateInstance(dependencyType.GetElementType(), values.Count); + IList values = _container.GetAllInstances(dependencyType.GetElementType()); + Array array = Array.CreateInstance(dependencyType.GetElementType(), values.Count); values.CopyTo(array, 0); list.Add(array); - } else { object dependency = _container.GetInstance(dependencyType); list.Add(dependency); } - - } return list.ToArray(); } - // Get one of the mock objects that are injected into the constructor function - // of the ClassUnderTest + /// <summary> + /// Gets the mock object for type T that would be injected into the constructor function + /// of the ClassUnderTest + /// </summary> + /// <typeparam name="T"></typeparam> + /// <returns></returns> public T Get<T>() { return _container.GetInstance<T>(); } - // Set the auto mocking container to use a Stub for Type T - public void InjectStub<T>(T stub) - { - _container.Inject<T>(stub); - } - + /// <summary> + /// Method to specify the exact object that will be used for + /// "pluginType." Useful for stub objects and/or static mocks + /// </summary> + /// <param name="pluginType"></param> + /// <param name="stub"></param> public void Inject(Type pluginType, object stub) { _container.Inject(pluginType, stub); } + /// <summary> + /// Method to specify the exact object that will be used for + /// "pluginType." Useful for stub objects and/or static mocks + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="target"></param> public void Inject<T>(T target) { - _container.Inject<T>(target); + _container.Inject(target); } + + /// <summary> + /// Adds an additional mock object for a given T + /// Useful for array arguments to the ClassUnderTest + /// object + /// </summary> + /// <typeparam name="T"></typeparam> + /// <returns></returns> public T AddAdditionalMockFor<T>() { - T mock = DynamicMock<T>(); + var mock = DynamicMock<T>(); _container.Configure(r => r.InstanceOf<T>().Is.Object(mock)); return mock; } - // So that Aaron Jensen can use his concrete HubService object - // Construct whatever T is with all mocks, and make sure that the - // ClassUnderTest gets built with a concrete T + + /// <summary> + /// So that Aaron Jensen can use his concrete HubService object + /// Construct whatever T is with all mocks, and make sure that the + /// ClassUnderTest gets built with a concrete T + /// </summary> + /// <typeparam name="T"></typeparam> public void UseConcreteClassFor<T>() { - T concreteClass = _container.FillDependencies<T>(); + var concreteClass = _container.FillDependencies<T>(); _container.Inject(concreteClass); } - public AutoMockedContainer Container + /// <summary> + /// Creates, returns, and registers an array of mock objects for type T. + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="count"></param> + /// <returns></returns> + public T[] CreateMockArrayFor<T>(int count) { - get { return _container; } - } + var returnValue = new T[count]; - public T[] CreateMockArrayFor<T>(int count) - { - T[] returnValue = new T[count]; - for (int i = 0; i < returnValue.Length; i++) { returnValue[i] = DynamicMock<T>(); } - InjectArray<T>(returnValue); + InjectArray(returnValue); return returnValue; } + /// <summary> + /// Allows you to "inject" an array of known objects for an + /// argument of type T[] in the ClassUnderTest + /// </summary> + /// <typeparam name="T"></typeparam> + /// <param name="stubs"></param> public void InjectArray<T>(T[] stubs) { _container.EjectAllInstancesOf<T>(); _container.Configure(x => { - foreach (var t in stubs) + foreach (T t in stubs) { x.InstanceOf<T>().Is.Object(t); } Modified: trunk/Source/StructureMap.AutoMocking/StructureMap.AutoMocking.csproj =================================================================== --- trunk/Source/StructureMap.AutoMocking/StructureMap.AutoMocking.csproj 2008-09-24 21:47:17 UTC (rev 154) +++ trunk/Source/StructureMap.AutoMocking/StructureMap.AutoMocking.csproj 2008-09-25 17:38:24 UTC (rev 155) @@ -67,7 +67,6 @@ <Link>CommonAssemblyInfo.cs</Link> </Compile> <Compile Include="AutoMockedContainer.cs" /> - <Compile Include="IntegrationSpecification.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="RhinoAutoMocker.cs" /> <Compile Include="RhinoMocksServiceLocator.cs" /> Modified: trunk/Source/StructureMap.Testing/AutoMocking/RhinoAutoMockerTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/AutoMocking/RhinoAutoMockerTester.cs 2008-09-24 21:47:17 UTC (rev 154) +++ trunk/Source/StructureMap.Testing/AutoMocking/RhinoAutoMockerTester.cs 2008-09-25 17:38:24 UTC (rev 155) @@ -4,7 +4,6 @@ using Rhino.Mocks.Interfaces; using StructureMap.AutoMocking; using StructureMap.Graph; -using StructureMap.Testing.Widget3; namespace StructureMap.Testing.AutoMocking { @@ -135,7 +134,7 @@ public class ClassWithArray { - private IMockedService[] _services; + private readonly IMockedService[] _services; public ClassWithArray(IMockedService[] services) { @@ -149,6 +148,20 @@ } [Test] + public void AutoFillAConcreteClassWithMocks() + { + var service = _container.GetInstance<IMockedService>(); + var service2 = _container.GetInstance<IMockedService2>(); + var service3 = _container.GetInstance<IMockedService3>(); + + var concreteClass = _container.FillDependencies<ConcreteClass>(); + + Assert.AreSame(service, concreteClass.Service); + Assert.AreSame(service2, concreteClass.Service2); + Assert.AreSame(service3, concreteClass.Service3); + } + + [Test] public void CanInjectAnArrayOfMockServices1() { var mocker = new RhinoAutoMocker<ClassWithArray>(); @@ -162,7 +175,7 @@ [Test] public void CanInjectAnArrayOfMockServices2() { - var mocker = new RhinoAutoMocker<ClassWithArray>(); + var mocker = new RhinoAutoMocker<ClassWithArray>(); ClassWithArray theClass = mocker.ClassUnderTest; @@ -194,37 +207,22 @@ theClass.Services.Length.ShouldEqual(0); } - [Test] - public void AutoFillAConcreteClassWithMocks() - { - IMockedService service = _container.GetInstance<IMockedService>(); - IMockedService2 service2 = _container.GetInstance<IMockedService2>(); - IMockedService3 service3 = _container.GetInstance<IMockedService3>(); - - ConcreteClass concreteClass = _container.FillDependencies<ConcreteClass>(); - - Assert.AreSame(service, concreteClass.Service); - Assert.AreSame(service2, concreteClass.Service2); - Assert.AreSame(service3, concreteClass.Service3); - } - - [Test] public void GetAFullMockForAServiceThatHasNotPreviouslyBeenRequested() { - IMockedService service = _container.GetInstance<IMockedService>(); + var service = _container.GetInstance<IMockedService>(); Assert.IsNotNull(service); - IMockedObject instance = (IMockedObject) service; + var instance = (IMockedObject) service; Assert.AreSame(_mocks, instance.Repository); } [Test] public void GetTheSameConcreteClassTwiceFromCreate() { - RhinoAutoMocker<ConcreteClass> autoMocker = new RhinoAutoMocker<ConcreteClass>(); + var autoMocker = new RhinoAutoMocker<ConcreteClass>(); ConcreteClass concreteClass = autoMocker.ClassUnderTest; Assert.AreSame(concreteClass, autoMocker.ClassUnderTest); @@ -235,7 +233,7 @@ [Test] public void InjectAStubAndGetTheStubBack() { - StubService stub = new StubService(); + var stub = new StubService(); _container.Inject<IMockedService>(stub); Assert.AreSame(stub, _container.GetInstance<IMockedService>()); @@ -246,7 +244,7 @@ [Test] public void RequestTheServiceTwiceAndGetTheExactSameMockObject() { - IMockedService service = _container.GetInstance<IMockedService>(); + var service = _container.GetInstance<IMockedService>(); Assert.AreSame(service, _container.GetInstance<IMockedService>()); Assert.AreSame(service, _container.GetInstance<IMockedService>()); Assert.AreSame(service, _container.GetInstance<IMockedService>()); @@ -256,12 +254,12 @@ [Test] public void TheAutoMockerPushesInMocksAndAPreBuiltStubForAllOfTheConstructorArguments() { - RhinoAutoMocker<ConcreteClass> autoMocker = new RhinoAutoMocker<ConcreteClass>(); - StubService stub = new StubService(); - autoMocker.InjectStub<IMockedService>(stub); + var autoMocker = new RhinoAutoMocker<ConcreteClass>(); + var stub = new StubService(); + autoMocker.Inject<IMockedService>(stub); - IMockedService2 service2 = autoMocker.Get<IMockedService2>(); - IMockedService3 service3 = autoMocker.Get<IMockedService3>(); + var service2 = autoMocker.Get<IMockedService2>(); + var service3 = autoMocker.Get<IMockedService3>(); ConcreteClass concreteClass = autoMocker.ClassUnderTest; @@ -273,11 +271,11 @@ [Test] public void TheAutoMockerPushesInMocksForAllOfTheConstructorArgumentsForAPartialMock() { - RhinoAutoMocker<ConcreteClass> autoMocker = new RhinoAutoMocker<ConcreteClass>(); + var autoMocker = new RhinoAutoMocker<ConcreteClass>(); - IMockedService service = autoMocker.Get<IMockedService>(); - IMockedService2 service2 = autoMocker.Get<IMockedService2>(); - IMockedService3 service3 = autoMocker.Get<IMockedService3>(); + var service = autoMocker.Get<IMockedService>(); + var service2 = autoMocker.Get<IMockedService2>(); + var service3 = autoMocker.Get<IMockedService3>(); autoMocker.PartialMockTheClassUnderTest(); ConcreteClass concreteClass = autoMocker.ClassUnderTest; @@ -290,10 +288,10 @@ [Test] public void UseConcreteClassFor() { - RhinoAutoMocker<ConcreteClass> mocker = new RhinoAutoMocker<ConcreteClass>(); + var mocker = new RhinoAutoMocker<ConcreteClass>(); mocker.UseConcreteClassFor<ConcreteThing>(); - ConcreteThing thing = mocker.Get<ConcreteThing>(); + var thing = mocker.Get<ConcreteThing>(); Assert.IsInstanceOfType(typeof (ConcreteThing), thing); Assert.AreSame(mocker.Get<IMockedService>(), thing.Service); @@ -303,7 +301,7 @@ [Test] public void UseTheAutoMockerToStartUpTheConcreteClass() { - RhinoAutoMocker<ConcreteClass> autoMocker = new RhinoAutoMocker<ConcreteClass>(); + var autoMocker = new RhinoAutoMocker<ConcreteClass>(); using (autoMocker.Record()) { @@ -316,7 +314,7 @@ [Test] public void UseTheAutoMockerToStartUpTheConcreteClassAsAPartialMockAndSetTheNameMethodUp() { - RhinoAutoMocker<ConcreteClass> autoMocker = new RhinoAutoMocker<ConcreteClass>(); + var autoMocker = new RhinoAutoMocker<ConcreteClass>(); autoMocker.PartialMockTheClassUnderTest(); ConcreteClass concreteClass = autoMocker.ClassUnderTest; Modified: trunk/Source/StructureMap.Testing/Graph/DynamicInjectionTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/DynamicInjectionTester.cs 2008-09-24 21:47:17 UTC (rev 154) +++ trunk/Source/StructureMap.Testing/Graph/DynamicInjectionTester.cs 2008-09-25 17:38:24 UTC (rev 155) @@ -97,7 +97,37 @@ Assert.IsTrue(found); } + [Test] + public void Add_an_assembly_on_the_fly_and_pick_up_plugins2() + { + var container = new Container(); + container.Configure( + registry => { registry.ScanAssemblies().IncludeAssemblyContainingType(typeof(IService<>)).AddAllTypesOf(typeof(IService<>)); }); + + IList<IService<string>> instances = container.GetAllInstances<IService<string>>(); + instances.Count.ShouldBeGreaterThan(0); + } + + + [Test] + public void Add_an_assembly_on_the_fly_and_pick_up_plugins3() + { + var container = new Container(); + container.Configure( + registry => { registry.ScanAssemblies().IncludeTheCallingAssembly().AddAllTypesOf(typeof(IWidget)); }); + + IList<IWidget> instances = container.GetAllInstances<IWidget>(); + bool found = false; + foreach (IWidget widget in instances) + { + found |= widget.GetType().Equals(typeof(TheWidget)); + } + + Assert.IsTrue(found); + } + + [Test] public void Add_generic_stuff_in_configure() { var container = new Container(); Modified: trunk/Source/StructureMap.Testing/Graph/PluginTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/PluginTester.cs 2008-09-24 21:47:17 UTC (rev 154) +++ trunk/Source/StructureMap.Testing/Graph/PluginTester.cs 2008-09-25 17:38:24 UTC (rev 155) @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Reflection; using NUnit.Framework; using Rhino.Mocks; @@ -86,7 +87,18 @@ } } + [Test] + public void Can_get_the_referencedInstance_for_a_type() + { + Container container = new Container(r => r.ForRequestedType<IEngine>().AddConcreteType<DOHCEngine>()); + Debug.WriteLine(container.WhatDoIHave()); + + Instance instance = typeof (DOHCEngine).GetReferenceTo(); + + container.GetInstance<IEngine>(instance).ShouldBeOfType(typeof(DOHCEngine)); + } + [Test] public void BadPluginToAbstractClass() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jer...@us...> - 2008-09-24 22:34:16
|
Revision: 154 http://structuremap.svn.sourceforge.net/structuremap/?rev=154&view=rev Author: jeremydmiller Date: 2008-09-24 21:47:17 +0000 (Wed, 24 Sep 2008) Log Message: ----------- mostly fixes for RhinoAutoMocker Modified Paths: -------------- trunk/Source/StructureMap/BuildSession.cs trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs trunk/Source/StructureMap/Container.cs trunk/Source/StructureMap/IContainer.cs trunk/Source/StructureMap/IInstanceFactory.cs trunk/Source/StructureMap/InstanceFactory.cs trunk/Source/StructureMap/ObjectFactory.cs trunk/Source/StructureMap/Pipeline/ConstructorInstance.cs trunk/Source/StructureMap/PipelineGraph.cs trunk/Source/StructureMap.AutoMocking/AutoMockedContainer.cs trunk/Source/StructureMap.AutoMocking/RhinoAutoMocker.cs trunk/Source/StructureMap.Testing/AutoMocking/RhinoAutoMockerTester.cs trunk/Source/StructureMap.Testing/Pipeline/OptionalSetterInjectionTester.cs Modified: trunk/Source/StructureMap/BuildSession.cs =================================================================== --- trunk/Source/StructureMap/BuildSession.cs 2008-09-17 14:09:19 UTC (rev 153) +++ trunk/Source/StructureMap/BuildSession.cs 2008-09-24 21:47:17 UTC (rev 154) @@ -8,8 +8,17 @@ namespace StructureMap { - public class BuildSession + public interface IContext { + T GetInstance<T>(); + + + BuildStack BuildStack { get; } + Type ParentType { get; } + } + + public class BuildSession : IContext + { private readonly InterceptorLibrary _interceptorLibrary; private readonly PipelineGraph _pipelineGraph; private readonly InstanceCache _cache = new InstanceCache(); @@ -134,5 +143,10 @@ { return _pipelineGraph.ForType(pluginType); } + + T IContext.GetInstance<T>() + { + return (T) CreateInstance(typeof (T)); + } } } \ No newline at end of file Modified: trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs =================================================================== --- trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs 2008-09-17 14:09:19 UTC (rev 153) +++ trunk/Source/StructureMap/Configuration/DSL/Expressions/InstanceExpression.cs 2008-09-24 21:47:17 UTC (rev 154) @@ -33,6 +33,11 @@ return returnInstance(new SmartInstance<PLUGGEDTYPE>()); } + public ConfiguredInstance OfConcreteType(Type type) + { + return returnInstance(new ConfiguredInstance(type)); + } + public LiteralInstance Object(T theObject) { return returnInstance(new LiteralInstance(theObject)); @@ -58,7 +63,7 @@ return returnInstance(new ConstructorInstance<T>(func)); } - public ConstructorInstance<T> ConstructedBy(Func<BuildSession, T> func) + public ConstructorInstance<T> ConstructedBy(Func<IContext, T> func) { return returnInstance(new ConstructorInstance<T>(func)); } Modified: trunk/Source/StructureMap/Container.cs =================================================================== --- trunk/Source/StructureMap/Container.cs 2008-09-17 14:09:19 UTC (rev 153) +++ trunk/Source/StructureMap/Container.cs 2008-09-24 21:47:17 UTC (rev 154) @@ -277,11 +277,11 @@ return forType(type).GetAllInstances(withNewSession()); } - public void Configure(Action<Registry> configure) + public void Configure(Action<ConfigurationExpression> configure) { lock (this) { - Registry registry = new Registry(); + ConfigurationExpression registry = new ConfigurationExpression(); configure(registry); PluginGraph graph = registry.Build(); @@ -335,5 +335,9 @@ return _pipelineGraph.ForType(type); } + public void EjectAllInstancesOf<T>() + { + _pipelineGraph.EjectAllInstancesOf<T>(); + } } } \ No newline at end of file Modified: trunk/Source/StructureMap/IContainer.cs =================================================================== --- trunk/Source/StructureMap/IContainer.cs 2008-09-17 14:09:19 UTC (rev 153) +++ trunk/Source/StructureMap/IContainer.cs 2008-09-24 21:47:17 UTC (rev 154) @@ -21,7 +21,7 @@ IList GetAllInstances(Type type); - void Configure(Action<Registry> configure); + void Configure(Action<ConfigurationExpression> configure); void Inject<PLUGINTYPE>(PLUGINTYPE instance); void Inject(Type pluginType, object stub); void Inject<T>(string name, T instance); Modified: trunk/Source/StructureMap/IInstanceFactory.cs =================================================================== --- trunk/Source/StructureMap/IInstanceFactory.cs 2008-09-17 14:09:19 UTC (rev 153) +++ trunk/Source/StructureMap/IInstanceFactory.cs 2008-09-24 21:47:17 UTC (rev 154) @@ -22,5 +22,6 @@ void ForEachInstance(Action<Instance> action); void ImportFrom(PluginFamily family); void AcceptVisitor(IPipelineGraphVisitor visitor, Instance defaultInstance); + void EjectAllInstances(); } } \ No newline at end of file Modified: trunk/Source/StructureMap/InstanceFactory.cs =================================================================== --- trunk/Source/StructureMap/InstanceFactory.cs 2008-09-17 14:09:19 UTC (rev 153) +++ trunk/Source/StructureMap/InstanceFactory.cs 2008-09-24 21:47:17 UTC (rev 154) @@ -135,5 +135,10 @@ visitor.PluginType(PluginType, defaultInstance, _policy); ForEachInstance(i => visitor.Instance(PluginType, i)); } + + public void EjectAllInstances() + { + _instances.Clear(); + } } } \ No newline at end of file Modified: trunk/Source/StructureMap/ObjectFactory.cs =================================================================== --- trunk/Source/StructureMap/ObjectFactory.cs 2008-09-17 14:09:19 UTC (rev 153) +++ trunk/Source/StructureMap/ObjectFactory.cs 2008-09-24 21:47:17 UTC (rev 154) @@ -176,7 +176,7 @@ _container = container; } - public static void Configure(Action<Registry> configure) + public static void Configure(Action<ConfigurationExpression> configure) { container.Configure(configure); } Modified: trunk/Source/StructureMap/Pipeline/ConstructorInstance.cs =================================================================== --- trunk/Source/StructureMap/Pipeline/ConstructorInstance.cs 2008-09-17 14:09:19 UTC (rev 153) +++ trunk/Source/StructureMap/Pipeline/ConstructorInstance.cs 2008-09-24 21:47:17 UTC (rev 154) @@ -6,9 +6,9 @@ public class ConstructorInstance<T> : ExpressedInstance<ConstructorInstance<T>> { - private readonly Func<BuildSession, T> _builder; + private readonly Func<IContext, T> _builder; - public ConstructorInstance(Func<BuildSession, T> builder) + public ConstructorInstance(Func<IContext, T> builder) { _builder = builder; } Modified: trunk/Source/StructureMap/PipelineGraph.cs =================================================================== --- trunk/Source/StructureMap/PipelineGraph.cs 2008-09-17 14:09:19 UTC (rev 153) +++ trunk/Source/StructureMap/PipelineGraph.cs 2008-09-24 21:47:17 UTC (rev 154) @@ -191,5 +191,10 @@ ForType(typeof (PLUGINTYPE)).AddInstance(literalInstance); SetDefault(typeof (PLUGINTYPE), literalInstance); } + + public void EjectAllInstancesOf<T>() + { + ForType(typeof (T)).EjectAllInstances(); + } } } \ No newline at end of file Modified: trunk/Source/StructureMap.AutoMocking/AutoMockedContainer.cs =================================================================== --- trunk/Source/StructureMap.AutoMocking/AutoMockedContainer.cs 2008-09-17 14:09:19 UTC (rev 153) +++ trunk/Source/StructureMap.AutoMocking/AutoMockedContainer.cs 2008-09-24 21:47:17 UTC (rev 154) @@ -8,6 +8,10 @@ { private readonly ServiceLocator _locator; + public AutoMockedContainer() : this(new RhinoMocksServiceLocator()) + { + } + public AutoMockedContainer(ServiceLocator locator) { _locator = locator; @@ -19,13 +23,21 @@ return null; } - object service = _locator.Service(pluginType); InstanceFactory factory = new InstanceFactory(new PluginFamily(pluginType)); - LiteralInstance instance = new LiteralInstance(service); + try + { + object service = _locator.Service(pluginType); - profileManager.SetDefault(pluginType, instance); + LiteralInstance instance = new LiteralInstance(service); + profileManager.SetDefault(pluginType, instance); + } + catch (Exception) + { + // ignore errors + } + return factory; }; } Modified: trunk/Source/StructureMap.AutoMocking/RhinoAutoMocker.cs =================================================================== --- trunk/Source/StructureMap.AutoMocking/RhinoAutoMocker.cs 2008-09-17 14:09:19 UTC (rev 153) +++ trunk/Source/StructureMap.AutoMocking/RhinoAutoMocker.cs 2008-09-24 21:47:17 UTC (rev 154) @@ -60,8 +60,23 @@ foreach (ParameterInfo parameterInfo in ctor.GetParameters()) { Type dependencyType = parameterInfo.ParameterType; - object dependency = _container.GetInstance(dependencyType); - list.Add(dependency); + + if (dependencyType.IsArray) + { + var values = _container.GetAllInstances(dependencyType.GetElementType()); + var array = Array.CreateInstance(dependencyType.GetElementType(), values.Count); + values.CopyTo(array, 0); + + list.Add(array); + + } + else + { + object dependency = _container.GetInstance(dependencyType); + list.Add(dependency); + } + + } return list.ToArray(); @@ -85,6 +100,19 @@ _container.Inject(pluginType, stub); } + public void Inject<T>(T target) + { + _container.Inject<T>(target); + } + + public T AddAdditionalMockFor<T>() + { + T mock = DynamicMock<T>(); + _container.Configure(r => r.InstanceOf<T>().Is.Object(mock)); + + return mock; + } + // So that Aaron Jensen can use his concrete HubService object // Construct whatever T is with all mocks, and make sure that the // ClassUnderTest gets built with a concrete T @@ -93,5 +121,36 @@ T concreteClass = _container.FillDependencies<T>(); _container.Inject(concreteClass); } + + public AutoMockedContainer Container + { + get { return _container; } + } + + public T[] CreateMockArrayFor<T>(int count) + { + T[] returnValue = new T[count]; + + for (int i = 0; i < returnValue.Length; i++) + { + returnValue[i] = DynamicMock<T>(); + } + + InjectArray<T>(returnValue); + + return returnValue; + } + + public void InjectArray<T>(T[] stubs) + { + _container.EjectAllInstancesOf<T>(); + _container.Configure(x => + { + foreach (var t in stubs) + { + x.InstanceOf<T>().Is.Object(t); + } + }); + } } } \ No newline at end of file Modified: trunk/Source/StructureMap.Testing/AutoMocking/RhinoAutoMockerTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/AutoMocking/RhinoAutoMockerTester.cs 2008-09-17 14:09:19 UTC (rev 153) +++ trunk/Source/StructureMap.Testing/AutoMocking/RhinoAutoMockerTester.cs 2008-09-24 21:47:17 UTC (rev 154) @@ -3,6 +3,8 @@ using Rhino.Mocks; using Rhino.Mocks.Interfaces; using StructureMap.AutoMocking; +using StructureMap.Graph; +using StructureMap.Testing.Widget3; namespace StructureMap.Testing.AutoMocking { @@ -14,6 +16,8 @@ [SetUp] public void SetUp() { + PluginCache.ResetAll(); + _mocks = new MockRepository(); _locator = new RhinoMocksServiceLocator(_mocks); _container = new AutoMockedContainer(_locator); @@ -129,7 +133,70 @@ #endregion } + public class ClassWithArray + { + private IMockedService[] _services; + + public ClassWithArray(IMockedService[] services) + { + _services = services; + } + + public IMockedService[] Services + { + get { return _services; } + } + } + [Test] + public void CanInjectAnArrayOfMockServices1() + { + var mocker = new RhinoAutoMocker<ClassWithArray>(); + + IMockedService[] services = mocker.CreateMockArrayFor<IMockedService>(3); + ClassWithArray theClass = mocker.ClassUnderTest; + + theClass.Services.Length.ShouldEqual(3); + } + + [Test] + public void CanInjectAnArrayOfMockServices2() + { + var mocker = new RhinoAutoMocker<ClassWithArray>(); + + ClassWithArray theClass = mocker.ClassUnderTest; + + theClass.Services.Length.ShouldEqual(0); + } + + + [Test] + public void CanInjectAnArrayOfMockServices3() + { + var mocker = new RhinoAutoMocker<ClassWithArray>(); + + IMockedService[] services = mocker.CreateMockArrayFor<IMockedService>(3); + + mocker.PartialMockTheClassUnderTest(); + ClassWithArray theClass = mocker.ClassUnderTest; + + theClass.Services.Length.ShouldEqual(3); + } + + [Test] + public void CanInjectAnArrayOfMockServices4() + { + var mocker = new RhinoAutoMocker<ClassWithArray>(); + + mocker.PartialMockTheClassUnderTest(); + ClassWithArray theClass = mocker.ClassUnderTest; + + theClass.Services.Length.ShouldEqual(0); + } + + + + [Test] public void AutoFillAConcreteClassWithMocks() { IMockedService service = _container.GetInstance<IMockedService>(); Modified: trunk/Source/StructureMap.Testing/Pipeline/OptionalSetterInjectionTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Pipeline/OptionalSetterInjectionTester.cs 2008-09-17 14:09:19 UTC (rev 153) +++ trunk/Source/StructureMap.Testing/Pipeline/OptionalSetterInjectionTester.cs 2008-09-24 21:47:17 UTC (rev 154) @@ -223,7 +223,7 @@ container.GetInstance<ClassWithDependency>().Rule.ShouldBeOfType(typeof(ColorRule)); } - private static Logger createLogger(BuildSession session) + private static Logger createLogger(IContext session) { return new Logger(session.ParentType); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jer...@us...> - 2008-09-17 07:09:23
|
Revision: 153 http://structuremap.svn.sourceforge.net/structuremap/?rev=153&view=rev Author: jeremydmiller Date: 2008-09-17 14:09:19 +0000 (Wed, 17 Sep 2008) Log Message: ----------- added Container.With<T>(T arg).GetAllInstances<T>() Modified Paths: -------------- trunk/Source/StructureMap/Container.cs trunk/Source/StructureMap/ExplicitArgsExpression.cs trunk/Source/StructureMap/IContainer.cs trunk/Source/StructureMap.Testing/Graph/ExplicitArgumentTester.cs Modified: trunk/Source/StructureMap/Container.cs =================================================================== --- trunk/Source/StructureMap/Container.cs 2008-09-17 13:48:01 UTC (rev 152) +++ trunk/Source/StructureMap/Container.cs 2008-09-17 14:09:19 UTC (rev 153) @@ -104,6 +104,15 @@ return session.CreateInstance(type, instance); } + public IList<T> GetAllInstances<T>(ExplicitArguments args) + { + BuildSession session = withNewSession(); + + args.RegisterDefaults(session); + + return getListOfTypeWithSession<T>(session); + } + public void Inject<PLUGINTYPE>(PLUGINTYPE instance) { _pipelineGraph.Inject(instance); @@ -128,10 +137,13 @@ public IList<T> GetAllInstances<T>() { - List<T> list = new List<T>(); - BuildSession session = withNewSession(); + return getListOfTypeWithSession<T>(session); + } + private IList<T> getListOfTypeWithSession<T>(BuildSession session) + { + List<T> list = new List<T>(); foreach (T instance in forType(typeof (T)).GetAllInstances(session)) { list.Add(instance); @@ -157,6 +169,8 @@ } + + /// <summary> /// Creates a new object instance of the requested type /// </summary> Modified: trunk/Source/StructureMap/ExplicitArgsExpression.cs =================================================================== --- trunk/Source/StructureMap/ExplicitArgsExpression.cs 2008-09-17 13:48:01 UTC (rev 152) +++ trunk/Source/StructureMap/ExplicitArgsExpression.cs 2008-09-17 14:09:19 UTC (rev 153) @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using StructureMap.Pipeline; namespace StructureMap @@ -14,9 +15,9 @@ private readonly IContainer _container; private string _lastArgName; - internal ExplicitArgsExpression(IContainer manager) + internal ExplicitArgsExpression(IContainer container) { - _container = manager; + _container = container; } #region IExplicitProperty Members @@ -71,5 +72,10 @@ { return _container.GetInstance(type, _args); } + + public IList<T> GetAllInstances<T>() + { + return _container.GetAllInstances<T>(_args); + } } } \ No newline at end of file Modified: trunk/Source/StructureMap/IContainer.cs =================================================================== --- trunk/Source/StructureMap/IContainer.cs 2008-09-17 13:48:01 UTC (rev 152) +++ trunk/Source/StructureMap/IContainer.cs 2008-09-17 14:09:19 UTC (rev 153) @@ -62,7 +62,8 @@ /// <returns></returns> object GetInstance(Type pluginType, string instanceKey); - PLUGINTYPE GetInstance<PLUGINTYPE>(ExplicitArguments args); + IList<T> GetAllInstances<T>(ExplicitArguments args); + T GetInstance<T>(ExplicitArguments args); ExplicitArgsExpression With<T>(T arg); IExplicitProperty With(string argName); Modified: trunk/Source/StructureMap.Testing/Graph/ExplicitArgumentTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Graph/ExplicitArgumentTester.cs 2008-09-17 13:48:01 UTC (rev 152) +++ trunk/Source/StructureMap.Testing/Graph/ExplicitArgumentTester.cs 2008-09-17 14:09:19 UTC (rev 153) @@ -284,6 +284,22 @@ args.SetArg("age", 34); Assert.AreEqual(34, args.GetArg("age")); } + + [Test] + public void pass_explicit_service_into_all_instances() + { + var container = new Container(r => + { + r.ForRequestedType<TradeView>().TheDefaultIsConcreteType<TradeView>().AddConcreteType<SecuredTradeView>(); + }); + + Trade theTrade = new Trade(); + + var views = container.With<Trade>(theTrade).GetAllInstances<TradeView>(); + + views[0].Trade.ShouldBeTheSameAs(theTrade); + views[1].Trade.ShouldBeTheSameAs(theTrade); + } } public class Lump @@ -326,6 +342,13 @@ } } + public class SecuredTradeView : TradeView + { + public SecuredTradeView(Trade trade) : base(trade) + { + } + } + public class Node { } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jer...@us...> - 2008-09-17 06:48:05
|
Revision: 152 http://structuremap.svn.sourceforge.net/structuremap/?rev=152&view=rev Author: jeremydmiller Date: 2008-09-17 13:48:01 +0000 (Wed, 17 Sep 2008) Log Message: ----------- cleaning up warnings Modified Paths: -------------- trunk/Source/StructureMap/Graph/PluginFamily.cs trunk/Source/StructureMap/StructureMapConfiguration.cs trunk/Source/StructureMap.Testing/Configuration/DSL/ProfileExpressionTester.cs trunk/Source/StructureMap.Testing/Pipeline/OptionalSetterInjectionTester.cs Modified: trunk/Source/StructureMap/Graph/PluginFamily.cs =================================================================== --- trunk/Source/StructureMap/Graph/PluginFamily.cs 2008-09-16 18:51:53 UTC (rev 151) +++ trunk/Source/StructureMap/Graph/PluginFamily.cs 2008-09-17 13:48:01 UTC (rev 152) @@ -279,7 +279,6 @@ #endregion - [Obsolete("is this really important?")] public Plugin FindPlugin(Type pluggedType) { return _pluggedTypes.Find(p => p.PluggedType == pluggedType); Modified: trunk/Source/StructureMap/StructureMapConfiguration.cs =================================================================== --- trunk/Source/StructureMap/StructureMapConfiguration.cs 2008-09-16 18:51:53 UTC (rev 151) +++ trunk/Source/StructureMap/StructureMapConfiguration.cs 2008-09-17 13:48:01 UTC (rev 152) @@ -12,7 +12,7 @@ namespace StructureMap { - [Obsolete("Please put configuration into Registry classes and use the ObjectFactory.Initialize() method for configuring the container")] + [Obsolete("Please use the ObjectFactory.Initialize() method for configuring the container and put configuration into Registry classes")] public static class StructureMapConfiguration { private const string CONFIG_FILE_NAME = "StructureMap.config"; @@ -144,6 +144,8 @@ /// <returns></returns> internal static PluginGraph GetPluginGraph() { + _sealed = true; + ConfigurationParser[] parsers = _parserBuilder.GetParsers(); PluginGraphBuilder pluginGraphBuilder = new PluginGraphBuilder(parsers, _registries.ToArray(), _log); Modified: trunk/Source/StructureMap.Testing/Configuration/DSL/ProfileExpressionTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Configuration/DSL/ProfileExpressionTester.cs 2008-09-16 18:51:53 UTC (rev 151) +++ trunk/Source/StructureMap.Testing/Configuration/DSL/ProfileExpressionTester.cs 2008-09-17 13:48:01 UTC (rev 152) @@ -94,8 +94,7 @@ .For<IWidget>().UseNamedInstance(theDefaultName) .For<Rule>().UseNamedInstance("DefaultRule"); - LiteralInstance masterInstance = new LiteralInstance(new AWidget()).WithName(theDefaultName); - registry.AddInstanceOf<IWidget>(masterInstance); + var masterInstance = registry.InstanceOf<IWidget>().Is.Object(new AWidget()).WithName(theDefaultName); ProfileManager manager = registry.Build().ProfileManager; Assert.AreSame(masterInstance, manager.GetDefault(typeof (IWidget), theProfileName)); Modified: trunk/Source/StructureMap.Testing/Pipeline/OptionalSetterInjectionTester.cs =================================================================== --- trunk/Source/StructureMap.Testing/Pipeline/OptionalSetterInjectionTester.cs 2008-09-16 18:51:53 UTC (rev 151) +++ trunk/Source/StructureMap.Testing/Pipeline/OptionalSetterInjectionTester.cs 2008-09-17 13:48:01 UTC (rev 152) @@ -46,7 +46,7 @@ r.ForRequestedType<OptionalSetterTarget>().TheDefaultIs( (Instance<OptionalSetterTarget>()).WithProperty("Name").EqualTo("Jeremy")); - r.AddInstanceOf<OptionalSetterTarget>(Instance<OptionalSetterTarget>().WithName("NoName")); + r.InstanceOf<OptionalSetterTarget>().Is.OfConcreteType<OptionalSetterTarget>().WithName("NoName"); }); try This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |