diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IRepository.cs
index e3400d18d1..55c2381391 100644
--- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IRepository.cs
@@ -1,5 +1,4 @@
using System.Collections.Generic;
-using Umbraco.Core.Persistence.UnitOfWork;
namespace Umbraco.Core.Persistence.Repositories
{
diff --git a/src/Umbraco.Core/Persistence/RepositoryFactory.cs b/src/Umbraco.Core/Persistence/RepositoryFactory.cs
index 0255841d80..5862025fd4 100644
--- a/src/Umbraco.Core/Persistence/RepositoryFactory.cs
+++ b/src/Umbraco.Core/Persistence/RepositoryFactory.cs
@@ -4,120 +4,115 @@ using Umbraco.Core.Persistence.UnitOfWork;
namespace Umbraco.Core.Persistence
{
- ///
- /// Used to instantiate each repository type
- ///
- public class RepositoryFactory
- {
+ ///
+ /// Used to instantiate each repository type
+ ///
+ public class RepositoryFactory
+ {
+ internal virtual IUserTypeRepository CreateUserTypeRepository(IUnitOfWork uow)
+ {
+ return new UserTypeRepository(
+ uow,
+ NullCacheProvider.Current);
+ }
- internal virtual IUserTypeRepository CreateUserTypeRepository(IUnitOfWork uow)
- {
- return new UserTypeRepository(
- uow,
- NullCacheProvider.Current);
+ internal virtual IUserRepository CreateUserRepository(IUnitOfWork uow)
+ {
+ return new UserRepository(
+ uow,
+ NullCacheProvider.Current,
+ CreateUserTypeRepository(uow));
+ }
- }
+ public virtual IContentRepository CreateContentRepository(IUnitOfWork uow)
+ {
+ return new ContentRepository(
+ uow,
+ RuntimeCacheProvider.Current,
+ CreateContentTypeRepository(uow),
+ CreateTemplateRepository(uow));
+ }
- internal virtual IUserRepository CreateUserRepository(IUnitOfWork uow)
- {
- return new UserRepository(
- uow,
- NullCacheProvider.Current,
- CreateUserTypeRepository(uow));
+ public virtual IContentTypeRepository CreateContentTypeRepository(IUnitOfWork uow)
+ {
+ return new ContentTypeRepository(
+ uow,
+ InMemoryCacheProvider.Current,
+ new TemplateRepository(uow, NullCacheProvider.Current));
+ }
- }
+ public virtual IDataTypeDefinitionRepository CreateDataTypeDefinitionRepository(IUnitOfWork uow)
+ {
+ return new DataTypeDefinitionRepository(
+ uow,
+ NullCacheProvider.Current);
+ }
- public virtual IContentRepository CreateContentRepository(IUnitOfWork uow)
- {
- return new ContentRepository(
- uow,
- RuntimeCacheProvider.Current,
- CreateContentTypeRepository(uow),
- CreateTemplateRepository(uow));
- }
+ public virtual IDictionaryRepository CreateDictionaryRepository(IUnitOfWork uow)
+ {
+ return new DictionaryRepository(
+ uow,
+ InMemoryCacheProvider.Current,
+ CreateLanguageRepository(uow));
+ }
- public virtual IContentTypeRepository CreateContentTypeRepository(IUnitOfWork uow)
- {
- return new ContentTypeRepository(
- uow,
- InMemoryCacheProvider.Current,
- new TemplateRepository(uow, NullCacheProvider.Current));
- }
+ public virtual ILanguageRepository CreateLanguageRepository(IUnitOfWork uow)
+ {
+ return new LanguageRepository(
+ uow,
+ InMemoryCacheProvider.Current);
+ }
- public virtual IDataTypeDefinitionRepository CreateDataTypeDefinitionRepository(IUnitOfWork uow)
- {
- return new DataTypeDefinitionRepository(
- uow,
- NullCacheProvider.Current);
- }
+ internal virtual IMacroRepository CreateMacroRepository(IUnitOfWork uow)
+ {
+ return new MacroRepository(
+ uow,
+ InMemoryCacheProvider.Current);
+ }
- public virtual IDictionaryRepository CreateDictionaryRepository(IUnitOfWork uow)
- {
- return new DictionaryRepository(
- uow,
- InMemoryCacheProvider.Current,
- CreateLanguageRepository(uow));
- }
+ public virtual IMediaRepository CreateMediaRepository(IUnitOfWork uow)
+ {
+ return new MediaRepository(
+ uow,
+ RuntimeCacheProvider.Current,
+ CreateMediaTypeRepository(uow));
+ }
- public virtual ILanguageRepository CreateLanguageRepository(IUnitOfWork uow)
- {
- return new LanguageRepository(
- uow,
- InMemoryCacheProvider.Current);
- }
+ public virtual IMediaTypeRepository CreateMediaTypeRepository(IUnitOfWork uow)
+ {
+ return new MediaTypeRepository(
+ uow,
+ InMemoryCacheProvider.Current);
+ }
- internal virtual IMacroRepository CreateMacroRepository(IUnitOfWork uow)
- {
- return new MacroRepository(
- uow,
- InMemoryCacheProvider.Current);
- }
+ public virtual IRelationRepository CreateRelationRepository(IUnitOfWork uow)
+ {
+ return new RelationRepository(
+ uow,
+ NullCacheProvider.Current,
+ CreateRelationTypeRepository(uow));
+ }
- public virtual IMediaRepository CreateMediaRepository(IUnitOfWork uow)
- {
- return new MediaRepository(
- uow,
- RuntimeCacheProvider.Current,
- CreateMediaTypeRepository(uow));
- }
+ public virtual IRelationTypeRepository CreateRelationTypeRepository(IUnitOfWork uow)
+ {
+ return new RelationTypeRepository(
+ uow,
+ NullCacheProvider.Current);
+ }
- public virtual IMediaTypeRepository CreateMediaTypeRepository(IUnitOfWork uow)
- {
- return new MediaTypeRepository(
- uow,
- InMemoryCacheProvider.Current);
- }
+ public virtual IScriptRepository CreateScriptRepository(IUnitOfWork uow)
+ {
+ return new ScriptRepository(uow);
+ }
- public virtual IRelationRepository CreateRelationRepository(IUnitOfWork uow)
- {
- return new RelationRepository(
- uow,
- NullCacheProvider.Current,
- CreateRelationTypeRepository(uow));
- }
+ public virtual IStylesheetRepository CreateStylesheetRepository(IUnitOfWork uow)
+ {
+ return new StylesheetRepository(uow);
+ }
- public virtual IRelationTypeRepository CreateRelationTypeRepository(IUnitOfWork uow)
- {
- return new RelationTypeRepository(
- uow,
- NullCacheProvider.Current);
- }
-
- public virtual IScriptRepository CreateScriptRepository(IUnitOfWork uow)
- {
- return new ScriptRepository(uow);
- }
-
- public virtual IStylesheetRepository CreateStylesheetRepository(IUnitOfWork uow)
- {
- return new StylesheetRepository(uow);
- }
-
- public virtual ITemplateRepository CreateTemplateRepository(IUnitOfWork uow)
- {
- return new TemplateRepository(uow, NullCacheProvider.Current);
- }
-
-
- }
+ public virtual ITemplateRepository CreateTemplateRepository(IUnitOfWork uow)
+ {
+ return new TemplateRepository(uow, NullCacheProvider.Current);
+ }
+ }
}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Services/ServiceContext.cs b/src/Umbraco.Core/Services/ServiceContext.cs
index 39caab3aed..6e44a4c405 100644
--- a/src/Umbraco.Core/Services/ServiceContext.cs
+++ b/src/Umbraco.Core/Services/ServiceContext.cs
@@ -12,7 +12,14 @@ namespace Umbraco.Core.Services
///
public class ServiceContext
{
- private readonly ConcurrentDictionary _cache = new ConcurrentDictionary();
+ private ContentService _contentService;
+ private UserService _userService;
+ private MediaService _mediaService;
+ private MacroService _macroService;
+ private ContentTypeService _contentTypeService;
+ private DataTypeService _dataTypeService;
+ private FileService _fileService;
+ private LocalizationService _localizationService;
#region Singleton
private static readonly Lazy lazy = new Lazy(() => new ServiceContext());
@@ -29,39 +36,37 @@ namespace Umbraco.Core.Services
#endregion
///
- /// Builds the various services and adds them to the internal cache
+ /// Builds the various services
///
private void BuildServiceCache()
{
- if (_cache.IsEmpty == false) return;//Only proceed to build cache if cache is empty
-
var provider = new PetaPocoUnitOfWorkProvider();
var fileProvider = new FileUnitOfWorkProvider();
var publishingStrategy = new PublishingStrategy();
- var userService = new UserService(provider);
- _cache.AddOrUpdate(typeof(UserService).Name, userService, (x, y) => userService);
+ if(_userService == null)
+ _userService = new UserService(provider);
- var contentService = new ContentService(provider, publishingStrategy, userService);
- _cache.AddOrUpdate(typeof (IContentService).Name, contentService, (x, y) => contentService);
+ if (_contentService == null)
+ _contentService = new ContentService(provider, publishingStrategy, _userService);
- var mediaService = new MediaService(provider);
- _cache.AddOrUpdate(typeof(IMediaService).Name, mediaService, (x, y) => mediaService);
+ if(_mediaService == null)
+ _mediaService = new MediaService(provider);
- var macroService = new MacroService(fileProvider);
- _cache.AddOrUpdate(typeof (IMacroService).Name, macroService, (x, y) => macroService);
+ if(_macroService == null)
+ _macroService = new MacroService(fileProvider);
- var contentTypeService = new ContentTypeService(contentService, mediaService, provider);
- _cache.AddOrUpdate(typeof(IContentTypeService).Name, contentTypeService, (x, y) => contentTypeService);
+ if(_contentTypeService == null)
+ _contentTypeService = new ContentTypeService(_contentService, _mediaService, provider);
- var dataTypeService = new DataTypeService(provider);
- _cache.AddOrUpdate(typeof(IDataTypeService).Name, dataTypeService, (x, y) => dataTypeService);
+ if(_dataTypeService == null)
+ _dataTypeService = new DataTypeService(provider);
- var fileService = new FileService(fileProvider, provider);
- _cache.AddOrUpdate(typeof(IFileService).Name, fileService, (x, y) => fileService);
-
- var localizationService = new LocalizationService(provider);
- _cache.AddOrUpdate(typeof(ILocalizationService).Name, localizationService, (x, y) => localizationService);
+ if(_fileService == null)
+ _fileService = new FileService(fileProvider, provider);
+
+ if(_localizationService == null)
+ _localizationService = new LocalizationService(provider);
}
///
@@ -69,7 +74,7 @@ namespace Umbraco.Core.Services
///
public IContentService ContentService
{
- get { return _cache[typeof (IContentService).Name] as IContentService; }
+ get { return _contentService; }
}
///
@@ -77,7 +82,7 @@ namespace Umbraco.Core.Services
///
public IContentTypeService ContentTypeService
{
- get { return _cache[typeof(IContentTypeService).Name] as IContentTypeService; }
+ get { return _contentTypeService; }
}
///
@@ -85,7 +90,7 @@ namespace Umbraco.Core.Services
///
public IDataTypeService DataTypeService
{
- get { return _cache[typeof(IDataTypeService).Name] as IDataTypeService; }
+ get { return _dataTypeService; }
}
///
@@ -93,7 +98,7 @@ namespace Umbraco.Core.Services
///
public IFileService FileService
{
- get { return _cache[typeof (IFileService).Name] as IFileService; }
+ get { return _fileService; }
}
///
@@ -101,7 +106,7 @@ namespace Umbraco.Core.Services
///
public ILocalizationService LocalizationService
{
- get { return _cache[typeof(ILocalizationService).Name] as ILocalizationService; }
+ get { return _localizationService; }
}
///
@@ -109,7 +114,7 @@ namespace Umbraco.Core.Services
///
public IMediaService MediaService
{
- get { return _cache[typeof(IMediaService).Name] as IMediaService; }
+ get { return _mediaService; }
}
///
@@ -117,7 +122,7 @@ namespace Umbraco.Core.Services
///
internal IMacroService MacroService
{
- get { return _cache[typeof(IMacroService).Name] as IMacroService; }
+ get { return _macroService; }
}
///
@@ -125,7 +130,7 @@ namespace Umbraco.Core.Services
///
internal IUserService UserService
{
- get { return _cache[typeof(IUserService).Name] as IUserService; }
+ get { return _userService; }
}
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Tests/Publishing/PublishingStrategyTests.cs b/src/Umbraco.Tests/Publishing/PublishingStrategyTests.cs
index c300e84140..9e6ea58ed8 100644
--- a/src/Umbraco.Tests/Publishing/PublishingStrategyTests.cs
+++ b/src/Umbraco.Tests/Publishing/PublishingStrategyTests.cs
@@ -8,6 +8,7 @@ using Umbraco.Core.Configuration;
using Umbraco.Core.IO;
using Umbraco.Core.Models;
using Umbraco.Core.ObjectResolution;
+using Umbraco.Core.Persistence;
using Umbraco.Tests.TestHelpers;
using Umbraco.Tests.TestHelpers.Entities;
using Umbraco.Web.Strategies;
@@ -54,6 +55,8 @@ namespace Umbraco.Tests.Publishing
ApplicationContext.Current = null;
Resolution.IsFrozen = false;
+ RepositoryResolver.Reset();
+
string path = TestHelper.CurrentAssemblyDirectory;
AppDomain.CurrentDomain.SetData("DataDirectory", null);
diff --git a/src/Umbraco.Tests/Services/ContentServicePerformanceTest.cs b/src/Umbraco.Tests/Services/ContentServicePerformanceTest.cs
index d9a56da50f..38da2383f2 100644
--- a/src/Umbraco.Tests/Services/ContentServicePerformanceTest.cs
+++ b/src/Umbraco.Tests/Services/ContentServicePerformanceTest.cs
@@ -4,7 +4,6 @@ using System.Linq;
using NUnit.Framework;
using Umbraco.Core.Models;
using Umbraco.Core.Persistence;
-using Umbraco.Core.Persistence.Caching;
using Umbraco.Core.Persistence.Repositories;
using Umbraco.Core.Persistence.UnitOfWork;
using Umbraco.Tests.TestHelpers;
@@ -12,7 +11,7 @@ using Umbraco.Tests.TestHelpers.Entities;
namespace Umbraco.Tests.Services
{
- [TestFixture]
+ [TestFixture, NUnit.Framework.Ignore]
public class ContentServicePerformanceTest : BaseDatabaseFactoryTest
{
[SetUp]
diff --git a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs
index 7b4170fadc..a613ab097a 100644
--- a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs
+++ b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs
@@ -77,7 +77,7 @@ namespace Umbraco.Tests.TestHelpers
ServiceContext = null;
Resolution.IsFrozen = false;
- RepositoryResolver.Reset();
+ RepositoryResolver.Reset();
string path = TestHelper.CurrentAssemblyDirectory;
AppDomain.CurrentDomain.SetData("DataDirectory", null);