/// <summary>
        /// Sets the provided instance as the client for search service communication.
        /// </summary>
        /// <param name="repositoryBuilder">The <see cref="IRepositoryBuilder"/> instance.</param>
        /// <param name="serviceClient">The client instance.</param>
        public static IRepositoryBuilder UseLucene29CentralizedServiceClient(this IRepositoryBuilder repositoryBuilder,
                                                                             ISearchServiceClient serviceClient)
        {
            SearchServiceClient.Instance = serviceClient;

            return(repositoryBuilder);
        }
        /// <summary>
        /// Sets the blob provider selector.
        /// </summary>
        /// <param name="repositoryBuilder"></param>
        /// <param name="selector">IBlobProviderSelector instance.</param>
        public static IRepositoryBuilder UseBlobProviderSelector(this IRepositoryBuilder repositoryBuilder, IBlobProviderSelector selector)
        {
            Configuration.Providers.Instance.BlobProviderSelector = selector;
            WriteLog("BlobProviderSelector", selector);

            return(repositoryBuilder);
        }
Пример #3
0
        /// <summary>
        /// Sets the blob provider store.
        /// </summary>
        /// <param name="repositoryBuilder"></param>
        /// <param name="store">IBlobProviderStore instance.</param>
        public static IRepositoryBuilder UseBlobProviderStore(this IRepositoryBuilder repositoryBuilder, IBlobProviderStore store)
        {
            Configuration.Providers.Instance.BlobProviders = store;
            WriteLog("IBlobProviderStore", store);

            return(repositoryBuilder);
        }
        public static IRepositoryBuilder SetSource <TModel>(this IRepositoryBuilder repositoryBuilder, EntityFrameworkRepositorySource <TModel> repositorySource)
            where TModel : class
        {
            repositoryBuilder.RepositorySource = repositorySource;

            return(repositoryBuilder);
        }
        /// <summary>
        /// Sets the application cache provider.
        /// </summary>
        /// <param name="repositoryBuilder"></param>
        /// <param name="applicationCacheProvider">IApplicationCache instance.</param>
        public static IRepositoryBuilder UseApplicationCacheProvider(this IRepositoryBuilder repositoryBuilder, IApplicationCache applicationCacheProvider)
        {
            Configuration.Providers.Instance.ApplicationCacheProvider = applicationCacheProvider;
            WriteLog("ApplicationCacheProvider", applicationCacheProvider);

            return(repositoryBuilder);
        }
Пример #6
0
        /// <summary>
        /// Sets the membership extender used for extending user membership on-the-fly.
        /// </summary>
        /// <param name="repositoryBuilder"></param>
        /// <param name="membershipExtender">MembershipExtender instance.</param>
        public static IRepositoryBuilder UseMembershipExtender(this IRepositoryBuilder repositoryBuilder, MembershipExtenderBase membershipExtender)
        {
            Configuration.Providers.Instance.MembershipExtender = membershipExtender;
            WriteLog("MembershipExtender", membershipExtender);

            return(repositoryBuilder);
        }
Пример #7
0
 public RepositoryFactory(IRepositoryBuilder repositoryBuilder
                          , ILogger logger
                          )
 {
     _repositoryBuilder = repositoryBuilder;
     _logger            = logger;
 }
        /// <summary>
        /// Sets the security message provider used for security messaging operations.
        /// </summary>
        /// <param name="repositoryBuilder"></param>
        /// <param name="securityMessageProvider">IMessageProvider instance that will handle security-related messages.</param>
        public static IRepositoryBuilder UseSecurityMessageProvider(this IRepositoryBuilder repositoryBuilder, IMessageProvider securityMessageProvider)
        {
            Configuration.Providers.Instance.SecurityMessageProvider = securityMessageProvider;
            WriteLog("SecurityMessageProvider", securityMessageProvider);

            return(repositoryBuilder);
        }
        /// <summary>
        /// Sets the cache provider.
        /// </summary>
        /// <param name="repositoryBuilder"></param>
        /// <param name="cacheProvider">ICache instance.</param>
        public static IRepositoryBuilder UseCacheProvider(this IRepositoryBuilder repositoryBuilder, ISnCache cacheProvider)
        {
            Configuration.Providers.Instance.CacheProvider = cacheProvider;
            WriteLog("CacheProvider", cacheProvider);

            return(repositoryBuilder);
        }
        /// <summary>
        /// Sets the access provider responsible for user-related technical operations in the system.
        /// </summary>
        /// <param name="repositoryBuilder"></param>
        /// <param name="accessProvider">AccessProvider instance.</param>
        public static IRepositoryBuilder UseAccessProvider(this IRepositoryBuilder repositoryBuilder, AccessProvider accessProvider)
        {
            Configuration.Providers.Instance.AccessProvider = accessProvider;
            WriteLog("AccessProvider", accessProvider);

            return(repositoryBuilder);
        }
        /// <summary>
        /// Sets the permission filter factory responsible for creating a filter for every query execution.
        /// </summary>
        /// <param name="repositoryBuilder"></param>
        /// <param name="permissionFilterFactory">IPermissionFilterFactory implementation instance.</param>
        public static IRepositoryBuilder UsePermissionFilterFactory(this IRepositoryBuilder repositoryBuilder, IPermissionFilterFactory permissionFilterFactory)
        {
            Configuration.Providers.Instance.PermissionFilterFactory = permissionFilterFactory;
            WriteLog("PermissionFilterFactory", permissionFilterFactory);

            return(repositoryBuilder);
        }
Пример #12
0
        public static IRepositoryBuilder UseDocumentPreviewProvider(this IRepositoryBuilder repositoryBuilder,
                                                                    DocumentPreviewProvider previewProvider)
        {
            Providers.Instance.PreviewProvider = previewProvider;

            return(repositoryBuilder);
        }
Пример #13
0
        public static IRepositoryBuilder BuildInMemoryRepository(this IRepositoryBuilder repositoryBuilder,
                                                                 InitialData initialData, InMemoryIndex initialIndex)
        {
            if (initialData == null)
            {
                throw new ArgumentNullException(nameof(initialData));
            }
            if (initialIndex == null)
            {
                throw new ArgumentNullException(nameof(initialIndex));
            }

            // Precedence: if a service is registered in the collection, use that
            // instead of creating instances locally.
            var services = (repositoryBuilder as RepositoryBuilder)?.Services;

            if (services?.GetService <DataProvider>() is InMemoryDataProvider dataProvider)
            {
                // If there is an instance in the container, use that. We have to set
                // these instances manually instead of using the extension method so that
                // we do not overwrite the store instance.
                Providers.Instance.DataProvider = dataProvider;
                Providers.Instance.DataStore    = services.GetService <IDataStore>();
            }
            else
            {
                dataProvider = new InMemoryDataProvider();
                repositoryBuilder.UseDataProvider(dataProvider);
            }

            Providers.Instance.ResetBlobProviders();

            var searchEngine = services?.GetService <ISearchEngine>() ?? new InMemorySearchEngine(initialIndex);

            repositoryBuilder
            .UseLogger(new DebugWriteLoggerAdapter())
            .UseTracer(new SnDebugViewTracer())
            .UseInitialData(initialData)
            .UseSharedLockDataProviderExtension(new InMemorySharedLockDataProvider())
            .UseExclusiveLockDataProviderExtension(new InMemoryExclusiveLockDataProvider())
            .UseBlobMetaDataProvider(new InMemoryBlobStorageMetaDataProvider(dataProvider))
            .UseBlobProviderSelector(new InMemoryBlobProviderSelector())
            .AddBlobProvider(new InMemoryBlobProvider())
            .UseAccessTokenDataProviderExtension(new InMemoryAccessTokenDataProvider())
            .UsePackagingDataProviderExtension(new InMemoryPackageStorageProvider())
            .UseSearchEngine(searchEngine)
            .UseSecurityDataProvider(GetSecurityDataProvider(dataProvider))
            .UseSecurityMessageProvider(new DefaultMessageProvider(new MessageSenderManager()))
            .UseElevatedModificationVisibilityRuleProvider(new ElevatedModificationVisibilityRule())
            .StartWorkflowEngine(false);

            var statDp = services?.GetService <IStatisticalDataProvider>() as InMemoryStatisticalDataProvider
                         ?? new InMemoryStatisticalDataProvider();

            repositoryBuilder.UseStatisticalDataProvider(statDp);

            Providers.Instance.PropertyCollector = new EventPropertyCollector();

            return(repositoryBuilder);
        }
        /// <summary>
        /// Sets the search engine used for querying and indexing.
        /// </summary>
        /// <param name="repositoryBuilder"></param>
        /// <param name="searchEngine">SearchEngine instance.</param>
        public static IRepositoryBuilder UseSearchEngine(this IRepositoryBuilder repositoryBuilder, ISearchEngine searchEngine)
        {
            Configuration.Providers.Instance.SearchEngine = searchEngine;
            WriteLog("SearchEngine", searchEngine);

            return(repositoryBuilder);
        }
Пример #15
0
        public static IRepositoryBuilder UseMailProvider(this IRepositoryBuilder repositoryBuilder, MailProvider mailProvider)
        {
            Providers.Instance.SetProvider(typeof(MailProvider), mailProvider);
            SnLog.WriteInformation($"MailProvider created: {mailProvider?.GetType().FullName}");

            return(repositoryBuilder);
        }
        /// <summary>
        /// Sets the cluster channel provider.
        /// </summary>
        /// <param name="repositoryBuilder"></param>
        /// <param name="clusterChannelProvider">IClusterChannel instance.</param>
        public static IRepositoryBuilder UseClusterChannelProvider(this IRepositoryBuilder repositoryBuilder, IClusterChannel clusterChannelProvider)
        {
            Configuration.Providers.Instance.ClusterChannelProvider = clusterChannelProvider;
            WriteLog("ClusterChannelProvider", clusterChannelProvider);

            return(repositoryBuilder);
        }
Пример #17
0
        /// <summary>
        /// Sets the blob metadata provider.
        /// </summary>
        /// <param name="repositoryBuilder"></param>
        /// <param name="metaDataProvider">IBlobStorageMetaDataProvider instance.</param>
        public static IRepositoryBuilder UseBlobMetaDataProvider(this IRepositoryBuilder repositoryBuilder, IBlobStorageMetaDataProvider metaDataProvider)
        {
            Configuration.Providers.Instance.BlobMetaDataProvider = metaDataProvider;
            WriteLog("BlobMetaDataProvider", metaDataProvider);

            return(repositoryBuilder);
        }
        /// <summary>
        /// Sets the data provider used for all db operations in the system.
        /// </summary>
        /// <param name="repositoryBuilder"></param>
        /// <param name="dataProvider">DataProvider instance.</param>
        public static IRepositoryBuilder UseDataProvider(this IRepositoryBuilder repositoryBuilder, DataProvider dataProvider)
        {
            Configuration.Providers.Instance.DataProvider = dataProvider;
            Configuration.Providers.Instance.InitializeDataStore();

            return(repositoryBuilder);
        }
Пример #19
0
        public static IRepositoryBuilder BuildInMemoryRepository(this IRepositoryBuilder repositoryBuilder,
                                                                 InitialData initialData, InMemoryIndex initialIndex)
        {
            if (initialData == null)
            {
                throw new ArgumentNullException(nameof(initialData));
            }
            if (initialIndex == null)
            {
                throw new ArgumentNullException(nameof(initialIndex));
            }

            var dataProvider = new InMemoryDataProvider();

            repositoryBuilder
            .UseLogger(new DebugWriteLoggerAdapter())
            .UseTracer(new SnDebugViewTracer())
            .UseDataProvider(dataProvider)
            .UseInitialData(initialData)
            .UseSharedLockDataProviderExtension(new InMemorySharedLockDataProvider())
            .UseExclusiveLockDataProviderExtension(new InMemoryExclusiveLockDataProvider())
            .UseBlobMetaDataProvider(new InMemoryBlobStorageMetaDataProvider(dataProvider))
            .UseBlobProviderSelector(new InMemoryBlobProviderSelector())
            .UseAccessTokenDataProviderExtension(new InMemoryAccessTokenDataProvider())
            .UsePackagingDataProviderExtension(new InMemoryPackageStorageProvider())
            .UseSearchEngine(new InMemorySearchEngine(initialIndex))
            .UseSecurityDataProvider(GetSecurityDataProvider(dataProvider))
            .UseElevatedModificationVisibilityRuleProvider(new ElevatedModificationVisibilityRule())
            .StartWorkflowEngine(false);

            Providers.Instance.PropertyCollector = new EventPropertyCollector();

            return(repositoryBuilder);
        }
Пример #20
0
 public RepositoryFactory(IRepositoryBuilder repositoryBuilder
                          , ILogger <RepositoryFactory> logger
                          )
 {
     Init();
     _repositoryBuilder = repositoryBuilder;
     _logger            = logger;
 }
Пример #21
0
 public RepositoryBuilder_Test(SmartSqlFixture smartSqlFixture)
 {
     SqlMapper          = smartSqlFixture.SqlMapper;
     _repositoryBuilder = new EmitRepositoryBuilder(null, null,
                                                    smartSqlFixture.LoggerFactory.CreateLogger <EmitRepositoryBuilder>());
     _repositoryFactory = new RepositoryFactory(_repositoryBuilder,
                                                smartSqlFixture.LoggerFactory.CreateLogger <RepositoryFactory>());
 }
Пример #22
0
        /// <summary>
        /// Switches the ResponseLengthLimiter feature on.
        /// </summary>
        /// <param name="builder">The IRepositoryBuilder instance.</param>
        /// <param name="maxResponseLengthInBytes">Response length limit value in bytes (optional).</param>
        /// <param name="maxFileLengthInBytes">File length limit value in bytes (optional).</param>
        /// <returns>The IRepositoryBuilder instance.</returns>
        public static IRepositoryBuilder UseResponseLimiter(this IRepositoryBuilder builder,
                                                            long maxResponseLengthInBytes = 0, long maxFileLengthInBytes = 0)
        {
            Providers.Instance.SetProvider(typeof(IResponseLimiter),
                                           new SnResponseLimiter(maxResponseLengthInBytes, maxFileLengthInBytes));

            return(builder);
        }
Пример #23
0
        /// <summary>
        /// Deletes the existing <see cref="IEventProcessor"/>s and registers the given elements.
        /// </summary>
        /// <param name="builder">The <see cref="IRepositoryBuilder"/> instance.</param>
        /// <param name="processors">One or more <see cref="IEventProcessor"/> instance.</param>
        /// <returns>The updated <see cref="IRepositoryBuilder"/>.</returns>
        public static IRepositoryBuilder UseAsyncEventProcessors(this IRepositoryBuilder builder, params IEventProcessor[] processors)
        {
            var list = Providers.Instance.AsyncEventProcessors;

            list.Clear();
            builder.AddAsyncEventProcessors(processors);
            return(builder);
        }
Пример #24
0
        /// <summary>
        /// Sets DocumentBinaryProvider instances.
        /// </summary>
        public static IRepositoryBuilder UseDocumentBinaryProvider(this IRepositoryBuilder repositoryBuilder,
                                                                   DocumentBinaryProvider documentBinaryProvider)
        {
            Configuration.Providers.Instance.SetProvider(DocumentBinaryProvider.DocumentBinaryProviderKey,
                                                         documentBinaryProvider);

            return(repositoryBuilder);
        }
 /// <summary>
 /// Set the centralized Lucene engine as the search engine and
 /// sets the <see cref="GrpcServiceClient"/> as the client for
 /// search service communication.
 /// </summary>
 /// <param name="repositoryBuilder">The <see cref="IRepositoryBuilder"/> instance.</param>
 /// <param name="serviceAddress">Url of the gRPC search service.</param>
 /// <param name="configure">Optional configure method.</param>
 public static IRepositoryBuilder UseLucene29CentralizedSearchEngineWithGrpc(
     this IRepositoryBuilder repositoryBuilder,
     string serviceAddress,
     Action <GrpcChannelOptions> configure = null)
 {
     return(repositoryBuilder
            .UseLucene29CentralizedSearchEngine()
            .UseLucene29CentralizedGrpcServiceClient(serviceAddress, configure));
 }
        public static IRepositoryBuilder SetProvider <T>(this IRepositoryBuilder repositoryBuilder, T provider)
        {
            var providerType = typeof(T);

            Configuration.Providers.Instance.SetProvider(providerType, provider);
            WriteLog(providerType.Name, provider);

            return(repositoryBuilder);
        }
        /// <summary>
        /// Registers one or more features in the system, represented by component instances.
        /// Do not use this method directly in your code, it is intended to be used by the system.
        /// Use the AddComponent extension method for the IServiceCollection api instead.
        /// </summary>
        public static IRepositoryBuilder UseComponent(this IRepositoryBuilder repositoryBuilder, params ISnComponent[] components)
        {
            foreach (var component in components)
            {
                Configuration.Providers.Instance.AddComponent(component);
            }

            return(repositoryBuilder);
        }
        public ScheduleManager(IRepositoryBuilder builder = null, IConfiguration configuration = null)
        {
            _log    = LogManager.GetLogger(typeof(ScheduleManager));
            Builder = builder ?? ServiceLocator.Current.GetInstance <IRepositoryBuilder>();
#if NETFRAMEWORK
            httpRuntimeURL = ConfigurationManager.AppSettings["WebServerUrl"];
#else
            httpRuntimeURL = configuration?.GetValue <string>("configuration:appSettings:add:WebServerUrl:value");
#endif
        }
        /// <summary>
        /// Sets the Centralized Lucene search engine as the current search engine.
        /// </summary>
        public static IRepositoryBuilder UseLucene29CentralizedSearchEngine(this IRepositoryBuilder repositoryBuilder)
        {
            var searchEngine = new Lucene29SearchEngine(
                new Lucene29CentralizedIndexingEngine(null, Options.Create(new CentralizedOptions())),
                new Lucene29CentralizedQueryEngine());

            repositoryBuilder.UseSearchEngine(searchEngine);

            return(repositoryBuilder);
        }
        /// <summary>
        /// Sets the <see cref="InitialData"/> that will be installed to the database in the repository start sequence.
        /// </summary>
        /// <param name="repositoryBuilder"></param>
        /// <param name="initialData">Data file instance.</param>
        /// <returns></returns>
        public static IRepositoryBuilder UseInitialData(this IRepositoryBuilder repositoryBuilder, InitialData initialData)
        {
            if (!(repositoryBuilder is RepositoryBuilder repoBuilder))
            {
                throw new ApplicationException(
                          $"The repositoryBuilder is not an instance of {typeof(RepositoryBuilder).FullName}.");
            }

            repoBuilder.InitialData = initialData;
            return(repositoryBuilder);
        }