示例#1
0
        public string GetText(ModelQuery query, string title = null)
        {
            if (title.IsNotEmpty())
            {
                _stringWriter.WriteLine(title);
            }

            switch (_graph.Role)
            {
            case ContainerRole.Root:
                break;

            case ContainerRole.ProfileOrChild:
                _stringWriter.WriteLine("Profile is '{0}'", _graph.Profile);
                break;

            case ContainerRole.Nested:
                _stringWriter.WriteLine("Nested Container: " + _graph.Profile);
                break;
            }

            _stringWriter.WriteLine("");

            var model = _graph.ToModel();

            var pluginTypes = query.Query(model);

            writeContentsOfPluginTypes(pluginTypes);

            return(_stringWriter.ToString());
        }
        public SessionCacheTester()
        {
            theResolverMock = Substitute.For<IBuildSession>();

            theCache = new SessionCache(theResolverMock);

            thePipeline = Substitute.For<IPipelineGraph>();
            thePipeline.ToModel().Returns(new Container().Model);

            instanceGraphMock = Substitute.For<IInstanceGraph>();
            thePipeline.Instances.Returns(instanceGraphMock);
        }
示例#3
0
        public SessionCacheTester()
        {
            theResolverMock = Substitute.For <IBuildSession>();

            theCache = new SessionCache(theResolverMock);

            thePipeline = Substitute.For <IPipelineGraph>();
            thePipeline.ToModel().Returns(new Container().Model);

            instanceGraphMock = Substitute.For <IInstanceGraph>();
            thePipeline.Instances.Returns(instanceGraphMock);
        }
        public void Validate(IPipelineGraph pipeline, Policies policies)
        {
            var report = new ProfileReport(pipeline);
            _reports.Add(report);

            var closedTypes = pipeline.ToModel().PluginTypes.Where(x => !x.PluginType.IsOpenGeneric()).ToArray();

            closedTypes.Each(
                family => {
                    family.Instances.Each(i => { tryCreateBuildPlan(family.PluginType, i, policies, report); });
                });

            closedTypes.Each(
                family => {
                    family.Instances.Where(x => !_buildPlanFailureIds.Contains(x.Instance.Id))
                        .Each(i => { tryBuildInstance(family.PluginType, i.Instance, pipeline, report); });
                });
        }
        public object GetDefault(Type pluginType, IPipelineGraph pipelineGraph)
        {
            if (_defaults.ContainsKey(pluginType))
            {
                return(_defaults[pluginType]);
            }

            var instance = pipelineGraph.Instances.GetDefault(pluginType);

            if (instance == null)
            {
                var ex =
                    new StructureMapConfigurationException(
                        "No default Instance is registered and cannot be automatically determined for type '{0}'",
                        pluginType.GetFullName());

                if (pipelineGraph.ToModel().HasImplementationsFor(pluginType))
                {
                    ex.Context = new WhatDoIHaveWriter(pipelineGraph).GetText(new ModelQuery {
                        PluginType = pluginType
                    },
                                                                              "No default instance is specified.  The current configuration for type {0} is:".ToFormat(
                                                                                  pluginType.GetFullName()));
                }
                else
                {
                    ex.Context = "There is no configuration specified for " + pluginType.GetFullName();
                }


                throw ex;
            }

            var lifecycle = pipelineGraph.DetermineLifecycle(pluginType, instance);

            var o = GetObject(pluginType, instance, lifecycle);

            if (!(lifecycle is UniquePerRequestLifecycle) && pluginType != typeof(IContainer))
            {
                _defaults.Add(pluginType, o);
            }

            return(o);
        }
        public void Validate(IPipelineGraph pipeline, Policies policies)
        {
            var report = new ProfileReport(pipeline);

            _reports.Add(report);

            var closedTypes = pipeline.ToModel().PluginTypes.Where(x => !x.PluginType.IsOpenGeneric()).ToArray();

            closedTypes.Each(
                family => {
                family.Instances.Each(i => { tryCreateBuildPlan(family.PluginType, i, policies, report); });
            });

            closedTypes.Each(
                family => {
                family.Instances.Where(x => !_buildPlanFailureIds.Contains(x.Instance.Id))
                .Each(i => { tryBuildInstance(family.PluginType, i.Instance, pipeline, report); });
            });
        }