From c0fa66799f8e81a3d32ccd56da5ee18189140938 Mon Sep 17 00:00:00 2001 From: arkadiuszbiel Date: Fri, 4 Oct 2019 16:41:29 +0200 Subject: [PATCH] Split config and index creator to allow to override only config not whole index creator --- src/Umbraco.Examine/IUmbracoIndexConfig.cs | 12 +++++++ src/Umbraco.Examine/Umbraco.Examine.csproj | 2 ++ .../UmbracoUmbracoIndexConfig.cs | 34 +++++++++++++++++++ src/Umbraco.Web/Search/ExamineComposer.cs | 1 + .../Search/UmbracoIndexesCreator.cs | 27 ++++----------- 5 files changed, 55 insertions(+), 21 deletions(-) create mode 100644 src/Umbraco.Examine/IUmbracoIndexConfig.cs create mode 100644 src/Umbraco.Examine/UmbracoUmbracoIndexConfig.cs diff --git a/src/Umbraco.Examine/IUmbracoIndexConfig.cs b/src/Umbraco.Examine/IUmbracoIndexConfig.cs new file mode 100644 index 0000000000..798c173f5c --- /dev/null +++ b/src/Umbraco.Examine/IUmbracoIndexConfig.cs @@ -0,0 +1,12 @@ +using Examine; + +namespace Umbraco.Examine +{ + public abstract class IUmbracoIndexConfig + { + public abstract IContentValueSetValidator GetContentValueSetValidator(); + public abstract IContentValueSetValidator GetPublishedContentValueSetValidator(); + public abstract IValueSetValidator GetMemberValueSetValidator(); + + } +} diff --git a/src/Umbraco.Examine/Umbraco.Examine.csproj b/src/Umbraco.Examine/Umbraco.Examine.csproj index e28a8e674e..2bfa810b45 100644 --- a/src/Umbraco.Examine/Umbraco.Examine.csproj +++ b/src/Umbraco.Examine/Umbraco.Examine.csproj @@ -64,9 +64,11 @@ + + diff --git a/src/Umbraco.Examine/UmbracoUmbracoIndexConfig.cs b/src/Umbraco.Examine/UmbracoUmbracoIndexConfig.cs new file mode 100644 index 0000000000..0a9b8607e8 --- /dev/null +++ b/src/Umbraco.Examine/UmbracoUmbracoIndexConfig.cs @@ -0,0 +1,34 @@ +using Examine; +using Umbraco.Core.Services; +using Umbraco.Core.Services.Implement; + +namespace Umbraco.Examine +{ + public class UmbracoUmbracoIndexConfig : IUmbracoIndexConfig + { + public UmbracoUmbracoIndexConfig(IPublicAccessService publicAccessService) + { + PublicAccessService = publicAccessService; + } + + protected IPublicAccessService PublicAccessService { get; } + public override IContentValueSetValidator GetContentValueSetValidator() + { + return new ContentValueSetValidator(false, true, PublicAccessService); + } + + public override IContentValueSetValidator GetPublishedContentValueSetValidator() + { + return new ContentValueSetValidator(true, false, PublicAccessService); + } + + /// + /// Returns the for the member indexer + /// + /// + public override IValueSetValidator GetMemberValueSetValidator() + { + return new MemberValueSetValidator(); + } + } +} diff --git a/src/Umbraco.Web/Search/ExamineComposer.cs b/src/Umbraco.Web/Search/ExamineComposer.cs index 0ade432d70..ee07e3dd1e 100644 --- a/src/Umbraco.Web/Search/ExamineComposer.cs +++ b/src/Umbraco.Web/Search/ExamineComposer.cs @@ -29,6 +29,7 @@ namespace Umbraco.Web.Search composition.Register(Lifetime.Singleton); composition.Register(Lifetime.Singleton); + composition.RegisterUnique(); composition.RegisterUnique(); composition.RegisterUnique(factory => new ContentValueSetBuilder( diff --git a/src/Umbraco.Web/Search/UmbracoIndexesCreator.cs b/src/Umbraco.Web/Search/UmbracoIndexesCreator.cs index 5ac5529be5..beecb85ae6 100644 --- a/src/Umbraco.Web/Search/UmbracoIndexesCreator.cs +++ b/src/Umbraco.Web/Search/UmbracoIndexesCreator.cs @@ -19,18 +19,20 @@ namespace Umbraco.Web.Search public UmbracoIndexesCreator(IProfilingLogger profilingLogger, ILocalizationService languageService, IPublicAccessService publicAccessService, - IMemberService memberService) + IMemberService memberService, IUmbracoIndexConfig umbracoIndexConfig) { ProfilingLogger = profilingLogger ?? throw new System.ArgumentNullException(nameof(profilingLogger)); LanguageService = languageService ?? throw new System.ArgumentNullException(nameof(languageService)); PublicAccessService = publicAccessService ?? throw new System.ArgumentNullException(nameof(publicAccessService)); MemberService = memberService ?? throw new System.ArgumentNullException(nameof(memberService)); + UmbracoIndexConfig = umbracoIndexConfig; } protected IProfilingLogger ProfilingLogger { get; } protected ILocalizationService LanguageService { get; } protected IPublicAccessService PublicAccessService { get; } protected IMemberService MemberService { get; } + protected IUmbracoIndexConfig UmbracoIndexConfig { get; } /// /// Creates the Umbraco indexes @@ -55,7 +57,7 @@ namespace Umbraco.Web.Search new CultureInvariantWhitespaceAnalyzer(), ProfilingLogger, LanguageService, - GetContentValueSetValidator()); + UmbracoIndexConfig.GetContentValueSetValidator()); return index; } @@ -68,7 +70,7 @@ namespace Umbraco.Web.Search new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30), ProfilingLogger, LanguageService, - GetPublishedContentValueSetValidator()); + UmbracoIndexConfig.GetPublishedContentValueSetValidator()); return index; } @@ -80,28 +82,11 @@ namespace Umbraco.Web.Search CreateFileSystemLuceneDirectory(Constants.UmbracoIndexes.MembersIndexPath), new CultureInvariantWhitespaceAnalyzer(), ProfilingLogger, - GetMemberValueSetValidator()); + UmbracoIndexConfig.GetMemberValueSetValidator()); return index; } - - public virtual IContentValueSetValidator GetContentValueSetValidator() - { - return new ContentValueSetValidator(false, true, PublicAccessService); - } - public virtual IContentValueSetValidator GetPublishedContentValueSetValidator() - { - return new ContentValueSetValidator(true, false, PublicAccessService); - } - /// - /// Returns the for the member indexer - /// - /// - public virtual IValueSetValidator GetMemberValueSetValidator() - { - return new MemberValueSetValidator(); - } } }