Example #1
0
        private void afterAttaching()
        {
            var graph = new BehaviorGraph();

            graph.AddChain(theChain);

            graph.Settings.Replace(thePolicy);

            var worker = new ViewAttachmentWorker(new ViewBag(theViews), thePolicy);

            worker.Configure(graph);
        }
Example #2
0
        // TOOD -- clean this up a little bit
        public static BehaviorGraph Build(FubuRegistry registry)
        {
            var graph = new BehaviorGraph {
                ApplicationAssembly = registry.ApplicationAssembly
            };
            var config = registry.Config;

            PackageRegistry.Timer.Record("Applying Settings", () => applySettings(config, graph));

            var viewDiscovery         = graph.Settings.Get <ViewEngineSettings>().BuildViewBag(graph);
            var layoutAttachmentTasks =
                viewDiscovery.ContinueWith(
                    t => graph.Settings.Get <ViewEngineSettings>().Facilities.Select(x => x.LayoutAttachment).ToArray());

            graph.Settings.Replace(viewDiscovery);

            AccessorRulesCompiler.Compile(graph);

            var htmlConventionCollation = HtmlConventionCollator.BuildHtmlConventions(graph);

            addBuiltInDiagnostics(graph);

            PackageRegistry.Timer.Record("Local Application BehaviorGraph", () => config.BuildLocal(graph));

            viewDiscovery.RecordContinuation("View Attachment", t =>
            {
                var attacher = new ViewAttachmentWorker(t.Result, graph.Settings.Get <ViewAttachmentPolicy>());
                attacher.Configure(graph);
            }).Wait();


            PackageRegistry.Timer.Record("Explicit Configuration", () => config.Global.Explicits.RunActions(graph));
            PackageRegistry.Timer.Record("Global Policies", () => config.Global.Policies.RunActions(graph));

            PackageRegistry.Timer.Record("Inserting Conneg and Authorization Nodes",
                                         () => insertConnegAndAuthorizationNodes(graph));

            PackageRegistry.Timer.Record("Applying Global Reorderings", () => config.ApplyGlobalReorderings(graph));


            PackageRegistry.Timer.Record("Applying Tracing", () => applyTracing(graph));

            // Wait until all the other threads are done.
            var registration = htmlConventionCollation.ContinueWith(t => config.RegisterServices(graph));

            Task.WaitAll(registration, layoutAttachmentTasks);
            Task.WaitAll(layoutAttachmentTasks.Result);

            new AutoImportModelNamespacesConvention().Configure(graph);

            return(graph);
        }