Moving around some handler/driver machinary

Relocating IContentHandler imlementations that power IContentXxxDriver interfaces
Giving them component role suffix Coordinator
Merging two handlers into one content part driver coordinator

--HG--
branch : dev
This commit is contained in:
Louis DeJardin
2010-06-22 14:34:10 -07:00
parent 5db91c1689
commit 32d59676dc
10 changed files with 57 additions and 69 deletions

View File

@@ -5,21 +5,24 @@ using Moq;
using NUnit.Framework;
using Orchard.ContentManagement;
using Orchard.ContentManagement.Drivers;
using Orchard.ContentManagement.Drivers.Coordinators;
using Orchard.ContentManagement.Handlers;
using Orchard.Environment.AutofacUtil;
using Orchard.Mvc.ViewModels;
using Orchard.Tests.Utility;
using Orchard.UI.Zones;
namespace Orchard.Tests.ContentManagement {
namespace Orchard.Tests.ContentManagement.Handlers.Coordinators {
[TestFixture]
public class ContentPartDriverHandlerTests {
public class ContentPartDriverCoordinatorTests {
private IContainer _container;
[SetUp]
public void Init() {
var builder = new ContainerBuilder();
//builder.RegisterModule(new ImplicitCollectionSupportModule());
builder.RegisterType<ContentPartDriverHandler>().As<IContentHandler>();
builder.RegisterType<ContentPartDriverCoordinator>().As<IContentHandler>();
builder.RegisterAutoMocking();
_container = builder.Build();
}

View File

@@ -168,7 +168,7 @@
<Compile Include="ContentManagement\Models\Phi.cs" />
<Compile Include="ContentManagement\Models\Styled.cs" />
<Compile Include="ContentManagement\Models\StyledHandler.cs" />
<Compile Include="ContentManagement\ContentPartDriverHandlerTests.cs">
<Compile Include="ContentManagement\Handlers\Coordinators\ContentPartDriverCoordinatorTests.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="ContentManagement\Records\DeltaRecord.cs">

View File

@@ -7,16 +7,14 @@ using Orchard.Localization;
using Orchard.Localization.Services;
using Orchard.ContentManagement;
namespace Orchard.Search.Services
{
public class SearchService : ISearchService
{
private readonly IContentManager _contentManager;
namespace Orchard.Search.Services {
public class SearchService : ISearchService {
private readonly IIndexManager _indexManager;
private readonly ICultureManager _cultureManager;
public SearchService(IOrchardServices services, IContentManager contentManager, ICultureManager cultureManager) {
public SearchService(IOrchardServices services, IIndexManager indexManager, ICultureManager cultureManager) {
Services = services;
_contentManager = contentManager;
_indexManager = indexManager;
_cultureManager = cultureManager;
T = NullLocalizer.Instance;
}
@@ -24,14 +22,20 @@ namespace Orchard.Search.Services
public IOrchardServices Services { get; set; }
public Localizer T { get; set; }
ISearchBuilder Search() {
return _indexManager.HasIndexProvider()
? _indexManager.GetSearchIndexProvider().CreateSearchBuilder("Search")
: new NullSearchBuilder();
}
IPageOfItems<T> ISearchService.Query<T>(string query, int page, int? pageSize, bool filterCulture, string[] searchFields, Func<ISearchHit, T> shapeResult) {
if (string.IsNullOrWhiteSpace(query))
return null;
var searchBuilder = _contentManager.Search().Parse(searchFields, query);
var searchBuilder = Search().Parse(searchFields, query);
if ( filterCulture ) {
if (filterCulture) {
var culture = _cultureManager.GetSiteCulture();
// use LCID as the text representation gets analyzed by the query parser
@@ -48,7 +52,7 @@ namespace Orchard.Search.Services
var pageOfItems = new PageOfItems<T>(searchBuilder.Search().Select(shapeResult)) {
PageNumber = page,
PageSize = pageSize != null ? (int) pageSize : totalCount,
PageSize = pageSize != null ? (int)pageSize : totalCount,
TotalItemCount = totalCount
};

View File

@@ -18,7 +18,6 @@ namespace Orchard.ContentManagement {
private readonly IRepository<ContentItemVersionRecord> _contentItemVersionRepository;
private readonly IContentDefinitionManager _contentDefinitionManager;
private readonly Func<IContentManagerSession> _contentManagerSession;
private readonly IIndexManager _indexManager;
public DefaultContentManager(
IComponentContext context,
@@ -26,15 +25,13 @@ namespace Orchard.ContentManagement {
IRepository<ContentItemRecord> contentItemRepository,
IRepository<ContentItemVersionRecord> contentItemVersionRepository,
IContentDefinitionManager contentDefinitionManager,
Func<IContentManagerSession> contentManagerSession,
IIndexManager indexManager) {
Func<IContentManagerSession> contentManagerSession) {
_context = context;
_contentTypeRepository = contentTypeRepository;
_contentItemRepository = contentItemRepository;
_contentItemVersionRepository = contentItemVersionRepository;
_contentDefinitionManager = contentDefinitionManager;
_contentManagerSession = contentManagerSession;
_indexManager = indexManager;
}
private IEnumerable<IContentHandler> _handlers;
@@ -447,10 +444,10 @@ namespace Orchard.ContentManagement {
}
}
public ISearchBuilder Search() {
return _indexManager.HasIndexProvider()
? _indexManager.GetSearchIndexProvider().CreateSearchBuilder("Search")
: new NullSearchBuilder();
}
//public ISearchBuilder Search() {
// return _indexManager.HasIndexProvider()
// ? _indexManager.GetSearchIndexProvider().CreateSearchBuilder("Search")
// : new NullSearchBuilder();
//}
}
}

View File

@@ -3,12 +3,12 @@ using JetBrains.Annotations;
using Orchard.ContentManagement.Handlers;
using Orchard.Logging;
namespace Orchard.ContentManagement.Drivers {
namespace Orchard.ContentManagement.Drivers.Coordinators {
[UsedImplicitly]
public class ContentFieldDriverHandler : ContentHandlerBase {
public class ContentFieldDriverCoordinator : ContentHandlerBase {
private readonly IEnumerable<IContentFieldDriver> _drivers;
public ContentFieldDriverHandler(IEnumerable<IContentFieldDriver> drivers) {
public ContentFieldDriverCoordinator(IEnumerable<IContentFieldDriver> drivers) {
_drivers = drivers;
Logger = NullLogger.Instance;
}

View File

@@ -3,12 +3,12 @@ using JetBrains.Annotations;
using Orchard.ContentManagement.Handlers;
using Orchard.Logging;
namespace Orchard.ContentManagement.Drivers {
namespace Orchard.ContentManagement.Drivers.Coordinators {
[UsedImplicitly]
public class ContentItemDriverHandler : ContentHandlerBase {
public class ContentItemDriverCoordinator : ContentHandlerBase {
private readonly IEnumerable<IContentItemDriver> _drivers;
public ContentItemDriverHandler(IEnumerable<IContentItemDriver> drivers) {
public ContentItemDriverCoordinator(IEnumerable<IContentItemDriver> drivers) {
_drivers = drivers;
Logger = NullLogger.Instance;
}

View File

@@ -1,19 +1,37 @@
using System.Collections.Generic;
using System.Linq;
using JetBrains.Annotations;
using Orchard.ContentManagement.Handlers;
using Orchard.ContentManagement.MetaData;
using Orchard.Logging;
namespace Orchard.ContentManagement.Drivers {
namespace Orchard.ContentManagement.Drivers.Coordinators {
[UsedImplicitly]
public class ContentPartDriverHandler : ContentHandlerBase {
public class ContentPartDriverCoordinator : ContentHandlerBase {
private readonly IEnumerable<IContentPartDriver> _drivers;
private readonly IContentDefinitionManager _contentDefinitionManager;
public ContentPartDriverHandler(IEnumerable<IContentPartDriver> drivers) {
public ContentPartDriverCoordinator(IEnumerable<IContentPartDriver> drivers, IContentDefinitionManager contentDefinitionManager) {
_drivers = drivers;
_contentDefinitionManager = contentDefinitionManager;
Logger = NullLogger.Instance;
}
public ILogger Logger { get; set; }
public override void Activating(ActivatingContentContext context) {
var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(context.ContentType);
if (contentTypeDefinition == null)
return;
foreach (var partInfo in _drivers.SelectMany(cpp => cpp.GetPartInfo())) {
var partName = partInfo.PartName;
var typePartDefinition = contentTypeDefinition.Parts.FirstOrDefault(p => p.PartDefinition.Name == partName);
if (typePartDefinition != null) {
context.Builder.Weld(partInfo.Factory(typePartDefinition));
}
}
}
public override void BuildDisplayModel(BuildDisplayModelContext context) {
_drivers.Invoke(driver => {

View File

@@ -20,7 +20,6 @@ namespace Orchard.ContentManagement {
void Remove(ContentItem contentItem);
void Index(ContentItem contentItem, IDocumentIndex documentIndex);
ISearchBuilder Search();
void Flush();
IContentQuery<ContentItem> Query();

View File

@@ -1,30 +0,0 @@
using System.Collections.Generic;
using System.Linq;
using Orchard.ContentManagement.Handlers;
using Orchard.ContentManagement.Drivers;
namespace Orchard.ContentManagement.MetaData {
public class ContentPartHandler : ContentHandlerBase {
private readonly IEnumerable<IContentPartDriver> _contentPartDrivers;
private readonly IContentDefinitionManager _contentDefinitionManager;
public ContentPartHandler(IEnumerable<IContentPartDriver> contentPartDrivers, IContentDefinitionManager contentDefinitionManager) {
_contentPartDrivers = contentPartDrivers;
_contentDefinitionManager = contentDefinitionManager;
}
public override void Activating(ActivatingContentContext context) {
var contentTypeDefinition = _contentDefinitionManager.GetTypeDefinition(context.ContentType);
if (contentTypeDefinition == null)
return;
foreach (var partInfo in _contentPartDrivers.SelectMany(cpp => cpp.GetPartInfo())) {
var partName = partInfo.PartName;
var typePartDefinition = contentTypeDefinition.Parts.FirstOrDefault(p => p.PartDefinition.Name == partName);
if (typePartDefinition != null) {
context.Builder.Weld(partInfo.Factory(typePartDefinition));
}
}
}
}
}

View File

@@ -172,11 +172,11 @@
<SubType>Code</SubType>
</Compile>
<Compile Include="ContentManagement\Drivers\ContentFieldDriver.cs" />
<Compile Include="ContentManagement\Drivers\ContentFieldDriverHandler.cs" />
<Compile Include="ContentManagement\Drivers\Coordinators\ContentFieldDriverCoordinator.cs" />
<Compile Include="ContentManagement\Drivers\ContentItemDriver.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="ContentManagement\Drivers\ContentItemDriverHandler.cs">
<Compile Include="ContentManagement\Drivers\Coordinators\ContentItemDriverCoordinator.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="ContentManagement\Drivers\ContentItemTemplateResult.cs">
@@ -185,7 +185,7 @@
<Compile Include="ContentManagement\Drivers\ContentPartDriver.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="ContentManagement\Drivers\ContentPartDriverHandler.cs">
<Compile Include="ContentManagement\Drivers\Coordinators\ContentPartDriverCoordinator.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="ContentManagement\Drivers\ContentTemplateResult.cs" />
@@ -299,9 +299,6 @@
<Compile Include="ContentManagement\MetaData\Builders\ContentPartDefinitionBuilder.cs" />
<Compile Include="ContentManagement\MetaData\Builders\ContentTypeDefinitionBuilder.cs" />
<Compile Include="ContentManagement\MetaData\ContentFieldInfo.cs" />
<Compile Include="ContentManagement\MetaData\ContentPartHandler.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="ContentManagement\MetaData\ContentPartInfo.cs">
<SubType>Code</SubType>
</Compile>