Exemple #1
0
        public static void RegisterCollection(this ContainerBuilder builder, ISolrCloudStateProvider cloudStateProvider, bool isPostConnection = false)
        {
            if (cloudStateProvider == null)
            {
                throw new ArgumentNullException(nameof(cloudStateProvider));
            }

            var cloudStateProviderParam = new ResolvedParameter(
                (pi, ctx) => pi.ParameterType == typeof(ISolrCloudStateProvider) && pi.Name == nameof(cloudStateProvider),
                (pi, ctx) => ctx.ResolveKeyed <ISolrCloudStateProvider>(cloudStateProvider.Key));
            var operationsProviderParam = new ResolvedParameter(
                (pi, ctx) => pi.ParameterType == typeof(ISolrOperationsProvider),
                (pi, ctx) => ctx.Resolve <ISolrOperationsProvider>());
            var isPostConnectionParam = new ResolvedParameter(
                (pi, ctx) => pi.ParameterType == typeof(bool) && pi.Name == nameof(isPostConnection),
                (pi, ctx) => isPostConnection);

            var solrOperationsParams = new Parameter[] { cloudStateProviderParam, operationsProviderParam, isPostConnectionParam };

            builder.RegisterGeneric(typeof(SolrCloudBasicOperations <>))
            .As(typeof(ISolrBasicOperations <>), typeof(ISolrBasicReadOnlyOperations <>))
            .WithParameters(solrOperationsParams);

            builder.RegisterGeneric(typeof(SolrCloudOperations <>))
            .As(typeof(ISolrOperations <>), typeof(ISolrReadOnlyOperations <>))
            .WithParameters(solrOperationsParams);
        }
Exemple #2
0
        /// <summary>
        /// Returns configured unity container
        /// </summary>
        public IUnityContainer ConfigureContainer(ISolrCloudStateProvider cloudStateProvider, IUnityContainer container)
        {
            //add Collections support
            container.AddNewExtension <Collections.CollectionResolutionExtension>();

            if (cloudStateProvider == null)
            {
                throw new ArgumentNullException("cloudStateProvider");
            }
            if (container == null)
            {
                throw new ArgumentNullException("container");
            }
            if (container.IsRegistered <ISolrCloudStateProvider>(cloudStateProvider.Key))
            {
                return(container);
            }

            Nito.AsyncEx.AsyncContext.Run(() => cloudStateProvider.InitAsync());
            foreach (var collection in cloudStateProvider.GetCloudState().Collections.Keys)
            {
                if (!container.IsRegistered <ISolrCloudStateProvider>())
                {
                    RegisterFirstCollection(cloudStateProvider, container);
                }
                RegisterCollection(cloudStateProvider, collection, container);
            }
            container.RegisterInstance(cloudStateProvider.Key, cloudStateProvider);
            if (!container.IsRegistered <ISolrOperationsProvider>())
            {
                container.RegisterInstance <ISolrOperationsProvider>(new OperationsProvider());
            }
            return(container);
        }
Exemple #3
0
        public static void Init <T>(ISolrCloudStateProvider cloudStateProvider)
        {
            if (cloudStateProvider == null)
            {
                throw new ArgumentNullException("cloudStateProvider");
            }
            EnsureRegistration(cloudStateProvider);

            if (!Collections.Add(string.Empty))
            {
                return;
            }

            Parent.Container.Register <ISolrBasicOperations <T> >(
                container => new SolrCloudBasicOperations <T>(
                    container.GetInstance <ISolrCloudStateProvider>(cloudStateProvider.Key),
                    container.GetInstance <ISolrOperationsProvider>()));

            Parent.Container.Register <ISolrBasicReadOnlyOperations <T> >(
                container => new SolrCloudBasicOperations <T>(
                    container.GetInstance <ISolrCloudStateProvider>(cloudStateProvider.Key),
                    container.GetInstance <ISolrOperationsProvider>()));

            Parent.Container.Register <ISolrOperations <T> >(
                container => new SolrCloudOperations <T>(
                    container.GetInstance <ISolrCloudStateProvider>(cloudStateProvider.Key),
                    container.GetInstance <ISolrOperationsProvider>()));

            Parent.Container.Register <ISolrReadOnlyOperations <T> >(
                container => new SolrCloudOperations <T>(
                    container.GetInstance <ISolrCloudStateProvider>(cloudStateProvider.Key),
                    container.GetInstance <ISolrOperationsProvider>()));
        }
Exemple #4
0
 /// <summary>
 /// Constructor
 /// </summary>
 protected SolrCloudOperationsBase(ISolrCloudStateProvider cloudStateProvider, ISolrOperationsProvider operationsProvider, bool isPostConnection)
 {
     this.cloudStateProvider = cloudStateProvider;
     this.operationsProvider = operationsProvider;
     this.isPostConnection   = isPostConnection;
     random = new Random();
 }
Exemple #5
0
        public async Task InitializeAsync()
        {
            solrconnection = new SolrConnection(SOLR_CONNECTION_URL);
            collections    = new SolrCollectionsAdmin(solrconnection, new HeaderResponseParser <string>());

            var solrCloud = new SolrCloudStateProvider(ZOOKEEPER_CONNECTION);
            await Startup.InitAsync <string>(solrCloud, COLLECTION_NAME, true);

            solrCloudStateProvider = Startup.Container.GetInstance <ISolrCloudStateProvider>(solrCloud.Key);
        }
Exemple #6
0
        /// <summary>
        /// Registers first collection
        /// </summary>
        private static void RegisterFirstCollection(ISolrCloudStateProvider cloudStateProvider, IUnityContainer container)
        {
            var injection = new InjectionConstructor(
                new ResolvedParameter <ISolrCloudStateProvider>(cloudStateProvider.Key),
                new ResolvedParameter <ISolrOperationsProvider>());

            container.RegisterType(typeof(ISolrBasicOperations <>), typeof(SolrCloudBasicOperations <>), injection);
            container.RegisterType(typeof(ISolrBasicReadOnlyOperations <>), typeof(SolrCloudBasicOperations <>), injection);
            container.RegisterType(typeof(ISolrOperations <>), typeof(SolrCloudOperations <>), injection);
            container.RegisterType(typeof(ISolrReadOnlyOperations <>), typeof(SolrCloudOperations <>), injection);
        }
Exemple #7
0
 private static void EnsureRegistration(ISolrCloudStateProvider cloudStateProvider)
 {
     if (Providers.Count == 0)
     {
         Parent.Container.Register <ISolrOperationsProvider>(c => new OperationsProvider());
     }
     if (Providers.ContainsKey(cloudStateProvider.Key))
     {
         return;
     }
     cloudStateProvider.Init();
     Providers.Add(cloudStateProvider.Key, cloudStateProvider);
     Parent.Container.Register(cloudStateProvider.Key, container => cloudStateProvider);
 }
Exemple #8
0
        private static void EnsureRegistration(ContainerBuilder builder, ISolrCloudStateProvider cloudStateProvider)
        {
            builder.RegisterType <OperationsProvider>()
            .As <ISolrOperationsProvider>()
            .IfNotRegistered(typeof(ISolrOperationsProvider));

            if (Providers.ContainsKey(cloudStateProvider.Key))
            {
                return;
            }

            cloudStateProvider.InitAsync().GetAwaiter().GetResult();

            Providers.Add(cloudStateProvider.Key, cloudStateProvider);
            builder.Register(c => cloudStateProvider).Keyed <ISolrCloudStateProvider>(cloudStateProvider.Key);
        }
Exemple #9
0
        /// <summary>
        /// Startup initializing
        /// </summary>
        public static async Task InitAsync <T>(ISolrCloudStateProvider cloudStateProvider, string collectionName, bool isPostConnection = false)
        {
            if (cloudStateProvider == null)
            {
                throw new ArgumentNullException("cloudStateProvider");
            }
            if (string.IsNullOrEmpty(collectionName))
            {
                throw new ArgumentNullException("collectionName");
            }

            await EnsureRegistrationAsync(cloudStateProvider);

            if (!Collections.Add(collectionName))
            {
                return;
            }

            Parent.Container.Register <ISolrBasicOperations <T> >(
                container => new SolrCloudBasicOperations <T>(
                    container.GetInstance <ISolrCloudStateProvider>(cloudStateProvider.Key),
                    container.GetInstance <ISolrOperationsProvider>(),
                    collectionName,
                    isPostConnection));

            Parent.Container.Register <ISolrBasicReadOnlyOperations <T> >(
                container => new SolrCloudBasicOperations <T>(
                    container.GetInstance <ISolrCloudStateProvider>(cloudStateProvider.Key),
                    container.GetInstance <ISolrOperationsProvider>(),
                    collectionName,
                    isPostConnection));

            Parent.Container.Register <ISolrOperations <T> >(
                container => new SolrCloudOperations <T>(
                    container.GetInstance <ISolrCloudStateProvider>(cloudStateProvider.Key),
                    container.GetInstance <ISolrOperationsProvider>(),
                    collectionName,
                    isPostConnection));

            Parent.Container.Register <ISolrReadOnlyOperations <T> >(
                container => new SolrCloudOperations <T>(
                    container.GetInstance <ISolrCloudStateProvider>(cloudStateProvider.Key),
                    container.GetInstance <ISolrOperationsProvider>(),
                    collectionName,
                    isPostConnection));
        }
 public IUnityContainer ConfigureContainer(ISolrCloudStateProvider cloudStateProvider, IUnityContainer container)
 {
     if (cloudStateProvider == null)
     {
         throw new ArgumentNullException("cloudStateProvider");
     }
     if (container == null)
     {
         throw new ArgumentNullException("container");
     }
     if (container.IsRegistered <ISolrCloudStateProvider>(cloudStateProvider.Key))
     {
         return(container);
     }
     cloudStateProvider.Init();
     foreach (var collection in cloudStateProvider.GetCloudState().Collections.Keys)
     {
         if (!container.IsRegistered <ISolrCloudStateProvider>())
         {
             RegisterFirstCollection(cloudStateProvider, container);
         }
         RegisterCollection(cloudStateProvider, collection, container);
     }
     container.RegisterInstance(cloudStateProvider.Key, cloudStateProvider);
     if (!container.IsRegistered <ISolrOperationsProvider>())
     {
         container.RegisterInstance <ISolrOperationsProvider>(new OperationsProvider());
     }
     //container.RegisterType<IReadOnlyMappingManager, MemoizingMappingManager>(new InjectionConstructor(new ResolvedParameter(typeof(AttributesMappingManager))));
     //container.RegisterType(typeof(ISolrDocumentActivator<>), typeof(SolrDocumentActivator<>));
     //container.RegisterType(typeof(ISolrQueryExecuter<>), typeof(SolrQueryExecuter<>));
     //container.RegisterType<ISolrDocumentPropertyVisitor, DefaultDocumentVisitor>();
     //container.RegisterType<IMappingValidator, MappingValidator>();
     //RegisterParsers(container);
     //RegisterValidationRules(container);
     //RegisterSerializers(container);
     return(container);
 }
Exemple #11
0
 public SolrCloudBasicOperations(ISolrCloudStateProvider cloudStateProvider, ISolrOperationsProvider operationsProvider, string collectionName)
     : base(cloudStateProvider, operationsProvider, isPostConnection: false, collectionName: collectionName)
 {
 }
Exemple #12
0
 public SolrCloudBasicOperations(ISolrCloudStateProvider cloudStateProvider, ISolrOperationsProvider operationsProvider)
     : base(cloudStateProvider, operationsProvider, isPostConnection: false)
 {
 }
Exemple #13
0
 public SolrCloudOperations(ISolrCloudStateProvider cloudStateProvider, ISolrOperationsProvider operationsProvider)
     : base(cloudStateProvider, operationsProvider)
 {
 }
Exemple #14
0
 public SolrCloudOperations(ISolrCloudStateProvider cloudStateProvider, ISolrOperationsProvider operationsProvider, string collectionName)
     : base(cloudStateProvider, operationsProvider, collectionName)
 {
 }
Exemple #15
0
 public SolrCloudOperations(ISolrCloudStateProvider cloudStateProvider, ISolrOperationsProvider operationsProvider, bool isPostConnection = false)
     : base(cloudStateProvider, operationsProvider, isPostConnection)
 {
 }
Exemple #16
0
 /// <summary>
 /// Constructor
 /// </summary>
 protected SolrCloudOperationsBase(ISolrCloudStateProvider cloudStateProvider, ISolrOperationsProvider operationsProvider, bool isPostConnection, string collectionName = null)
     : this(cloudStateProvider, operationsProvider, isPostConnection)
 {
     this.collectionName = collectionName;
 }
Exemple #17
0
 /// <summary>
 /// Returns configured unity container
 /// </summary>
 public IUnityContainer ConfigureContainer(ISolrCloudStateProvider cloudStateProvider, IUnityContainer container)
 {
     return(Nito.AsyncEx.AsyncContext.Run(() => ConfigureContainerAsync(cloudStateProvider, container)));
 }
Exemple #18
0
 public SolrNetCloudModule(ISolrCloudStateProvider cloudStateProvider, string collectionName, bool isPostConnection = false)
     : this(cloudStateProvider, isPostConnection)
 {
     CollectionName = collectionName;
 }
Exemple #19
0
 public SolrNetCloudModule(ISolrCloudStateProvider cloudStateProvider, bool isPostConnection = false)
 {
     CloudStateProvider = cloudStateProvider;
     IsPostConnection   = isPostConnection;
 }
Exemple #20
0
 public SolrCloudOperations(ISolrCloudStateProvider cloudStateProvider, ISolrOperationsProvider operationsProvider, string collectionName, bool isPostConnection = false)
     : base(cloudStateProvider, operationsProvider, isPostConnection, collectionName)
 {
 }
 protected SolrCloudOperationsBase(ISolrCloudStateProvider cloudStateProvider, ISolrOperationsProvider operationsProvider)
 {
     this.cloudStateProvider = cloudStateProvider;
     this.operationsProvider = operationsProvider;
     random = new Random();
 }