diff --git a/src/Umbraco.Examine/BaseValueSetBuilder.cs b/src/Umbraco.Examine/BaseValueSetBuilder.cs
index 043e017754..d0c6069add 100644
--- a/src/Umbraco.Examine/BaseValueSetBuilder.cs
+++ b/src/Umbraco.Examine/BaseValueSetBuilder.cs
@@ -1,20 +1,27 @@
using System.Collections.Generic;
using System.Linq;
+using Examine;
using Umbraco.Core;
using Umbraco.Core.Models;
using Umbraco.Core.PropertyEditors;
namespace Umbraco.Examine
{
- public abstract class BaseValueSetBuilder
+
+ ///
+ public abstract class BaseValueSetBuilder : IValueSetBuilder
+ where TContent : IContentBase
{
private readonly PropertyEditorCollection _propertyEditors;
- public BaseValueSetBuilder(PropertyEditorCollection propertyEditors)
+ protected BaseValueSetBuilder(PropertyEditorCollection propertyEditors)
{
_propertyEditors = propertyEditors ?? throw new System.ArgumentNullException(nameof(propertyEditors));
}
+ ///
+ public abstract IEnumerable GetValueSets(params TContent[] content);
+
protected void AddPropertyValue(Property property, string culture, string segment, IDictionary values)
{
var editor = _propertyEditors[property.PropertyType.PropertyEditorAlias];
@@ -57,8 +64,6 @@ namespace Umbraco.Examine
}
}
}
-
-
}
}
diff --git a/src/Umbraco.Examine/ContentValueSetBuilder.cs b/src/Umbraco.Examine/ContentValueSetBuilder.cs
index ec52bbbd4f..258f24c21e 100644
--- a/src/Umbraco.Examine/ContentValueSetBuilder.cs
+++ b/src/Umbraco.Examine/ContentValueSetBuilder.cs
@@ -8,9 +8,8 @@ using Umbraco.Core.Strings;
namespace Umbraco.Examine
{
- public class ContentValueSetBuilder : BaseValueSetBuilder, IValueSetBuilder
+ public class ContentValueSetBuilder : BaseValueSetBuilder
{
- private readonly PropertyEditorCollection _propertyEditors;
private readonly IEnumerable _urlSegmentProviders;
private readonly IUserService _userService;
@@ -19,19 +18,12 @@ namespace Umbraco.Examine
IUserService userService)
: base(propertyEditors)
{
- _propertyEditors = propertyEditors;
_urlSegmentProviders = urlSegmentProviders;
_userService = userService;
}
- ///
- /// Creates a collection of for a collection
- ///
- ///
- ///
- ///
- /// Yield returns
- public IEnumerable GetValueSets(params IContent[] content)
+ ///
+ public override IEnumerable GetValueSets(params IContent[] content)
{
//TODO: There is a lot of boxing going on here and ultimately all values will be boxed by Lucene anyways
// but I wonder if there's a way to reduce the boxing that we have to do or if it will matter in the end since
diff --git a/src/Umbraco.Examine/IValueSetBuilder.cs b/src/Umbraco.Examine/IValueSetBuilder.cs
index 6b1a372e09..89aa907926 100644
--- a/src/Umbraco.Examine/IValueSetBuilder.cs
+++ b/src/Umbraco.Examine/IValueSetBuilder.cs
@@ -4,9 +4,18 @@ using Umbraco.Core.Models;
namespace Umbraco.Examine
{
- public interface IValueSetBuilder
+ ///
+ /// Creates a collection of to be indexed based on a collection of
+ ///
+ ///
+ public interface IValueSetBuilder
where TContent : IContentBase
{
+ ///
+ /// Creates a collection of to be indexed based on a collection of
+ ///
+ ///
+ ///
IEnumerable GetValueSets(params TContent[] content);
}
diff --git a/src/Umbraco.Examine/MediaValueSetBuilder.cs b/src/Umbraco.Examine/MediaValueSetBuilder.cs
index 6758d29f53..f162c07f59 100644
--- a/src/Umbraco.Examine/MediaValueSetBuilder.cs
+++ b/src/Umbraco.Examine/MediaValueSetBuilder.cs
@@ -8,7 +8,7 @@ using Umbraco.Core.Strings;
namespace Umbraco.Examine
{
- public class MediaValueSetBuilder : BaseValueSetBuilder, IValueSetBuilder
+ public class MediaValueSetBuilder : BaseValueSetBuilder
{
private readonly IEnumerable _urlSegmentProviders;
private readonly IUserService _userService;
@@ -22,7 +22,8 @@ namespace Umbraco.Examine
_userService = userService;
}
- public IEnumerable GetValueSets(params IMedia[] media)
+ ///
+ public override IEnumerable GetValueSets(params IMedia[] media)
{
foreach (var m in media)
{
diff --git a/src/Umbraco.Examine/MemberValueSetBuilder.cs b/src/Umbraco.Examine/MemberValueSetBuilder.cs
index 50f4ee6992..fb6cb6f967 100644
--- a/src/Umbraco.Examine/MemberValueSetBuilder.cs
+++ b/src/Umbraco.Examine/MemberValueSetBuilder.cs
@@ -7,14 +7,15 @@ using Umbraco.Core.PropertyEditors;
namespace Umbraco.Examine
{
- public class MemberValueSetBuilder : BaseValueSetBuilder, IValueSetBuilder
+ public class MemberValueSetBuilder : BaseValueSetBuilder
{
public MemberValueSetBuilder(PropertyEditorCollection propertyEditors)
: base(propertyEditors)
{
}
- public IEnumerable GetValueSets(params IMember[] members)
+ ///
+ public override IEnumerable GetValueSets(params IMember[] members)
{
foreach (var m in members)
{
diff --git a/src/Umbraco.Web/Search/ExamineComponent.cs b/src/Umbraco.Web/Search/ExamineComponent.cs
index 2b2a1f1938..752440a4dc 100644
--- a/src/Umbraco.Web/Search/ExamineComponent.cs
+++ b/src/Umbraco.Web/Search/ExamineComponent.cs
@@ -1,5 +1,4 @@
using System;
-using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
@@ -17,17 +16,13 @@ using Umbraco.Core.PropertyEditors;
using Umbraco.Core.Scoping;
using Umbraco.Core.Services;
using Umbraco.Core.Services.Changes;
-using Umbraco.Core.Strings;
using Umbraco.Core.Sync;
using Umbraco.Web.Cache;
-using Umbraco.Web.PropertyEditors;
using Umbraco.Examine;
using Umbraco.Core.Persistence.DatabaseModelDefinitions;
using Umbraco.Web.Scheduling;
using System.Threading.Tasks;
-using Umbraco.Core.Persistence;
using Umbraco.Core.Composing;
-using LightInject;
namespace Umbraco.Web.Search
{
@@ -42,15 +37,13 @@ namespace Umbraco.Web.Search
private IValueSetBuilder _contentValueSetBuilder;
private IValueSetBuilder _mediaValueSetBuilder;
private IValueSetBuilder _memberValueSetBuilder;
- private ContentIndexPopulator _contentIndexPopulator;
- private MediaIndexPopulator _mediaIndexPopulator;
private static bool _disableExamineIndexing = false;
private static volatile bool _isConfigured = false;
private static readonly object IsConfiguredLocker = new object();
private IScopeProvider _scopeProvider;
private ServiceContext _services;
private static BackgroundTaskRunner _rebuildOnStartupRunner;
- private static readonly object _rebuildLocker = new object();
+ private static readonly object RebuildLocker = new object();
// the default enlist priority is 100
// enlist with a lower priority to ensure that anything "default" runs after us
@@ -77,15 +70,11 @@ namespace Umbraco.Web.Search
IndexRebuilder indexRebuilder, ServiceContext services,
IValueSetBuilder contentValueSetBuilder,
IValueSetBuilder mediaValueSetBuilder,
- IValueSetBuilder memberValueSetBuilder,
- ContentIndexPopulator contentIndexPopulator, PublishedContentIndexPopulator publishedContentIndexPopulator,
- MediaIndexPopulator mediaIndexPopulator)
+ IValueSetBuilder memberValueSetBuilder)
{
_services = services;
_scopeProvider = scopeProvider;
_examineManager = examineManager;
- _contentIndexPopulator = contentIndexPopulator;
- _mediaIndexPopulator = mediaIndexPopulator;
_contentValueSetBuilder = contentValueSetBuilder;
_mediaValueSetBuilder = mediaValueSetBuilder;
_memberValueSetBuilder = memberValueSetBuilder;
@@ -149,17 +138,20 @@ namespace Umbraco.Web.Search
RebuildIndexes(indexRebuilder, profilingLogger.Logger, true, 5000);
}
-
+
///
/// Called to rebuild empty indexes on startup
///
+ ///
///
+ ///
+ ///
public static void RebuildIndexes(IndexRebuilder indexRebuilder, ILogger logger, bool onlyEmptyIndexes, int waitMilliseconds = 0)
{
//TODO: need a way to disable rebuilding on startup
- lock(_rebuildLocker)
+ lock(RebuildLocker)
{
if (_rebuildOnStartupRunner != null && _rebuildOnStartupRunner.IsRunning)
{