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.
|