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