private void FinalizeContainer(IWindsorContainer container)
        {
            _logger.Debug("Finalizing container");

            container.Kernel.GetFacilities()
            .OfType <ChainOfResponsibilityFacility>()
            .SingleOrDefault()
            ?.FinalizeChains();

            // Make this dependency available to generated artifacts
            GeneratedArtifactStaticDependencies.Resolvers.Set(() => container.Resolve <IResourceModelProvider>());
            GeneratedArtifactStaticDependencies.Resolvers.Set(() => container.Resolve <IAuthorizationContextProvider>());

            ClaimsPrincipal.ClaimsPrincipalSelector =
                () => EdFiClaimsPrincipalSelector.GetClaimsPrincipal(container.Resolve <IClaimsIdentityProvider>());

            // Provide cache using a closure rather than repeated invocations to the container
            IPersonUniqueIdToUsiCache personUniqueIdToUsiCache = null;

            PersonUniqueIdToUsiCache.GetCache = () => personUniqueIdToUsiCache ?? (personUniqueIdToUsiCache = container.Resolve <IPersonUniqueIdToUsiCache>());

            // Provide cache using a closure rather than repeated invocations to the container
            IDescriptorsCache cache = null;

            DescriptorsCache.GetCache = () => cache ?? (cache = container.Resolve <IDescriptorsCache>());

            ResourceModelHelper.ResourceModel =
                new Lazy <ResourceModel>(() => container.Resolve <IResourceModelProvider>().GetResourceModel());
        }
Exemplo n.º 2
0
 public CompositeResourceResponseProvider(
     ISessionFactory sessionFactory,
     ICompositeDefinitionProcessor <HqlBuilderContext, CompositeQuery> compositeDefinitionProcessor,
     IResourceModelProvider resourceModelProvider,
     IPersonUniqueIdToUsiCache personUniqueIdToUsiCache,
     IFieldsExpressionParser fieldsExpressionParser,
     IProfileResourceModelProvider profileResourceModelProvider)
 {
     _sessionFactory = sessionFactory;
     _compositeDefinitionProcessor = compositeDefinitionProcessor;
     _resourceModelProvider        = resourceModelProvider;
     _personUniqueIdToUsiCache     = personUniqueIdToUsiCache;
     _fieldsExpressionParser       = fieldsExpressionParser;
     _profileResourceModelProvider = profileResourceModelProvider;
 }
Exemplo n.º 3
0
        public HqlBuilder(
            ISessionFactory sessionFactory,
            IDescriptorsCache descriptorsCache,
            IPersonUniqueIdToUsiCache personUniqueIdToUsiCache,
            IResourceJoinPathExpressionProcessor resourceJoinPathExpressionProcessor,
            IParameterListSetter parameterListSetter)
        {
            _sessionFactory           = Preconditions.ThrowIfNull(sessionFactory, nameof(sessionFactory));
            _descriptorsCache         = Preconditions.ThrowIfNull(descriptorsCache, nameof(descriptorsCache));
            _personUniqueIdToUsiCache = Preconditions.ThrowIfNull(personUniqueIdToUsiCache, nameof(personUniqueIdToUsiCache));

            _resourceJoinPathExpressionProcessor = Preconditions.ThrowIfNull(
                resourceJoinPathExpressionProcessor, nameof(resourceJoinPathExpressionProcessor));

            _parameterListSetter = Preconditions.ThrowIfNull(parameterListSetter, nameof(parameterListSetter));
        }
            protected override void Arrange()
            {
                RegisterDependencies();
                IDescriptorsCache cache = null;

                DescriptorsCache.GetCache = () => cache ??= _container.Resolve <IDescriptorsCache>();

                IPersonUniqueIdToUsiCache personUniqueIdToUsiCache = null;

                PersonUniqueIdToUsiCache.GetCache = ()
                                                    => personUniqueIdToUsiCache ??= _container.Resolve <IPersonUniqueIdToUsiCache>();

                var assembly = typeof(Program).GetTypeInfo().Assembly;

                XmlConfigurator.Configure(LogManager.GetRepository(assembly));

                ClaimsPrincipal.ClaimsPrincipalSelector =
                    () => EdFiClaimsPrincipalSelector.GetClaimsPrincipal(_container.Resolve <IClaimsIdentityProvider>());

                _studentRepo = _container.Resolve <IUpsertEntity <Student> >();
                _programRepo = _container.Resolve <IUpsertEntity <Program> >();
                _studentProgramAssociationRepo = _container.Resolve <IUpsertEntity <StudentProgramAssociation> >();

                _studentTitleIPartAProgramAssociationRepo =
                    _container.Resolve <IUpsertEntity <StudentTitleIPartAProgramAssociation> >();

                _upsertService = _container.Resolve <IUpsertEntity <ServiceDescriptor> >();

                InitializeEducationOrganizationIdsForTest();

                _studentUniqueId = Guid.NewGuid()
                                   .ToString("N");

                _serviceDescriptor = GetTestServiceDescriptor();
                _program1          = GetProgram1();
                _program2          = GetProgram2();
                _student           = GetStudent();

                InitializeTestData();
            }
Exemplo n.º 5
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
        {
            loggerFactory.AddLog4Net();

            Container = app.ApplicationServices.GetAutofacRoot();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseHttpsRedirection();
            app.UseRouting();
            app.UseStaticFiles();

            app.UseCors(CorsPolicyName);

            if (ApiSettings.GetApiMode() == ApiMode.InstanceYearSpecific)
            {
                app.UseInstanceYearSpecific();
            }

            app.UseEdFiApiAuthentication();
            app.UseAuthorization();

            // Serves Open API Metadata json files when enabled.
            if (ApiSettings.IsFeatureEnabled(ApiFeature.OpenApiMetadata.GetConfigKeyName()))
            {
                app.UseOpenApiMetadata();
            }

            // required to get the base controller working
            app.UseEndpoints(
                endpoints => { endpoints.MapControllers(); });

            SetStaticResolvers();

            RunExternalTasks();

            void RunExternalTasks()
            {
                foreach (IExternalTask externalTask in Container.Resolve <IEnumerable <IExternalTask> >())
                {
                    _logger.Debug($"Running external task {externalTask.GetType().Name}");
                    externalTask.Execute();
                }
            }

            void SetStaticResolvers()
            {
                // Make this dependency available to generated artifacts
                GeneratedArtifactStaticDependencies.Resolvers.Set(() => Container.Resolve <IResourceModelProvider>());
                GeneratedArtifactStaticDependencies.Resolvers.Set(() => Container.Resolve <IAuthorizationContextProvider>());

                // netcore has removed the claims principal from the thread, to be on the controller.
                // as a workaround for our current application we can resolve the IHttpContextAccessor.
                // c.f. https://docs.microsoft.com/en-us/aspnet/core/migration/claimsprincipal-current?view=aspnetcore-3.1
                ClaimsPrincipal.ClaimsPrincipalSelector = () => Container.Resolve <IHttpContextAccessor>()
                                                          .HttpContext?.User;

                // Provide cache using a closure rather than repeated invocations to the container
                IPersonUniqueIdToUsiCache personUniqueIdToUsiCache = null;

                PersonUniqueIdToUsiCache.GetCache = ()
                                                    => personUniqueIdToUsiCache ??= Container.Resolve <IPersonUniqueIdToUsiCache>();

                // Provide cache using a closure rather than repeated invocations to the container
                IDescriptorsCache cache = null;

                DescriptorsCache.GetCache = () => cache ??= Container.Resolve <IDescriptorsCache>();

                if (ApiSettings.GetApiMode() == ApiMode.InstanceYearSpecific)
                {
                    // Provide SecurityRepository cache using a closure rather than repeated invocations to the container
                    IInstanceSecurityRepositoryCache instanceSecurityRepositoryCache = null;

                    InstanceSecurityRepositoryCache.GetCache = ()
                                                               => instanceSecurityRepositoryCache ??= Container.Resolve <IInstanceSecurityRepositoryCache>();
                }

                ResourceModelHelper.ResourceModel =
                    new Lazy <ResourceModel>(
                        () => Container.Resolve <IResourceModelProvider>()
                        .GetResourceModel());

                EntityExtensionsFactory.Instance = Container.Resolve <IEntityExtensionsFactory>();

                DbConfiguration.SetConfiguration(new DatabaseEngineDbConfiguration(Container.Resolve <DatabaseEngine>()));

                // Set NHibernate to use Autofac to resolve its dependencies
                NHibernate.Cfg.Environment.ObjectsFactory = new NHibernateAutofacObjectsFactory(Container);
            }
        }