Пример #1
0
        public List <Frame> DetermineFrames(ConnegRules rules, JasperGenerationRules codeRules)
        {
            if (_hasDeterminedFrames)
            {
                throw new InvalidOperationException("Has already determined frames");
            }

            _hasDeterminedFrames = true;

            if (!_hasAppliedConfigureAndAttributes)
            {
                rules.Apply(this);
                _hasAppliedConfigureAndAttributes = true;
                applyAttributesAndConfigureMethods(codeRules);
            }

            var list = Middleware.ToList();

            list.AddRange(Route.Segments.OfType <IRoutingFrameSource>().Select(x => x.ToParsingFrame(Action)));


            list.Add(Action);

            list.AddRange(Postprocessors);

            return(list);
        }
Пример #2
0
        public void will_apply_generic_chain_attributes()
        {
            var chain  = chainFor(x => x.post_select_name(null));
            var frames = chain.DetermineFrames(ConnegRules.Empty());

            chain.Middleware.Any(x => x is FakeMiddleware1).ShouldBeTrue();
            chain.Middleware.Any(x => x is FakeMiddleware2).ShouldBeTrue();
        }
Пример #3
0
        public void applies_attributes_against_the_IChain()
        {
            var chain = RouteChain.For <ConfiguredEndpoint>(x => x.get_wrapper3());

            var frames = chain.DetermineFrames(ConnegRules.Empty());

            frames.OfType <FakeWrapper3>().Any().ShouldBeTrue();
        }
Пример #4
0
        public void applies_the_Configure_IChain_method()
        {
            var chain = RouteChain.For <ConfiguredEndpoint>(x => x.get_configured());

            var frames = chain.DetermineFrames(ConnegRules.Empty());

            frames.OfType <FakeWrapper>().Any().ShouldBeTrue();
        }
        public void applies_the_Configure_RoutedChain_method()
        {
            var chain = RouteChain.For <ConfiguredEndpoint>(x => x.get_configured());

            var frames = chain.DetermineFrames(ConnegRules.Empty(), JasperGenerationRules.Empty());

            frames.OfType <FakeTransaction>().Any().ShouldBeTrue();
        }
Пример #6
0
        public void BuildRoutingTree(ConnegRules rules, JasperGenerationRules generation, JasperRuntime runtime)
        {
            Router.HandlerBuilder = new RouteHandlerBuilder(runtime.Container, rules, generation);
            assertNoDuplicateRoutes();

            foreach (var route in _chains.Select(x => x.Route))
            {
                Router.Add(route);
            }
        }
Пример #7
0
        public void AssemblyType(GeneratedAssembly generatedAssembly, ConnegRules rules)
        {
            _generatedType = generatedAssembly.AddType(TypeName, typeof(RouteHandler));
            var handleMethod = _generatedType.MethodFor(nameof(RouteHandler.Handle));

            handleMethod.Frames.AddRange(DetermineFrames(rules));

            handleMethod.Sources.Add(new ContextVariableSource());
            handleMethod.DerivedVariables.AddRange(HttpContextVariables);
        }
Пример #8
0
        public void BuildRoutingTree(ConnegRules rules, GenerationRules generation, JasperRuntime runtime)
        {
            assertNoDuplicateRoutes();

            foreach (var chain in _chains)
            {
                rules.Apply(chain);
            }

            var handlers = CompileAndBuildAll(generation, runtime.Get);

            foreach (var handler in handlers)
            {
                var route = handler.Chain.Route;
                route.Handler = handler;
                Router.Add(route);
            }
        }
Пример #9
0
        public List <Frame> DetermineFrames(ConnegRules rules)
        {
            if (!_hasAppliedConfigureAndAttributes)
            {
                rules.Apply(this);
                _hasAppliedConfigureAndAttributes = true;
                applyAttributesAndConfigureMethods();
            }

            var list = Middleware.ToList();

            list.AddRange(Route.Segments.OfType <IRoutingFrameSource>().Select(x => x.ToParsingFrame(Action)));


            list.Add(Action);

            list.AddRange(Postprocessors);

            return(list);
        }
Пример #10
0
        public List <Frame> DetermineFrames(ConnegRules rules, GenerationRules codeRules, IContainer container)
        {
            if (_hasDeterminedFrames)
            {
                throw new InvalidOperationException("Has already determined frames");
            }

            _hasDeterminedFrames = true;

            if (!_hasAppliedConfigureAndAttributes)
            {
                rules.Apply(this);
                _hasAppliedConfigureAndAttributes = true;
                applyAttributesAndConfigureMethods(codeRules, container);
            }

            var list = Middleware.ToList();

            var arguments = Route.Segments.OfType <IRoutingFrameSource>();

            foreach (var argument in arguments)
            {
                if (Action.Method.Name == "Put" && Action.HandlerType.Name == "ValuesController")
                {
                    Debug.Assert(true);
                }

                var frame = argument.ToParsingFrame(Action);
                list.Add(frame);
            }


            list.Add(Action);

            list.AddRange(Postprocessors);

            return(list);
        }
Пример #11
0
 public RouteHandlerBuilder(IContainer container, ConnegRules rules, GenerationRules generation)
 {
     _container  = container;
     _rules      = rules;
     _generation = generation;
 }