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