private PipelineContinuation InitializeContainer(ICommunicationContext arg)
        {
            var container = new TinyIoCAdapter(new TinyIoCContainer());
            //HACK! For now dependencies may need to be in both containers to allow resolution
            container.Register<IHandleRequests<AddTaskCommand>, AddTaskCommandHandler>().AsMultiInstance();
            container.Register<ITaskListRetriever, TaskListRetriever>().AsMultiInstance();
            container.Register<ITasksDAO, TasksDAO>().AsMultiInstance();
            var logger = LogManager.GetLogger("TaskList");
            container.Register<ILog, ILog>(logger);
            container.Register<IAmARequestContextFactory, InMemoryRequestContextFactory>().AsMultiInstance();
            MessageStoreFactory.InstallRavenDbMessageStore(container);
            container.Register<IAmAMessageStore<Message>, RavenMessageStore>().AsSingleton();
            container.Register<IAmAMessagingGateway, RMQMessagingGateway>().AsSingleton();
            container.Register<Policy>(CommandProcessor.RETRYPOLICY, GetRetryPolicy());
            container.Register<Policy>(CommandProcessor.CIRCUITBREAKER, GetCircuitBreakerPolicy());

            var commandProcessor = new CommandProcessorFactory(container).Create();
            container.Register<IAmACommandProcessor, IAmACommandProcessor>(commandProcessor);

            resolver.AddDependencyInstance<IAdaptAnInversionOfControlContainer>(container, DependencyLifetime.Singleton);
            resolver.AddDependencyInstance<IAmARequestContextFactory>(new InMemoryRequestContextFactory(), DependencyLifetime.PerRequest);
            resolver.AddDependencyInstance<IAmACommandProcessor>(commandProcessor, DependencyLifetime.Singleton);
            resolver.AddDependency<ITaskRetriever, TaskRetriever>(DependencyLifetime.Singleton);
            resolver.AddDependency<ITaskListRetriever, TaskListRetriever>(DependencyLifetime.Singleton);


            return PipelineContinuation.Continue;
        }
        private PipelineContinuation InitializeContainer(ICommunicationContext arg)
        {
            var container = new TinyIoCAdapter(new TinyIoCContainer());
            //HACK! For now dependencies may need to be in both containers to allow resolution
            container.Register<IHandleRequests<AddVenueCommand>, AddVenueCommandHandler>().AsMultiInstance();
            container.Register<IHandleRequests<UpdateVenueCommand>, UpdateVenueCommandHandler>().AsMultiInstance();
            container.Register<IHandleRequests<DeleteVenueCommand>, DeleteVenueCommandHandler>().AsMultiInstance();
            container.Register<IRepository<Venue, VenueDocument>, Repository<Venue, VenueDocument>>().AsMultiInstance();
            container.Register<IAmAUnitOfWorkFactory, UnitOfWorkFactory>().AsSingleton();

            resolver.AddDependencyInstance<IAdaptAnInversionOfControlContainer>(container, DependencyLifetime.Singleton);
            resolver.AddDependencyInstance<IAmARequestContextFactory>(new InMemoryRequestContextFactory(), DependencyLifetime.PerRequest);
            resolver.AddDependencyInstance<IAmAUnitOfWorkFactory>(new UnitOfWorkFactory(), DependencyLifetime.Singleton);
            resolver.AddDependency<IAmACommandProcessor, CommandProcessor>(DependencyLifetime.Singleton);

            return PipelineContinuation.Continue;
        }
        private PipelineContinuation InitializeContainer(ICommunicationContext arg)
        {
            var container = new TinyIoCAdapter(new TinyIoCContainer());

            //HACK! For now dependencies may need to be in both containers to allow resolution
            container.Register <IHandleRequests <AddVenueCommand>, AddVenueCommandHandler>().AsMultiInstance();
            container.Register <IHandleRequests <UpdateVenueCommand>, UpdateVenueCommandHandler>().AsMultiInstance();
            container.Register <IHandleRequests <DeleteVenueCommand>, DeleteVenueCommandHandler>().AsMultiInstance();
            container.Register <IRepository <Venue, VenueDocument>, Repository <Venue, VenueDocument> >().AsMultiInstance();
            container.Register <IAmAUnitOfWorkFactory, UnitOfWorkFactory>().AsSingleton();

            resolver.AddDependencyInstance <IAdaptAnInversionOfControlContainer>(container, DependencyLifetime.Singleton);
            resolver.AddDependencyInstance <IAmARequestContextFactory>(new InMemoryRequestContextFactory(), DependencyLifetime.PerRequest);
            resolver.AddDependencyInstance <IAmAUnitOfWorkFactory>(new UnitOfWorkFactory(), DependencyLifetime.Singleton);
            resolver.AddDependency <IAmACommandProcessor, CommandProcessor>(DependencyLifetime.Singleton);

            return(PipelineContinuation.Continue);
        }
        private PipelineContinuation InitializeContainer(ICommunicationContext arg)
        {
            var container = new TinyIoCAdapter(new TinyIoCContainer());
            //HACK! For now dependencies may need to be in both containers to allow resolution
            container.Register<IHandleRequests<AddTaskCommand>, AddTaskCommandHandler>().AsMultiInstance();
            container.Register<ITaskListRetriever, TaskListRetriever>().AsMultiInstance();
            container.Register<ITasksDAO, TasksDAO>().AsMultiInstance();
            container.Register<ITraceOutput, ConsoleTrace>().AsSingleton();

            resolver.AddDependencyInstance<IAdaptAnInversionOfControlContainer>(container, DependencyLifetime.Singleton);
            resolver.AddDependencyInstance<IAmARequestContextFactory>(new InMemoryRequestContextFactory(), DependencyLifetime.PerRequest);
            resolver.AddDependency<IAmACommandProcessor, CommandProcessor>(DependencyLifetime.Singleton);
            resolver.AddDependency<ITaskRetriever, TaskRetriever>(DependencyLifetime.Singleton);
            resolver.AddDependency<ITaskListRetriever, TaskListRetriever>(DependencyLifetime.Singleton);


            return PipelineContinuation.Continue;
        }
Пример #5
0
        protected override void ConfigureRequestContainer(TinyIoCContainer tinyIoCContainer, NancyContext context)
        {
            tinyIoCContainer.Register(this.GetAccessToken(context), "access_token");

            tinyIoCContainer.Register<ITemplateService, TemplateService>();
            tinyIoCContainer.Register<IRenderingService, RenderingService>();

            tinyIoCContainer.Register<IContentRepository, ContentRepository>();

            tinyIoCContainer.Register<IContentFinder, ContentFinder>();
            tinyIoCContainer.Register<IPathInstanceBuilder, PathInstanceBuilder>();
            tinyIoCContainer.Register<IDynamicSourceProvider, DynamicSourceProvider>();
            tinyIoCContainer.Register<IPluginContextProvider, PluginContextProvider>();

            var sourceTypes = KolaConfigurationRegistry.Plugins.SelectMany(plugin => plugin.SourceTypes).ToArray();
            tinyIoCContainer.Register((c, o) => sourceTypes.Select(c.Resolve).Cast<IDynamicSource>());

            var contentProviderTypes = KolaConfigurationRegistry.Plugins.SelectMany(plugin => plugin.ContextProviderTypes).ToArray();
            tinyIoCContainer.Register((c, o) => contentProviderTypes.Select(c.Resolve).Cast<IContextProvider>());

            var container = new TinyIoCAdapter(tinyIoCContainer);

            var componentSpecifications = KolaConfigurationRegistry.Plugins.SelectMany(plugin => plugin.ComponentTypeSpecifications);
            KolaConfigurationRegistry.RegisterRenderer(new MultiRenderer(new RendererFactory(componentSpecifications, container)));

            foreach (var plugin in KolaConfigurationRegistry.Plugins)
            {
                plugin.ConfigureContainer(container);
            }
        }