Injecting RuntimeState instead of using Current
This commit is contained in:
@@ -116,4 +116,4 @@
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
||||
</Project>
|
||||
@@ -34,6 +34,7 @@ namespace Umbraco.Examine
|
||||
/// <param name="defaultAnalyzer"></param>
|
||||
/// <param name="profilingLogger"></param>
|
||||
/// <param name="ioHelper"></param>
|
||||
/// <param name="runtimeState"></param>
|
||||
/// <param name="languageService"></param>
|
||||
/// <param name="validator"></param>
|
||||
/// <param name="indexValueTypes"></param>
|
||||
@@ -44,10 +45,11 @@ namespace Umbraco.Examine
|
||||
Analyzer defaultAnalyzer,
|
||||
IProfilingLogger profilingLogger,
|
||||
IIOHelper ioHelper,
|
||||
IRuntimeState runtimeState,
|
||||
ILocalizationService languageService,
|
||||
IContentValueSetValidator validator,
|
||||
IReadOnlyDictionary<string, IFieldValueTypeFactory> indexValueTypes = null)
|
||||
: base(name, luceneDirectory, fieldDefinitions, defaultAnalyzer, profilingLogger, ioHelper, validator, indexValueTypes)
|
||||
: base(name, luceneDirectory, fieldDefinitions, defaultAnalyzer, profilingLogger, ioHelper, runtimeState, validator, indexValueTypes)
|
||||
{
|
||||
if (validator == null) throw new ArgumentNullException(nameof(validator));
|
||||
LanguageService = languageService ?? throw new ArgumentNullException(nameof(languageService));
|
||||
|
||||
@@ -9,7 +9,6 @@ using Umbraco.Core;
|
||||
using Examine;
|
||||
using Examine.LuceneEngine;
|
||||
using Lucene.Net.Store;
|
||||
using Umbraco.Core.Composing;
|
||||
using Umbraco.Core.IO;
|
||||
using Umbraco.Core.Logging;
|
||||
using Directory = Lucene.Net.Store.Directory;
|
||||
@@ -22,6 +21,7 @@ namespace Umbraco.Examine
|
||||
/// </summary>
|
||||
public abstract class UmbracoExamineIndex : LuceneIndex, IUmbracoIndex, IIndexDiagnostics
|
||||
{
|
||||
private readonly IRuntimeState _runtimeState;
|
||||
// note
|
||||
// wrapping all operations that end up calling base.SafelyProcessQueueItems in a safe call
|
||||
// context because they will fork a thread/task/whatever which should *not* capture our
|
||||
@@ -50,6 +50,8 @@ namespace Umbraco.Examine
|
||||
/// <param name="luceneDirectory"></param>
|
||||
/// <param name="defaultAnalyzer"></param>
|
||||
/// <param name="profilingLogger"></param>
|
||||
/// <param name="ioHelper"></param>
|
||||
/// <param name="runtimeState"></param>
|
||||
/// <param name="validator"></param>
|
||||
/// <param name="indexValueTypes"></param>
|
||||
protected UmbracoExamineIndex(
|
||||
@@ -59,10 +61,12 @@ namespace Umbraco.Examine
|
||||
Analyzer defaultAnalyzer,
|
||||
IProfilingLogger profilingLogger,
|
||||
IIOHelper ioHelper,
|
||||
IRuntimeState runtimeState,
|
||||
IValueSetValidator validator = null,
|
||||
IReadOnlyDictionary<string, IFieldValueTypeFactory> indexValueTypes = null)
|
||||
: base(name, luceneDirectory, fieldDefinitions, defaultAnalyzer, validator, indexValueTypes)
|
||||
{
|
||||
_runtimeState = runtimeState;
|
||||
ProfilingLogger = profilingLogger ?? throw new ArgumentNullException(nameof(profilingLogger));
|
||||
|
||||
//try to set the value of `LuceneIndexFolder` for diagnostic reasons
|
||||
@@ -116,7 +120,7 @@ namespace Umbraco.Examine
|
||||
{
|
||||
// only affects indexers that are config file based, if an index was created via code then
|
||||
// this has no effect, it is assumed the index would not be created if it could not be initialized
|
||||
return _configBased == false || Current.RuntimeState.Level == RuntimeLevel.Run;
|
||||
return _configBased == false || _runtimeState.Level == RuntimeLevel.Run;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using Examine;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Core.Services.Implement;
|
||||
|
||||
namespace Umbraco.Examine
|
||||
{
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
using Examine;
|
||||
using Examine.LuceneEngine;
|
||||
using Lucene.Net.Analysis;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.IO;
|
||||
using Umbraco.Core.Logging;
|
||||
using Directory = Lucene.Net.Store.Directory;
|
||||
@@ -31,8 +32,9 @@ namespace Umbraco.Examine
|
||||
Analyzer analyzer,
|
||||
IProfilingLogger profilingLogger,
|
||||
IIOHelper ioHelper,
|
||||
IRuntimeState runtimeState,
|
||||
IValueSetValidator validator = null) :
|
||||
base(name, luceneDirectory, fieldDefinitions, analyzer, profilingLogger, ioHelper, validator)
|
||||
base(name, luceneDirectory, fieldDefinitions, analyzer, profilingLogger, ioHelper, runtimeState, validator)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -120,7 +120,7 @@ namespace Umbraco.Tests.PublishedContent
|
||||
var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance<PropertyEditorCollection>(), IndexInitializer.GetMockMediaService());
|
||||
|
||||
using (var luceneDir = new RandomIdRamDirectory())
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, luceneDir,
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir,
|
||||
validator: new ContentValueSetValidator(true)))
|
||||
using (indexer.ProcessNonAsync())
|
||||
{
|
||||
@@ -149,7 +149,7 @@ namespace Umbraco.Tests.PublishedContent
|
||||
var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance<PropertyEditorCollection>(), IndexInitializer.GetMockMediaService());
|
||||
|
||||
using (var luceneDir = new RandomIdRamDirectory())
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, luceneDir,
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir,
|
||||
//include unpublished content since this uses the 'internal' indexer, it's up to the media cache to filter
|
||||
validator: new ContentValueSetValidator(false)))
|
||||
using (indexer.ProcessNonAsync())
|
||||
@@ -197,7 +197,7 @@ namespace Umbraco.Tests.PublishedContent
|
||||
var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance<PropertyEditorCollection>(), IndexInitializer.GetMockMediaService());
|
||||
|
||||
using (var luceneDir = new RandomIdRamDirectory())
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, luceneDir,
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir,
|
||||
validator: new ContentValueSetValidator(true)))
|
||||
using (indexer.ProcessNonAsync())
|
||||
{
|
||||
@@ -225,7 +225,7 @@ namespace Umbraco.Tests.PublishedContent
|
||||
var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance<PropertyEditorCollection>(), IndexInitializer.GetMockMediaService());
|
||||
|
||||
using (var luceneDir = new RandomIdRamDirectory())
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, luceneDir,
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir,
|
||||
validator: new ContentValueSetValidator(true)))
|
||||
using (indexer.ProcessNonAsync())
|
||||
{
|
||||
@@ -253,7 +253,7 @@ namespace Umbraco.Tests.PublishedContent
|
||||
var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance<PropertyEditorCollection>(), IndexInitializer.GetMockMediaService());
|
||||
|
||||
using (var luceneDir = new RandomIdRamDirectory())
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, luceneDir,
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir,
|
||||
validator: new ContentValueSetValidator(true)))
|
||||
using (indexer.ProcessNonAsync())
|
||||
{
|
||||
@@ -282,7 +282,7 @@ namespace Umbraco.Tests.PublishedContent
|
||||
|
||||
|
||||
using (var luceneDir = new RandomIdRamDirectory())
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, luceneDir,
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir,
|
||||
validator: new ContentValueSetValidator(true)))
|
||||
using (indexer.ProcessNonAsync())
|
||||
{
|
||||
@@ -307,7 +307,7 @@ namespace Umbraco.Tests.PublishedContent
|
||||
var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance<PropertyEditorCollection>(), IndexInitializer.GetMockMediaService());
|
||||
|
||||
using (var luceneDir = new RandomIdRamDirectory())
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, luceneDir,
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir,
|
||||
validator: new ContentValueSetValidator(true)))
|
||||
using (indexer.ProcessNonAsync())
|
||||
{
|
||||
|
||||
@@ -12,12 +12,14 @@ using Umbraco.Core;
|
||||
using Umbraco.Core.Cache;
|
||||
using Umbraco.Core.Composing;
|
||||
using Umbraco.Core.Configuration;
|
||||
using Umbraco.Core.Configuration.UmbracoSettings;
|
||||
using Umbraco.Core.IO;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Models.Entities;
|
||||
using Umbraco.Core.PropertyEditors;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Core.Sync;
|
||||
using File = System.IO.File;
|
||||
|
||||
namespace Umbraco.Tests.TestHelpers
|
||||
@@ -37,6 +39,16 @@ namespace Umbraco.Tests.TestHelpers
|
||||
{
|
||||
return GetConfigsFactory().Create();
|
||||
}
|
||||
public static IRuntimeState GetRuntimeState()
|
||||
{
|
||||
return new RuntimeState(
|
||||
Mock.Of<ILogger>(),
|
||||
Mock.Of<IUmbracoSettingsSection>(),
|
||||
Mock.Of<IGlobalSettings>(),
|
||||
new Lazy<IMainDom>(),
|
||||
new Lazy<IServerRegistrar>(),
|
||||
TestHelper.GetUmbracoVersion());
|
||||
}
|
||||
|
||||
public static IConfigsFactory GetConfigsFactory()
|
||||
{
|
||||
|
||||
@@ -115,6 +115,7 @@ namespace Umbraco.Tests.Testing
|
||||
protected IMapperCollection Mappers => Factory.GetInstance<IMapperCollection>();
|
||||
|
||||
protected UmbracoMapper Mapper => Factory.GetInstance<UmbracoMapper>();
|
||||
protected IRuntimeState RuntimeState => ComponentTests.MockRuntimeState(RuntimeLevel.Run);
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ namespace Umbraco.Tests.UmbracoExamine
|
||||
public void Events_Ignoring_Node()
|
||||
{
|
||||
using (var luceneDir = new RandomIdRamDirectory())
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, luceneDir,
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir,
|
||||
//make parent id 999 so all are ignored
|
||||
validator: new ContentValueSetValidator(false, 999)))
|
||||
using (indexer.ProcessNonAsync())
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
using System.IO;
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Composing;
|
||||
using Umbraco.Core.Configuration.UmbracoSettings;
|
||||
using Umbraco.Core.Logging;
|
||||
using Umbraco.Core.Logging.Serilog;
|
||||
using Umbraco.Core.Strings;
|
||||
using Umbraco.Tests.Components;
|
||||
using Umbraco.Tests.TestHelpers;
|
||||
|
||||
namespace Umbraco.Tests.UmbracoExamine
|
||||
@@ -21,6 +24,8 @@ namespace Umbraco.Tests.UmbracoExamine
|
||||
private IProfilingLogger _profilingLogger;
|
||||
protected override IProfilingLogger ProfilingLogger => _profilingLogger;
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// sets up resolvers before resolution is frozen
|
||||
/// </summary>
|
||||
|
||||
@@ -155,6 +155,7 @@ namespace Umbraco.Tests.UmbracoExamine
|
||||
public static UmbracoContentIndex GetUmbracoIndexer(
|
||||
IProfilingLogger profilingLogger,
|
||||
IIOHelper ioHelper,
|
||||
IRuntimeState runtimeState,
|
||||
Directory luceneDir,
|
||||
Analyzer analyzer = null,
|
||||
ILocalizationService languageService = null,
|
||||
@@ -176,6 +177,7 @@ namespace Umbraco.Tests.UmbracoExamine
|
||||
analyzer,
|
||||
profilingLogger,
|
||||
ioHelper,
|
||||
runtimeState,
|
||||
languageService,
|
||||
validator);
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace Umbraco.Tests.UmbracoExamine
|
||||
var contentValueSetBuilder = IndexInitializer.GetContentValueSetBuilder(Factory.GetInstance<PropertyEditorCollection>(), false);
|
||||
|
||||
using (var luceneDir = new RandomIdRamDirectory())
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, luceneDir,
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir,
|
||||
validator: new ContentValueSetValidator(false)))
|
||||
using (indexer.ProcessNonAsync())
|
||||
{
|
||||
@@ -125,7 +125,7 @@ namespace Umbraco.Tests.UmbracoExamine
|
||||
var mediaRebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance<PropertyEditorCollection>(), IndexInitializer.GetMockMediaService());
|
||||
|
||||
using (var luceneDir = new RandomIdRamDirectory())
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, luceneDir,
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir,
|
||||
validator: new ContentValueSetValidator(false)))
|
||||
using (indexer.ProcessNonAsync())
|
||||
{
|
||||
@@ -153,7 +153,7 @@ namespace Umbraco.Tests.UmbracoExamine
|
||||
|
||||
|
||||
using (var luceneDir = new RandomIdRamDirectory())
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, luceneDir))
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir))
|
||||
using (indexer.ProcessNonAsync())
|
||||
using (var searcher = ((LuceneSearcher)indexer.GetSearcher()).GetLuceneSearcher())
|
||||
{
|
||||
@@ -190,7 +190,7 @@ namespace Umbraco.Tests.UmbracoExamine
|
||||
var validator = new ContentValueSetValidator(false, 1116);
|
||||
|
||||
using (var luceneDir = new RandomIdRamDirectory())
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, luceneDir, validator: validator))
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir, validator: validator))
|
||||
using (indexer.ProcessNonAsync())
|
||||
{
|
||||
var searcher = indexer.GetSearcher();
|
||||
@@ -233,7 +233,7 @@ namespace Umbraco.Tests.UmbracoExamine
|
||||
var validator = new ContentValueSetValidator(false, 2222);
|
||||
|
||||
using (var luceneDir = new RandomIdRamDirectory())
|
||||
using (var indexer1 = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, luceneDir, validator: validator))
|
||||
using (var indexer1 = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir, validator: validator))
|
||||
using (indexer1.ProcessNonAsync())
|
||||
{
|
||||
var searcher = indexer1.GetSearcher();
|
||||
@@ -276,7 +276,7 @@ namespace Umbraco.Tests.UmbracoExamine
|
||||
{
|
||||
var rebuilder = IndexInitializer.GetContentIndexRebuilder(Factory.GetInstance<PropertyEditorCollection>(), IndexInitializer.GetMockContentService(), ScopeProvider.SqlContext, false);
|
||||
using (var luceneDir = new RandomIdRamDirectory())
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, luceneDir,
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir,
|
||||
validator: new ContentValueSetValidator(false)))
|
||||
using (indexer.ProcessNonAsync())
|
||||
{
|
||||
@@ -318,7 +318,7 @@ namespace Umbraco.Tests.UmbracoExamine
|
||||
var rebuilder = IndexInitializer.GetContentIndexRebuilder(Factory.GetInstance<PropertyEditorCollection>(), IndexInitializer.GetMockContentService(), ScopeProvider.SqlContext, false);
|
||||
|
||||
using (var luceneDir = new RandomIdRamDirectory())
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, luceneDir))
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir))
|
||||
using (indexer.ProcessNonAsync())
|
||||
{
|
||||
var searcher = indexer.GetSearcher();
|
||||
|
||||
@@ -58,7 +58,7 @@ namespace Umbraco.Tests.UmbracoExamine
|
||||
var rebuilder = IndexInitializer.GetContentIndexRebuilder(propertyEditors, contentService, ScopeProvider.SqlContext, true);
|
||||
|
||||
using (var luceneDir = new RandomIdRamDirectory())
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, luceneDir))
|
||||
using (var indexer = IndexInitializer.GetUmbracoIndexer(ProfilingLogger, IOHelper, RuntimeState, luceneDir))
|
||||
using (indexer.ProcessNonAsync())
|
||||
{
|
||||
indexer.CreateIndex();
|
||||
|
||||
@@ -9,6 +9,7 @@ using Examine;
|
||||
using Umbraco.Core;
|
||||
using Umbraco.Core.Composing;
|
||||
using Umbraco.Core.IO;
|
||||
using Umbraco.Web.PublishedCache.NuCache;
|
||||
|
||||
namespace Umbraco.Web.Search
|
||||
{
|
||||
@@ -26,18 +27,21 @@ namespace Umbraco.Web.Search
|
||||
IPublicAccessService publicAccessService,
|
||||
IMemberService memberService,
|
||||
IUmbracoIndexConfig umbracoIndexConfig,
|
||||
IIOHelper ioHelper) : base(typeFinder, ioHelper)
|
||||
IIOHelper ioHelper,
|
||||
IRuntimeState runtimeState) : base(typeFinder, ioHelper)
|
||||
{
|
||||
IOHelper = ioHelper;
|
||||
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;
|
||||
IOHelper = ioHelper ?? throw new System.ArgumentNullException(nameof(ioHelper));
|
||||
RuntimeState = runtimeState ?? throw new System.ArgumentNullException(nameof(runtimeState));
|
||||
}
|
||||
|
||||
protected IProfilingLogger ProfilingLogger { get; }
|
||||
protected IIOHelper IOHelper { get; }
|
||||
protected IRuntimeState RuntimeState { get; }
|
||||
protected ILocalizationService LanguageService { get; }
|
||||
protected IPublicAccessService PublicAccessService { get; }
|
||||
protected IMemberService MemberService { get; }
|
||||
@@ -66,6 +70,7 @@ namespace Umbraco.Web.Search
|
||||
new CultureInvariantWhitespaceAnalyzer(),
|
||||
ProfilingLogger,
|
||||
IOHelper,
|
||||
RuntimeState,
|
||||
LanguageService,
|
||||
GetContentValueSetValidator()
|
||||
);
|
||||
@@ -81,6 +86,7 @@ namespace Umbraco.Web.Search
|
||||
new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30),
|
||||
ProfilingLogger,
|
||||
IOHelper,
|
||||
RuntimeState,
|
||||
LanguageService,
|
||||
GetPublishedContentValueSetValidator());
|
||||
return index;
|
||||
@@ -95,6 +101,7 @@ namespace Umbraco.Web.Search
|
||||
new CultureInvariantWhitespaceAnalyzer(),
|
||||
ProfilingLogger,
|
||||
IOHelper,
|
||||
RuntimeState,
|
||||
GetMemberValueSetValidator()
|
||||
);
|
||||
return index;
|
||||
|
||||
Reference in New Issue
Block a user