protected override void ConfigureRequestContainer(
            [NotNull] TinyIoCContainer container,
            [NotNull] NancyContext context)
        {
            base.ConfigureRequestContainer(container, context);

            container.ComposeFrom <SqlRequestComposition>();
            container.ComposeFrom <ServicesRequestComposition>();
            container.Register <ValueSetValidatorCollection>();
        }
        protected override void ConfigureApplicationContainer([NotNull] TinyIoCContainer container)
        {
            base.ConfigureApplicationContainer(container);

            container.Register <IAppConfiguration>(this.appConfig);
            container.Register <IMemoryCacheSettings>(this.appConfig.TerminologySqlSettings);
            container.Register <ILogger>(this.logger);

            // Caching
            if (this.appConfig.TerminologySqlSettings.MemoryCacheEnabled)
            {
                container.Register <IMemoryCacheProvider, MemoryCacheProvider>().AsSingleton();
            }
            else
            {
                container.Register <IMemoryCacheProvider, NullMemoryCacheProvider>().AsSingleton();
            }

            container.Register <ICachingManagerFactory, CachingManagerFactory>().AsSingleton();
            container.Register <ICodeSystemCachingManager, CodeSystemCachingManager>().AsSingleton();
            container.Register <ICodeSystemCodeCachingManager, CodeSystemCodeCachingManager>().AsSingleton();
            container.Register <IClientTermCacheManager, ClientTermCacheManager>().AsSingleton();

            container.Register <IValueSetUpdateValidationPolicy, DefaultValueSetUpdateValidationPolicy>().AsSingleton();

            // Persistence (Must precede service registration)
            container.ComposeFrom <SqlAppComposition>();
        }
        protected override void ConfigureApplicationContainer([NotNull] TinyIoCContainer container)
        {
            base.ConfigureApplicationContainer(container);

            container.Register <IAppConfiguration>(this.appConfig);
            container.Register <IMemoryCacheSettings>(this.appConfig.TerminologySqlSettings);
            container.Register(this.appConfig.ValueSetSettings);
            container.Register <ILogger>(this.logger);

            // Caching
            if (this.appConfig.TerminologySqlSettings.MemoryCacheEnabled)
            {
                container.Register <IMemoryCacheProvider, MemoryCacheProvider>().AsSingleton();
            }
            else
            {
                container.Register <IMemoryCacheProvider, NullMemoryCacheProvider>().AsSingleton();
            }

            // Persistence (Must precede service registration)
            container.ComposeFrom <SqlAppComposition>();
        }