From 3d2ca1f82379c53b8b5b0188791ac6722be3088d Mon Sep 17 00:00:00 2001 From: Morten Christensen Date: Fri, 14 Dec 2012 13:15:33 -0100 Subject: [PATCH] Refactoring MacroService and UserService to use the new and clean uow/repo approach. --- src/Umbraco.Core/Services/MacroService.cs | 51 +++++++++++++---------- src/Umbraco.Core/Services/UserService.cs | 18 ++++---- 2 files changed, 38 insertions(+), 31 deletions(-) diff --git a/src/Umbraco.Core/Services/MacroService.cs b/src/Umbraco.Core/Services/MacroService.cs index 616f5dedfd..6ea283fb75 100644 --- a/src/Umbraco.Core/Services/MacroService.cs +++ b/src/Umbraco.Core/Services/MacroService.cs @@ -4,7 +4,6 @@ using System.Linq; using Umbraco.Core.Auditing; using Umbraco.Core.Models; using Umbraco.Core.Persistence; -using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Persistence.UnitOfWork; namespace Umbraco.Core.Services @@ -15,24 +14,21 @@ namespace Umbraco.Core.Services internal class MacroService : IMacroService { private readonly RepositoryFactory _repositoryFactory; - private readonly IUnitOfWork _unitOfWork; - private readonly IMacroRepository _macroRepository; + private readonly IUnitOfWorkProvider _uowProvider; public MacroService(RepositoryFactory repositoryFactory) : this(new FileUnitOfWorkProvider(), repositoryFactory) { } - public MacroService(IUnitOfWorkProvider provider, RepositoryFactory repositoryFactory) + public MacroService(IUnitOfWorkProvider provider, RepositoryFactory repositoryFactory) : this(provider, repositoryFactory, false) { - _repositoryFactory = repositoryFactory; - _unitOfWork = provider.GetUnitOfWork(); - _macroRepository = _repositoryFactory.CreateMacroRepository(_unitOfWork); } - public MacroService(IUnitOfWorkProvider provider, bool ensureCachedMacros) + public MacroService(IUnitOfWorkProvider provider, RepositoryFactory repositoryFactory, bool ensureCachedMacros) { - _unitOfWork = provider.GetUnitOfWork(); + _uowProvider = provider; + _repositoryFactory = repositoryFactory; if(ensureCachedMacros) EnsureMacroCache(); @@ -54,8 +50,10 @@ namespace Umbraco.Core.Services /// An object public IMacro GetByAlias(string alias) { - var repository = _macroRepository; - return repository.Get(alias); + using (var repository = _repositoryFactory.CreateMacroRepository(_uowProvider.GetUnitOfWork())) + { + return repository.Get(alias); + } } /// @@ -65,8 +63,10 @@ namespace Umbraco.Core.Services /// An enumerable list of objects public IEnumerable GetAll(params string[] aliases) { - var repository = _macroRepository; - return repository.GetAll(aliases); + using (var repository = _repositoryFactory.CreateMacroRepository(_uowProvider.GetUnitOfWork())) + { + return repository.GetAll(aliases); + } } /// @@ -82,12 +82,15 @@ namespace Umbraco.Core.Services if (!e.Cancel) { - var repository = _macroRepository; - repository.Delete(macro); - _unitOfWork.Commit(); + var uow = _uowProvider.GetUnitOfWork(); + using (var repository = _repositoryFactory.CreateMacroRepository(uow)) + { + repository.Delete(macro); + uow.Commit(); - if (Deleted != null) - Deleted(macro, e); + if (Deleted != null) + Deleted(macro, e); + } Audit.Add(AuditTypes.Delete, "Delete Macro performed by user", userId > -1 ? userId : 0, -1); } @@ -106,11 +109,15 @@ namespace Umbraco.Core.Services if (!e.Cancel) { - _macroRepository.AddOrUpdate(macro); - _unitOfWork.Commit(); + var uow = _uowProvider.GetUnitOfWork(); + using (var repository = _repositoryFactory.CreateMacroRepository(uow)) + { + repository.AddOrUpdate(macro); + uow.Commit(); - if (Saved != null) - Saved(macro, e); + if (Saved != null) + Saved(macro, e); + } Audit.Add(AuditTypes.Save, "Save Macro performed by user", userId > -1 ? userId : 0, -1); } diff --git a/src/Umbraco.Core/Services/UserService.cs b/src/Umbraco.Core/Services/UserService.cs index 511a773b19..2bdd8136f5 100644 --- a/src/Umbraco.Core/Services/UserService.cs +++ b/src/Umbraco.Core/Services/UserService.cs @@ -2,7 +2,6 @@ using System; using System.Web; using Umbraco.Core.Models.Membership; using Umbraco.Core.Persistence; -using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Persistence.UnitOfWork; namespace Umbraco.Core.Services @@ -13,14 +12,12 @@ namespace Umbraco.Core.Services internal class UserService : IUserService { private readonly RepositoryFactory _repositoryFactory; - private readonly IDatabaseUnitOfWork _unitOfWork; - private readonly IUserRepository _userRepository; + private readonly IDatabaseUnitOfWorkProvider _uowProvider; - public UserService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory) + public UserService(IDatabaseUnitOfWorkProvider provider, RepositoryFactory repositoryFactory) { _repositoryFactory = repositoryFactory; - _unitOfWork = provider.GetUnitOfWork(); - _userRepository = _repositoryFactory.CreateUserRepository(_unitOfWork); + _uowProvider = provider; } #region Implementation of IUserService @@ -50,8 +47,9 @@ namespace Umbraco.Core.Services if(HttpRuntime.Cache[cacheKey] == null) { + var uow = _uowProvider.GetUnitOfWork(); userId = - _unitOfWork.Database.ExecuteScalar( + uow.Database.ExecuteScalar( "select userID from umbracoUserLogins where contextID = @ContextId", new {ContextId = new Guid(contextId)}); @@ -92,8 +90,10 @@ namespace Umbraco.Core.Services /// public IProfile GetProfileById(int id) { - var repository = _userRepository; - return repository.GetProfileById(id); + using (var repository = _repositoryFactory.CreateUserRepository(_uowProvider.GetUnitOfWork())) + { + return repository.GetProfileById(id); + } } #endregion