diff --git a/src/Umbraco.Core/Services/FileService.cs b/src/Umbraco.Core/Services/FileService.cs index 5368954ef8..2a3dde7a40 100644 --- a/src/Umbraco.Core/Services/FileService.cs +++ b/src/Umbraco.Core/Services/FileService.cs @@ -14,11 +14,8 @@ namespace Umbraco.Core.Services public class FileService : IFileService { private readonly RepositoryFactory _repositoryFactory; - private readonly IUnitOfWork _fileUnitOfWork; - private readonly IDatabaseUnitOfWork _dataUnitOfWork; - private readonly IStylesheetRepository _stylesheetRepository; - private readonly IScriptRepository _scriptRepository; - private readonly ITemplateRepository _templateRepository; + private readonly IUnitOfWorkProvider _fileUowProvider; + private readonly IDatabaseUnitOfWorkProvider _dataUowProvider; public FileService(RepositoryFactory repositoryFactory) : this(new FileUnitOfWorkProvider(), new PetaPocoUnitOfWorkProvider(), repositoryFactory) @@ -28,11 +25,8 @@ namespace Umbraco.Core.Services public FileService(IUnitOfWorkProvider fileProvider, IDatabaseUnitOfWorkProvider dataProvider, RepositoryFactory repositoryFactory) { _repositoryFactory = repositoryFactory; - _fileUnitOfWork = fileProvider.GetUnitOfWork(); - _dataUnitOfWork = dataProvider.GetUnitOfWork(); - _templateRepository = _repositoryFactory.CreateTemplateRepository(_dataUnitOfWork); - _stylesheetRepository = _repositoryFactory.CreateStylesheetRepository(_fileUnitOfWork); - _scriptRepository = _repositoryFactory.CreateScriptRepository(_fileUnitOfWork); + _fileUowProvider = fileProvider; + _dataUowProvider = dataProvider; } /// @@ -41,8 +35,10 @@ namespace Umbraco.Core.Services /// An enumerable list of objects public IEnumerable GetStylesheets(params string[] names) { - var repository = _stylesheetRepository; - return repository.GetAll(names); + using (var repository = _repositoryFactory.CreateStylesheetRepository(_fileUowProvider.GetUnitOfWork())) + { + return repository.GetAll(names); + } } /// @@ -52,8 +48,10 @@ namespace Umbraco.Core.Services /// A object public Stylesheet GetStylesheetByName(string name) { - var repository = _stylesheetRepository; - return repository.Get(name); + using (var repository = _repositoryFactory.CreateStylesheetRepository(_fileUowProvider.GetUnitOfWork())) + { + return repository.Get(name); + } } /// @@ -69,11 +67,15 @@ namespace Umbraco.Core.Services if (!e.Cancel) { - _stylesheetRepository.AddOrUpdate(stylesheet); - _fileUnitOfWork.Commit(); + var uow = _fileUowProvider.GetUnitOfWork(); + using (var repository = _repositoryFactory.CreateStylesheetRepository(uow)) + { + repository.AddOrUpdate(stylesheet); + uow.Commit(); - if (Saved != null) - Saved(stylesheet, e); + if (Saved != null) + Saved(stylesheet, e); + } Audit.Add(AuditTypes.Save, string.Format("Save Stylesheet performed by user"), userId == -1 ? 0 : userId, -1); } @@ -86,21 +88,25 @@ namespace Umbraco.Core.Services /// public void DeleteStylesheet(string name, int userId = -1) { - var stylesheet = _stylesheetRepository.Get(name); - - var e = new DeleteEventArgs(); - if (Deleting != null) - Deleting(stylesheet, e); - - if (!e.Cancel) + var uow = _fileUowProvider.GetUnitOfWork(); + using (var repository = _repositoryFactory.CreateStylesheetRepository(uow)) { - _stylesheetRepository.Delete(stylesheet); - _fileUnitOfWork.Commit(); + var stylesheet = repository.Get(name); - if (Deleted != null) - Deleted(stylesheet, e); + var e = new DeleteEventArgs(); + if (Deleting != null) + Deleting(stylesheet, e); - Audit.Add(AuditTypes.Delete, string.Format("Delete Stylesheet performed by user"), userId == -1 ? 0 : userId, -1); + if (!e.Cancel) + { + repository.Delete(stylesheet); + uow.Commit(); + + if (Deleted != null) + Deleted(stylesheet, e); + + Audit.Add(AuditTypes.Delete, string.Format("Delete Stylesheet performed by user"), userId == -1 ? 0 : userId, -1); + } } } @@ -120,8 +126,10 @@ namespace Umbraco.Core.Services /// An enumerable list of objects public IEnumerable