Beispiel #1
0
        public void Load(ISpeedDateStartable startable, IConfigProvider configProvider,
                         Action <SpeedDateConfig> startedCallback)
        {
            _logger = LogManager.GetLogger("SpeedDate");

            _config = configProvider.Result;

            _container = CreateContainer(startable);

            configProvider.Configure(_container.ResolveAll <IConfig>());

            _container.BuildUp(startable);

            //Filter plugins for namespace & inject configuration into valid plugins
            foreach (var plugin in _container.ResolveAll <IPlugin>())
            {
                if (_config.Plugins.Namespaces.Split(';').Any(ns =>
                                                              Regex.IsMatch(plugin.GetType().Namespace, ns.Trim().AsRegular())))
                {
                    _logger.Debug($"Loading plugin: {plugin}");
                    //Inject configs, cannot use _container.BuildUp because the configProvider may have additional IConfigs
                    var fields = from field in plugin.GetType()
                                 .GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public)
                                 where Attribute.IsDefined(field, typeof(InjectAttribute))
                                 select field;

                    foreach (var field in fields)
                    {
                        if (field.GetValue(plugin) == null &&
                            _config.TryGetConfig(field.FieldType.FullName, out var config))
                        {
                            field.SetValue(plugin, config);
                        }
                    }
                }
                else
                {
                    _container.Unregister(typeof(IPlugin), plugin.GetType().FullName);
                }
            }

            //Inject additional dependencies e.g. ILogger
            foreach (var plugin in _container.ResolveAll <IPlugin>())
            {
                _container.BuildUp(plugin);
            }

            //Finally notify every plugin that loading has finished
            foreach (var plugin in _container.ResolveAll <IPlugin>())
            {
                plugin.Loaded();
                _logger.Info($"Loaded {plugin.GetType().Name}");
            }

            startedCallback.Invoke(_config);
        }
        protected MasterServerBase(TinyIoCContainer container, IPEndPoint endpoint)
            : this(endpoint)
        {
            // Resolve lifecycle callbacks
            ApplicationLifecycleCallbacks.AddRange(
                container.ResolveAll<IApplicationLifecycleCallbackHandler>().OrderByDescending(s => s.Priority).ToList());

            MessageLifecycleCallbacks.AddRange(
                container.ResolveAll<IMessageLifecycleCallbackHandler>().OrderByDescending(s => s.Priority).ToList());
        }
        protected MasterServerBase(TinyIoCContainer container, IPEndPoint endpoint)
            : this(endpoint)
        {
            // Resolve lifecycle callbacks
            ApplicationLifecycleCallbacks.AddRange(
                container.ResolveAll <IApplicationLifecycleCallbackHandler>().OrderByDescending(s => s.Priority).ToList());

            MessageLifecycleCallbacks.AddRange(
                container.ResolveAll <IMessageLifecycleCallbackHandler>().OrderByDescending(s => s.Priority).ToList());
        }
Beispiel #4
0
        public AppBootstrapper()
        {
            Router = new RoutingState();

            Kernel = new TinyIoCContainer();

            // XXX: This is gross
            Kernel.Register <UIViewController>(new RouterUINavigationController(Router), "InitialPage");

            Kernel.Register(typeof(IViewFor <iOSPlaygroundViewModel>), typeof(iOSPlaygroundViewController));
            Kernel.Register <IScreen>(this);

            var toRegister = new Dictionary <Tuple <Type, String>, List <Type> >();

            RxApp.ConfigureServiceLocator(
                (t, s) => s != null ? Kernel.Resolve(t, s) : Kernel.Resolve(t),
                (t, s) => Kernel.ResolveAll(t, true),
                (c, t, s) => {
                if (toRegister != null)
                {
                    var pair = Tuple.Create(t, s);
                    if (!toRegister.ContainsKey(pair))
                    {
                        toRegister[pair] = new List <Type>();
                    }
                    toRegister[pair].Add(c);
                    return;
                }

                if (s != null)
                {
                    Kernel.Register(t, c, s);
                }
                else
                {
                    Kernel.Register(t, c);
                }
            });

            foreach (var key in toRegister.Keys)
            {
                var val = toRegister[key].Distinct();
                Kernel.RegisterMultiple(key.Item1, val);
            }

            toRegister = null;

            var items = Kernel.ResolveAll(typeof(ICreatesObservableForProperty), true).ToArray();

            Router.Navigate.Go <iOSPlaygroundViewModel>();
        }
Beispiel #5
0
 public void Publish <T>(T message)
 {
     foreach (var handler in _container.ResolveAll <IHandle <T> >())
     {
         handler.Handle(message);
     }
 }
Beispiel #6
0
        private static void Initialize(IDestination destination, IBootstrapper bootstrapper)
        {
            TinyIoCContainer container = new TinyIoCContainer();
            NoomResolver     resolver  = new NoomResolver(container);

            NoomCache  cache  = new NoomCache();
            NoomTools  tools  = new NoomTools(resolver, cache);
            NoomRouter router = new NoomRouter();

            NoomNavigator navigator = new NoomNavigator(router, destination, tools);

            container.Register <ICache>(cache);
            container.Register <IRouter>(router);
            container.Register <INavigator>(navigator);
            container.Register <IResolver>(resolver);
            container.RegisterMultiple(typeof(IModule), bootstrapper.FindAllModules());

            foreach (Type type in bootstrapper.FindAllViews())
            {
                container.Register(type);
            }

            foreach (IModule module in container.ResolveAll <IModule>())
            {
                module.Register(router);
            }

            navigator.NavigateTo("/");
        }
        public override IEnumerable <object> GetServices(Type serviceType)
        {
            var objects = _container.CanResolve(serviceType) ? _container.ResolveAll(serviceType) : new object[] { };
            var result  = objects.Concat(base.GetServices(serviceType));

            return(result);
        }
Beispiel #8
0
        public static void ConfigureContainer(TinyIoCContainer container)
        {
            container.Register(typeof(ILogHandler), typeof(Logger.Log4NetLogger)).AsSingleton();
            container.Register(typeof(IMessageRouter<IMessage>), typeof(MessageRouter)).AsSingleton();

            container.RegisterMultiple<IClientLifecycleCallbackHandler>(new List<Type>()
            {
                typeof (BlyncLightManager),
                typeof (SkypeManager)

            }).AsSingleton();

            container.RegisterMultiple<IBlyncLightBehaviour>(new List<Type>()
            {
                typeof (SkypeStatusResponder),
                typeof (BlyncLightScheduler)
            });

            container.RegisterMultiple<ISkypeBehaviour>(new List<Type>()
            {
                typeof (CallStatusNotifier),
                typeof (UserStatusNotifier),
                typeof (OnBreakBehaviour),
                typeof (OnLunchBehaviour),
                typeof (OnCallBehaviour)
            });

            //IBlyncLightBehaviour
            container.Register(typeof(SkypeStatusResponder),
                new SkypeStatusResponder(container.Resolve<IMessageRouter<IMessage>>()));

            //IClientLifecycleCallbackHandler
            container.Register(typeof(SkypeManager),
                new SkypeManager(container.Resolve<ILogHandler>(),
                    container.Resolve<IMessageRouter<IMessage>>(),
                    container.ResolveAll<ISkypeBehaviour>().OrderByDescending(s => s.Priority).ToList()));

            container.Register(typeof(BlyncLightManager),
                new BlyncLightManager(container.Resolve<ILogHandler>(),
                    container.Resolve<IMessageRouter<IMessage>>(),
                    container.ResolveAll<IBlyncLightBehaviour>().OrderByDescending(s => s.Priority).ToList()));

            //Client
            container.Register(typeof(BlyncLightForSkypeClient),
                new BlyncLightForSkypeClient());
        }
 public override IEnumerable <object> GetServices(Type serviceType)
 {
     if (container.CanResolve(serviceType))
     {
         return(container.ResolveAll(serviceType).Concat(base.GetServices(serviceType)));
     }
     return(base.GetServices(serviceType));
 }
 public override IEnumerable <object> GetServices(Type serviceType)
 {
     if (_TinyIoCContainer.CanResolve(serviceType))
     {
         return(_TinyIoCContainer.ResolveAll(serviceType, true));
     }
     return(base.GetServices(serviceType));
 }
Beispiel #11
0
        public AppBootstrapper()
        {
            Router = new RoutingState();

            Kernel = new TinyIoCContainer();

            // XXX: This is gross
            Kernel.Register<UIViewController>(new RouterUINavigationController(Router), "InitialPage");

            Kernel.Register(typeof(IViewFor<iOSPlaygroundViewModel>), typeof(iOSPlaygroundViewController));
            Kernel.Register<IScreen>(this);

            var toRegister = new Dictionary<Tuple<Type, String>, List<Type>>();

            RxApp.ConfigureServiceLocator(
                (t, s) => s != null ? Kernel.Resolve(t, s) : Kernel.Resolve(t),
                (t, s) => Kernel.ResolveAll(t, true),
                (c, t, s) => { 
                    if (toRegister != null) {
                        var pair = Tuple.Create(t,s);
                        if (!toRegister.ContainsKey(pair)) {
                            toRegister[pair] = new List<Type>();
                        }
                        toRegister[pair].Add(c);
                        return;
                    }

                    if (s != null) { 
                        Kernel.Register(t, c, s); 
                    } else { 
                        Kernel.Register(t, c); 
                    } 
                });

            foreach(var key in toRegister.Keys) {
                var val = toRegister[key].Distinct();
                Kernel.RegisterMultiple(key.Item1, val);
            }

            toRegister = null;

            var items = Kernel.ResolveAll(typeof(ICreatesObservableForProperty), true).ToArray();

            Router.Navigate.Go<iOSPlaygroundViewModel>();
        }
Beispiel #12
0
        private void RegisterPipelines(IPipelines pipelines)
        {
            var pipelineRegistrars = _tinyIoCContainer.ResolveAll <IRegisterNancyPipeline>();

            foreach (var registerNancyPipeline in pipelineRegistrars)
            {
                registerNancyPipeline.Register(pipelines);
            }
        }
        protected void Register(TinyIoCContainer container)
        {
            Configure(container);

            container.Register<IMappingProvider>(new DefaultMappingProvider(container.ResolveAll<IMap>()));
            container.Register<IConnectionStringProvider>(new DefaultConnectionStringProvider("ApplicationConnectionString"));
            container.Register<IDatabaseFactory>(new DatabaseFactory(container.Resolve<IConnectionStringProvider>(), container.Resolve<IMappingProvider>()));
            container.Register<IDatabase>(container.Resolve<IDatabaseFactory>().GetDatabase());
        }
Beispiel #14
0
        private bool RegisterMultiple(TinyIoCContainer container, ILogger logger)
        {
            logger.WriteLine("RegisterMultiple");
            container.RegisterMultiple <ITestInterface>(new Type[] { typeof(TestClassWithInterface), typeof(TestClassWithInterface2) });

            var result = container.ResolveAll <ITestInterface>();

            return(result.Count() == 2);
        }
        void ApplyFileSearchModifiers(TinyIoCContainer container, FileSearch fileSearch)
        {
            var modifiers = container.ResolveAll <IFileSearchModifier <T> >();

            foreach (var modifier in modifiers)
            {
                modifier.Modify(fileSearch);
            }
        }
        IBundlePipeline <T> ApplyBundlePipelineModifiers(IBundlePipeline <T> pipeline, TinyIoCContainer container)
        {
            var modifiers = container.ResolveAll <IBundlePipelineModifier <T> >();

            return(modifiers.Aggregate(
                       pipeline,
                       (currentPipeline, modifier) => modifier.Modify(currentPipeline)
                       ));
        }
Beispiel #17
0
        void RunStartUpTasks()
        {
            var startUpTasks = container.ResolveAll <IStartUpTask>();

            foreach (var startUpTask in startUpTasks)
            {
                Trace.Source.TraceInformation("Running start-up task: {0}", startUpTask.GetType().FullName);
                startUpTask.Start();
            }
        }
Beispiel #18
0
        public void Run()
        {
            var masterRegistry = new Registry(_container);

            masterRegistry.RegisterInstances();

            foreach (var registry in _container.ResolveAll <IRegistry>())
            {
                registry.RegisterInstances();
            }
        }
 public IEnumerable <object> GetServices(Type serviceType)
 {
     try
     {
         return(container.ResolveAll(serviceType));
     }
     catch (Exception)
     {
         throw;
     }
 }
Beispiel #20
0
        private bool ResolveAll(TinyIoCContainer container, ILogger logger)
        {
            logger.WriteLine("ResolveAll");
            container.Register <ITestInterface, TestClassWithInterface>();
            container.Register <ITestInterface, TestClassWithInterface>("Named1");
            container.Register <ITestInterface, TestClassWithInterface>("Named2");

            IEnumerable <ITestInterface> result = container.ResolveAll <ITestInterface>();

            return(result.Count() == 3);
        }
Beispiel #21
0
 public IEnumerable <object> GetServices(Type serviceType)
 {
     try
     {
         return(_container.ResolveAll(serviceType, true));
     }
     catch (Exception)
     {
         return(Enumerable.Empty <object>());
     }
 }
 /// <summary>
 ///     Retrieves a collection of services from the scope.
 /// </summary>
 /// <returns>
 ///     The retrieved collection of services.
 /// </returns>
 /// <param name="serviceType">The collection of services to be retrieved.</param>
 public IEnumerable <object> GetServices(Type serviceType)
 {
     try
     {
         return(_dependencyContainer.ResolveAll(serviceType));
     }
     catch (TinyIoCResolutionException ex)
     {
         Debug.WriteLine("Exception in resolving {0}: {1}", serviceType, ex.Message);
         return(null);
     }
 }
Beispiel #23
0
        protected override void ConfigureRequestContainer(TinyIoCContainer container, NancyContext context)
        {
            base.ConfigureRequestContainer(container, context);

            if (context.Request.Url.Path.EndsWith("system-information", StringComparison.OrdinalIgnoreCase))
            {
                context.ViewBag.SystemInformationComponents = container
                                                              .ResolveAll <ISystemInformationComponent>()
                                                              .Distinct(new SystemInformationComponentEqualityComparer())
                                                              .OrderBy(c => c.Cardinality)
                                                              .ToArray();
            }
        }
        public IEnumerable <object> GetServices(Type serviceType)
        {
            if (Container == null)
            {
                throw new ObjectDisposedException("this", "This scope has already been disposed.");
            }

            try
            {
                return(Container.ResolveAll(serviceType));
            }
            catch (TinyIoCResolutionException)
            {
                return(Enumerable.Empty <object>());
            }
        }
Beispiel #25
0
        protected override void ConfigureApplicationContainer(TinyIoCContainer container)
        {
            var configuration = FetchConfiguration();

            container.Register(configuration);
            container.Register <IDatabaseHost, DatabaseHost>().AsSingleton();

            container.Register <IUserRepository, UserRepository>();
            container.Register <IPaymentRepository, PaymentRepository>();

            container.Register <INancyModule, UserModule>().AsSingleton();
            container.Register <INancyModule, HelloViewModule>().AsSingleton();
            container.Register <INancyModule, UsersModule>().AsSingleton();

            var x = container.ResolveAll <INancyModule>().ToList();
        }
Beispiel #26
0
 public IEnumerable <object> GetServices(Type serviceType)
 {
     return(_container.CanResolve(serviceType)
         ? _container.ResolveAll(serviceType, true)
         : Enumerable.Empty <object>());
 }
Beispiel #27
0
        protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines)
        {
            BootStrapper.RootPath = this.RootPathProvider.GetRootPath();

            // create App_Data
            Directory.CreateDirectory(Path.Combine(BootStrapper.RootPath, "App_Data"));

            ModuleResource.ReadSystemsAndResources(BootStrapper.RootPath);

            #region View Conventions

            this.Conventions.ViewLocationConventions.Clear();

            // Site's View Folder has most priority
            // Mobile View Overrides
            this.Conventions.ViewLocationConventions.Add((viewName, model, context) =>
            {
                string u = context.Context.Request.Headers.UserAgent.ToLowerInvariant();
                if (u.Contains("mobile/"))
                {
                    return "Site/Views/Mobile/" + viewName;
                }

                return string.Empty; // not mobile browser

            });

            // Desktop View Location
            this.Conventions.ViewLocationConventions.Add((viewName, model, context) =>
            {
                return "Site/Views/Desktop/" + viewName;
            });

            // Generic View Location
            this.Conventions.ViewLocationConventions.Add((viewName, model, context) =>
            {
                return "Site/Views/" + viewName;
            });

            // NancyBlack's View Location
            this.Conventions.ViewLocationConventions.Add((viewName, model, context) =>
            {

                return "Content/Views/" + viewName;
            });

            // then try Views in Systems (AdminSystem, ContentSystem etc...)
            foreach (var system in ModuleResource.Systems)
            {
                this.Conventions.ViewLocationConventions.Add((viewName, model, context) =>
                {
                    return string.Concat("Modules/",
                                         viewName);
                });
                this.Conventions.ViewLocationConventions.Add((viewName, model, context) =>
                {
                    return string.Concat("Modules/",
                                         system,
                                         "/Views/",
                                         viewName);
                });
            }

            this.Conventions.ViewLocationConventions.Add((viewName, model, context) =>
            {
                return viewName; // fully qualify names
            });

            this.Conventions.ViewLocationConventions.Add((viewName, model, context) =>
            {
                return viewName.Substring(1); // fully qualify names, remove forward slash at first
            });

            #endregion

            var formsAuthConfiguration = new FormsAuthenticationConfiguration
            {
                RedirectUrl = "~/__membership/login",
                UserMapper = container.Resolve<IUserMapper>(),
            };
            FormsAuthentication.Enable(pipelines, formsAuthConfiguration);

            pipelines.BeforeRequest.AddItemToStartOfPipeline((ctx) =>
            {
                ctx.Items["SiteDatabase"] = NancyBlackDatabase.GetSiteDatabase(this.RootPathProvider.GetRootPath());
                ctx.Items["CurrentSite"] = BootStrapper.GetSiteSettings();
                ctx.Items["SiteSettings"] = BootStrapper.GetSiteSettings();

                if (ctx.CurrentUser == null)
                {
                    ctx.CurrentUser = NcbUser.Anonymous;
                    if (ctx.Request.Url.HostName == "localhost")
                    {
                        ctx.CurrentUser = NcbUser.LocalHostAdmin;
                    }
                }

                return null;
            });

            foreach (var item in container.ResolveAll<IPipelineHook>())
            {
                item.Hook(pipelines);
            }
        }
 public IEnumerable <object> ResolveAll(Type service)
 {
     return(_container.ResolveAll(service));
 }
 public IEnumerable <object> GetAllInstances(Type serviceType)
 {
     return(_container.ResolveAll(serviceType));
 }
Beispiel #30
0
 public IEnumerable <T> ResolveAll <T>() where T : class
 {
     return(_container.ResolveAll <T>());
 }
Beispiel #31
0
 public IEnumerable <object> ResolveAll(Type resolveType, bool includeUnamed)
 {
     return(_container.ResolveAll(resolveType, includeUnamed));
 }
        public override IEnumerable <object> GetServices(Type serviceType)
        {
            var objects = m_Container.CanResolve(serviceType) ? m_Container.ResolveAll(serviceType) : new object[] { };

            return(objects.Concat(base.GetServices(serviceType)));
        }
Beispiel #33
0
 public T GetPlugin <T>() where T : class, IPlugin
 {
     return(_container.ResolveAll <IPlugin>().FirstOrDefault(plugin => plugin is T) as T);
 }
Beispiel #34
0
 public override IEnumerable <object> ResolveAll(Type type)
 {
     return(container.ResolveAll(type, true));
 }
Beispiel #35
0
        public IEnumerable <object> GetServices(Type serviceType)
        {
            var resolvedTypes = Container.ResolveAll(serviceType);

            return(resolvedTypes);
        }