diff --git a/src/Umbraco.Examine/Umbraco.Examine.csproj b/src/Umbraco.Examine/Umbraco.Examine.csproj
index 3b77b20d42..ca2a9cec22 100644
--- a/src/Umbraco.Examine/Umbraco.Examine.csproj
+++ b/src/Umbraco.Examine/Umbraco.Examine.csproj
@@ -116,4 +116,4 @@
-
+
\ No newline at end of file
diff --git a/src/Umbraco.Examine/UmbracoContentIndex.cs b/src/Umbraco.Examine/UmbracoContentIndex.cs
index f160e56a41..33fd2d0ee7 100644
--- a/src/Umbraco.Examine/UmbracoContentIndex.cs
+++ b/src/Umbraco.Examine/UmbracoContentIndex.cs
@@ -34,6 +34,7 @@ namespace Umbraco.Examine
///
///
///
+ ///
///
///
///
@@ -44,10 +45,11 @@ namespace Umbraco.Examine
Analyzer defaultAnalyzer,
IProfilingLogger profilingLogger,
IIOHelper ioHelper,
+ IRuntimeState runtimeState,
ILocalizationService languageService,
IContentValueSetValidator validator,
IReadOnlyDictionary 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));
diff --git a/src/Umbraco.Examine/UmbracoExamineIndex.cs b/src/Umbraco.Examine/UmbracoExamineIndex.cs
index bfc6189a13..f7dfcf6375 100644
--- a/src/Umbraco.Examine/UmbracoExamineIndex.cs
+++ b/src/Umbraco.Examine/UmbracoExamineIndex.cs
@@ -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
///
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
///
///
///
+ ///
+ ///
///
///
protected UmbracoExamineIndex(
@@ -59,10 +61,12 @@ namespace Umbraco.Examine
Analyzer defaultAnalyzer,
IProfilingLogger profilingLogger,
IIOHelper ioHelper,
+ IRuntimeState runtimeState,
IValueSetValidator validator = null,
IReadOnlyDictionary 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;
}
///
diff --git a/src/Umbraco.Examine/UmbracoIndexConfig.cs b/src/Umbraco.Examine/UmbracoIndexConfig.cs
index 7ad9c638d3..a840c730ea 100644
--- a/src/Umbraco.Examine/UmbracoIndexConfig.cs
+++ b/src/Umbraco.Examine/UmbracoIndexConfig.cs
@@ -1,6 +1,5 @@
using Examine;
using Umbraco.Core.Services;
-using Umbraco.Core.Services.Implement;
namespace Umbraco.Examine
{
diff --git a/src/Umbraco.Examine/UmbracoMemberIndex.cs b/src/Umbraco.Examine/UmbracoMemberIndex.cs
index 69071855e3..494c661062 100644
--- a/src/Umbraco.Examine/UmbracoMemberIndex.cs
+++ b/src/Umbraco.Examine/UmbracoMemberIndex.cs
@@ -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)
{
}
diff --git a/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs b/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs
index f2959c7e31..8122113516 100644
--- a/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs
+++ b/src/Umbraco.Tests/PublishedContent/PublishedMediaTests.cs
@@ -120,7 +120,7 @@ namespace Umbraco.Tests.PublishedContent
var rebuilder = IndexInitializer.GetMediaIndexRebuilder(Factory.GetInstance(), 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(), 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(), 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(), 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(), 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(), 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())
{
diff --git a/src/Umbraco.Tests/TestHelpers/TestHelper.cs b/src/Umbraco.Tests/TestHelpers/TestHelper.cs
index 9bcbf687d4..64794fcea9 100644
--- a/src/Umbraco.Tests/TestHelpers/TestHelper.cs
+++ b/src/Umbraco.Tests/TestHelpers/TestHelper.cs
@@ -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(),
+ Mock.Of(),
+ Mock.Of(),
+ new Lazy(),
+ new Lazy(),
+ TestHelper.GetUmbracoVersion());
+ }
public static IConfigsFactory GetConfigsFactory()
{
diff --git a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs
index 85e57df451..44f19f4540 100644
--- a/src/Umbraco.Tests/Testing/UmbracoTestBase.cs
+++ b/src/Umbraco.Tests/Testing/UmbracoTestBase.cs
@@ -115,6 +115,7 @@ namespace Umbraco.Tests.Testing
protected IMapperCollection Mappers => Factory.GetInstance();
protected UmbracoMapper Mapper => Factory.GetInstance();
+ protected IRuntimeState RuntimeState => ComponentTests.MockRuntimeState(RuntimeLevel.Run);
#endregion
diff --git a/src/Umbraco.Tests/UmbracoExamine/EventsTest.cs b/src/Umbraco.Tests/UmbracoExamine/EventsTest.cs
index 2f4208ab2b..20e774c78a 100644
--- a/src/Umbraco.Tests/UmbracoExamine/EventsTest.cs
+++ b/src/Umbraco.Tests/UmbracoExamine/EventsTest.cs
@@ -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())
diff --git a/src/Umbraco.Tests/UmbracoExamine/ExamineBaseTest.cs b/src/Umbraco.Tests/UmbracoExamine/ExamineBaseTest.cs
index 5be3fe2e7e..ce3e45c23f 100644
--- a/src/Umbraco.Tests/UmbracoExamine/ExamineBaseTest.cs
+++ b/src/Umbraco.Tests/UmbracoExamine/ExamineBaseTest.cs
@@ -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;
+
+
///
/// sets up resolvers before resolution is frozen
///
diff --git a/src/Umbraco.Tests/UmbracoExamine/IndexInitializer.cs b/src/Umbraco.Tests/UmbracoExamine/IndexInitializer.cs
index 03178f85ac..6dc96da007 100644
--- a/src/Umbraco.Tests/UmbracoExamine/IndexInitializer.cs
+++ b/src/Umbraco.Tests/UmbracoExamine/IndexInitializer.cs
@@ -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);
diff --git a/src/Umbraco.Tests/UmbracoExamine/IndexTest.cs b/src/Umbraco.Tests/UmbracoExamine/IndexTest.cs
index e0a4f84486..f2d9ff626d 100644
--- a/src/Umbraco.Tests/UmbracoExamine/IndexTest.cs
+++ b/src/Umbraco.Tests/UmbracoExamine/IndexTest.cs
@@ -32,7 +32,7 @@ namespace Umbraco.Tests.UmbracoExamine
var contentValueSetBuilder = IndexInitializer.GetContentValueSetBuilder(Factory.GetInstance(), 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(), 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(), 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(), 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();
diff --git a/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs b/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs
index 91a7eb9799..fb6fa4c0c1 100644
--- a/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs
+++ b/src/Umbraco.Tests/UmbracoExamine/SearchTests.cs
@@ -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();
diff --git a/src/Umbraco.Web/Search/UmbracoIndexesCreator.cs b/src/Umbraco.Web/Search/UmbracoIndexesCreator.cs
index feeea2a12e..aad8303f40 100644
--- a/src/Umbraco.Web/Search/UmbracoIndexesCreator.cs
+++ b/src/Umbraco.Web/Search/UmbracoIndexesCreator.cs
@@ -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;