Updating ContentTypeService to new uow/repo approach.

Removing ServiceFactory as it won't be used.
Correcting constructors on ContentService for consistency.
This commit is contained in:
Morten Christensen
2012-12-14 12:33:14 -01:00
parent f9cffdd910
commit c711ed8542
5 changed files with 144 additions and 177 deletions

View File

@@ -24,18 +24,22 @@ namespace Umbraco.Core.Services
private readonly RepositoryFactory _repositoryFactory;
private HttpContextBase _httpContext;
public ContentService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory)
: this(provider, new PublishingStrategy(), repositoryFactory)
public ContentService(RepositoryFactory repositoryFactory)
: this(new PetaPocoUnitOfWorkProvider(), repositoryFactory, new PublishingStrategy())
{}
internal ContentService(IDatabaseUnitOfWorkProvider provider, IPublishingStrategy publishingStrategy, RepositoryFactory repositoryFactory)
public ContentService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory)
: this(provider, repositoryFactory, new PublishingStrategy())
{ }
internal ContentService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, IPublishingStrategy publishingStrategy)
{
_uowProvider = provider;
_publishingStrategy = publishingStrategy;
_repositoryFactory = repositoryFactory;
}
internal ContentService(IDatabaseUnitOfWorkProvider provider, IPublishingStrategy publishingStrategy, RepositoryFactory repositoryFactory, IUserService userService)
internal ContentService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, IPublishingStrategy publishingStrategy, IUserService userService)
{
_uowProvider = provider;
_publishingStrategy = publishingStrategy;
@@ -100,7 +104,6 @@ namespace Umbraco.Core.Services
{
return repository.Get(id);
}
}
/// <summary>

View File

@@ -5,11 +5,9 @@ using System.Text;
using System.Web;
using Umbraco.Core.Auditing;
using Umbraco.Core.Configuration;
using Umbraco.Core.Logging;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.Querying;
using Umbraco.Core.Persistence.Repositories;
using Umbraco.Core.Persistence.UnitOfWork;
namespace Umbraco.Core.Services
@@ -23,9 +21,7 @@ namespace Umbraco.Core.Services
private readonly IContentService _contentService;
private readonly IMediaService _mediaService;
private readonly IUserService _userService;
private readonly IDatabaseUnitOfWork _unitOfWork;
private readonly IContentTypeRepository _contentTypeRepository;
private readonly IMediaTypeRepository _mediaTypeRepository;
private readonly IDatabaseUnitOfWorkProvider _uowProvider;
private HttpContextBase _httpContext;
public ContentTypeService(RepositoryFactory repositoryFactory, IContentService contentService, IMediaService mediaService)
@@ -34,23 +30,19 @@ namespace Umbraco.Core.Services
public ContentTypeService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, IContentService contentService, IMediaService mediaService)
{
_uowProvider = provider;
_repositoryFactory = repositoryFactory;
_contentService = contentService;
_mediaService = mediaService;
_unitOfWork = provider.GetUnitOfWork();
_contentTypeRepository = _repositoryFactory.CreateContentTypeRepository(_unitOfWork);
_mediaTypeRepository = _repositoryFactory.CreateMediaTypeRepository(_unitOfWork);
}
internal ContentTypeService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, IContentService contentService, IMediaService mediaService, IUserService userService)
{
_uowProvider = provider;
_repositoryFactory = repositoryFactory;
_contentService = contentService;
_mediaService = mediaService;
_userService = userService;
_unitOfWork = provider.GetUnitOfWork();
_contentTypeRepository = _repositoryFactory.CreateContentTypeRepository(_unitOfWork);
_mediaTypeRepository = _repositoryFactory.CreateMediaTypeRepository(_unitOfWork);
}
/// <summary>
@@ -60,8 +52,10 @@ namespace Umbraco.Core.Services
/// <returns><see cref="IContentType"/></returns>
public IContentType GetContentType(int id)
{
var repository = _contentTypeRepository;
return repository.Get(id);
using (var repository = _repositoryFactory.CreateContentTypeRepository(_uowProvider.GetUnitOfWork()))
{
return repository.Get(id);
}
}
/// <summary>
@@ -71,12 +65,13 @@ namespace Umbraco.Core.Services
/// <returns><see cref="IContentType"/></returns>
public IContentType GetContentType(string alias)
{
var repository = _contentTypeRepository;
using (var repository = _repositoryFactory.CreateContentTypeRepository(_uowProvider.GetUnitOfWork()))
{
var query = Query<IContentType>.Builder.Where(x => x.Alias == alias);
var contentTypes = repository.GetByQuery(query);
var query = Query<IContentType>.Builder.Where(x => x.Alias == alias);
var contentTypes = repository.GetByQuery(query);
return contentTypes.FirstOrDefault();
return contentTypes.FirstOrDefault();
}
}
/// <summary>
@@ -86,8 +81,10 @@ namespace Umbraco.Core.Services
/// <returns>An Enumerable list of <see cref="IContentType"/> objects</returns>
public IEnumerable<IContentType> GetAllContentTypes(params int[] ids)
{
var repository = _contentTypeRepository;
return repository.GetAll(ids);
using (var repository = _repositoryFactory.CreateContentTypeRepository(_uowProvider.GetUnitOfWork()))
{
return repository.GetAll(ids);
}
}
/// <summary>
@@ -97,9 +94,12 @@ namespace Umbraco.Core.Services
/// <returns>An Enumerable list of <see cref="IContentType"/> objects</returns>
public IEnumerable<IContentType> GetContentTypeChildren(int id)
{
var query = Query<IContentType>.Builder.Where(x => x.ParentId == id);
var contentTypes = _contentTypeRepository.GetByQuery(query);
return contentTypes;
using (var repository = _repositoryFactory.CreateContentTypeRepository(_uowProvider.GetUnitOfWork()))
{
var query = Query<IContentType>.Builder.Where(x => x.ParentId == id);
var contentTypes = repository.GetByQuery(query);
return contentTypes;
}
}
/// <summary>
@@ -115,12 +115,17 @@ namespace Umbraco.Core.Services
if (!e.Cancel)
{
SetUser(contentType, userId);
_contentTypeRepository.AddOrUpdate(contentType);
_unitOfWork.Commit();
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateContentTypeRepository(uow))
{
SetUser(contentType, userId);
repository.AddOrUpdate(contentType);
if (Saved != null)
Saved(contentType, e);
uow.Commit();
if (Saved != null)
Saved(contentType, e);
}
Audit.Add(AuditTypes.Save, string.Format("Save ContentType performed by user"), userId == -1 ? 0 : userId, contentType.Id);
}
@@ -139,15 +144,20 @@ namespace Umbraco.Core.Services
if (!e.Cancel)
{
foreach (var contentType in contentTypes)
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateContentTypeRepository(uow))
{
SetUser(contentType, userId);
_contentTypeRepository.AddOrUpdate(contentType);
}
_unitOfWork.Commit();
foreach (var contentType in contentTypes)
{
SetUser(contentType, userId);
repository.AddOrUpdate(contentType);
}
if (Saved != null)
Saved(contentTypes, e);
uow.Commit();
if (Saved != null)
Saved(contentTypes, e);
}
Audit.Add(AuditTypes.Save, string.Format("Save ContentTypes performed by user"), userId == -1 ? 0 : userId, -1);
}
@@ -170,15 +180,19 @@ namespace Umbraco.Core.Services
if (!e.Cancel)
{
foreach (var content in contentTypes)
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateContentTypeRepository(uow))
{
content.Value.CreatorId = 0;
_contentTypeRepository.AddOrUpdate(content.Value);
_unitOfWork.Commit();
}
foreach (var content in contentTypes)
{
content.Value.CreatorId = 0;
repository.AddOrUpdate(content.Value);
uow.Commit();
}
if (Saved != null)
Saved(contentTypes, e);
if (Saved != null)
Saved(contentTypes, e);
}
Audit.Add(AuditTypes.Save, string.Format("Save (lazy) ContentTypes performed by user"), userId == -1 ? 0 : userId, -1);
}
@@ -200,13 +214,15 @@ namespace Umbraco.Core.Services
{
_contentService.DeleteContentOfType(contentType.Id);
var repository = _contentTypeRepository;
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateContentTypeRepository(uow))
{
repository.Delete(contentType);
uow.Commit();
repository.Delete(contentType);
_unitOfWork.Commit();
if (Deleted != null)
Deleted(contentType, e);
if (Deleted != null)
Deleted(contentType, e);
}
Audit.Add(AuditTypes.Delete, string.Format("Delete ContentType performed by user"), userId == -1 ? 0 : userId, contentType.Id);
}
@@ -234,16 +250,19 @@ namespace Umbraco.Core.Services
_contentService.DeleteContentOfType(contentType.Id);
}
var repository = _contentTypeRepository;
foreach (var contentType in contentTypeList)
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateContentTypeRepository(uow))
{
repository.Delete(contentType);
}
_unitOfWork.Commit();
foreach (var contentType in contentTypeList)
{
repository.Delete(contentType);
}
if (Deleted != null)
Deleted(contentTypes, e);
uow.Commit();
if (Deleted != null)
Deleted(contentTypes, e);
}
Audit.Add(AuditTypes.Delete, string.Format("Delete ContentTypes performed by user"), userId == -1 ? 0 : userId, -1);
}
@@ -256,8 +275,10 @@ namespace Umbraco.Core.Services
/// <returns><see cref="IMediaType"/></returns>
public IMediaType GetMediaType(int id)
{
var repository = _mediaTypeRepository;
return repository.Get(id);
using (var repository = _repositoryFactory.CreateMediaTypeRepository(_uowProvider.GetUnitOfWork()))
{
return repository.Get(id);
}
}
/// <summary>
@@ -267,12 +288,13 @@ namespace Umbraco.Core.Services
/// <returns><see cref="IMediaType"/></returns>
public IMediaType GetMediaType(string alias)
{
var repository = _mediaTypeRepository;
using (var repository = _repositoryFactory.CreateMediaTypeRepository(_uowProvider.GetUnitOfWork()))
{
var query = Query<IMediaType>.Builder.Where(x => x.Alias == alias);
var contentTypes = repository.GetByQuery(query);
var query = Query<IMediaType>.Builder.Where(x => x.Alias == alias);
var contentTypes = repository.GetByQuery(query);
return contentTypes.FirstOrDefault();
return contentTypes.FirstOrDefault();
}
}
/// <summary>
@@ -282,8 +304,10 @@ namespace Umbraco.Core.Services
/// <returns>An Enumerable list of <see cref="IMediaType"/> objects</returns>
public IEnumerable<IMediaType> GetAllMediaTypes(params int[] ids)
{
var repository = _mediaTypeRepository;
return repository.GetAll(ids);
using (var repository = _repositoryFactory.CreateMediaTypeRepository(_uowProvider.GetUnitOfWork()))
{
return repository.GetAll(ids);
}
}
/// <summary>
@@ -293,11 +317,12 @@ namespace Umbraco.Core.Services
/// <returns>An Enumerable list of <see cref="IMediaType"/> objects</returns>
public IEnumerable<IMediaType> GetMediaTypeChildren(int id)
{
var repository = _mediaTypeRepository;
var query = Query<IMediaType>.Builder.Where(x => x.ParentId == id);
var contentTypes = repository.GetByQuery(query);
return contentTypes;
using (var repository = _repositoryFactory.CreateMediaTypeRepository(_uowProvider.GetUnitOfWork()))
{
var query = Query<IMediaType>.Builder.Where(x => x.ParentId == id);
var contentTypes = repository.GetByQuery(query);
return contentTypes;
}
}
/// <summary>
@@ -313,12 +338,17 @@ namespace Umbraco.Core.Services
if (!e.Cancel)
{
SetUser(mediaType, userId);
_mediaTypeRepository.AddOrUpdate(mediaType);
_unitOfWork.Commit();
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateMediaTypeRepository(uow))
{
SetUser(mediaType, userId);
repository.AddOrUpdate(mediaType);
uow.Commit();
if (Saved != null)
Saved(mediaType, e);
if (Saved != null)
Saved(mediaType, e);
}
Audit.Add(AuditTypes.Save, string.Format("Save MediaType performed by user"), userId == -1 ? 0 : userId, mediaType.Id);
}
@@ -337,15 +367,20 @@ namespace Umbraco.Core.Services
if (!e.Cancel)
{
foreach (var mediaType in mediaTypes)
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateMediaTypeRepository(uow))
{
SetUser(mediaType, userId);
_mediaTypeRepository.AddOrUpdate(mediaType);
}
_unitOfWork.Commit();
if (Saved != null)
Saved(mediaTypes, e);
foreach (var mediaType in mediaTypes)
{
SetUser(mediaType, userId);
repository.AddOrUpdate(mediaType);
}
uow.Commit();
if (Saved != null)
Saved(mediaTypes, e);
}
Audit.Add(AuditTypes.Save, string.Format("Save MediaTypes performed by user"), userId == -1 ? 0 : userId, -1);
}
@@ -367,13 +402,16 @@ namespace Umbraco.Core.Services
{
_mediaService.DeleteMediaOfType(mediaType.Id);
var repository = _mediaTypeRepository;
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateMediaTypeRepository(uow))
{
repository.Delete(mediaType);
_unitOfWork.Commit();
repository.Delete(mediaType);
uow.Commit();
if (Deleted != null)
Deleted(mediaType, e);
if (Deleted != null)
Deleted(mediaType, e);
}
Audit.Add(AuditTypes.Delete, string.Format("Delete MediaType performed by user"), userId == -1 ? 0 : userId, mediaType.Id);
}
@@ -399,16 +437,18 @@ namespace Umbraco.Core.Services
_mediaService.DeleteMediaOfType(mediaType.Id);
}
var repository = _mediaTypeRepository;
foreach (var mediaType in mediaTypeList)
var uow = _uowProvider.GetUnitOfWork();
using (var repository = _repositoryFactory.CreateMediaTypeRepository(uow))
{
repository.Delete(mediaType);
}
_unitOfWork.Commit();
foreach (var mediaType in mediaTypeList)
{
repository.Delete(mediaType);
}
uow.Commit();
if (Deleted != null)
Deleted(mediaTypes, e);
if (Deleted != null)
Deleted(mediaTypes, e);
}
Audit.Add(AuditTypes.Delete, string.Format("Delete MediaTypes performed by user"), userId == -1 ? 0 : userId, -1);
}

View File

@@ -1,5 +1,3 @@
using System;
using System.Collections.Concurrent;
using Umbraco.Core.Persistence;
using Umbraco.Core.Persistence.UnitOfWork;
using Umbraco.Core.Publishing;
@@ -49,7 +47,7 @@ namespace Umbraco.Core.Services
_userService = new UserService(provider, repositoryFactory);
if (_contentService == null)
_contentService = new ContentService(provider, publishingStrategy, repositoryFactory, _userService);
_contentService = new ContentService(provider, repositoryFactory, publishingStrategy, _userService);
if(_mediaService == null)
_mediaService = new MediaService(provider, repositoryFactory);

View File

@@ -1,73 +0,0 @@
namespace Umbraco.Core.Services
{
///// <summary>
///// Represents the ServiceFactory, which provides access to the various services in
///// a non-singleton way.
///// </summary>
//public static class ServiceFactory
//{
// /// <summary>
// /// Gets the <see cref="IContentService"/>
// /// </summary>
// public static IContentService ContentService
// {
// get { return ServiceContext.Current.ContentService; }
// }
// /// <summary>
// /// Gets the <see cref="IContentTypeService"/>
// /// </summary>
// public static IContentTypeService ContentTypeService
// {
// get { return ServiceContext.Current.ContentTypeService; }
// }
// /// <summary>
// /// Gets the <see cref="IDataTypeService"/>
// /// </summary>
// public static IDataTypeService DataTypeService
// {
// get { return ServiceContext.Current.DataTypeService; }
// }
// /// <summary>
// /// Gets the <see cref="IFileService"/>
// /// </summary>
// public static IFileService FileService
// {
// get { return ServiceContext.Current.FileService; }
// }
// /// <summary>
// /// Gets the <see cref="ILocalizationService"/>
// /// </summary>
// public static ILocalizationService LocalizationService
// {
// get { return ServiceContext.Current.LocalizationService; }
// }
// /// <summary>
// /// Gets the <see cref="IMediaService"/>
// /// </summary>
// public static IMediaService MediaService
// {
// get { return ServiceContext.Current.MediaService; }
// }
// /// <summary>
// /// Gets the <see cref="IMacroService"/>
// /// </summary>
// internal static IMacroService MacroService
// {
// get { return ServiceContext.Current.MacroService; }
// }
// /// <summary>
// /// Gets the <see cref="IUserService"/>
// /// </summary>
// internal static IUserService UserService
// {
// get { return ServiceContext.Current.UserService; }
// }
//}
}

View File

@@ -596,7 +596,6 @@
<Compile Include="Services\MacroService.cs" />
<Compile Include="Services\MediaService.cs" />
<Compile Include="Services\ServiceContext.cs" />
<Compile Include="Services\ServiceFactory.cs" />
<Compile Include="Services\UserService.cs" />
<Compile Include="TypeExtensions.cs" />
<Compile Include="ReadLock.cs" />