Cleans up the BaseValueSetBuilder

This commit is contained in:
Shannon
2018-11-28 14:46:45 +11:00
parent e3548efed4
commit a7f6985b38
6 changed files with 35 additions and 35 deletions
+9 -4
View File
@@ -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
/// <inheritdoc />
public abstract class BaseValueSetBuilder<TContent> : IValueSetBuilder<TContent>
where TContent : IContentBase
{
private readonly PropertyEditorCollection _propertyEditors;
public BaseValueSetBuilder(PropertyEditorCollection propertyEditors)
protected BaseValueSetBuilder(PropertyEditorCollection propertyEditors)
{
_propertyEditors = propertyEditors ?? throw new System.ArgumentNullException(nameof(propertyEditors));
}
/// <inheritdoc />
public abstract IEnumerable<ValueSet> GetValueSets(params TContent[] content);
protected void AddPropertyValue(Property property, string culture, string segment, IDictionary<string, object[]> values)
{
var editor = _propertyEditors[property.PropertyType.PropertyEditorAlias];
@@ -57,8 +64,6 @@ namespace Umbraco.Examine
}
}
}
}
}
+3 -11
View File
@@ -8,9 +8,8 @@ using Umbraco.Core.Strings;
namespace Umbraco.Examine
{
public class ContentValueSetBuilder : BaseValueSetBuilder, IValueSetBuilder<IContent>
public class ContentValueSetBuilder : BaseValueSetBuilder<IContent>
{
private readonly PropertyEditorCollection _propertyEditors;
private readonly IEnumerable<IUrlSegmentProvider> _urlSegmentProviders;
private readonly IUserService _userService;
@@ -19,19 +18,12 @@ namespace Umbraco.Examine
IUserService userService)
: base(propertyEditors)
{
_propertyEditors = propertyEditors;
_urlSegmentProviders = urlSegmentProviders;
_userService = userService;
}
/// <summary>
/// Creates a collection of <see cref="ValueSet"/> for a <see cref="IContent"/> collection
/// </summary>
/// <param name="urlSegmentProviders"></param>
/// <param name="userService"></param>
/// <param name="content"></param>
/// <returns>Yield returns <see cref="ValueSet"/></returns>
public IEnumerable<ValueSet> GetValueSets(params IContent[] content)
/// <inheritdoc />
public override IEnumerable<ValueSet> 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
+10 -1
View File
@@ -4,9 +4,18 @@ using Umbraco.Core.Models;
namespace Umbraco.Examine
{
public interface IValueSetBuilder<TContent>
/// <summary>
/// Creates a collection of <see cref="ValueSet"/> to be indexed based on a collection of <see cref="TContent"/>
/// </summary>
/// <typeparam name="TContent"></typeparam>
public interface IValueSetBuilder<in TContent>
where TContent : IContentBase
{
/// <summary>
/// Creates a collection of <see cref="ValueSet"/> to be indexed based on a collection of <see cref="TContent"/>
/// </summary>
/// <param name="content"></param>
/// <returns></returns>
IEnumerable<ValueSet> GetValueSets(params TContent[] content);
}
+3 -2
View File
@@ -8,7 +8,7 @@ using Umbraco.Core.Strings;
namespace Umbraco.Examine
{
public class MediaValueSetBuilder : BaseValueSetBuilder, IValueSetBuilder<IMedia>
public class MediaValueSetBuilder : BaseValueSetBuilder<IMedia>
{
private readonly IEnumerable<IUrlSegmentProvider> _urlSegmentProviders;
private readonly IUserService _userService;
@@ -22,7 +22,8 @@ namespace Umbraco.Examine
_userService = userService;
}
public IEnumerable<ValueSet> GetValueSets(params IMedia[] media)
/// <inheritdoc />
public override IEnumerable<ValueSet> GetValueSets(params IMedia[] media)
{
foreach (var m in media)
{
+3 -2
View File
@@ -7,14 +7,15 @@ using Umbraco.Core.PropertyEditors;
namespace Umbraco.Examine
{
public class MemberValueSetBuilder : BaseValueSetBuilder, IValueSetBuilder<IMember>
public class MemberValueSetBuilder : BaseValueSetBuilder<IMember>
{
public MemberValueSetBuilder(PropertyEditorCollection propertyEditors)
: base(propertyEditors)
{
}
public IEnumerable<ValueSet> GetValueSets(params IMember[] members)
/// <inheritdoc />
public override IEnumerable<ValueSet> GetValueSets(params IMember[] members)
{
foreach (var m in members)
{
+7 -15
View File
@@ -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<IContent> _contentValueSetBuilder;
private IValueSetBuilder<IMedia> _mediaValueSetBuilder;
private IValueSetBuilder<IMember> _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<IBackgroundTask> _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<IContent> contentValueSetBuilder,
IValueSetBuilder<IMedia> mediaValueSetBuilder,
IValueSetBuilder<IMember> memberValueSetBuilder,
ContentIndexPopulator contentIndexPopulator, PublishedContentIndexPopulator publishedContentIndexPopulator,
MediaIndexPopulator mediaIndexPopulator)
IValueSetBuilder<IMember> 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);
}
/// <summary>
/// Called to rebuild empty indexes on startup
/// </summary>
/// <param name="indexRebuilder"></param>
/// <param name="logger"></param>
/// <param name="onlyEmptyIndexes"></param>
/// <param name="waitMilliseconds"></param>
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)
{