diff --git a/src/Umbraco.Core/Persistence/Mappers/IMappingResolver.cs b/src/Umbraco.Core/Persistence/Mappers/IMappingResolver.cs new file mode 100644 index 0000000000..a5e3ffffb0 --- /dev/null +++ b/src/Umbraco.Core/Persistence/Mappers/IMappingResolver.cs @@ -0,0 +1,14 @@ +using System; + +namespace Umbraco.Core.Persistence.Mappers +{ + public interface IMappingResolver + { + /// + /// Return a mapper by type + /// + /// + /// + BaseMapper ResolveMapperByType(Type type); + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Mappers/MappingResolver.cs b/src/Umbraco.Core/Persistence/Mappers/MappingResolver.cs index 650a7924a4..14d763d28b 100644 --- a/src/Umbraco.Core/Persistence/Mappers/MappingResolver.cs +++ b/src/Umbraco.Core/Persistence/Mappers/MappingResolver.cs @@ -8,7 +8,7 @@ using Umbraco.Core.ObjectResolution; namespace Umbraco.Core.Persistence.Mappers { - internal class MappingResolver : ContainerLazyManyObjectsResolver + internal class MappingResolver : ContainerLazyManyObjectsResolver, IMappingResolver { /// /// Constructor accepting a list of BaseMapper types that are attributed with the MapperFor attribute @@ -32,7 +32,7 @@ namespace Umbraco.Core.Persistence.Mappers /// /// /// - internal BaseMapper ResolveMapperByType(Type type) + public BaseMapper ResolveMapperByType(Type type) { return _mapperCache.GetOrAdd(type, type1 => { diff --git a/src/Umbraco.Core/Persistence/Querying/IQuery.cs b/src/Umbraco.Core/Persistence/Querying/IQuery.cs index b158943cb4..0689117d9b 100644 --- a/src/Umbraco.Core/Persistence/Querying/IQuery.cs +++ b/src/Umbraco.Core/Persistence/Querying/IQuery.cs @@ -4,27 +4,6 @@ using System.Linq.Expressions; namespace Umbraco.Core.Persistence.Querying { - /// - /// SD: This is a horrible hack but unless we break compatibility with anyone who's actually implemented IQuery{T} there's not much we can do. - /// The IQuery{T} interface is useless without having a GetWhereClauses method and cannot be used for tests. - /// We have to wait till v8 to make this change I suppose. - /// - internal static class QueryExtensions - { - /// - /// Returns all translated where clauses and their sql parameters - /// - /// - public static IEnumerable> GetWhereClauses(this IQuery query) - { - var q = query as Query; - if (q == null) - { - throw new NotSupportedException(typeof(IQuery) + " cannot be cast to " + typeof(Query)); - } - return q.GetWhereClauses(); - } - } /// /// Represents a query for building Linq translatable SQL queries @@ -39,6 +18,11 @@ namespace Umbraco.Core.Persistence.Querying /// This instance so calls to this method are chainable IQuery Where(Expression> predicate); - + /// + /// Returns all translated where clauses and their sql parameters + /// + /// + IEnumerable> GetWhereClauses(); + } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Querying/ModelToSqlExpressionHelper.cs b/src/Umbraco.Core/Persistence/Querying/ModelToSqlExpressionHelper.cs index c9f8720674..fcf70c4c58 100644 --- a/src/Umbraco.Core/Persistence/Querying/ModelToSqlExpressionHelper.cs +++ b/src/Umbraco.Core/Persistence/Querying/ModelToSqlExpressionHelper.cs @@ -15,10 +15,10 @@ namespace Umbraco.Core.Persistence.Querying { private readonly BaseMapper _mapper; - public ModelToSqlExpressionHelper(ISqlSyntaxProvider sqlSyntax) + public ModelToSqlExpressionHelper(ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) : base(sqlSyntax) { - _mapper = MappingResolver.Current.ResolveMapperByType(typeof(T)); + _mapper = mappingResolver.ResolveMapperByType(typeof(T)); } protected override string VisitMemberAccess(MemberExpression m) diff --git a/src/Umbraco.Core/Persistence/Querying/Query.cs b/src/Umbraco.Core/Persistence/Querying/Query.cs index 8f09e25037..c51b451c21 100644 --- a/src/Umbraco.Core/Persistence/Querying/Query.cs +++ b/src/Umbraco.Core/Persistence/Querying/Query.cs @@ -2,6 +2,8 @@ using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; +using Umbraco.Core.Models.PublishedContent; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.SqlSyntax; namespace Umbraco.Core.Persistence.Querying @@ -13,11 +15,13 @@ namespace Umbraco.Core.Persistence.Querying public class Query : IQuery { private readonly ISqlSyntaxProvider _sqlSyntax; + private readonly IMappingResolver _mappingResolver; private readonly List> _wheres = new List>(); - public Query(ISqlSyntaxProvider sqlSyntax) + public Query(ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) { _sqlSyntax = sqlSyntax; + _mappingResolver = mappingResolver; } /// @@ -29,7 +33,7 @@ namespace Umbraco.Core.Persistence.Querying { if (predicate != null) { - var expressionHelper = new ModelToSqlExpressionHelper(_sqlSyntax); + var expressionHelper = new ModelToSqlExpressionHelper(_sqlSyntax, _mappingResolver); string whereExpression = expressionHelper.Visit(predicate); _wheres.Add(new Tuple(whereExpression, expressionHelper.GetSqlParameters())); @@ -46,10 +50,5 @@ namespace Umbraco.Core.Persistence.Querying return _wheres; } - [Obsolete("This is no longer used, use the GetWhereClauses method which includes the SQL parameters")] - public List WhereClauses() - { - return _wheres.Select(x => x.Item1).ToList(); - } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Querying/QueryFactory.cs b/src/Umbraco.Core/Persistence/Querying/QueryFactory.cs new file mode 100644 index 0000000000..3e30bc2c6b --- /dev/null +++ b/src/Umbraco.Core/Persistence/Querying/QueryFactory.cs @@ -0,0 +1,22 @@ +using Umbraco.Core.Persistence.Mappers; +using Umbraco.Core.Persistence.SqlSyntax; + +namespace Umbraco.Core.Persistence.Querying +{ + public class QueryFactory + { + private readonly ISqlSyntaxProvider _sqlSyntax; + private readonly IMappingResolver _mappingResolver; + + public QueryFactory(ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + { + _sqlSyntax = sqlSyntax; + _mappingResolver = mappingResolver; + } + + public Query Create() + { + return new Query(_sqlSyntax, _mappingResolver); + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Core/Persistence/Repositories/AuditRepository.cs b/src/Umbraco.Core/Persistence/Repositories/AuditRepository.cs index 53ffda9364..5f47b0c14e 100644 --- a/src/Umbraco.Core/Persistence/Repositories/AuditRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/AuditRepository.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -11,8 +12,8 @@ namespace Umbraco.Core.Persistence.Repositories { internal class AuditRepository : PetaPocoRepositoryBase, IAuditRepository { - public AuditRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + public AuditRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentPreviewRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentPreviewRepository.cs index 67741c84d7..6b77c5972f 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ContentPreviewRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ContentPreviewRepository.cs @@ -4,7 +4,7 @@ using System.Xml.Linq; using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; - +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -17,8 +17,8 @@ namespace Umbraco.Core.Persistence.Repositories internal class ContentPreviewRepository : PetaPocoRepositoryBase> where TContent : IContentBase { - public ContentPreviewRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + public ContentPreviewRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs index 6c106dd65c..38cc03262d 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ContentRepository.cs @@ -20,6 +20,7 @@ using Umbraco.Core.Persistence.DatabaseModelDefinitions; using Umbraco.Core.Persistence.Factories; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Cache; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -37,8 +38,8 @@ namespace Umbraco.Core.Persistence.Repositories private readonly ContentPreviewRepository _contentPreviewRepository; private readonly ContentXmlRepository _contentXmlRepository; - public ContentRepository(IDatabaseUnitOfWork work, CacheHelper cacheHelper, ILogger logger, ISqlSyntaxProvider syntaxProvider, IContentTypeRepository contentTypeRepository, ITemplateRepository templateRepository, ITagRepository tagRepository) - : base(work, cacheHelper, logger, syntaxProvider) + public ContentRepository(IDatabaseUnitOfWork work, CacheHelper cacheHelper, ILogger logger, ISqlSyntaxProvider syntaxProvider, IContentTypeRepository contentTypeRepository, ITemplateRepository templateRepository, ITagRepository tagRepository, IMappingResolver mappingResolver) + : base(work, cacheHelper, logger, syntaxProvider, mappingResolver) { if (contentTypeRepository == null) throw new ArgumentNullException("contentTypeRepository"); if (templateRepository == null) throw new ArgumentNullException("templateRepository"); @@ -47,8 +48,8 @@ namespace Umbraco.Core.Persistence.Repositories _templateRepository = templateRepository; _tagRepository = tagRepository; _cacheHelper = cacheHelper; - _contentPreviewRepository = new ContentPreviewRepository(work, CacheHelper.CreateDisabledCacheHelper(), logger, syntaxProvider); - _contentXmlRepository = new ContentXmlRepository(work, CacheHelper.CreateDisabledCacheHelper(), logger, syntaxProvider); + _contentPreviewRepository = new ContentPreviewRepository(work, CacheHelper.CreateDisabledCacheHelper(), logger, syntaxProvider, mappingResolver); + _contentXmlRepository = new ContentXmlRepository(work, CacheHelper.CreateDisabledCacheHelper(), logger, syntaxProvider, mappingResolver); EnsureUniqueNaming = true; } diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs index bd3f12b8c6..db8a5ff839 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ContentTypeBaseRepository.cs @@ -12,6 +12,7 @@ using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.Factories; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.Relators; using Umbraco.Core.Persistence.SqlSyntax; @@ -28,8 +29,8 @@ namespace Umbraco.Core.Persistence.Repositories where TEntity : class, IContentTypeComposition { - protected ContentTypeBaseRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + protected ContentTypeBaseRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentTypeRepository.cs index 389469acc8..48e1687371 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ContentTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ContentTypeRepository.cs @@ -7,6 +7,7 @@ using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.Factories; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.Relators; using Umbraco.Core.Persistence.SqlSyntax; @@ -21,8 +22,8 @@ namespace Umbraco.Core.Persistence.Repositories { private readonly ITemplateRepository _templateRepository; - public ContentTypeRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, ITemplateRepository templateRepository) - : base(work, cache, logger, sqlSyntax) + public ContentTypeRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, ITemplateRepository templateRepository, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { _templateRepository = templateRepository; } diff --git a/src/Umbraco.Core/Persistence/Repositories/ContentXmlRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ContentXmlRepository.cs index a9d5850368..e405091bd7 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ContentXmlRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ContentXmlRepository.cs @@ -4,7 +4,7 @@ using System.Xml.Linq; using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; - +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -17,8 +17,8 @@ namespace Umbraco.Core.Persistence.Repositories internal class ContentXmlRepository : PetaPocoRepositoryBase> where TContent : IContentBase { - public ContentXmlRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + public ContentXmlRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs b/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs index 7d0342903d..6541a1300f 100644 --- a/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/DataTypeDefinitionRepository.cs @@ -11,6 +11,7 @@ using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.Factories; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -28,12 +29,12 @@ namespace Umbraco.Core.Persistence.Repositories private readonly DataTypePreValueRepository _preValRepository; public DataTypeDefinitionRepository(IDatabaseUnitOfWork work, CacheHelper cache, CacheHelper cacheHelper, ILogger logger, ISqlSyntaxProvider sqlSyntax, - IContentTypeRepository contentTypeRepository) - : base(work, cache, logger, sqlSyntax) + IContentTypeRepository contentTypeRepository, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { _cacheHelper = cacheHelper; _contentTypeRepository = contentTypeRepository; - _preValRepository = new DataTypePreValueRepository(work, CacheHelper.CreateDisabledCacheHelper(), logger, sqlSyntax); + _preValRepository = new DataTypePreValueRepository(work, CacheHelper.CreateDisabledCacheHelper(), logger, sqlSyntax, mappingResolver); } #region Overrides of RepositoryBase @@ -81,7 +82,7 @@ namespace Umbraco.Core.Persistence.Repositories public override void Delete(IDataTypeDefinition entity) { //Find ContentTypes using this IDataTypeDefinition on a PropertyType - var query = new Query(SqlSyntax).Where(x => x.DataTypeDefinitionId == entity.Id); + var query = QueryFactory.Create().Where(x => x.DataTypeDefinitionId == entity.Id); //TODO: Don't we need to be concerned about media and member types here too ? var contentTypes = _contentTypeRepository.GetByQuery(query); @@ -429,8 +430,8 @@ AND umbracoNode.id <> @id", /// private class DataTypePreValueRepository : PetaPocoRepositoryBase { - public DataTypePreValueRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + public DataTypePreValueRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/DictionaryRepository.cs b/src/Umbraco.Core/Persistence/Repositories/DictionaryRepository.cs index 6ec55da6be..bf1d107e3c 100644 --- a/src/Umbraco.Core/Persistence/Repositories/DictionaryRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/DictionaryRepository.cs @@ -7,6 +7,7 @@ using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.Factories; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.Relators; using Umbraco.Core.Persistence.SqlSyntax; @@ -20,12 +21,14 @@ namespace Umbraco.Core.Persistence.Repositories internal class DictionaryRepository : PetaPocoRepositoryBase, IDictionaryRepository { private readonly ILanguageRepository _languageRepository; + private readonly IMappingResolver _mappingResolver; - public DictionaryRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider syntax, ILanguageRepository languageRepository) - : base(work, cache, logger, syntax) - { - _languageRepository = languageRepository; - } + public DictionaryRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider syntax, ILanguageRepository languageRepository, IMappingResolver mappingResolver) + : base(work, cache, logger, syntax, mappingResolver) + { + _languageRepository = languageRepository; + _mappingResolver = mappingResolver; + } #region Overrides of RepositoryBase @@ -224,7 +227,7 @@ namespace Umbraco.Core.Persistence.Repositories public IDictionaryItem Get(Guid uniqueId) { - using (var uniqueIdRepo = new DictionaryByUniqueIdRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax)) + using (var uniqueIdRepo = new DictionaryByUniqueIdRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax, _mappingResolver)) { return uniqueIdRepo.Get(uniqueId); } @@ -232,7 +235,7 @@ namespace Umbraco.Core.Persistence.Repositories public IDictionaryItem Get(string key) { - using (var keyRepo = new DictionaryByKeyRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax)) + using (var keyRepo = new DictionaryByKeyRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax, _mappingResolver)) { return keyRepo.Get(key); } @@ -242,8 +245,8 @@ namespace Umbraco.Core.Persistence.Repositories { private readonly DictionaryRepository _dictionaryRepository; - public DictionaryByUniqueIdRepository(DictionaryRepository dictionaryRepository, IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + public DictionaryByUniqueIdRepository(DictionaryRepository dictionaryRepository, IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { _dictionaryRepository = dictionaryRepository; } @@ -283,8 +286,8 @@ namespace Umbraco.Core.Persistence.Repositories { private readonly DictionaryRepository _dictionaryRepository; - public DictionaryByKeyRepository(DictionaryRepository dictionaryRepository, IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + public DictionaryByKeyRepository(DictionaryRepository dictionaryRepository, IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { _dictionaryRepository = dictionaryRepository; } diff --git a/src/Umbraco.Core/Persistence/Repositories/DomainRepository.cs b/src/Umbraco.Core/Persistence/Repositories/DomainRepository.cs index f7c3119e74..a66a65e73a 100644 --- a/src/Umbraco.Core/Persistence/Repositories/DomainRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/DomainRepository.cs @@ -7,6 +7,7 @@ using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Models.Rdbms; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -17,12 +18,14 @@ namespace Umbraco.Core.Persistence.Repositories { private readonly IContentRepository _contentRepository; private readonly ILanguageRepository _languageRepository; + private readonly IMappingResolver _mappingResolver; - public DomainRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IContentRepository contentRepository, ILanguageRepository languageRepository) - : base(work, cache, logger, sqlSyntax) + public DomainRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IContentRepository contentRepository, ILanguageRepository languageRepository, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { _contentRepository = contentRepository; _languageRepository = languageRepository; + _mappingResolver = mappingResolver; } /// @@ -40,7 +43,7 @@ namespace Umbraco.Core.Persistence.Repositories protected override IDomain PerformGet(int id) { - using (var repo = new CachedDomainRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax)) + using (var repo = new CachedDomainRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax, _mappingResolver)) { var factory = new DomainModelFactory(); return factory.BuildDomainEntity(repo.Get(id), _contentRepository, _languageRepository); @@ -49,7 +52,7 @@ namespace Umbraco.Core.Persistence.Repositories protected override IEnumerable PerformGetAll(params int[] ids) { - using (var repo = new CachedDomainRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax)) + using (var repo = new CachedDomainRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax, _mappingResolver)) { var factory = new DomainModelFactory(); return factory.BuildDomainEntities(repo.GetAll(ids).ToArray(), _contentRepository, _languageRepository); @@ -75,7 +78,7 @@ namespace Umbraco.Core.Persistence.Repositories protected override void PersistDeletedItem(IDomain entity) { - using (var repo = new CachedDomainRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax)) + using (var repo = new CachedDomainRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax, _mappingResolver)) { var factory = new DomainModelFactory(); repo.PersistDeletedItem(factory.BuildEntity(entity)); @@ -94,7 +97,7 @@ namespace Umbraco.Core.Persistence.Repositories protected override void PersistNewItem(IDomain entity) { - using (var repo = new CachedDomainRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax)) + using (var repo = new CachedDomainRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax, _mappingResolver)) { var factory = new DomainModelFactory(); var cacheableEntity = factory.BuildEntity(entity); @@ -107,7 +110,7 @@ namespace Umbraco.Core.Persistence.Repositories protected override void PersistUpdatedItem(IDomain entity) { - using (var repo = new CachedDomainRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax)) + using (var repo = new CachedDomainRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax, _mappingResolver)) { var factory = new DomainModelFactory(); repo.PersistUpdatedItem(factory.BuildEntity(entity)); @@ -117,7 +120,7 @@ namespace Umbraco.Core.Persistence.Repositories public bool Exists(string domainName) { - using (var repo = new CachedDomainRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax)) + using (var repo = new CachedDomainRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax, _mappingResolver)) { var query = repo.Query.Where(x => x.DomainName.InvariantEquals(domainName)); return repo.GetByQuery(query).Any(); @@ -126,7 +129,7 @@ namespace Umbraco.Core.Persistence.Repositories public IEnumerable GetAll(bool includeWildcards) { - using (var repo = new CachedDomainRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax)) + using (var repo = new CachedDomainRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax, _mappingResolver)) { var factory = new DomainModelFactory(); return factory.BuildDomainEntities(repo.GetAll().ToArray(), _contentRepository, _languageRepository) @@ -136,7 +139,7 @@ namespace Umbraco.Core.Persistence.Repositories public IEnumerable GetAssignedDomains(int contentId, bool includeWildcards) { - using (var repo = new CachedDomainRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax)) + using (var repo = new CachedDomainRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax, _mappingResolver)) { var factory = new DomainModelFactory(); @@ -176,8 +179,8 @@ namespace Umbraco.Core.Persistence.Repositories { private readonly DomainRepository _domainRepo; - public CachedDomainRepository(DomainRepository domainRepo, IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + public CachedDomainRepository(DomainRepository domainRepo, IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { _domainRepo = domainRepo; } diff --git a/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs b/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs index e25c1b8183..eba77afe86 100644 --- a/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/EntityRepository.cs @@ -10,6 +10,7 @@ using Umbraco.Core; using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.Factories; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -27,11 +28,13 @@ namespace Umbraco.Core.Persistence.Repositories { private readonly IDatabaseUnitOfWork _work; private readonly ISqlSyntaxProvider _sqlSyntax; + private readonly QueryFactory _queryFactory; - public EntityRepository(IDatabaseUnitOfWork work, ISqlSyntaxProvider sqlSyntax) + public EntityRepository(IDatabaseUnitOfWork work, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) { _work = work; _sqlSyntax = sqlSyntax; + _queryFactory = new QueryFactory(_sqlSyntax, mappingResolver); } /// @@ -54,7 +57,7 @@ namespace Umbraco.Core.Persistence.Repositories public Query Query { - get { return new Query(_sqlSyntax); } + get { return _queryFactory.Create(); } } public IUmbracoEntity GetByKey(Guid key) diff --git a/src/Umbraco.Core/Persistence/Repositories/LanguageRepository.cs b/src/Umbraco.Core/Persistence/Repositories/LanguageRepository.cs index 72f535dc9c..8ef313a143 100644 --- a/src/Umbraco.Core/Persistence/Repositories/LanguageRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/LanguageRepository.cs @@ -7,6 +7,7 @@ using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.Factories; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -18,9 +19,12 @@ namespace Umbraco.Core.Persistence.Repositories /// internal class LanguageRepository : PetaPocoRepositoryBase, ILanguageRepository { - public LanguageRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + private readonly IMappingResolver _mappingResolver; + + public LanguageRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { + _mappingResolver = mappingResolver; } #region Overrides of RepositoryBase @@ -155,13 +159,13 @@ namespace Umbraco.Core.Persistence.Repositories public ILanguage GetByCultureName(string cultureName) { - var cultureNameRepo = new LanguageByCultureNameRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax); + var cultureNameRepo = new LanguageByCultureNameRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax, _mappingResolver); return cultureNameRepo.Get(cultureName); } public ILanguage GetByIsoCode(string isoCode) { - var isoRepo = new LanguageByIsoCodeRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax); + var isoRepo = new LanguageByIsoCodeRepository(this, UnitOfWork, RepositoryCache, Logger, SqlSyntax, _mappingResolver); return isoRepo.Get(isoCode); } @@ -172,8 +176,8 @@ namespace Umbraco.Core.Persistence.Repositories { private readonly LanguageRepository _languageRepository; - public LanguageByIsoCodeRepository(LanguageRepository languageRepository, IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + public LanguageByIsoCodeRepository(LanguageRepository languageRepository, IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { _languageRepository = languageRepository; } @@ -212,8 +216,8 @@ namespace Umbraco.Core.Persistence.Repositories { private readonly LanguageRepository _languageRepository; - public LanguageByCultureNameRepository(LanguageRepository languageRepository, IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + public LanguageByCultureNameRepository(LanguageRepository languageRepository, IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { _languageRepository = languageRepository; } diff --git a/src/Umbraco.Core/Persistence/Repositories/MacroRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MacroRepository.cs index 4dc7d38db9..69274032a2 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MacroRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MacroRepository.cs @@ -7,6 +7,7 @@ using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.Factories; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.Relators; using Umbraco.Core.Persistence.SqlSyntax; @@ -17,8 +18,8 @@ namespace Umbraco.Core.Persistence.Repositories internal class MacroRepository : PetaPocoRepositoryBase, IMacroRepository { - public MacroRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + public MacroRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs index f066d14962..b4c08f6e1b 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs @@ -15,6 +15,7 @@ using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.DatabaseModelDefinitions; using Umbraco.Core.Persistence.Factories; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -32,15 +33,15 @@ namespace Umbraco.Core.Persistence.Repositories private readonly ContentXmlRepository _contentXmlRepository; private readonly ContentPreviewRepository _contentPreviewRepository; - public MediaRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMediaTypeRepository mediaTypeRepository, ITagRepository tagRepository) - : base(work, cache, logger, sqlSyntax) + public MediaRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMediaTypeRepository mediaTypeRepository, ITagRepository tagRepository, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { if (mediaTypeRepository == null) throw new ArgumentNullException("mediaTypeRepository"); if (tagRepository == null) throw new ArgumentNullException("tagRepository"); _mediaTypeRepository = mediaTypeRepository; _tagRepository = tagRepository; - _contentXmlRepository = new ContentXmlRepository(work, CacheHelper.CreateDisabledCacheHelper(), logger, sqlSyntax); - _contentPreviewRepository = new ContentPreviewRepository(work, CacheHelper.CreateDisabledCacheHelper(), logger, sqlSyntax); + _contentXmlRepository = new ContentXmlRepository(work, CacheHelper.CreateDisabledCacheHelper(), logger, sqlSyntax, mappingResolver); + _contentPreviewRepository = new ContentPreviewRepository(work, CacheHelper.CreateDisabledCacheHelper(), logger, sqlSyntax, mappingResolver); EnsureUniqueNaming = true; } diff --git a/src/Umbraco.Core/Persistence/Repositories/MediaTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MediaTypeRepository.cs index 58ef094f97..731caff1c0 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MediaTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MediaTypeRepository.cs @@ -7,6 +7,7 @@ using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.Factories; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -19,8 +20,8 @@ namespace Umbraco.Core.Persistence.Repositories internal class MediaTypeRepository : ContentTypeBaseRepository, IMediaTypeRepository { - public MediaTypeRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + public MediaTypeRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs index abadded175..24bac43434 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MemberGroupRepository.cs @@ -13,6 +13,7 @@ using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; using Umbraco.Core.Services; using Umbraco.Core.Cache; +using Umbraco.Core.Persistence.Mappers; namespace Umbraco.Core.Persistence.Repositories { @@ -22,8 +23,8 @@ namespace Umbraco.Core.Persistence.Repositories { private readonly CacheHelper _cacheHelper; - public MemberGroupRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, CacheHelper cacheHelper) - : base(work, cache, logger, sqlSyntax) + public MemberGroupRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, CacheHelper cacheHelper, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { if (cacheHelper == null) throw new ArgumentNullException("cacheHelper"); _cacheHelper = cacheHelper; @@ -139,7 +140,7 @@ namespace Umbraco.Core.Persistence.Repositories string.Format("{0}.{1}", typeof (IMemberGroup).FullName, name), () => { - var qry = new Query(SqlSyntax).Where(group => group.Name.Equals(name)); + var qry = QueryFactory.Create().Where(group => group.Name.Equals(name)); var result = GetByQuery(qry); return result.FirstOrDefault(); }, @@ -153,7 +154,7 @@ namespace Umbraco.Core.Persistence.Repositories { using (var transaction = Database.GetTransaction()) { - var qry = new Query(SqlSyntax).Where(group => group.Name.Equals(roleName)); + var qry = QueryFactory.Create().Where(group => group.Name.Equals(roleName)); var result = GetByQuery(qry); if (result.Any()) return null; diff --git a/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs index 1f03ed5bde..3602811c40 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MemberRepository.cs @@ -19,6 +19,7 @@ using Umbraco.Core.Persistence.Relators; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; using Umbraco.Core.Dynamics; +using Umbraco.Core.Persistence.Mappers; namespace Umbraco.Core.Persistence.Repositories { @@ -33,16 +34,16 @@ namespace Umbraco.Core.Persistence.Repositories private readonly ContentXmlRepository _contentXmlRepository; private readonly ContentPreviewRepository _contentPreviewRepository; - public MemberRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMemberTypeRepository memberTypeRepository, IMemberGroupRepository memberGroupRepository, ITagRepository tagRepository) - : base(work, cache, logger, sqlSyntax) + public MemberRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMemberTypeRepository memberTypeRepository, IMemberGroupRepository memberGroupRepository, ITagRepository tagRepository, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { if (memberTypeRepository == null) throw new ArgumentNullException("memberTypeRepository"); if (tagRepository == null) throw new ArgumentNullException("tagRepository"); _memberTypeRepository = memberTypeRepository; _tagRepository = tagRepository; _memberGroupRepository = memberGroupRepository; - _contentXmlRepository = new ContentXmlRepository(work, CacheHelper.CreateDisabledCacheHelper(), logger, sqlSyntax); - _contentPreviewRepository = new ContentPreviewRepository(work, CacheHelper.CreateDisabledCacheHelper(), logger, sqlSyntax); + _contentXmlRepository = new ContentXmlRepository(work, CacheHelper.CreateDisabledCacheHelper(), logger, sqlSyntax, mappingResolver); + _contentPreviewRepository = new ContentPreviewRepository(work, CacheHelper.CreateDisabledCacheHelper(), logger, sqlSyntax, mappingResolver); } #region Overrides of RepositoryBase @@ -531,12 +532,12 @@ namespace Umbraco.Core.Persistence.Repositories public IEnumerable FindMembersInRole(string roleName, string usernameToMatch, StringPropertyMatchType matchType = StringPropertyMatchType.StartsWith) { //get the group id - var grpQry = new Query(SqlSyntax).Where(group => group.Name.Equals(roleName)); + var grpQry = QueryFactory.Create().Where(group => group.Name.Equals(roleName)); var memberGroup = _memberGroupRepository.GetByQuery(grpQry).FirstOrDefault(); if (memberGroup == null) return Enumerable.Empty(); // get the members by username - var query = new Query(SqlSyntax); + var query = QueryFactory.Create(); switch (matchType) { case StringPropertyMatchType.Exact: @@ -586,7 +587,7 @@ namespace Umbraco.Core.Persistence.Repositories /// public IEnumerable GetByMemberGroup(string groupName) { - var grpQry = new Query(SqlSyntax).Where(group => group.Name.Equals(groupName)); + var grpQry = QueryFactory.Create().Where(group => group.Name.Equals(groupName)); var memberGroup = _memberGroupRepository.GetByQuery(grpQry).FirstOrDefault(); if (memberGroup == null) return Enumerable.Empty(); diff --git a/src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs index 9a1317affe..d380786ffe 100644 --- a/src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/MemberTypeRepository.cs @@ -8,6 +8,7 @@ using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.Factories; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.Relators; using Umbraco.Core.Persistence.SqlSyntax; @@ -21,8 +22,8 @@ namespace Umbraco.Core.Persistence.Repositories internal class MemberTypeRepository : ContentTypeBaseRepository, IMemberTypeRepository { - public MemberTypeRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + public MemberTypeRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/PetaPocoRepositoryBase.cs b/src/Umbraco.Core/Persistence/Repositories/PetaPocoRepositoryBase.cs index aa442d8eaf..0cd21d3739 100644 --- a/src/Umbraco.Core/Persistence/Repositories/PetaPocoRepositoryBase.cs +++ b/src/Umbraco.Core/Persistence/Repositories/PetaPocoRepositoryBase.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using Umbraco.Core.Logging; using Umbraco.Core.Models.EntityBase; - +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -19,20 +19,26 @@ namespace Umbraco.Core.Persistence.Repositories { public ISqlSyntaxProvider SqlSyntax { get; private set; } + /// + /// Returns the Query factory + /// + public QueryFactory QueryFactory { get; private set; } + /// /// Used to create a new query instance /// /// public override Query Query { - get { return new Query(SqlSyntax); } + get { return QueryFactory.Create(); } } - protected PetaPocoRepositoryBase(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) + protected PetaPocoRepositoryBase(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) : base(work, cache, logger) { if (sqlSyntax == null) throw new ArgumentNullException("sqlSyntax"); SqlSyntax = sqlSyntax; + QueryFactory = new QueryFactory(SqlSyntax, mappingResolver); } /// diff --git a/src/Umbraco.Core/Persistence/Repositories/RecycleBinRepository.cs b/src/Umbraco.Core/Persistence/Repositories/RecycleBinRepository.cs index 970fee39a7..470d555da6 100644 --- a/src/Umbraco.Core/Persistence/Repositories/RecycleBinRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/RecycleBinRepository.cs @@ -7,7 +7,7 @@ using Umbraco.Core.IO; using Umbraco.Core.Logging; using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Models.Rdbms; - +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -17,8 +17,8 @@ namespace Umbraco.Core.Persistence.Repositories internal abstract class RecycleBinRepository : VersionableRepositoryBase, IRecycleBinRepository where TEntity : class, IUmbracoEntity { - protected RecycleBinRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + protected RecycleBinRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/RelationRepository.cs b/src/Umbraco.Core/Persistence/Repositories/RelationRepository.cs index 5140b7323a..b6c312e4da 100644 --- a/src/Umbraco.Core/Persistence/Repositories/RelationRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/RelationRepository.cs @@ -7,6 +7,7 @@ using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.Factories; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -20,8 +21,8 @@ namespace Umbraco.Core.Persistence.Repositories { private readonly IRelationTypeRepository _relationTypeRepository; - public RelationRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IRelationTypeRepository relationTypeRepository) - : base(work, cache, logger, sqlSyntax) + public RelationRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IRelationTypeRepository relationTypeRepository, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { _relationTypeRepository = relationTypeRepository; } diff --git a/src/Umbraco.Core/Persistence/Repositories/RelationTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/RelationTypeRepository.cs index 276ec64d84..b3ce9fa14d 100644 --- a/src/Umbraco.Core/Persistence/Repositories/RelationTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/RelationTypeRepository.cs @@ -7,6 +7,7 @@ using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.Factories; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -19,8 +20,8 @@ namespace Umbraco.Core.Persistence.Repositories internal class RelationTypeRepository : PetaPocoRepositoryBase, IRelationTypeRepository { - public RelationTypeRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + public RelationTypeRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/ServerRegistrationRepository.cs b/src/Umbraco.Core/Persistence/Repositories/ServerRegistrationRepository.cs index bd6a463739..e65a89061d 100644 --- a/src/Umbraco.Core/Persistence/Repositories/ServerRegistrationRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/ServerRegistrationRepository.cs @@ -7,6 +7,7 @@ using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.Factories; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -15,8 +16,8 @@ namespace Umbraco.Core.Persistence.Repositories { internal class ServerRegistrationRepository : PetaPocoRepositoryBase { - public ServerRegistrationRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + public ServerRegistrationRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/SimpleGetRepository.cs b/src/Umbraco.Core/Persistence/Repositories/SimpleGetRepository.cs index a88672ea6f..2f0a2321d6 100644 --- a/src/Umbraco.Core/Persistence/Repositories/SimpleGetRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/SimpleGetRepository.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using System.Linq; using Umbraco.Core.Logging; using Umbraco.Core.Models.EntityBase; - +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -18,8 +18,8 @@ namespace Umbraco.Core.Persistence.Repositories where TDto: class { - protected SimpleGetRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + protected SimpleGetRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/TagRepository.cs b/src/Umbraco.Core/Persistence/Repositories/TagRepository.cs index d44aa41f60..fe27310a28 100644 --- a/src/Umbraco.Core/Persistence/Repositories/TagRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/TagRepository.cs @@ -8,6 +8,7 @@ using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.Factories; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -16,8 +17,8 @@ namespace Umbraco.Core.Persistence.Repositories { internal class TagRepository : PetaPocoRepositoryBase, ITagRepository { - internal TagRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + internal TagRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/TaskRepository.cs b/src/Umbraco.Core/Persistence/Repositories/TaskRepository.cs index b3be250ebc..c2793dcc1b 100644 --- a/src/Umbraco.Core/Persistence/Repositories/TaskRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/TaskRepository.cs @@ -7,6 +7,7 @@ using Umbraco.Core.Models; using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.Factories; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -15,8 +16,8 @@ namespace Umbraco.Core.Persistence.Repositories { internal class TaskRepository : PetaPocoRepositoryBase, ITaskRepository { - public TaskRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + public TaskRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/TaskTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/TaskTypeRepository.cs index 564e949172..aef8debd1f 100644 --- a/src/Umbraco.Core/Persistence/Repositories/TaskTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/TaskTypeRepository.cs @@ -5,6 +5,7 @@ using Umbraco.Core.Logging; using Umbraco.Core.Models; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.Factories; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -13,8 +14,8 @@ namespace Umbraco.Core.Persistence.Repositories { internal class TaskTypeRepository : PetaPocoRepositoryBase, ITaskTypeRepository { - public TaskTypeRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + public TaskTypeRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs b/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs index dab82bc154..ee794d217c 100644 --- a/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/TemplateRepository.cs @@ -13,6 +13,7 @@ using Umbraco.Core.Models.EntityBase; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.Factories; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -33,8 +34,8 @@ namespace Umbraco.Core.Persistence.Repositories private readonly ViewHelper _viewHelper; private readonly MasterPageHelper _masterPageHelper; - internal TemplateRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IFileSystem masterpageFileSystem, IFileSystem viewFileSystem, ITemplatesSection templateConfig) - : base(work, cache, logger, sqlSyntax) + internal TemplateRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IFileSystem masterpageFileSystem, IFileSystem viewFileSystem, ITemplatesSection templateConfig, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { _masterpagesFileSystem = masterpageFileSystem; _viewsFileSystem = viewFileSystem; diff --git a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs index d8ff2aeee2..32d8cfd019 100644 --- a/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/UserRepository.cs @@ -26,8 +26,8 @@ namespace Umbraco.Core.Persistence.Repositories private readonly IUserTypeRepository _userTypeRepository; private readonly CacheHelper _cacheHelper; - public UserRepository(IDatabaseUnitOfWork work, CacheHelper cacheHelper, ILogger logger, ISqlSyntaxProvider sqlSyntax, IUserTypeRepository userTypeRepository) - : base(work, cacheHelper, logger, sqlSyntax) + public UserRepository(IDatabaseUnitOfWork work, CacheHelper cacheHelper, ILogger logger, ISqlSyntaxProvider sqlSyntax, IUserTypeRepository userTypeRepository, IMappingResolver mappingResolver) + : base(work, cacheHelper, logger, sqlSyntax, mappingResolver) { _userTypeRepository = userTypeRepository; _cacheHelper = cacheHelper; diff --git a/src/Umbraco.Core/Persistence/Repositories/UserTypeRepository.cs b/src/Umbraco.Core/Persistence/Repositories/UserTypeRepository.cs index 0adebb288c..df3ab9f669 100644 --- a/src/Umbraco.Core/Persistence/Repositories/UserTypeRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/UserTypeRepository.cs @@ -6,6 +6,7 @@ using Umbraco.Core.Models.Membership; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.Persistence.Factories; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Querying; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -17,8 +18,8 @@ namespace Umbraco.Core.Persistence.Repositories /// internal class UserTypeRepository : PetaPocoRepositoryBase, IUserTypeRepository { - public UserTypeRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + public UserTypeRepository(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { } diff --git a/src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs b/src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs index 1fd4af1c8e..e6cb36e1f1 100644 --- a/src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs +++ b/src/Umbraco.Core/Persistence/Repositories/VersionableRepositoryBase.cs @@ -17,6 +17,7 @@ using Umbraco.Core.Persistence.UnitOfWork; using Umbraco.Core.PropertyEditors; using Umbraco.Core.Services; using Umbraco.Core.Dynamics; +using Umbraco.Core.Persistence.Mappers; namespace Umbraco.Core.Persistence.Repositories { @@ -24,8 +25,8 @@ namespace Umbraco.Core.Persistence.Repositories where TEntity : class, IAggregateRoot { - protected VersionableRepositoryBase(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax) - : base(work, cache, logger, sqlSyntax) + protected VersionableRepositoryBase(IDatabaseUnitOfWork work, CacheHelper cache, ILogger logger, ISqlSyntaxProvider sqlSyntax, IMappingResolver mappingResolver) + : base(work, cache, logger, sqlSyntax, mappingResolver) { } diff --git a/src/Umbraco.Core/Persistence/RepositoryFactory.cs b/src/Umbraco.Core/Persistence/RepositoryFactory.cs index 7c9e69850d..5455b24900 100644 --- a/src/Umbraco.Core/Persistence/RepositoryFactory.cs +++ b/src/Umbraco.Core/Persistence/RepositoryFactory.cs @@ -2,8 +2,9 @@ using Umbraco.Core.Configuration; using System; using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.IO; +using Umbraco.Core.LightInject; using Umbraco.Core.Logging; - +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; @@ -19,20 +20,23 @@ namespace Umbraco.Core.Persistence private readonly ISqlSyntaxProvider _sqlSyntax; private readonly CacheHelper _cacheHelper; private readonly IUmbracoSettingsSection _settings; + private readonly IMappingResolver _mappingResolver; #region Ctors - public RepositoryFactory(CacheHelper cacheHelper, ILogger logger, ISqlSyntaxProvider sqlSyntax, IUmbracoSettingsSection settings) + public RepositoryFactory(CacheHelper cacheHelper, ILogger logger, ISqlSyntaxProvider sqlSyntax, IUmbracoSettingsSection settings, IMappingResolver mappingResolver) { if (cacheHelper == null) throw new ArgumentNullException("cacheHelper"); if (logger == null) throw new ArgumentNullException("logger"); - //if (sqlSyntax == null) throw new ArgumentNullException("sqlSyntax"); + if (sqlSyntax == null) throw new ArgumentNullException("sqlSyntax"); if (settings == null) throw new ArgumentNullException("settings"); + if (mappingResolver == null) throw new ArgumentNullException("mappingResolver"); _cacheHelper = cacheHelper; _logger = logger; _sqlSyntax = sqlSyntax; _settings = settings; + _mappingResolver = mappingResolver; } #endregion @@ -46,19 +50,19 @@ namespace Umbraco.Core.Persistence { return new TaskRepository(uow, CacheHelper.CreateDisabledCacheHelper(), //never cache - _logger, _sqlSyntax); + _logger, _sqlSyntax, _mappingResolver); } public virtual IAuditRepository CreateAuditRepository(IDatabaseUnitOfWork uow) { - return new AuditRepository(uow, _cacheHelper, _logger, _sqlSyntax); + return new AuditRepository(uow, _cacheHelper, _logger, _sqlSyntax, _mappingResolver); } public virtual ITagRepository CreateTagRepository(IDatabaseUnitOfWork uow) { return new TagRepository( uow, - _cacheHelper, _logger, _sqlSyntax); + _cacheHelper, _logger, _sqlSyntax, _mappingResolver); } public virtual IContentRepository CreateContentRepository(IDatabaseUnitOfWork uow) @@ -70,7 +74,8 @@ namespace Umbraco.Core.Persistence _sqlSyntax, CreateContentTypeRepository(uow), CreateTemplateRepository(uow), - CreateTagRepository(uow)) + CreateTagRepository(uow), + _mappingResolver) { EnsureUniqueNaming = _settings.Content.EnsureUniqueNaming }; @@ -82,7 +87,8 @@ namespace Umbraco.Core.Persistence uow, _cacheHelper, _logger, _sqlSyntax, - CreateTemplateRepository(uow)); + CreateTemplateRepository(uow), + _mappingResolver); } public virtual IDataTypeDefinitionRepository CreateDataTypeDefinitionRepository(IDatabaseUnitOfWork uow) @@ -92,7 +98,8 @@ namespace Umbraco.Core.Persistence _cacheHelper, _cacheHelper, _logger, _sqlSyntax, - CreateContentTypeRepository(uow)); + CreateContentTypeRepository(uow), + _mappingResolver); } public virtual IDictionaryRepository CreateDictionaryRepository(IDatabaseUnitOfWork uow) @@ -102,7 +109,8 @@ namespace Umbraco.Core.Persistence _cacheHelper, _logger, _sqlSyntax, - CreateLanguageRepository(uow)); + CreateLanguageRepository(uow), + _mappingResolver); } public virtual ILanguageRepository CreateLanguageRepository(IDatabaseUnitOfWork uow) @@ -110,7 +118,8 @@ namespace Umbraco.Core.Persistence return new LanguageRepository( uow, _cacheHelper, - _logger, _sqlSyntax); + _logger, _sqlSyntax, + _mappingResolver); } public virtual IMediaRepository CreateMediaRepository(IDatabaseUnitOfWork uow) @@ -120,7 +129,8 @@ namespace Umbraco.Core.Persistence _cacheHelper, _logger, _sqlSyntax, CreateMediaTypeRepository(uow), - CreateTagRepository(uow)) { EnsureUniqueNaming = _settings.Content.EnsureUniqueNaming }; + CreateTagRepository(uow), + _mappingResolver) { EnsureUniqueNaming = _settings.Content.EnsureUniqueNaming }; } public virtual IMediaTypeRepository CreateMediaTypeRepository(IDatabaseUnitOfWork uow) @@ -128,7 +138,8 @@ namespace Umbraco.Core.Persistence return new MediaTypeRepository( uow, _cacheHelper, - _logger, _sqlSyntax); + _logger, _sqlSyntax, + _mappingResolver); } public virtual IRelationRepository CreateRelationRepository(IDatabaseUnitOfWork uow) @@ -137,7 +148,8 @@ namespace Umbraco.Core.Persistence uow, CacheHelper.CreateDisabledCacheHelper(), //never cache _logger, _sqlSyntax, - CreateRelationTypeRepository(uow)); + CreateRelationTypeRepository(uow), + _mappingResolver); } public virtual IRelationTypeRepository CreateRelationTypeRepository(IDatabaseUnitOfWork uow) @@ -145,7 +157,8 @@ namespace Umbraco.Core.Persistence return new RelationTypeRepository( uow, CacheHelper.CreateDisabledCacheHelper(), //never cache - _logger, _sqlSyntax); + _logger, _sqlSyntax, + _mappingResolver); } public virtual IScriptRepository CreateScriptRepository(IUnitOfWork uow) @@ -175,7 +188,8 @@ namespace Umbraco.Core.Persistence _logger, _sqlSyntax, new PhysicalFileSystem(SystemDirectories.Masterpages), new PhysicalFileSystem(SystemDirectories.MvcViews), - _settings.Templates); + _settings.Templates, + _mappingResolver); } internal virtual ServerRegistrationRepository CreateServerRegistrationRepository(IDatabaseUnitOfWork uow) @@ -183,7 +197,8 @@ namespace Umbraco.Core.Persistence return new ServerRegistrationRepository( uow, CacheHelper.CreateDisabledCacheHelper(), //never cache - _logger, _sqlSyntax); + _logger, _sqlSyntax, + _mappingResolver); } public virtual IUserTypeRepository CreateUserTypeRepository(IDatabaseUnitOfWork uow) @@ -192,7 +207,8 @@ namespace Umbraco.Core.Persistence uow, //There's not many user types but we query on users all the time so the result needs to be cached _cacheHelper, - _logger, _sqlSyntax); + _logger, _sqlSyntax, + _mappingResolver); } public virtual IUserRepository CreateUserRepository(IDatabaseUnitOfWork uow) @@ -202,14 +218,16 @@ namespace Umbraco.Core.Persistence //Need to cache users - we look up user information more than anything in the back office! _cacheHelper, _logger, _sqlSyntax, - CreateUserTypeRepository(uow)); + CreateUserTypeRepository(uow), + _mappingResolver); } internal virtual IMacroRepository CreateMacroRepository(IDatabaseUnitOfWork uow) { return new MacroRepository(uow, _cacheHelper, - _logger, _sqlSyntax); + _logger, _sqlSyntax, + _mappingResolver); } public virtual IMemberRepository CreateMemberRepository(IDatabaseUnitOfWork uow) @@ -220,14 +238,16 @@ namespace Umbraco.Core.Persistence _logger, _sqlSyntax, CreateMemberTypeRepository(uow), CreateMemberGroupRepository(uow), - CreateTagRepository(uow)); + CreateTagRepository(uow), + _mappingResolver); } public virtual IMemberTypeRepository CreateMemberTypeRepository(IDatabaseUnitOfWork uow) { return new MemberTypeRepository(uow, _cacheHelper, - _logger, _sqlSyntax); + _logger, _sqlSyntax, + _mappingResolver); } public virtual IMemberGroupRepository CreateMemberGroupRepository(IDatabaseUnitOfWork uow) @@ -235,24 +255,26 @@ namespace Umbraco.Core.Persistence return new MemberGroupRepository(uow, _cacheHelper, _logger, _sqlSyntax, - _cacheHelper); + _cacheHelper, + _mappingResolver); } public virtual IEntityRepository CreateEntityRepository(IDatabaseUnitOfWork uow) { - return new EntityRepository(uow, _sqlSyntax); + return new EntityRepository(uow, _sqlSyntax, _mappingResolver); } public IDomainRepository CreateDomainRepository(IDatabaseUnitOfWork uow) { - return new DomainRepository(uow, _cacheHelper, _logger, _sqlSyntax, CreateContentRepository(uow), CreateLanguageRepository(uow)); + return new DomainRepository(uow, _cacheHelper, _logger, _sqlSyntax, CreateContentRepository(uow), CreateLanguageRepository(uow), _mappingResolver); } public ITaskTypeRepository CreateTaskTypeRepository(IDatabaseUnitOfWork uow) { return new TaskTypeRepository(uow, CacheHelper.CreateDisabledCacheHelper(), //never cache - _logger, _sqlSyntax); + _logger, _sqlSyntax, + _mappingResolver); } } } \ No newline at end of file diff --git a/src/Umbraco.Core/Standalone/ServiceContextManager.cs b/src/Umbraco.Core/Standalone/ServiceContextManager.cs deleted file mode 100644 index 084c92cc13..0000000000 --- a/src/Umbraco.Core/Standalone/ServiceContextManager.cs +++ /dev/null @@ -1,89 +0,0 @@ -using System; -using System.Diagnostics; -using Umbraco.Core.Cache; -using Umbraco.Core.Configuration; -using Umbraco.Core.Logging; -using Umbraco.Core.Persistence; -using Umbraco.Core.Persistence.Mappers; -using Umbraco.Core.Persistence.SqlSyntax; -using Umbraco.Core.Persistence.UnitOfWork; -using Umbraco.Core.Publishing; -using Umbraco.Core.Services; -using Umbraco.Core.Strings; - -namespace Umbraco.Core.Standalone -{ - internal class ServiceContextManager : IDisposable - { - private readonly string _connectionString; - private readonly string _providerName; - private readonly ILogger _logger; - private readonly ISqlSyntaxProvider _syntaxProvider; - private ServiceContext _serviceContext; - private readonly StandaloneCoreApplication _application; - - public ServiceContextManager(string connectionString, string providerName, string baseDirectory, ILogger logger, ISqlSyntaxProvider syntaxProvider) - { - _connectionString = connectionString; - _providerName = providerName; - _logger = logger; - _syntaxProvider = syntaxProvider; - - Trace.WriteLine("ServiceContextManager-Current AppDomain: " + AppDomain.CurrentDomain.FriendlyName); - Trace.WriteLine("ServiceContextManager-Current AppDomain: " + AppDomain.CurrentDomain.BaseDirectory); - - //var webAssembly = AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(x => x.FullName.StartsWith("umbraco")); - //if (webAssembly != null && examineEventHandlerToRemove == null) - //{ - // var examineEventType = webAssembly.GetType("Umbraco.Web.Search.ExamineEvents"); - // examineEventHandlerToRemove = examineEventType; - //} - - _application = StandaloneCoreApplication.GetApplication(baseDirectory); - - var examineEventHandlerToRemove = Type.GetType("Umbraco.Web.Search.ExamineEvents, umbraco"); - if (examineEventHandlerToRemove != null) - _application.WithoutApplicationEventHandler(examineEventHandlerToRemove); - - _application.Start(); - } - - public ServiceContext Services - { - get - { - if (_serviceContext == null) - { - var cacheHelper = new CacheHelper( - new ObjectCacheRuntimeCacheProvider(), - new StaticCacheProvider(), - //we have no request based cache when running standalone - new NullCacheProvider()); - - var dbFactory = new DefaultDatabaseFactory(_connectionString, _providerName, _logger); - var dbContext = new DatabaseContext(dbFactory, _logger, _syntaxProvider, _providerName); - Database.Mapper = new PetaPocoMapper(); - _serviceContext = new ServiceContext( - new RepositoryFactory(cacheHelper, _logger, dbContext.SqlSyntax, UmbracoConfig.For.UmbracoSettings()), - new PetaPocoUnitOfWorkProvider(dbFactory), - new FileUnitOfWorkProvider(), - new PublishingStrategy(), - cacheHelper, - new DebugDiagnosticsLogger(), - UrlSegmentProviderResolver.Current.Providers); - - //initialize the DatabaseContext - dbContext.Initialize(_providerName); - } - - return _serviceContext; - } - } - - public void Dispose() - { - ((IDisposable)ApplicationContext.Current).Dispose(); - _application.Dispose(); - } - } -} \ No newline at end of file diff --git a/src/Umbraco.Core/Standalone/StandaloneCoreApplication.cs b/src/Umbraco.Core/Standalone/StandaloneCoreApplication.cs deleted file mode 100644 index c22a648478..0000000000 --- a/src/Umbraco.Core/Standalone/StandaloneCoreApplication.cs +++ /dev/null @@ -1,122 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace Umbraco.Core.Standalone -{ - internal class StandaloneCoreApplication : UmbracoApplicationBase - { - /// - /// Initializes a new instance of the class. - /// - protected StandaloneCoreApplication(string baseDirectory) - { - _baseDirectory = baseDirectory; - } - - /// - /// Provides the application boot manager. - /// - /// An application boot manager. - protected override IBootManager GetBootManager() - { - return new StandaloneCoreBootManager(this, _handlersToAdd, _handlersToRemove, _baseDirectory); - } - - #region Application - - private readonly string _baseDirectory; - private static StandaloneCoreApplication _application; - private static bool _started; - private static readonly object AppLock = new object(); - - /// - /// Gets the instance of the standalone Umbraco application. - /// - public static StandaloneCoreApplication GetApplication(string baseDirectory) - { - lock (AppLock) - { - return _application ?? (_application = new StandaloneCoreApplication(baseDirectory)); - } - } - - /// - /// Starts the application. - /// - public void Start() - { - lock (AppLock) - { - if (_started) - throw new InvalidOperationException("Application has already started."); - Application_Start(this, EventArgs.Empty); - _started = true; - } - } - - #endregion - - #region IApplicationEventHandler management - - private readonly List _handlersToAdd = new List(); - private readonly List _handlersToRemove = new List(); - - /// - /// Associates an type with the application. - /// - /// The type to associate. - /// The application. - /// Types implementing from within - /// an executable are not automatically discovered by Umbraco and have to be - /// explicitely associated with the application using this method. - public StandaloneCoreApplication WithApplicationEventHandler() - where T : IApplicationEventHandler - { - _handlersToAdd.Add(typeof(T)); - return this; - } - - /// - /// Dissociates an type from the application. - /// - /// The type to dissociate. - /// The application. - public StandaloneCoreApplication WithoutApplicationEventHandler() - where T : IApplicationEventHandler - { - _handlersToRemove.Add(typeof(T)); - return this; - } - - /// - /// Associates an type with the application. - /// - /// The type to associate. - /// The application. - /// Types implementing from within - /// an executable are not automatically discovered by Umbraco and have to be - /// explicitely associated with the application using this method. - public StandaloneCoreApplication WithApplicationEventHandler(Type type) - { - if (type.Implements() == false) - throw new ArgumentException("Type does not implement IApplicationEventHandler.", "type"); - _handlersToAdd.Add(type); - return this; - } - - /// - /// Dissociates an type from the application. - /// - /// The type to dissociate. - /// The application. - public StandaloneCoreApplication WithoutApplicationEventHandler(Type type) - { - if (type.Implements() == false) - throw new ArgumentException("Type does not implement IApplicationEventHandler.", "type"); - _handlersToRemove.Add(type); - return this; - } - - #endregion - } -} \ No newline at end of file diff --git a/src/Umbraco.Core/Standalone/StandaloneCoreBootManager.cs b/src/Umbraco.Core/Standalone/StandaloneCoreBootManager.cs deleted file mode 100644 index 5a95a4476c..0000000000 --- a/src/Umbraco.Core/Standalone/StandaloneCoreBootManager.cs +++ /dev/null @@ -1,56 +0,0 @@ -using System; -using System.Collections.Generic; -using Umbraco.Core.ObjectResolution; -using Umbraco.Core.Persistence.Mappers; -using umbraco.interfaces; - -namespace Umbraco.Core.Standalone -{ - internal class StandaloneCoreBootManager : CoreBootManager - { - private readonly IEnumerable _handlersToAdd; - private readonly IEnumerable _handlersToRemove; - private readonly string _baseDirectory; - - public StandaloneCoreBootManager(UmbracoApplicationBase umbracoApplication, IEnumerable handlersToAdd, IEnumerable handlersToRemove, string baseDirectory) - : base(umbracoApplication) - { - _handlersToAdd = handlersToAdd; - _handlersToRemove = handlersToRemove; - _baseDirectory = baseDirectory; - - base.InitializeApplicationRootPath(_baseDirectory); - - } - - //protected override void InitializeApplicationEventsResolver() - //{ - // base.InitializeApplicationEventsResolver(); - - // foreach (var type in _handlersToAdd) - // ApplicationEventsResolver.Current.AddType(type); - - // foreach (var type in _handlersToRemove) - // ApplicationEventsResolver.Current.RemoveType(type); - //} - - protected override void InitializeResolvers() - { - base.InitializeResolvers(); - - //Mappers are not resolved, which could be because of a known TypeMapper issue - /*MappingResolver.Reset(); - MappingResolver.Current = new MappingResolver( - () => - new List - { - typeof (ContentMapper), - typeof (ContentTypeMapper), - typeof (MediaMapper), - typeof (MediaTypeMapper), - typeof (DataTypeDefinitionMapper), - typeof (UmbracoEntityMapper) - });*/ - } - } -} \ No newline at end of file diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index 2e7f6dc176..a1c3a5063d 100644 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -315,9 +315,11 @@ + + @@ -1133,9 +1135,6 @@ - - - diff --git a/src/Umbraco.Tests/Persistence/BaseTableByTableTest.cs b/src/Umbraco.Tests/Persistence/BaseTableByTableTest.cs index 8264b40b55..dfff7b319d 100644 --- a/src/Umbraco.Tests/Persistence/BaseTableByTableTest.cs +++ b/src/Umbraco.Tests/Persistence/BaseTableByTableTest.cs @@ -10,6 +10,7 @@ using Umbraco.Core.Logging; using Umbraco.Core.Models.Rdbms; using Umbraco.Core.ObjectResolution; using Umbraco.Core.Persistence; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; using Umbraco.Core.Profiling; @@ -54,7 +55,7 @@ namespace Umbraco.Tests.Persistence new DefaultDatabaseFactory(GlobalSettings.UmbracoConnectionName, _logger), _logger, SqlSyntaxProvider, "System.Data.SqlServerCe.4.0"); - var repositoryFactory = new RepositoryFactory(cacheHelper, _logger, SqlSyntaxProvider, SettingsForTests.GenerateMockSettings()); + var repositoryFactory = new RepositoryFactory(cacheHelper, _logger, SqlSyntaxProvider, SettingsForTests.GenerateMockSettings(), Mock.Of()); ApplicationContext.Current = new ApplicationContext( //assign the db context diff --git a/src/Umbraco.Tests/Persistence/Mappers/MappingResolverTests.cs b/src/Umbraco.Tests/Persistence/Mappers/MappingResolverTests.cs deleted file mode 100644 index b15da5ec1d..0000000000 --- a/src/Umbraco.Tests/Persistence/Mappers/MappingResolverTests.cs +++ /dev/null @@ -1,55 +0,0 @@ -using NUnit.Framework; -using Umbraco.Core; -using Umbraco.Core.Models; -using Umbraco.Core.ObjectResolution; -using Umbraco.Core.Persistence.Mappers; -using Umbraco.Tests.TestHelpers; - -namespace Umbraco.Tests.Persistence.Mappers -{ - [TestFixture] - public class MappingResolverTests : BaseUsingSqlCeSyntax - { - public override void Initialize() - { - base.Initialize(); - } - - public override void TearDown() - { - base.TearDown(); - } - - - [Test] - public void Can_Map_Id_Property_On_Content() - { - var mapping = MappingResolver.Current.GetMapping(typeof (Content), "Id"); - - Assert.That(mapping, Is.EqualTo("[umbracoNode].[id]")); - } - - [Test] - public void Can_Map_Alias_Property_On_ContentType() - { - var mapping = MappingResolver.Current.GetMapping(typeof(ContentType), "Alias"); - - Assert.That(mapping, Is.EqualTo("[cmsContentType].[alias]")); - } - - [Test] - public void Can_Resolve_ContentType_Mapper() - { - var mapper = MappingResolver.Current.ResolveMapperByType(typeof(ContentType)); - - Assert.IsTrue(mapper is ContentTypeMapper); - } - [Test] - public void Can_Resolve_Dictionary_Mapper() - { - var mapper = MappingResolver.Current.ResolveMapperByType(typeof(IDictionaryItem)); - - Assert.IsTrue(mapper is DictionaryMapper); - } - } -} \ No newline at end of file diff --git a/src/Umbraco.Tests/Persistence/Querying/ExpressionTests.cs b/src/Umbraco.Tests/Persistence/Querying/ExpressionTests.cs index 437c2c6704..e5aa0a6903 100644 --- a/src/Umbraco.Tests/Persistence/Querying/ExpressionTests.cs +++ b/src/Umbraco.Tests/Persistence/Querying/ExpressionTests.cs @@ -34,7 +34,7 @@ namespace Umbraco.Tests.Persistence.Querying { //Arrange Expression> predicate = content => content.Path.StartsWith("-1"); - var modelToSqlExpressionHelper = new ModelToSqlExpressionHelper(SqlSyntax); + var modelToSqlExpressionHelper = new ModelToSqlExpressionHelper(SqlSyntax, MappingResolver); var result = modelToSqlExpressionHelper.Visit(predicate); Console.WriteLine("Model to Sql ExpressionHelper: \n" + result); @@ -48,7 +48,7 @@ namespace Umbraco.Tests.Persistence.Querying { //Arrange Expression> predicate = content => content.ParentId == -1; - var modelToSqlExpressionHelper = new ModelToSqlExpressionHelper(SqlSyntax); + var modelToSqlExpressionHelper = new ModelToSqlExpressionHelper(SqlSyntax, MappingResolver); var result = modelToSqlExpressionHelper.Visit(predicate); Console.WriteLine("Model to Sql ExpressionHelper: \n" + result); @@ -61,7 +61,7 @@ namespace Umbraco.Tests.Persistence.Querying public void Equals_Operator_For_Value_Gets_Escaped() { Expression> predicate = user => user.Username == "hello@world.com"; - var modelToSqlExpressionHelper = new ModelToSqlExpressionHelper(SqlSyntax); + var modelToSqlExpressionHelper = new ModelToSqlExpressionHelper(SqlSyntax, MappingResolver); var result = modelToSqlExpressionHelper.Visit(predicate); Console.WriteLine("Model to Sql ExpressionHelper: \n" + result); @@ -74,7 +74,7 @@ namespace Umbraco.Tests.Persistence.Querying public void Equals_Method_For_Value_Gets_Escaped() { Expression> predicate = user => user.Username.Equals("hello@world.com"); - var modelToSqlExpressionHelper = new ModelToSqlExpressionHelper(SqlSyntax); + var modelToSqlExpressionHelper = new ModelToSqlExpressionHelper(SqlSyntax, MappingResolver); var result = modelToSqlExpressionHelper.Visit(predicate); Console.WriteLine("Model to Sql ExpressionHelper: \n" + result); @@ -89,7 +89,7 @@ namespace Umbraco.Tests.Persistence.Querying //mysql escapes backslashes, so we'll test with that Expression> predicate = user => user.Username.Equals("mydomain\\myuser"); - var modelToSqlExpressionHelper = new ModelToSqlExpressionHelper(new MySqlSyntaxProvider(Mock.Of())); + var modelToSqlExpressionHelper = new ModelToSqlExpressionHelper(new MySqlSyntaxProvider(Mock.Of()), MappingResolver); var result = modelToSqlExpressionHelper.Visit(predicate); Console.WriteLine("Model to Sql ExpressionHelper: \n" + result); diff --git a/src/Umbraco.Tests/Persistence/Querying/QueryBuilderTests.cs b/src/Umbraco.Tests/Persistence/Querying/QueryBuilderTests.cs index aacc28d1b3..a4778fd47d 100644 --- a/src/Umbraco.Tests/Persistence/Querying/QueryBuilderTests.cs +++ b/src/Umbraco.Tests/Persistence/Querying/QueryBuilderTests.cs @@ -22,7 +22,7 @@ namespace Umbraco.Tests.Persistence.Querying sql.Select("*"); sql.From("umbracoNode"); - var query = new Query(SqlSyntax).Where(x => x.Path.StartsWith("-1")); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Path.StartsWith("-1")); // Act var translator = new SqlTranslator(sql, query); @@ -49,7 +49,7 @@ namespace Umbraco.Tests.Persistence.Querying sql.Select("*"); sql.From("umbracoNode"); - var query = new Query(SqlSyntax).Where(x => x.ParentId == -1); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.ParentId == -1); // Act var translator = new SqlTranslator(sql, query); @@ -76,7 +76,7 @@ namespace Umbraco.Tests.Persistence.Querying sql.Select("*"); sql.From("umbracoNode"); - var query = new Query(SqlSyntax).Where(x => x.Alias == "umbTextpage"); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Alias == "umbTextpage"); // Act var translator = new SqlTranslator(sql, query); @@ -113,7 +113,7 @@ namespace Umbraco.Tests.Persistence.Querying .On(SqlSyntax, left => left.NodeId, right => right.NodeId) .Where(SqlSyntax, x => x.NodeObjectType == nodeObjectTypeId); - var query = new Query(SqlSyntax).Where(x => x.Path.StartsWith(path) && x.Id != id && x.Published == true && x.Trashed == false); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Path.StartsWith(path) && x.Id != id && x.Published == true && x.Trashed == false); // Act var translator = new SqlTranslator(sql, query); diff --git a/src/Umbraco.Tests/Persistence/Repositories/AuditRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/AuditRepositoryTest.cs index 3bf20c005c..29c2960cf8 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/AuditRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/AuditRepositoryTest.cs @@ -17,7 +17,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repo = new AuditRepository(unitOfWork, CacheHelper, Logger, SqlSyntax)) + using (var repo = new AuditRepository(unitOfWork, CacheHelper, Logger, SqlSyntax, MappingResolver)) { repo.AddOrUpdate(new AuditItem(-1, "This is a System audit trail", AuditType.System, 0)); unitOfWork.Commit(); diff --git a/src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs index 04b54f2898..5a670a48ba 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs @@ -41,10 +41,10 @@ namespace Umbraco.Tests.Persistence.Repositories private ContentRepository CreateRepository(IDatabaseUnitOfWork unitOfWork, out ContentTypeRepository contentTypeRepository) { - var templateRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of()); - var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax); - contentTypeRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, templateRepository); - var repository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, contentTypeRepository, templateRepository, tagRepository); + var templateRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of(), MappingResolver); + var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, MappingResolver); + contentTypeRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, templateRepository, MappingResolver); + var repository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, contentTypeRepository, templateRepository, tagRepository, MappingResolver); return repository; } @@ -394,7 +394,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out contentTypeRepository)) { // Act - var query = new Query(SqlSyntax).Where(x => x.Level == 2); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Level == 2); var result = repository.GetByQuery(query); // Assert @@ -443,7 +443,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out contentTypeRepository)) { // Act - var query = new Query(SqlSyntax).Where(x => x.Level == 2); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "Name", Direction.Ascending); @@ -464,7 +464,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out contentTypeRepository)) { // Act - var query = new Query(SqlSyntax).Where(x => x.Level == 2); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 1, 1, out totalRecords, "Name", Direction.Ascending); @@ -485,7 +485,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out contentTypeRepository)) { // Act - var query = new Query(SqlSyntax).Where(x => x.Level == 2); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 2, out totalRecords, "Name", Direction.Ascending); @@ -506,7 +506,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out contentTypeRepository)) { // Act - var query = new Query(SqlSyntax).Where(x => x.Level == 2); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "Name", Direction.Descending); @@ -527,7 +527,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out contentTypeRepository)) { // Act - var query = new Query(SqlSyntax).Where(x => x.Level == 2); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "Name", Direction.Ascending, "Page 2"); @@ -548,7 +548,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out contentTypeRepository)) { // Act - var query = new Query(SqlSyntax).Where(x => x.Level == 2); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "Name", Direction.Ascending, "Page"); @@ -629,7 +629,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // Act int level = 2; - var query = new Query(SqlSyntax).Where(x => x.Level == level); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Level == level); var result = repository.Count(query); // Assert @@ -668,7 +668,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out contentTypeRepository)) { // Act - var query = new Query(SqlSyntax).Where(x => x.Key == new Guid("B58B3AD4-62C2-4E27-B1BE-837BD7C533E0")); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Key == new Guid("B58B3AD4-62C2-4E27-B1BE-837BD7C533E0")); var content = repository.GetByQuery(query).SingleOrDefault(); // Assert diff --git a/src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs index 058dd0330e..e34cc45c69 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/ContentTypeRepositoryTest.cs @@ -39,17 +39,17 @@ namespace Umbraco.Tests.Persistence.Repositories private ContentRepository CreateRepository(IDatabaseUnitOfWork unitOfWork, out ContentTypeRepository contentTypeRepository) { - var templateRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of()); - var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); - contentTypeRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, templateRepository); - var repository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, contentTypeRepository, templateRepository, tagRepository); + var templateRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of(), MappingResolver); + var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver); + contentTypeRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, templateRepository, MappingResolver); + var repository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, contentTypeRepository, templateRepository, tagRepository, MappingResolver); return repository; } private ContentTypeRepository CreateRepository(IDatabaseUnitOfWork unitOfWork) { - var templateRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of()); - var contentTypeRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, templateRepository); + var templateRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of(), MappingResolver); + var contentTypeRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, templateRepository, MappingResolver); return contentTypeRepository; } @@ -62,7 +62,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var templateRepo = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of())) + using (var templateRepo = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of(), MappingResolver)) using (var repository = CreateRepository(unitOfWork)) { var templates = new[] diff --git a/src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs index 7f75b3fa20..ac7661bf17 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/DataTypeDefinitionRepositoryTest.cs @@ -36,7 +36,10 @@ namespace Umbraco.Tests.Persistence.Repositories CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, - new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of()))); + new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of(), MappingResolver), + MappingResolver), + MappingResolver); + return dataTypeDefinitionRepository; } @@ -162,7 +165,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // Act - var query = new Query(SqlSyntax).Where(x => x.PropertyEditorAlias == Constants.PropertyEditors.RadioButtonListAlias); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.PropertyEditorAlias == Constants.PropertyEditors.RadioButtonListAlias); var result = repository.GetByQuery(query); // Assert @@ -182,7 +185,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // Act - var query = new Query(SqlSyntax).Where(x => x.Name.StartsWith("D")); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Name.StartsWith("D")); int count = repository.Count(query); // Assert @@ -365,7 +368,9 @@ namespace Umbraco.Tests.Persistence.Repositories cache, Mock.Of(), SqlSyntax, new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, - new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of()))); + new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of(), MappingResolver), + MappingResolver), + MappingResolver); DataTypeDefinition dtd; using (var repository = creator()) @@ -404,7 +409,9 @@ namespace Umbraco.Tests.Persistence.Repositories cache, Mock.Of(), SqlSyntax, new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, - new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of()))); + new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of(), MappingResolver), + MappingResolver), + MappingResolver); DataTypeDefinition dtd; using (var repository = creator()) diff --git a/src/Umbraco.Tests/Persistence/Repositories/DictionaryRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/DictionaryRepositoryTest.cs index c19e0f2eca..38ba19ce64 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/DictionaryRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/DictionaryRepositoryTest.cs @@ -29,8 +29,8 @@ namespace Umbraco.Tests.Persistence.Repositories private DictionaryRepository CreateRepository(IDatabaseUnitOfWork unitOfWork, out LanguageRepository languageRepository) { - languageRepository = new LanguageRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); - var dictionaryRepository = new DictionaryRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), new SqlCeSyntaxProvider(), languageRepository); + languageRepository = new LanguageRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver); + var dictionaryRepository = new DictionaryRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), new SqlCeSyntaxProvider(), languageRepository, MappingResolver); return dictionaryRepository; } @@ -247,7 +247,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // Act - var query = new Query(SqlSyntax).Where(x => x.ItemKey == "Article"); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.ItemKey == "Article"); var result = repository.GetByQuery(query); // Assert @@ -268,7 +268,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // Act - var query = new Query(SqlSyntax).Where(x => x.ItemKey.StartsWith("Read")); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.ItemKey.StartsWith("Read")); var result = repository.Count(query); // Assert @@ -341,8 +341,8 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - var languageRepository = new LanguageRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); - var repository = new DictionaryRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), new SqlCeSyntaxProvider(), languageRepository); + var languageRepository = new LanguageRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver); + var repository = new DictionaryRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), new SqlCeSyntaxProvider(), languageRepository, MappingResolver); var languageNo = new Language("nb-NO") { CultureName = "nb-NO" }; ServiceContext.LocalizationService.Save(languageNo); diff --git a/src/Umbraco.Tests/Persistence/Repositories/DomainRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/DomainRepositoryTest.cs index 7fa4f8aef0..7905564a6a 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/DomainRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/DomainRepositoryTest.cs @@ -21,12 +21,12 @@ namespace Umbraco.Tests.Persistence.Repositories { private DomainRepository CreateRepository(IDatabaseUnitOfWork unitOfWork, out ContentTypeRepository contentTypeRepository, out ContentRepository contentRepository, out LanguageRepository languageRepository) { - var templateRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of()); - var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax); - contentTypeRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, templateRepository); - contentRepository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, contentTypeRepository, templateRepository, tagRepository); - languageRepository = new LanguageRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax); - var domainRepository = new DomainRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, contentRepository, languageRepository); + var templateRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of(), MappingResolver); + var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, MappingResolver); + contentTypeRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, templateRepository, MappingResolver); + contentRepository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, contentTypeRepository, templateRepository, tagRepository, MappingResolver); + languageRepository = new LanguageRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, MappingResolver); + var domainRepository = new DomainRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, contentRepository, languageRepository, MappingResolver); return domainRepository; } diff --git a/src/Umbraco.Tests/Persistence/Repositories/LanguageRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/LanguageRepositoryTest.cs index 653e4a5738..bcad6e0720 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/LanguageRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/LanguageRepositoryTest.cs @@ -28,7 +28,7 @@ namespace Umbraco.Tests.Persistence.Repositories private LanguageRepository CreateRepository(IDatabaseUnitOfWork unitOfWork) { - return new LanguageRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); + return new LanguageRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver); } @@ -170,7 +170,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // Act - var query = new Query(SqlSyntax).Where(x => x.IsoCode == "da-DK"); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.IsoCode == "da-DK"); var result = repository.GetByQuery(query); // Assert @@ -190,7 +190,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // Act - var query = new Query(SqlSyntax).Where(x => x.IsoCode.StartsWith("D")); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.IsoCode.StartsWith("D")); int count = repository.Count(query); // Assert diff --git a/src/Umbraco.Tests/Persistence/Repositories/MacroRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MacroRepositoryTest.cs index fe37a227aa..6ea233aa1a 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/MacroRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/MacroRepositoryTest.cs @@ -34,7 +34,7 @@ namespace Umbraco.Tests.Persistence.Repositories var unitOfWork = provider.GetUnitOfWork(); // Act - using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) + using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver)) { var macro = new Macro("test1", "Test", "~/usercontrol/blah.ascx", "MyAssembly", "test.xslt", "~/views/macropartials/test.cshtml"); repository.AddOrUpdate(macro); @@ -52,7 +52,7 @@ namespace Umbraco.Tests.Persistence.Repositories var unitOfWork = provider.GetUnitOfWork(); // Act - using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) + using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver)) { var macro = repository.Get(1); macro.Alias = "test2"; @@ -70,7 +70,7 @@ namespace Umbraco.Tests.Persistence.Repositories var unitOfWork = provider.GetUnitOfWork(); // Act - using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) + using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver)) { // Assert Assert.That(repository, Is.Not.Null); @@ -83,7 +83,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) + using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver)) { // Act var macro = repository.Get(1); @@ -113,7 +113,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) + using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver)) { // Act var macros = repository.GetAll(); @@ -130,10 +130,10 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) + using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver)) { // Act - var query = new Query(SqlSyntax).Where(x => x.Alias.ToUpper() == "TEST1"); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Alias.ToUpper() == "TEST1"); var result = repository.GetByQuery(query); // Assert @@ -147,10 +147,10 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) + using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver)) { // Act - var query = new Query(SqlSyntax).Where(x => x.Name.StartsWith("Test")); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Name.StartsWith("Test")); int count = repository.Count(query); // Assert @@ -164,7 +164,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) + using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver)) { // Act var macro = new Macro("test", "Test", "~/usercontrol/blah.ascx", "MyAssembly", "test.xslt", "~/views/macropartials/test.cshtml"); @@ -185,7 +185,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) + using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver)) { // Act var macro = repository.Get(2); @@ -226,7 +226,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) + using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver)) { // Act var macro = repository.Get(3); @@ -247,7 +247,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) + using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver)) { // Act var exists = repository.Exists(3); @@ -265,7 +265,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) + using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver)) { var macro = repository.Get(1); macro.Properties.Add(new MacroProperty("new1", "New1", 3, "test")); @@ -292,7 +292,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) + using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver)) { var macro = new Macro("newmacro", "A new macro", "~/usercontrol/test1.ascx", "MyAssembly1", "test1.xslt", "~/views/macropartials/test1.cshtml"); macro.Properties.Add(new MacroProperty("blah1", "New1", 4, "test.editor")); @@ -317,7 +317,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) + using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver)) { var macro = new Macro("newmacro", "A new macro", "~/usercontrol/test1.ascx", "MyAssembly1", "test1.xslt", "~/views/macropartials/test1.cshtml"); macro.Properties.Add(new MacroProperty("blah1", "New1", 4, "test.editor")); @@ -342,7 +342,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) + using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver)) { var macro = new Macro("newmacro", "A new macro", "~/usercontrol/test1.ascx", "MyAssembly1", "test1.xslt", "~/views/macropartials/test1.cshtml"); var prop1 = new MacroProperty("blah1", "New1", 4, "test.editor"); @@ -373,7 +373,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) + using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver)) { var macro = repository.Get(1); macro.Properties.Add(new MacroProperty("new1", "New1", 3, "test")); @@ -401,7 +401,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) + using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver)) { var macro = repository.Get(1); macro.Properties.Add(new MacroProperty("new1", "New1", 3, "test")); @@ -430,7 +430,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var provider = new PetaPocoUnitOfWorkProvider(Logger); using (var unitOfWork = provider.GetUnitOfWork()) - using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) + using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver)) { repository.AddOrUpdate(new Macro("test1", "Test1", "~/usercontrol/test1.ascx", "MyAssembly1", "test1.xslt", "~/views/macropartials/test1.cshtml")); repository.AddOrUpdate(new Macro("test2", "Test2", "~/usercontrol/test2.ascx", "MyAssembly2", "test2.xslt", "~/views/macropartials/test2.cshtml")); diff --git a/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs index 3a28425c84..0550aa95c2 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs @@ -34,9 +34,9 @@ namespace Umbraco.Tests.Persistence.Repositories private MediaRepository CreateRepository(IDatabaseUnitOfWork unitOfWork, out MediaTypeRepository mediaTypeRepository) { - mediaTypeRepository = new MediaTypeRepository(unitOfWork, CacheHelper, Mock.Of(), SqlSyntax); - var tagRepository = new TagRepository(unitOfWork, CacheHelper, Mock.Of(), SqlSyntax); - var repository = new MediaRepository(unitOfWork, CacheHelper, Mock.Of(), SqlSyntax, mediaTypeRepository, tagRepository); + mediaTypeRepository = new MediaTypeRepository(unitOfWork, CacheHelper, Mock.Of(), SqlSyntax, MappingResolver); + var tagRepository = new TagRepository(unitOfWork, CacheHelper, Mock.Of(), SqlSyntax, MappingResolver); + var repository = new MediaRepository(unitOfWork, CacheHelper, Mock.Of(), SqlSyntax, mediaTypeRepository, tagRepository, MappingResolver); return repository; } @@ -298,7 +298,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out mediaTypeRepository)) { // Act - var query = new Query(SqlSyntax).Where(x => x.Level == 2); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Level == 2); var result = repository.GetByQuery(query); // Assert @@ -316,7 +316,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out mediaTypeRepository)) { // Act - var query = new Query(SqlSyntax).Where(x => x.Level == 2); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "SortOrder", Direction.Ascending); @@ -337,7 +337,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out mediaTypeRepository)) { // Act - var query = new Query(SqlSyntax).Where(x => x.Level == 2); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 1, 1, out totalRecords, "SortOrder", Direction.Ascending); @@ -358,7 +358,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out mediaTypeRepository)) { // Act - var query = new Query(SqlSyntax).Where(x => x.Level == 2); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 2, out totalRecords, "SortOrder", Direction.Ascending); @@ -379,7 +379,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out mediaTypeRepository)) { // Act - var query = new Query(SqlSyntax).Where(x => x.Level == 2); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "SortOrder", Direction.Descending); @@ -400,7 +400,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out mediaTypeRepository)) { // Act - var query = new Query(SqlSyntax).Where(x => x.Level == 2); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "Name", Direction.Ascending); @@ -421,7 +421,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out mediaTypeRepository)) { // Act - var query = new Query(SqlSyntax).Where(x => x.Level == 2); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "SortOrder", Direction.Ascending, "File"); @@ -442,7 +442,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepository(unitOfWork, out mediaTypeRepository)) { // Act - var query = new Query(SqlSyntax).Where(x => x.Level == 2); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Level == 2); int totalRecords; var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "SortOrder", Direction.Ascending, "Test"); @@ -527,7 +527,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Act int level = 2; - var query = new Query(SqlSyntax).Where(x => x.Level == level); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Level == level); var result = repository.Count(query); // Assert diff --git a/src/Umbraco.Tests/Persistence/Repositories/MediaTypeRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MediaTypeRepositoryTest.cs index 918577635c..6b4636ec28 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/MediaTypeRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/MediaTypeRepositoryTest.cs @@ -28,7 +28,7 @@ namespace Umbraco.Tests.Persistence.Repositories private MediaTypeRepository CreateRepository(IDatabaseUnitOfWork unitOfWork) { - return new MediaTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); + return new MediaTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver); } [Test] diff --git a/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs index f5ca17ee1b..298781dd40 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/MemberRepositoryTest.cs @@ -35,10 +35,10 @@ namespace Umbraco.Tests.Persistence.Repositories private MemberRepository CreateRepository(IDatabaseUnitOfWork unitOfWork, out MemberTypeRepository memberTypeRepository, out MemberGroupRepository memberGroupRepository) { - memberTypeRepository = new MemberTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); - memberGroupRepository = new MemberGroupRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, CacheHelper.CreateDisabledCacheHelper()); - var tagRepo = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); - var repository = new MemberRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, memberTypeRepository, memberGroupRepository, tagRepo); + memberTypeRepository = new MemberTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver); + memberGroupRepository = new MemberGroupRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, CacheHelper.CreateDisabledCacheHelper(), MappingResolver); + var tagRepo = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver); + var repository = new MemberRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, memberTypeRepository, memberGroupRepository, tagRepo, MappingResolver); return repository; } @@ -191,7 +191,7 @@ namespace Umbraco.Tests.Persistence.Repositories var member = CreateTestMember(key: key); // Act - var query = new Query(SqlSyntax).Where(x => x.Key == key); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Key == key); var result = repository.GetByQuery(query); // Assert @@ -318,7 +318,7 @@ namespace Umbraco.Tests.Persistence.Repositories [Test] public void Can_Create_Correct_Subquery() { - var query = new Query(SqlSyntax).Where(x => + var query = new Query(SqlSyntax, MappingResolver).Where(x => ((Member) x).LongStringPropertyValue.Contains("1095") && ((Member) x).PropertyTypeAlias == "headshot"); diff --git a/src/Umbraco.Tests/Persistence/Repositories/MemberTypeRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MemberTypeRepositoryTest.cs index 1360500d96..7ad6d59cde 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/MemberTypeRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/MemberTypeRepositoryTest.cs @@ -32,7 +32,7 @@ namespace Umbraco.Tests.Persistence.Repositories private MemberTypeRepository CreateRepository(IDatabaseUnitOfWork unitOfWork) { - return new MemberTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); + return new MemberTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver); } [Test] diff --git a/src/Umbraco.Tests/Persistence/Repositories/RelationRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/RelationRepositoryTest.cs index 4e79b9094b..49f53bef1f 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/RelationRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/RelationRepositoryTest.cs @@ -30,8 +30,8 @@ namespace Umbraco.Tests.Persistence.Repositories private RelationRepository CreateRepository(IDatabaseUnitOfWork unitOfWork, out RelationTypeRepository relationTypeRepository) { - relationTypeRepository = new RelationTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); - var repository = new RelationRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, relationTypeRepository); + relationTypeRepository = new RelationTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver); + var repository = new RelationRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, relationTypeRepository, MappingResolver); return repository; } @@ -199,7 +199,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // Act - var query = new Query(SqlSyntax).Where(x => x.ParentId == NodeDto.NodeIdSeed + 1); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.ParentId == NodeDto.NodeIdSeed + 1); int count = repository.Count(query); // Assert @@ -218,7 +218,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // Act - var query = new Query(SqlSyntax).Where(x => x.RelationTypeId == RelationTypeDto.NodeIdSeed); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.RelationTypeId == RelationTypeDto.NodeIdSeed); var relations = repository.GetByQuery(query); // Assert @@ -265,8 +265,8 @@ namespace Umbraco.Tests.Persistence.Repositories var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - var relationTypeRepository = new RelationTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); - var relationRepository = new RelationRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, relationTypeRepository); + var relationTypeRepository = new RelationTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver); + var relationRepository = new RelationRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, relationTypeRepository, MappingResolver); relationTypeRepository.AddOrUpdate(relateContent); relationTypeRepository.AddOrUpdate(relateContentType); diff --git a/src/Umbraco.Tests/Persistence/Repositories/RelationTypeRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/RelationTypeRepositoryTest.cs index c1c46d22a5..cd4263df03 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/RelationTypeRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/RelationTypeRepositoryTest.cs @@ -29,7 +29,7 @@ namespace Umbraco.Tests.Persistence.Repositories private RelationTypeRepository CreateRepository(IDatabaseUnitOfWork unitOfWork) { - return new RelationTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); + return new RelationTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver); } @@ -192,7 +192,7 @@ namespace Umbraco.Tests.Persistence.Repositories { // Act - var query = new Query(SqlSyntax).Where(x => x.Alias.StartsWith("relate")); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Alias.StartsWith("relate")); int count = repository.Count(query); // Assert @@ -211,7 +211,7 @@ namespace Umbraco.Tests.Persistence.Repositories // Act var childObjType = new Guid(Constants.ObjectTypes.DocumentType); - var query = new Query(SqlSyntax).Where(x => x.ChildObjectType == childObjType); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.ChildObjectType == childObjType); var result = repository.GetByQuery(query); // Assert @@ -235,7 +235,7 @@ namespace Umbraco.Tests.Persistence.Repositories var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - var repository = new RelationTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); + var repository = new RelationTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver); repository.AddOrUpdate(relateContent);//Id 2 repository.AddOrUpdate(relateContentType);//Id 3 diff --git a/src/Umbraco.Tests/Persistence/Repositories/ServerRegistrationRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/ServerRegistrationRepositoryTest.cs index b76d082d07..131497fb84 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/ServerRegistrationRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/ServerRegistrationRepositoryTest.cs @@ -28,7 +28,7 @@ namespace Umbraco.Tests.Persistence.Repositories private ServerRegistrationRepository CreateRepositor(IDatabaseUnitOfWork unitOfWork) { - return new ServerRegistrationRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); + return new ServerRegistrationRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver); } [Test] @@ -128,7 +128,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepositor(unitOfWork)) { // Act - var query = new Query(SqlSyntax).Where(x => x.ComputerName.ToUpper() == "COMPUTER3"); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.ComputerName.ToUpper() == "COMPUTER3"); var result = repository.GetByQuery(query); // Assert @@ -145,7 +145,7 @@ namespace Umbraco.Tests.Persistence.Repositories using (var repository = CreateRepositor(unitOfWork)) { // Act - var query = new Query(SqlSyntax).Where(x => x.ServerAddress.StartsWith("http://")); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.ServerAddress.StartsWith("http://")); int count = repository.Count(query); // Assert @@ -246,7 +246,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var provider = new PetaPocoUnitOfWorkProvider(Logger); using (var unitOfWork = provider.GetUnitOfWork()) - using (var repository = new ServerRegistrationRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) + using (var repository = new ServerRegistrationRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver)) { repository.AddOrUpdate(new ServerRegistration("http://localhost", "COMPUTER1", DateTime.Now) { IsActive = true }); repository.AddOrUpdate(new ServerRegistration("http://www.mydomain.com", "COMPUTER2", DateTime.Now)); diff --git a/src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs index 93089b6e93..aa76ce504e 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/TagRepositoryTest.cs @@ -35,7 +35,7 @@ namespace Umbraco.Tests.Persistence.Repositories private TagRepository CreateRepository(IDatabaseUnitOfWork unitOfWork) { - var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); + var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver); return tagRepository; } @@ -939,18 +939,18 @@ namespace Umbraco.Tests.Persistence.Repositories private ContentRepository CreateContentRepository(IDatabaseUnitOfWork unitOfWork, out ContentTypeRepository contentTypeRepository) { - var templateRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of()); - var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); - contentTypeRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, templateRepository); - var repository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, contentTypeRepository, templateRepository, tagRepository); + var templateRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of(), MappingResolver); + var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver); + contentTypeRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, templateRepository, MappingResolver); + var repository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, contentTypeRepository, templateRepository, tagRepository, MappingResolver); return repository; } private MediaRepository CreateMediaRepository(IDatabaseUnitOfWork unitOfWork, out MediaTypeRepository mediaTypeRepository) { - var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); - mediaTypeRepository = new MediaTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); - var repository = new MediaRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, mediaTypeRepository, tagRepository); + var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver); + mediaTypeRepository = new MediaTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver); + var repository = new MediaRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, mediaTypeRepository, tagRepository, MappingResolver); return repository; } } diff --git a/src/Umbraco.Tests/Persistence/Repositories/TaskRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/TaskRepositoryTest.cs index 1477f62e9f..efff2a0658 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/TaskRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/TaskRepositoryTest.cs @@ -17,7 +17,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntax)) + using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntax, MappingResolver)) { var created = DateTime.Now; var task = new Task(new TaskType("asdfasdf")) @@ -44,7 +44,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntax)) + using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntax, MappingResolver)) { var created = DateTime.Now; repo.AddOrUpdate(new Task(new TaskType("asdfasdf")) @@ -76,7 +76,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntax)) + using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntax, MappingResolver)) { var task = new Task(new TaskType("asdfasdf")) { @@ -106,7 +106,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntax)) + using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntax, MappingResolver)) { var task = new Task(new TaskType("asdfasdf")) { @@ -134,7 +134,7 @@ namespace Umbraco.Tests.Persistence.Repositories var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntax)) + using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntax, MappingResolver)) { var found = repo.GetAll().ToArray(); Assert.AreEqual(20, found.Count()); @@ -149,7 +149,7 @@ namespace Umbraco.Tests.Persistence.Repositories var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntax)) + using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntax, MappingResolver)) { var found = repo.GetTasks(includeClosed: true).ToArray(); Assert.AreEqual(15, found.Count()); @@ -164,7 +164,7 @@ namespace Umbraco.Tests.Persistence.Repositories var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntax)) + using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntax, MappingResolver)) { var found = repo.GetTasks(itemId:-20).ToArray(); Assert.AreEqual(10, found.Count()); @@ -179,7 +179,7 @@ namespace Umbraco.Tests.Persistence.Repositories var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntax)) + using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntax, MappingResolver)) { var found = repo.GetTasks(includeClosed: false); Assert.AreEqual(10, found.Count()); @@ -190,7 +190,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntax)) + using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntax, MappingResolver)) { for (int i = 0; i < count; i++) { diff --git a/src/Umbraco.Tests/Persistence/Repositories/TaskTypeRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/TaskTypeRepositoryTest.cs index ef80df5f3a..bceb8d54d7 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/TaskTypeRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/TaskTypeRepositoryTest.cs @@ -18,8 +18,8 @@ namespace Umbraco.Tests.Persistence.Repositories var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); var taskType = new TaskType("asdfasdf"); - using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntax)) - using (var taskTypeRepo = new TaskTypeRepository(unitOfWork, CacheHelper, Logger, SqlSyntax)) + using (var repo = new TaskRepository(unitOfWork, CacheHelper, Logger, SqlSyntax, MappingResolver)) + using (var taskTypeRepo = new TaskTypeRepository(unitOfWork, CacheHelper, Logger, SqlSyntax, MappingResolver)) { var created = DateTime.Now; var task = new Task(taskType) diff --git a/src/Umbraco.Tests/Persistence/Repositories/TemplateRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/TemplateRepositoryTest.cs index a8cc8b41e3..7b8688e05c 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/TemplateRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/TemplateRepositoryTest.cs @@ -29,7 +29,7 @@ namespace Umbraco.Tests.Persistence.Repositories private ITemplateRepository CreateRepository(IDatabaseUnitOfWork unitOfWork, ITemplatesSection templatesSection = null) { return new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, _masterPageFileSystem, _viewsFileSystem, - templatesSection ?? Mock.Of(t => t.DefaultRenderingEngine == RenderingEngine.Mvc)); + templatesSection ?? Mock.Of(t => t.DefaultRenderingEngine == RenderingEngine.Mvc), MappingResolver); } [SetUp] @@ -404,9 +404,9 @@ namespace Umbraco.Tests.Persistence.Repositories using (var templateRepository = CreateRepository(unitOfWork)) { - var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); - var contentTypeRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, templateRepository); - var contentRepo = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, contentTypeRepository, templateRepository, tagRepository); + var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver); + var contentTypeRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, templateRepository, MappingResolver); + var contentRepo = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, contentTypeRepository, templateRepository, tagRepository, MappingResolver); using (contentRepo) { diff --git a/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs index d74a84ecac..4569e63959 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/UserRepositoryTest.cs @@ -34,8 +34,8 @@ namespace Umbraco.Tests.Persistence.Repositories private UserRepository CreateRepository(IDatabaseUnitOfWork unitOfWork, out UserTypeRepository userTypeRepository) { - userTypeRepository = new UserTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); - var repository = new UserRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, userTypeRepository); + userTypeRepository = new UserTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver); + var repository = new UserRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, userTypeRepository, MappingResolver); return repository; } @@ -175,8 +175,8 @@ namespace Umbraco.Tests.Persistence.Repositories unitOfWork.Commit(); var id = user.Id; - using (var utRepo = new UserTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax)) - using (var repository2 = new UserRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, utRepo)) + using (var utRepo = new UserTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, MappingResolver)) + using (var repository2 = new UserRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, utRepo, MappingResolver)) { repository2.Delete(user); unitOfWork.Commit(); @@ -252,7 +252,7 @@ namespace Umbraco.Tests.Persistence.Repositories CreateAndCommitMultipleUsers(repository, unitOfWork); // Act - var query = new Query(SqlSyntax).Where(x => x.Username == "TestUser1"); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Username == "TestUser1"); var result = repository.GetByQuery(query); // Assert @@ -333,7 +333,7 @@ namespace Umbraco.Tests.Persistence.Repositories var users = CreateAndCommitMultipleUsers(repository, unitOfWork); // Act - var query = new Query(SqlSyntax).Where(x => x.Username == "TestUser1" || x.Username == "TestUser2"); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Username == "TestUser1" || x.Username == "TestUser2"); var result = repository.Count(query); // Assert @@ -483,8 +483,8 @@ namespace Umbraco.Tests.Persistence.Repositories // Arrange var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var utRepo = new UserTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax)) - using (var repository = new UserRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, utRepo)) + using (var utRepo = new UserTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, MappingResolver)) + using (var repository = new UserRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, utRepo, MappingResolver)) { // Act @@ -534,7 +534,7 @@ namespace Umbraco.Tests.Persistence.Repositories { var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var repository = new UserTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax)) + using (var repository = new UserTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, MappingResolver)) { var userType = MockedUserType.CreateUserType(); repository.AddOrUpdate(userType); diff --git a/src/Umbraco.Tests/Persistence/Repositories/UserTypeRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/UserTypeRepositoryTest.cs index 5f7ce5e858..d3bc64ba4f 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/UserTypeRepositoryTest.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/UserTypeRepositoryTest.cs @@ -32,7 +32,7 @@ namespace Umbraco.Tests.Persistence.Repositories private UserTypeRepository CreateRepository(IDatabaseUnitOfWork unitOfWork) { - return new UserTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); + return new UserTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver); } [Test] @@ -143,7 +143,7 @@ namespace Umbraco.Tests.Persistence.Repositories unitOfWork.Commit(); var id = userType.Id; - using (var repository2 = new UserTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax)) + using (var repository2 = new UserTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, MappingResolver)) { repository2.Delete(userType); unitOfWork.Commit(); @@ -193,7 +193,7 @@ namespace Umbraco.Tests.Persistence.Repositories CreateAndCommitMultipleUserTypes(repository, unitOfWork); // Act - var query = new Query(SqlSyntax).Where(x => x.Alias == "testUserType1"); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Alias == "testUserType1"); var result = repository.GetByQuery(query); // Assert @@ -270,7 +270,7 @@ namespace Umbraco.Tests.Persistence.Repositories var userTypes = CreateAndCommitMultipleUserTypes(repository, unitOfWork); // Act - var query = new Query(SqlSyntax).Where(x => x.Alias == "testUserType1" || x.Alias == "testUserType2"); + var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Alias == "testUserType1" || x.Alias == "testUserType2"); var result = repository.Count(query); // Assert diff --git a/src/Umbraco.Tests/Services/ContentServicePerformanceTest.cs b/src/Umbraco.Tests/Services/ContentServicePerformanceTest.cs index 4a26d917e1..7a6f039acd 100644 --- a/src/Umbraco.Tests/Services/ContentServicePerformanceTest.cs +++ b/src/Umbraco.Tests/Services/ContentServicePerformanceTest.cs @@ -148,10 +148,10 @@ namespace Umbraco.Tests.Services var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var tRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of())) - using (var tagRepo = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax)) - using (var ctRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, tRepository)) - using (var repository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, ctRepository, tRepository, tagRepo)) + using (var tRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of(), MappingResolver)) + using (var tagRepo = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, MappingResolver)) + using (var ctRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, tRepository, MappingResolver)) + using (var repository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, ctRepository, tRepository, tagRepo, MappingResolver)) { // Act Stopwatch watch = Stopwatch.StartNew(); @@ -179,10 +179,10 @@ namespace Umbraco.Tests.Services var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var tRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of())) - using (var tagRepo = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax)) - using (var ctRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, tRepository)) - using (var repository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, ctRepository, tRepository, tagRepo)) + using (var tRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of(), MappingResolver)) + using (var tagRepo = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, MappingResolver)) + using (var ctRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, tRepository, MappingResolver)) + using (var repository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, ctRepository, tRepository, tagRepo, MappingResolver)) { // Act Stopwatch watch = Stopwatch.StartNew(); @@ -209,10 +209,10 @@ namespace Umbraco.Tests.Services var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var tRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of())) - using (var tagRepo = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax)) - using (var ctRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, tRepository)) - using (var repository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, ctRepository, tRepository, tagRepo)) + using (var tRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of(), MappingResolver)) + using (var tagRepo = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, MappingResolver)) + using (var ctRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, tRepository, MappingResolver)) + using (var repository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, ctRepository, tRepository, tagRepo, MappingResolver)) { // Act @@ -242,10 +242,10 @@ namespace Umbraco.Tests.Services var provider = new PetaPocoUnitOfWorkProvider(Logger); var unitOfWork = provider.GetUnitOfWork(); - using (var tRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of())) - using (var tagRepo = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax)) - using (var ctRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, tRepository)) - using (var repository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, ctRepository, tRepository, tagRepo)) + using (var tRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of(), MappingResolver)) + using (var tagRepo = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, MappingResolver)) + using (var ctRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, tRepository, MappingResolver)) + using (var repository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Logger, SqlSyntax, ctRepository, tRepository, tagRepo, MappingResolver)) { // Act diff --git a/src/Umbraco.Tests/Services/ContentServiceTests.cs b/src/Umbraco.Tests/Services/ContentServiceTests.cs index 52107a8deb..0d22d9958c 100644 --- a/src/Umbraco.Tests/Services/ContentServiceTests.cs +++ b/src/Umbraco.Tests/Services/ContentServiceTests.cs @@ -1442,10 +1442,10 @@ namespace Umbraco.Tests.Services private ContentRepository CreateRepository(IDatabaseUnitOfWork unitOfWork, out ContentTypeRepository contentTypeRepository) { - var templateRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of()); - var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax); - contentTypeRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, templateRepository); - var repository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, contentTypeRepository, templateRepository, tagRepository); + var templateRepository = new TemplateRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, Mock.Of(), Mock.Of(), Mock.Of(), MappingResolver); + var tagRepository = new TagRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver); + contentTypeRepository = new ContentTypeRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, templateRepository, MappingResolver); + var repository = new ContentRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, contentTypeRepository, templateRepository, tagRepository, MappingResolver); return repository; } } diff --git a/src/Umbraco.Tests/Services/MacroServiceTests.cs b/src/Umbraco.Tests/Services/MacroServiceTests.cs index 5e52140bb5..7267568025 100644 --- a/src/Umbraco.Tests/Services/MacroServiceTests.cs +++ b/src/Umbraco.Tests/Services/MacroServiceTests.cs @@ -27,7 +27,7 @@ namespace Umbraco.Tests.Services var provider = new PetaPocoUnitOfWorkProvider(Logger); using (var unitOfWork = provider.GetUnitOfWork()) - using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax)) + using (var repository = new MacroRepository(unitOfWork, CacheHelper.CreateDisabledCacheHelper(), Mock.Of(), SqlSyntax, MappingResolver)) { repository.AddOrUpdate(new Macro("test1", "Test1", "~/usercontrol/test1.ascx", "MyAssembly1", "test1.xslt", "~/views/macropartials/test1.cshtml")); repository.AddOrUpdate(new Macro("test2", "Test2", "~/usercontrol/test2.ascx", "MyAssembly2", "test2.xslt", "~/views/macropartials/test2.cshtml")); diff --git a/src/Umbraco.Tests/Services/ThreadSafetyServiceTest.cs b/src/Umbraco.Tests/Services/ThreadSafetyServiceTest.cs index 10839ad754..ec1590414b 100644 --- a/src/Umbraco.Tests/Services/ThreadSafetyServiceTest.cs +++ b/src/Umbraco.Tests/Services/ThreadSafetyServiceTest.cs @@ -45,7 +45,7 @@ namespace Umbraco.Tests.Services //here we are going to override the ServiceContext because normally with our test cases we use a //global Database object but this is NOT how it should work in the web world or in any multi threaded scenario. //we need a new Database object for each thread. - var repositoryFactory = new RepositoryFactory(cacheHelper, Logger, SqlSyntax, SettingsForTests.GenerateMockSettings()); + var repositoryFactory = new RepositoryFactory(cacheHelper, Logger, SqlSyntax, SettingsForTests.GenerateMockSettings(), MappingResolver); _uowProvider = new PerThreadPetaPocoUnitOfWorkProvider(_dbFactory); ApplicationContext.Services = new ServiceContext( repositoryFactory, diff --git a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs index 22a40cfe8b..91dbc6e5f3 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseDatabaseFactoryTest.cs @@ -76,7 +76,7 @@ namespace Umbraco.Tests.TestHelpers GetDbProviderName(), Logger); - var repositoryFactory = new RepositoryFactory(cacheHelper, Logger, SqlSyntax, SettingsForTests.GenerateMockSettings()); + var repositoryFactory = new RepositoryFactory(cacheHelper, Logger, SqlSyntax, SettingsForTests.GenerateMockSettings(), MappingResolver); _appContext = new ApplicationContext( //assign the db context @@ -104,6 +104,11 @@ namespace Umbraco.Tests.TestHelpers } } + protected IMappingResolver MappingResolver + { + get { return Mock.Of(); } + } + protected virtual ISqlSyntaxProvider SqlSyntax { get { return new SqlCeSyntaxProvider(); } @@ -209,9 +214,9 @@ namespace Umbraco.Tests.TestHelpers () => PluginManager.Current.ResolvePropertyEditors(), new ManifestBuilder(new ManifestParser(Logger, new DirectoryInfo(IOHelper.MapPath("~/App_Plugins"))))); - MappingResolver.Current = new MappingResolver( - Container, Logger, - () => PluginManager.Current.ResolveAssignedMapperTypes()); + //MappingResolver.Current = new MappingResolver( + // Container, Logger, + // () => PluginManager.Current.ResolveAssignedMapperTypes()); if (PropertyValueConvertersResolver.HasCurrent == false) PropertyValueConvertersResolver.Current = new PropertyValueConvertersResolver(new ActivatorServiceProvider(), Logger); diff --git a/src/Umbraco.Tests/TestHelpers/BaseDatabaseTest.cs b/src/Umbraco.Tests/TestHelpers/BaseDatabaseTest.cs index 9914c33a07..07a8b4790a 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseDatabaseTest.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseDatabaseTest.cs @@ -11,6 +11,7 @@ using Umbraco.Core.Configuration.UmbracoSettings; using Umbraco.Core.Logging; using Umbraco.Core.ObjectResolution; using Umbraco.Core.Persistence; +using Umbraco.Core.Persistence.Mappers; using Umbraco.Core.Persistence.SqlSyntax; using Umbraco.Core.Persistence.UnitOfWork; using Umbraco.Core.Profiling; @@ -67,7 +68,7 @@ namespace Umbraco.Tests.TestHelpers var cacheHelper = CacheHelper.CreateDisabledCacheHelper(); var logger = new Logger(new FileInfo(TestHelper.MapPathForTest("~/unit-test-log4net.config"))); - var repositoryFactory = new RepositoryFactory(cacheHelper, Logger, SyntaxProvider, SettingsForTests.GenerateMockSettings()); + var repositoryFactory = new RepositoryFactory(cacheHelper, Logger, SyntaxProvider, SettingsForTests.GenerateMockSettings(), Mock.Of()); var dbFactory = new DefaultDatabaseFactory(GlobalSettings.UmbracoConnectionName, logger); ApplicationContext.Current = new ApplicationContext( //assign the db context diff --git a/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs b/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs index d347abec0e..5fc006ab9c 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs @@ -26,6 +26,7 @@ using Umbraco.Core.Strings; using Umbraco.Web; using Umbraco.Web.Models.Mapping; using umbraco.BusinessLogic; +using Umbraco.Core.Persistence.Mappers; using ObjectExtensions = Umbraco.Core.ObjectExtensions; namespace Umbraco.Tests.TestHelpers @@ -174,7 +175,7 @@ namespace Umbraco.Tests.TestHelpers { var sqlSyntax = new SqlCeSyntaxProvider(); - var repoFactory = new RepositoryFactory(CacheHelper.CreateDisabledCacheHelper(), Logger, sqlSyntax, SettingsForTests.GenerateMockSettings()); + var repoFactory = new RepositoryFactory(CacheHelper.CreateDisabledCacheHelper(), Logger, sqlSyntax, SettingsForTests.GenerateMockSettings(), Mock.Of()); ApplicationContext.Current = new ApplicationContext( //assign the db context diff --git a/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs b/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs index fc2a839873..b5a02aad59 100644 --- a/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs +++ b/src/Umbraco.Tests/TestHelpers/BaseUsingSqlCeSyntax.cs @@ -20,6 +20,12 @@ namespace Umbraco.Tests.TestHelpers get { return _sqlSyntax ?? (_sqlSyntax = new SqlCeSyntaxProvider()); } } + private IMappingResolver _mappingResolver; + protected IMappingResolver MappingResolver + { + get { return _mappingResolver ?? (_mappingResolver = Mock.Of()); } + } + [SetUp] public virtual void Initialize() { @@ -33,9 +39,10 @@ namespace Umbraco.Tests.TestHelpers PluginManager.Current = new PluginManager(new ActivatorServiceProvider(), new NullCacheProvider(), logger, false); - MappingResolver.Current = new MappingResolver( - container, logger.Logger, - () => PluginManager.Current.ResolveAssignedMapperTypes()); + + //MappingResolver.Current = new MappingResolver( + // container, logger.Logger, + // () => PluginManager.Current.ResolveAssignedMapperTypes()); Resolution.Freeze(); SetUp(); @@ -47,7 +54,7 @@ namespace Umbraco.Tests.TestHelpers [TearDown] public virtual void TearDown() { - MappingResolver.Reset(); + //MappingResolver.Reset(); PluginManager.Current = null; } } diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index 4f21fc4da1..f82bdf3b65 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -337,7 +337,6 @@ - diff --git a/src/Umbraco.Web/Standalone/PowershellAssemblyResolver.cs b/src/Umbraco.Web/Standalone/PowershellAssemblyResolver.cs deleted file mode 100644 index 63dd2ff252..0000000000 --- a/src/Umbraco.Web/Standalone/PowershellAssemblyResolver.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Reflection; - -namespace Umbraco.Web.Standalone -{ - internal static class PowershellAssemblyResolver - { - private static readonly Dictionary Assemblies; - private static readonly object Locko = new object(); - - static PowershellAssemblyResolver() - { - var comparer = StringComparer.CurrentCultureIgnoreCase; - Assemblies = new Dictionary(comparer); - AppDomain.CurrentDomain.AssemblyResolve += ResolveHandler; - } - - public static void AddAssemblyLocation(string path) - { - if (string.IsNullOrWhiteSpace(path)) - throw new ArgumentException("Arg is null or empty.", "path"); - - lock (Locko) - { - var name = Path.GetFileNameWithoutExtension(path); - Assemblies.Add(name, path); - } - } - - private static Assembly ResolveHandler(object sender, ResolveEventArgs args) - { - var assemblyName = new AssemblyName(args.Name); - string assemblyFile; - return Assemblies.TryGetValue(assemblyName.Name, out assemblyFile) - ? Assembly.LoadFrom(assemblyFile) - : null; - } - } -} diff --git a/src/Umbraco.Web/Standalone/ServiceContextManager.cs b/src/Umbraco.Web/Standalone/ServiceContextManager.cs deleted file mode 100644 index d4336c7688..0000000000 --- a/src/Umbraco.Web/Standalone/ServiceContextManager.cs +++ /dev/null @@ -1,83 +0,0 @@ -using System; -using System.Diagnostics; -using Umbraco.Core; -using Umbraco.Core.Cache; -using Umbraco.Core.Configuration; -using Umbraco.Core.Logging; -using Umbraco.Core.Persistence; -using Umbraco.Core.Persistence.Mappers; -using Umbraco.Core.Persistence.SqlSyntax; -using Umbraco.Core.Persistence.UnitOfWork; -using Umbraco.Core.Publishing; -using Umbraco.Core.Services; -using Umbraco.Core.Strings; - -namespace Umbraco.Web.Standalone -{ - //TODO: Why does this exist? there's the same thing in the Core proj - - internal class ServiceContextManager : IDisposable - { - private readonly string _connectionString; - private readonly string _providerName; - private readonly ILogger _logger; - private readonly ISqlSyntaxProvider _syntaxProvider; - private ServiceContext _serviceContext; - private readonly StandaloneApplication _application; - - public ServiceContextManager(string connectionString, string providerName, string baseDirectory, ILogger logger, ISqlSyntaxProvider syntaxProvider) - { - _connectionString = connectionString; - _providerName = providerName; - _logger = logger; - _syntaxProvider = syntaxProvider; - - Trace.WriteLine("Current AppDomain: " + AppDomain.CurrentDomain.FriendlyName); - Trace.WriteLine("Current AppDomain: " + AppDomain.CurrentDomain.BaseDirectory); - - _application = StandaloneApplication.GetApplication(baseDirectory); - _application.Start(); - } - - public ServiceContext Services - { - get - { - if (_serviceContext == null) - { - var cacheHelper = new CacheHelper( - //SD: Not sure if this is correct? Should we be using HttpRuntime.Cache here since this is for 'Web' ? - // just not quite sure what this standalone stuff is. - new ObjectCacheRuntimeCacheProvider(), - new StaticCacheProvider(), - //SD: Not sure if this is correct? Should we be using request cache here since this is for 'Web' ? - // just not quite sure what this standalone stuff is. - new NullCacheProvider()); - - var dbFactory = new DefaultDatabaseFactory(_connectionString, _providerName, _logger); - var dbContext = new DatabaseContext(dbFactory, _logger, _syntaxProvider, _providerName); - Database.Mapper = new PetaPocoMapper(); - _serviceContext = new ServiceContext( - new RepositoryFactory(cacheHelper, _logger, dbContext.SqlSyntax, UmbracoConfig.For.UmbracoSettings()), - new PetaPocoUnitOfWorkProvider(dbFactory), - new FileUnitOfWorkProvider(), - new PublishingStrategy(), - cacheHelper, - new DebugDiagnosticsLogger(), - UrlSegmentProviderResolver.Current.Providers); - - //initialize the DatabaseContext - dbContext.Initialize(_providerName); - } - - return _serviceContext; - } - } - - public void Dispose() - { - ((IDisposable)ApplicationContext.Current).Dispose(); - _application.Dispose(); - } - } -} \ No newline at end of file diff --git a/src/Umbraco.Web/Standalone/StandaloneApplication.cs b/src/Umbraco.Web/Standalone/StandaloneApplication.cs deleted file mode 100644 index e490684dc7..0000000000 --- a/src/Umbraco.Web/Standalone/StandaloneApplication.cs +++ /dev/null @@ -1,186 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Umbraco.Core; -using Umbraco.Core.ObjectResolution; - -namespace Umbraco.Web.Standalone -{ - /// - /// An application standalone applications. - /// - internal class StandaloneApplication : UmbracoApplicationBase - { - /// - /// Initializes a new instance of the class. - /// - protected StandaloneApplication(string baseDirectory) - { - _baseDirectory = baseDirectory; - } - - /// - /// Provides the application boot manager. - /// - /// An application boot manager. - protected override IBootManager GetBootManager() - { - return new StandaloneBootManager(this, _handlersToAdd, _handlersToRemove, _baseDirectory); - } - - #region Application - - private static StandaloneApplication _application; - private readonly string _baseDirectory; - private static bool _started; - private static readonly object AppLock = new object(); - - /// - /// Gets the instance of the standalone Umbraco application. - /// - public static StandaloneApplication GetApplication(string baseDirectory) - { - lock (AppLock) - { - return _application ?? (_application = new StandaloneApplication(baseDirectory)); - } - } - - /// - /// Starts the application. - /// - public void Start(bool noerr = false) - { - lock (AppLock) - { - if (_started) - { - if (noerr) return; - throw new InvalidOperationException("Application has already started."); - } - try - { - Application_Start(this, EventArgs.Empty); - } - catch - { - TerminateInternal(); - throw; - } - _started = true; - } - } - - public void Terminate(bool noerr = false) - { - lock (AppLock) - { - if (_started == false) - { - if (noerr) return; - throw new InvalidOperationException("Application has already been terminated."); - } - - TerminateInternal(); - } - } - - private void TerminateInternal() - { - if (ApplicationContext.Current != null) - { - ApplicationContext.Current.DisposeIfDisposable(); // should reset resolution, clear caches & resolvers... - ApplicationContext.Current = null; - } - if (UmbracoContext.Current != null) - { - UmbracoContext.Current.DisposeIfDisposable(); // dunno - UmbracoContext.Current = null; - } - _started = false; - _application = null; - } - - #endregion - - #region IApplicationEventHandler management - - private readonly List _handlersToAdd = new List(); - private readonly List _handlersToRemove = new List(); - - /// - /// Associates an type with the application. - /// - /// The type to associate. - /// The application. - /// Types implementing from within - /// an executable are not automatically discovered by Umbraco and have to be - /// explicitely associated with the application using this method. - public StandaloneApplication WithApplicationEventHandler() - where T : IApplicationEventHandler - { - _handlersToAdd.Add(typeof(T)); - return this; - } - - /// - /// Dissociates an type from the application. - /// - /// The type to dissociate. - /// The application. - public StandaloneApplication WithoutApplicationEventHandler() - where T : IApplicationEventHandler - { - _handlersToRemove.Add(typeof(T)); - return this; - } - - /// - /// Associates an type with the application. - /// - /// The type to associate. - /// The application. - /// Types implementing from within - /// an executable are not automatically discovered by Umbraco and have to be - /// explicitely associated with the application using this method. - public StandaloneApplication WithApplicationEventHandler(Type type) - { - if (type.Implements() == false) - throw new ArgumentException("Type does not implement IApplicationEventHandler.", "type"); - _handlersToAdd.Add(type); - return this; - } - - /// - /// Dissociates an type from the application. - /// - /// The type to dissociate. - /// The application. - public StandaloneApplication WithoutApplicationEventHandler(Type type) - { - if (type.Implements() == false) - throw new ArgumentException("Type does not implement IApplicationEventHandler.", "type"); - _handlersToRemove.Add(type); - return this; - } - - #endregion - - #region Shortcuts to contexts - - /// - /// Gets the current . - /// - /// This is a shortcut for scripts to be able to do $app.ApplicationContext. - public ApplicationContext ApplicationContext { get { return ApplicationContext.Current; } } - - /// - /// Gets the current . - /// - /// This is a shortcut for scripts to be able to do $app.UmbracoContext. - public UmbracoContext UmbracoContext { get { return UmbracoContext.Current; } } - - #endregion - } -} diff --git a/src/Umbraco.Web/Standalone/StandaloneBootManager.cs b/src/Umbraco.Web/Standalone/StandaloneBootManager.cs deleted file mode 100644 index 52d2acaf20..0000000000 --- a/src/Umbraco.Web/Standalone/StandaloneBootManager.cs +++ /dev/null @@ -1,84 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Umbraco.Core; -using Umbraco.Core.Logging; -using Umbraco.Core.ObjectResolution; -using Umbraco.Web.PublishedCache; -using Umbraco.Web.Routing; -using Umbraco.Web.Security; -using umbraco.interfaces; - -namespace Umbraco.Web.Standalone -{ - /// - /// A boot manager for use in standalone applications. - /// - internal class StandaloneBootManager : CoreBootManager - { - // TODO - // this is highly experimental and probably not complete - not for production usage! - // also, could we inherit from WebBootManager? - - private readonly IEnumerable _handlersToAdd; - private readonly IEnumerable _handlersToRemove; - private readonly string _baseDirectory; - - public StandaloneBootManager(UmbracoApplicationBase umbracoApplication, IEnumerable handlersToAdd, IEnumerable handlersToRemove, string baseDirectory) - : base(umbracoApplication) - { - _handlersToAdd = handlersToAdd; - _handlersToRemove = handlersToRemove; - _baseDirectory = baseDirectory; - - base.InitializeApplicationRootPath(_baseDirectory); - - // TODO there's also that one... but we don't use it in standalone? - //using umbraco.editorControls; - //var editorControlsAssemblyName = typeof(uploadField).Assembly.FullName; - } - - //protected override void InitializeApplicationEventsResolver() - //{ - // base.InitializeApplicationEventsResolver(); - // foreach (var type in _handlersToAdd) - // ApplicationEventsResolver.Current.AddType(type); - // foreach (var type in _handlersToRemove) - // ApplicationEventsResolver.Current.RemoveType(type); - //} - - protected override void InitializeResolvers() - { - base.InitializeResolvers(); - - var caches = new PublishedCaches( - new PublishedCache.XmlPublishedCache.PublishedContentCache(), - new PublishedCache.XmlPublishedCache.PublishedMediaCache(ApplicationContext.Current)); - - PublishedCachesResolver.Current = new PublishedCachesResolver(caches); - - UrlProviderResolver.Current = new UrlProviderResolver(ServiceProvider, LoggerResolver.Current.Logger, typeof(DefaultUrlProvider)); - SiteDomainHelperResolver.Current = new SiteDomainHelperResolver(new SiteDomainHelper()); - - ContentLastChanceFinderResolver.Current = new ContentLastChanceFinderResolver(); - ContentFinderResolver.Current = new ContentFinderResolver( - Container, LoggerResolver.Current.Logger, - typeof (ContentFinderByPageIdQuery), - typeof (ContentFinderByNiceUrl), - typeof (ContentFinderByIdPath) - ); - - // TODO what else? - } - - // can't create context before resolution is frozen! - protected override void FreezeResolution() - { - base.FreezeResolution(); - - var httpContext = new StandaloneHttpContext(); - UmbracoContext.EnsureContext(httpContext, ApplicationContext.Current, new WebSecurity(httpContext, ApplicationContext.Current), false, false); - } - } -} diff --git a/src/Umbraco.Web/Standalone/StandaloneHttpContext.cs b/src/Umbraco.Web/Standalone/StandaloneHttpContext.cs deleted file mode 100644 index dec95dd372..0000000000 --- a/src/Umbraco.Web/Standalone/StandaloneHttpContext.cs +++ /dev/null @@ -1,73 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Web; - -namespace Umbraco.Web.Standalone -{ - /// - /// An Http context for use in standalone applications. - /// - internal class StandaloneHttpContext : HttpContextBase - { - private readonly string _url; - private readonly HttpSessionStateBase _session = new StandaloneHttpSessionState(); - private readonly HttpResponseBase _response; - private readonly HttpRequestBase _request = new StandaloneHttpRequest(); - private readonly TextWriter _writer = new StringWriter(); - private readonly IDictionary _items = new Dictionary(); - - public StandaloneHttpContext() - { - _response = new HttpResponseWrapper(new HttpResponse(_writer)); - } - - public StandaloneHttpContext(string url) - : this() - { - if (url == null) throw new ArgumentNullException("url"); - _url = url; - _request = new HttpRequestWrapper(new HttpRequest("", _url, "")); - } - - - // what else should we implement here? - - public override IDictionary Items - { - get { return _items; } - } - - public override HttpSessionStateBase Session - { - get { return _session; } - } - - public override HttpRequestBase Request - { - get { return _request; } - } - - public override HttpResponseBase Response - { - get { return _response; } - } - - } - - internal class StandaloneHttpSessionState : HttpSessionStateBase - { - - } - - internal class StandaloneHttpRequest : HttpRequestBase - { - public override Uri Url - { - get { return new Uri("http://localhost"); } - } - } -} diff --git a/src/Umbraco.Web/Standalone/WriteableConfigSystem.cs b/src/Umbraco.Web/Standalone/WriteableConfigSystem.cs deleted file mode 100644 index 2438256cce..0000000000 --- a/src/Umbraco.Web/Standalone/WriteableConfigSystem.cs +++ /dev/null @@ -1,262 +0,0 @@ -using System; -using System.Collections.Specialized; -using System.Configuration; -using System.Configuration.Internal; -using System.Reflection; -using System.Threading; - -namespace Umbraco.Web.Standalone -{ - // see http://stackoverflow.com/questions/15653621/how-to-update-add-modify-delete-keys-in-appsettings-section-of-web-config-at-r - // see http://www.codeproject.com/Articles/69364/Override-Configuration-Manager - - internal sealed class WriteableConfigSystem : IInternalConfigSystem - { - private static readonly ReaderWriterLockSlim RwLock = new ReaderWriterLockSlim(); - private static WriteableConfigSystem _installed; - private static IInternalConfigSystem _clientConfigSystem; - private object _appsettings; - private object _connectionStrings; - private static object _sInitStateOrig; - private static object _sConfigSystemOrig; - - public static bool Installed - { - get - { - try - { - RwLock.EnterReadLock(); - return _installed != null; - } - finally - { - RwLock.ExitReadLock(); - } - } - } - - /// - /// Re-initializes the ConfigurationManager, allowing us to merge in the settings from Core.Config - /// - public static void Install() - { - try - { - RwLock.EnterWriteLock(); - - if (_installed != null) - throw new InvalidOperationException("ConfigSystem is already installed."); - - FieldInfo[] fiStateValues = null; - var tInitState = typeof(ConfigurationManager).GetNestedType("InitState", BindingFlags.NonPublic); - - if (tInitState != null) - fiStateValues = tInitState.GetFields(); - // 0: NotStarted - // 1: Started - // 2: Usable - // 3: Completed - - var fiInit = typeof(ConfigurationManager).GetField("s_initState", BindingFlags.NonPublic | BindingFlags.Static); - var fiSystem = typeof(ConfigurationManager).GetField("s_configSystem", BindingFlags.NonPublic | BindingFlags.Static); - - if (fiInit != null && fiSystem != null && fiStateValues != null) - { - _sInitStateOrig = fiInit.GetValue(null); - _sConfigSystemOrig = fiSystem.GetValue(null); - fiInit.SetValue(null, fiStateValues[1].GetValue(null)); // set to Started - fiSystem.SetValue(null, null); // clear current config system - } - - _installed = new WriteableConfigSystem(); - - var configFactoryType = Type.GetType("System.Configuration.Internal.InternalConfigSettingsFactory, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", true); - var configSettingsFactory = (IInternalConfigSettingsFactory)Activator.CreateInstance(configFactoryType, true); - // just does ConfigurationManager.SetConfigurationSystem(_installed, false); - // 'false' turns initState to 2 ie usable (vs 3 ie completed) - configSettingsFactory.SetConfigurationSystem(_installed, false); - - // note: prob. don't need the factory... see how we uninstall... - - var clientConfigSystemType = Type.GetType("System.Configuration.ClientConfigurationSystem, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", true); - _clientConfigSystem = (IInternalConfigSystem)Activator.CreateInstance(clientConfigSystemType, true); - } - finally - { - RwLock.ExitWriteLock(); - } - } - - public static void Uninstall() - { - try - { - RwLock.EnterWriteLock(); - - if (_installed == null) - throw new InvalidOperationException("ConfigSystem is not installed."); - - FieldInfo[] fiStateValues = null; - var tInitState = typeof(ConfigurationManager).GetNestedType("InitState", BindingFlags.NonPublic); - - if (tInitState != null) - fiStateValues = tInitState.GetFields(); - - var fiInit = typeof(ConfigurationManager).GetField("s_initState", BindingFlags.NonPublic | BindingFlags.Static); - var fiSystem = typeof(ConfigurationManager).GetField("s_configSystem", BindingFlags.NonPublic | BindingFlags.Static); - - if (fiInit != null && fiSystem != null && fiStateValues != null) - { - // reset - the hard way - fiInit.SetValue(null, _sInitStateOrig); - fiSystem.SetValue(null, _sConfigSystemOrig); - } - - _installed = null; - _clientConfigSystem = null; - } - finally - { - RwLock.ExitWriteLock(); - } - } - - public static void Reset() - { - try - { - RwLock.EnterWriteLock(); - - if (_installed == null) - throw new InvalidOperationException("ConfigSystem is not installed."); - - _installed._appsettings = null; - _installed._connectionStrings = null; - } - finally - { - RwLock.ExitWriteLock(); - } - } - - #region IInternalConfigSystem Members - - public object GetSection(string configKey) - { - // get the section from the default location (web.config or app.config) - var section = _clientConfigSystem.GetSection(configKey); - - try - { - RwLock.EnterReadLock(); - - switch (configKey) - { - case "appSettings": - // Return cached version if exists - if (_appsettings != null) - return _appsettings; - - // create a new collection because the underlying collection is read-only - var cfg = new NameValueCollection(); - - // If an AppSettings section exists in Web.config, read and add values from it - var nvSection = section as NameValueCollection; - if (nvSection != null) - { - var localSettings = nvSection; - foreach (string key in localSettings) - cfg.Add(key, localSettings[key]); - } - - //// -------------------------------------------------------------------- - //// Here I read and decrypt keys and add them to secureConfig dictionary - //// To test assume the following line is a key stored in secure sotrage. - ////secureConfig = SecureConfig.LoadConfig(); - //secureConfig.Add("ACriticalKey", "VeryCriticalValue"); - //// -------------------------------------------------------------------- - //foreach (KeyValuePair item in secureConfig) - //{ - // if (cfg.AllKeys.Contains(item.Key)) - // { - // cfg[item.Key] = item.Value; - // } - // else - // { - // cfg.Add(item.Key, item.Value); - // } - //} - //// -------------------------------------------------------------------- - - - // Cach the settings for future use - - _appsettings = cfg; - // return the merged version of the items from secure storage and appsettings - section = _appsettings; - break; - - case "connectionStrings": - // Return cached version if exists - if (_connectionStrings != null) - return _connectionStrings; - - // create a new collection because the underlying collection is read-only - var connectionStringsSection = new ConnectionStringsSection(); - - // copy the existing connection strings into the new collection - foreach ( - ConnectionStringSettings connectionStringSetting in - ((ConnectionStringsSection)section).ConnectionStrings) - connectionStringsSection.ConnectionStrings.Add(connectionStringSetting); - - // -------------------------------------------------------------------- - // Again Load connection strings from secure storage and merge like below - // connectionStringsSection.ConnectionStrings.Add(connectionStringSetting); - // -------------------------------------------------------------------- - - // Cach the settings for future use - _connectionStrings = connectionStringsSection; - // return the merged version of the items from secure storage and appsettings - section = _connectionStrings; - break; - } - } - finally - { - RwLock.ExitReadLock(); - } - - return section; - } - - public void RefreshConfig(string sectionName) - { - try - { - RwLock.EnterWriteLock(); - - if (sectionName == "appSettings") - { - _appsettings = null; - } - - if (sectionName == "connectionStrings") - { - _connectionStrings = null; - } - } - finally - { - RwLock.ExitWriteLock(); - } - - _clientConfigSystem.RefreshConfig(sectionName); - } - - public bool SupportsUserConfig { get { return _clientConfigSystem.SupportsUserConfig; } } - - #endregion - } -} \ No newline at end of file diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index 673b922ac7..899afc71d6 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -665,7 +665,6 @@ - @@ -677,10 +676,6 @@ - - - - @@ -730,7 +725,6 @@ - True True