Пример #1
0
        static IEnumerable <string> BuildTraceMessagesForBindings(IPresenterDiscoveryStrategy presenterDiscoveryStrategy, IEnumerable <PresenterDiscoveryResult> results)
        {
            var strategyName = presenterDiscoveryStrategy.GetType().FullName;

            return(results
                   .Where(r => r.Bindings.Any())
                   .Select(result => string.Format(
                               CultureInfo.InvariantCulture,
                               @"Found {0} presenter {1} for {2} using {3}.

{4}

{5}",
                               result.Bindings.Count(),
                               result.Bindings.Count() == 1 ? "binding" : "bindings",
                               string.Join(", ", result.ViewInstances.Select(v => v.GetType().FullName).ToArray()),
                               strategyName,
                               result.Message,
                               string.Join("\r\n\r\n",
                                           result
                                           .Bindings
                                           .Select(b => string.Format(
                                                       CultureInfo.InvariantCulture,
                                                       @"Presenter type: {0}
    View type: {1}
    Binding mode: {2}",
                                                       b.PresenterType.FullName,
                                                       b.ViewType.FullName,
                                                       b.BindingMode
                                                       ))
                                           .ToArray()
                                           )
                               )));
        }
Пример #2
0
        static IEnumerable <IPresenter> PerformBinding(
            IEnumerable <object> hosts,
            IEnumerable <IView> candidates,
            IPresenterDiscoveryStrategy presenterDiscoveryStrategy,
            HttpContextBase httpContext,
            ITraceContext traceContext,
            IMessageBus messageBus,
            Action <IPresenter> presenterCreatedCallback,
            IPresenterFactory presenterFactory)
        {
            var bindings = GetBindings(
                hosts,
                candidates,
                presenterDiscoveryStrategy,
                traceContext);

            var newPresenters = BuildPresenters(
                httpContext,
                traceContext,
                messageBus,
                presenterCreatedCallback,
                presenterFactory,
                bindings);

            return(newPresenters);
        }
Пример #3
0
        static IEnumerable <PresenterBinding> GetBindings(
            IEnumerable <object> hosts,
            IEnumerable <IView> candidates,
            IPresenterDiscoveryStrategy presenterDiscoveryStrategy,
            ITraceContext traceContext)
        {
            traceContext.Write(typeof(PresenterBinder), () => string.Format(
                                   CultureInfo.InvariantCulture,
                                   "Finding presenter bindings using {0} for {1} view {2}: {3}",
                                   presenterDiscoveryStrategy.GetType().Name,
                                   candidates.Count(),
                                   candidates.Count() == 1 ? "instance" : "instances",
                                   string.Join(", ", candidates.Select(v => v.GetType().FullName).ToArray())
                                   ));

            var results = presenterDiscoveryStrategy
                          .GetBindings(hosts, candidates);

            traceContext.Write(typeof(PresenterBinder), () =>
                               BuildTraceMessagesForBindings(presenterDiscoveryStrategy, results));

            ThrowExceptionsForViewsWithNoPresenterBound(results);

            return(results
                   .SelectMany(r => r.Bindings));
        }
        public DefaultPresenterDiscoveryStrategy(Assembly[] assemblies)
        {
            var typeResolver = new PresenterTypeResolver(
                new BuildManager(assemblies),
                assemblies.Select(_ => new AssemblyName(_.FullName).Name),
                s_ViewSuffixes,
                s_PresenterNameTemplates);

            _inner = new PresenterDiscoveryStrategy(typeResolver);
        }
Пример #5
0
        private static PresenterBinding GetBindings(IView candidate,
                                                    IPresenterDiscoveryStrategy presenterDiscoveryStrategy)
        {
            Tracing.Verbose("Finding presenter bindings using {0}", presenterDiscoveryStrategy.GetType().Name);

            var result = presenterDiscoveryStrategy.GetBinding(candidate);

            Tracing.Verbose(typeof(PresenterBinder), BuildTraceMessagesForBindings(presenterDiscoveryStrategy, result));

            ThrowExceptionsForViewsWithNoPresenterBound(result);

            return(result.Bindings.Single());
        }
Пример #6
0
        public AspNetPresenterDiscoveryStrategy(
            IEnumerable <string> viewSuffixes,
            IEnumerable <string> presenterNameTemplates,
            bool enableCache)
        {
            // REVIEW: Empty namespaces.
            var typeResolver = new AspNetPresenterTypeResolver(
                new AspNetBuildManager(),
                Enumerable.Empty <string>(),
                viewSuffixes,
                presenterNameTemplates);

            _inner = new PresenterDiscoveryStrategy(typeResolver, enableCache);
        }
Пример #7
0
        public HttpPresenterBinder(
            IEnumerable <object> hosts,
            HttpContext context,
            IPresenterDiscoveryStrategy presenterDiscoveryStrategy,
            IPresenterFactory presenterFactory,
            ICompositeViewFactory compositeViewFactory,
            IMessageCoordinator messageCoordinator)
            : base(
                hosts,
                presenterDiscoveryStrategy,
                presenterFactory,
                compositeViewFactory,
                messageCoordinator)
        {
            Require.NotNull(context, nameof(context));

            _context = context;
        }
Пример #8
0
        private static IPresenter PerformBinding(
            IView candidate,
            IPresenterDiscoveryStrategy presenterDiscoveryStrategy,
            IAppState appState,
            Action <IPresenter> presenterCreatedCallback,
            IPresenterFactory presenterFactory)
        {
            var bindings = GetBindings(
                candidate,
                presenterDiscoveryStrategy);

            var newPresenter = BuildPresenter(
                presenterCreatedCallback,
                //appState,
                presenterFactory,
                new[] { bindings });

            return(newPresenter);
        }
Пример #9
0
        private static string BuildTraceMessagesForBindings(IPresenterDiscoveryStrategy presenterDiscoveryStrategy,
                                                            PresenterDiscoveryResult result)
        {
            var strategyName = presenterDiscoveryStrategy.GetType().FullName;

            return(string.Format(
                       CultureInfo.InvariantCulture,
                       @"Found a presenter binding for {0} using {1}.{2}{3}",
                       string.Join(", ", result.ViewInstances.Select(v => v.GetType().FullName).ToArray()),
                       strategyName,
                       string.Format("{0}{0}{1}{0}", Environment.NewLine, result.Message),
                       string.Format("{0}{1}", Environment.NewLine,
                                     string.Join(Environment.NewLine,
                                                 result.Bindings.Select(b => string.Format(CultureInfo.InvariantCulture,
                                                                                           @"Presenter type: {0} {1}View type: {2}",
                                                                                           b.PresenterType.FullName,
                                                                                           Environment.NewLine,
                                                                                           b.ViewType.FullName
                                                                                           )).ToArray()
                                                 ))
                       ));
        }
Пример #10
0
        public PresenterBinder(
            IEnumerable <object> hosts,
            IPresenterDiscoveryStrategy presenterDiscoveryStrategy,
            IPresenterFactory presenterFactory,
            ICompositeViewFactory compositeViewFactory,
            IMessageCoordinator messageCoordinator)
        {
            Require.NotNull(hosts, nameof(hosts));
            Require.NotNull(presenterDiscoveryStrategy, nameof(presenterDiscoveryStrategy));
            Require.NotNull(presenterFactory, nameof(presenterFactory));
            Require.NotNull(compositeViewFactory, nameof(compositeViewFactory));
            Require.NotNull(messageCoordinator, nameof(messageCoordinator));

            _hosts = hosts;
            _presenterDiscoveryStrategy = presenterDiscoveryStrategy;
            _presenterFactory           = presenterFactory;
            _compositeViewFactory       = compositeViewFactory;
            _messageCoordinator         = messageCoordinator;

            foreach (var selfHostedView in hosts.OfType <IView>())
            {
                RegisterView(selfHostedView);
            }
        }
Пример #11
0
        static IEnumerable<string> BuildTraceMessagesForBindings(IPresenterDiscoveryStrategy presenterDiscoveryStrategy, IEnumerable<PresenterDiscoveryResult> results)
        {
            var strategyName = presenterDiscoveryStrategy.GetType().FullName;
            return results
                .Where(r => r.Bindings.Any())
                .Select(result => string.Format(
                    CultureInfo.InvariantCulture,
                    @"Found {0} presenter {1} for {2} using {3}.

{4}

{5}",
                    result.Bindings.Count(),
                    result.Bindings.Count() == 1 ? "binding" : "bindings",
                    string.Join(", ", result.ViewInstances.Select(v => v.GetType().FullName).ToArray()),
                    strategyName,
                    result.Message,
                    string.Join("\r\n\r\n",
                        result
                            .Bindings
                            .Select(b => string.Format(
                                CultureInfo.InvariantCulture,
                                @"Presenter type: {0}
    View type: {1}
    Binding mode: {2}",
                                b.PresenterType.FullName,
                                b.ViewType.FullName,
                                b.BindingMode
                            ))
                            .ToArray()
                    )
                ));
        }
Пример #12
0
        static IEnumerable<PresenterBinding> GetBindings(
            IEnumerable<object> hosts,
            IEnumerable<IView> candidates,
            IPresenterDiscoveryStrategy presenterDiscoveryStrategy,
            ITraceContext traceContext)
        {
            traceContext.Write(typeof(PresenterBinder), () => string.Format(
                CultureInfo.InvariantCulture,
                "Finding presenter bindings using {0} for {1} view {2}: {3}",
                presenterDiscoveryStrategy.GetType().Name,
                candidates.Count(),
                candidates.Count() == 1 ? "instance" : "instances",
                string.Join(", ", candidates.Select(v => v.GetType().FullName).ToArray())
            ));

            var results = presenterDiscoveryStrategy
                .GetBindings(hosts, candidates);

            traceContext.Write(typeof(PresenterBinder), () =>
                BuildTraceMessagesForBindings(presenterDiscoveryStrategy, results));

            ThrowExceptionsForViewsWithNoPresenterBound(results);

            return results
                .SelectMany(r => r.Bindings);
        }
Пример #13
0
        static IEnumerable<IPresenter> PerformBinding(
            IEnumerable<object> hosts,
            IEnumerable<IView> candidates,
            IPresenterDiscoveryStrategy presenterDiscoveryStrategy,
            HttpContextBase httpContext,
            ITraceContext traceContext,
            IMessageBus messageBus,
            Action<IPresenter> presenterCreatedCallback,
            IPresenterFactory presenterFactory)
        {
            var bindings = GetBindings(
                hosts,
                candidates,
                presenterDiscoveryStrategy,
                traceContext);

            var newPresenters = BuildPresenters(
                httpContext,
                traceContext,
                messageBus,
                presenterCreatedCallback,
                presenterFactory,
                bindings);

            return newPresenters;
        }
Пример #14
0
        private static IPresenter PerformBinding(
            IView candidate,
            IPresenterDiscoveryStrategy presenterDiscoveryStrategy,
            IAppState appState,
            Action<IPresenter> presenterCreatedCallback,
            IPresenterFactory presenterFactory)
        {
            var bindings = GetBindings(
                candidate,
                presenterDiscoveryStrategy);

            var newPresenter = BuildPresenter(
                presenterCreatedCallback,
                //appState,
                presenterFactory,
                new[] {bindings});

            return newPresenter;
        }
Пример #15
0
        private static PresenterBinding GetBindings(IView candidate,
            IPresenterDiscoveryStrategy presenterDiscoveryStrategy)
        {
            Tracing.Verbose("Finding presenter bindings using {0}", presenterDiscoveryStrategy.GetType().Name);

            var result = presenterDiscoveryStrategy.GetBinding(candidate);

            Tracing.Verbose(typeof (PresenterBinder), BuildTraceMessagesForBindings(presenterDiscoveryStrategy, result));

            ThrowExceptionsForViewsWithNoPresenterBound(result);

            return result.Bindings.Single();
        }
Пример #16
0
        private static string BuildTraceMessagesForBindings(IPresenterDiscoveryStrategy presenterDiscoveryStrategy,
            PresenterDiscoveryResult result)
        {
            var strategyName = presenterDiscoveryStrategy.GetType().FullName;

            return string.Format(
                CultureInfo.InvariantCulture,
                @"Found a presenter binding for {0} using {1}.{2}{3}",
                string.Join(", ", result.ViewInstances.Select(v => v.GetType().FullName).ToArray()),
                strategyName,
                string.Format("{0}{0}{1}{0}", Environment.NewLine, result.Message),
                string.Format("{0}{1}", Environment.NewLine,
                    string.Join(Environment.NewLine,
                        result.Bindings.Select(b => string.Format(CultureInfo.InvariantCulture,
                            @"Presenter type: {0} {1}View type: {2}",
                            b.PresenterType.FullName,
                            Environment.NewLine,
                            b.ViewType.FullName
                            )).ToArray()
                        ))
                );
        }