Better mapping of enumerable

This commit is contained in:
Stephan
2019-04-08 16:38:18 +02:00
parent 9eb1415796
commit 6c8ded6275
21 changed files with 45 additions and 36 deletions

View File

@@ -60,6 +60,13 @@ namespace Umbraco.Tests.Mapping
Assert.AreEqual(2, thing2.Count);
Assert.AreEqual("valueA", thing2[0].Value);
Assert.AreEqual("valueB", thing2[1].Value);
thing2 = mapper.MapEnumerable<Thing1, Thing2>(thing1).ToList();
Assert.IsNotNull(thing2);
Assert.AreEqual(2, thing2.Count);
Assert.AreEqual("valueA", thing2[0].Value);
Assert.AreEqual("valueB", thing2[1].Value);
}
[Test]

View File

@@ -190,7 +190,7 @@ namespace Umbraco.Web.Editors
//get all user groups and map their default permissions to the AssignedUserGroupPermissions model.
//we do this because not all groups will have true assigned permissions for this node so if they don't have assigned permissions, we need to show the defaults.
var defaultPermissionsByGroup = Mapper.Map<IEnumerable<AssignedUserGroupPermissions>>(allUserGroups).ToArray();
var defaultPermissionsByGroup = Mapper.MapEnumerable<IUserGroup, AssignedUserGroupPermissions>(allUserGroups);
var defaultPermissionsAsDictionary = defaultPermissionsByGroup
.ToDictionary(x => Convert.ToInt32(x.Id), x => x);

View File

@@ -917,7 +917,7 @@ namespace Umbraco.Web.Editors
.SelectMany(x => x.PropertyTypes)
.DistinctBy(composition => composition.Alias);
var filteredPropertyTypes = ExecutePostFilter(propertyTypes, postFilter);
return Mapper.Map<IEnumerable<PropertyType>, IEnumerable<EntityBasic>>(filteredPropertyTypes);
return Mapper.MapEnumerable<PropertyType, EntityBasic>(filteredPropertyTypes);
case UmbracoEntityTypes.PropertyGroup:
@@ -928,13 +928,13 @@ namespace Umbraco.Web.Editors
.SelectMany(x => x.PropertyGroups)
.DistinctBy(composition => composition.Name);
var filteredpropertyGroups = ExecutePostFilter(propertyGroups, postFilter);
return Mapper.Map<IEnumerable<PropertyGroup>, IEnumerable<EntityBasic>>(filteredpropertyGroups);
return Mapper.MapEnumerable<PropertyGroup, EntityBasic>(filteredpropertyGroups);
case UmbracoEntityTypes.User:
var users = Services.UserService.GetAll(0, int.MaxValue, out _);
var filteredUsers = ExecutePostFilter(users, postFilter);
return Mapper.Map<IEnumerable<IUser>, IEnumerable<EntityBasic>>(filteredUsers);
return Mapper.MapEnumerable<IUser, EntityBasic>(filteredUsers);
case UmbracoEntityTypes.Stylesheet:

View File

@@ -46,7 +46,7 @@ namespace Umbraco.Web.Editors
{
var allLanguages = Services.LocalizationService.GetAllLanguages();
return Mapper.Map<IEnumerable<ILanguage>, IEnumerable<Language>>(allLanguages);
return Mapper.MapEnumerable<ILanguage, Language>(allLanguages);
}
[HttpGet]

View File

@@ -45,7 +45,7 @@ namespace Umbraco.Web.Editors
var dateQuery = sinceDate.HasValue ? SqlContext.Query<IAuditItem>().Where(x => x.CreateDate >= sinceDate) : null;
var userId = Security.GetUserId().ResultOr(0);
var result = Services.AuditService.GetPagedItemsByUser(userId, pageNumber - 1, pageSize, out totalRecords, orderDirection, customFilter:dateQuery);
var mapped = Mapper.Map<IEnumerable<AuditLog>>(result);
var mapped = Mapper.MapEnumerable<IAuditItem, AuditLog>(result);
return new PagedResult<AuditLog>(totalRecords, pageNumber, pageSize)
{
Items = MapAvatarsAndNames(mapped)

View File

@@ -49,7 +49,7 @@ namespace Umbraco.Web.Editors
? redirectUrlService.GetAllRedirectUrls(page, pageSize, out resultCount)
: redirectUrlService.SearchRedirectUrls(searchTerm, page, pageSize, out resultCount);
searchResult.SearchResults = Mapper.Map<IEnumerable<ContentRedirectUrl>>(redirects).ToArray();
searchResult.SearchResults = Mapper.MapEnumerable<IRedirectUrl, ContentRedirectUrl>(redirects);
searchResult.TotalCount = resultCount;
searchResult.CurrentPage = page;
searchResult.PageCount = ((int)resultCount + pageSize - 1) / pageSize;
@@ -71,9 +71,10 @@ namespace Umbraco.Web.Editors
{
var redirectUrlService = Services.RedirectUrlService;
var redirects = redirectUrlService.GetContentRedirectUrls(guidIdi.Guid);
redirectsResult.SearchResults = Mapper.Map<IEnumerable<ContentRedirectUrl>>(redirects).ToArray();
var mapped = Mapper.MapEnumerable<IRedirectUrl, ContentRedirectUrl>(redirects);
redirectsResult.SearchResults = mapped;
//not doing paging 'yet'
redirectsResult.TotalCount = redirects.Count();
redirectsResult.TotalCount = mapped.Count();
redirectsResult.CurrentPage = 1;
redirectsResult.PageCount = 1;
}

View File

@@ -34,11 +34,11 @@ namespace Umbraco.Web.Editors
if (string.IsNullOrWhiteSpace(relationTypeAlias) == false)
{
return
Mapper.Map<IEnumerable<IRelation>, IEnumerable<RelationDisplay>>(
Mapper.MapEnumerable<IRelation, RelationDisplay>(
relations.Where(x => x.RelationType.Alias.InvariantEquals(relationTypeAlias)));
}
return Mapper.Map<IEnumerable<IRelation>, IEnumerable<RelationDisplay>>(relations);
return Mapper.MapEnumerable<IRelation, RelationDisplay>(relations);
}
[HttpDelete]

View File

@@ -48,7 +48,7 @@ namespace Umbraco.Web.Editors
var relations = Services.RelationService.GetByRelationTypeId(relationType.Id);
var display = Mapper.Map<IRelationType, RelationTypeDisplay>(relationType);
display.Relations = Mapper.Map<IEnumerable<IRelation>, IEnumerable<RelationDisplay>>(relations);
display.Relations = Mapper.MapEnumerable<IRelation, RelationDisplay>(relations);
return display;
}

View File

@@ -102,7 +102,7 @@ namespace Umbraco.Web.Editors
/// <returns></returns>
public IEnumerable<UserGroupBasic> GetUserGroups(bool onlyCurrentUserGroups = true)
{
var allGroups = Mapper.Map<IEnumerable<IUserGroup>, IEnumerable<UserGroupBasic>>(Services.UserService.GetAllUserGroups())
var allGroups = Mapper.MapEnumerable<IUserGroup, UserGroupBasic>(Services.UserService.GetAllUserGroups())
.ToList();
var isAdmin = Security.CurrentUser.IsAdmin();

View File

@@ -238,7 +238,7 @@ namespace Umbraco.Web.Editors
var paged = new PagedUserResult(total, pageNumber, pageSize)
{
Items = Mapper.Map<IEnumerable<UserBasic>>(result),
Items = Mapper.MapEnumerable<IUser, UserBasic>(result),
UserStates = Services.UserService.GetUserStates()
};

View File

@@ -64,7 +64,7 @@ namespace Umbraco.Web.Models.Mapping
// Umbraco.Code.MapAll
private static void Map(IContent source, ContentPropertyCollectionDto target, MapperContext context)
{
target.Properties = context.Map<IEnumerable<ContentPropertyDto>>(source.Properties);
target.Properties = context.MapEnumerable<Property, ContentPropertyDto>(source.Properties);
}
// Umbraco.Code.MapAll -AllowPreview -Errors -PersistedContent
@@ -98,7 +98,7 @@ namespace Umbraco.Web.Models.Mapping
target.Variants = _contentVariantMapper.Map(source, context);
target.ContentDto = new ContentPropertyCollectionDto();
target.ContentDto.Properties = context.Map<IEnumerable<ContentPropertyDto>>(source.Properties);
target.ContentDto.Properties = context.MapEnumerable<Property, ContentPropertyDto>(source.Properties);
}
// Umbraco.Code.MapAll -Segment -Language
@@ -127,7 +127,7 @@ namespace Umbraco.Web.Models.Mapping
target.Owner = _commonMapper.GetOwner(source, context);
target.ParentId = source.ParentId;
target.Path = source.Path;
target.Properties = context.Map<IEnumerable<ContentPropertyBasic>>(source.Properties);
target.Properties = context.MapEnumerable<Property, ContentPropertyBasic>(source.Properties);
target.SortOrder = source.SortOrder;
target.State = _basicStateMapper.Map(source, context);
target.Trashed = source.Trashed;

View File

@@ -122,7 +122,7 @@ namespace Umbraco.Web.Models.Mapping
target.AllowCultureVariant = source.VariesByCulture();
//sync templates
target.AllowedTemplates = context.Map<IEnumerable<EntityBasic>>(source.AllowedTemplates);
target.AllowedTemplates = context.MapEnumerable<ITemplate, EntityBasic>(source.AllowedTemplates);
if (source.DefaultTemplate != null)
target.DefaultTemplate = context.Map<EntityBasic>(source.DefaultTemplate);
@@ -312,7 +312,7 @@ namespace Umbraco.Web.Models.Mapping
target.Name = source.Name;
target.SortOrder = source.SortOrder;
target.Properties = context.Map<IEnumerable<PropertyTypeDisplay>>(source.Properties);
target.Properties = context.MapEnumerable<PropertyTypeBasic, PropertyTypeDisplay>(source.Properties);
}
// Umbraco.Code.MapAll -ContentTypeId -ParentTabContentTypes -ParentTabContentTypeNames
@@ -325,7 +325,7 @@ namespace Umbraco.Web.Models.Mapping
target.Name = source.Name;
target.SortOrder = source.SortOrder;
target.Properties = context.Map<IEnumerable<MemberPropertyTypeDisplay>>(source.Properties);
target.Properties = context.MapEnumerable<MemberPropertyTypeBasic, MemberPropertyTypeDisplay>(source.Properties);
}
// Umbraco.Code.MapAll -Editor -View -Config -ContentTypeId -ContentTypeName -Locked
@@ -531,7 +531,7 @@ namespace Umbraco.Web.Models.Mapping
{
MapTypeToDisplayBase(source, target);
target.Groups = context.Map<IEnumerable<PropertyGroupDisplay<TTargetPropertyType>>>(source.Groups);
target.Groups = context.MapEnumerable<PropertyGroupBasic<TSourcePropertyType>, PropertyGroupDisplay<TTargetPropertyType>>(source.Groups);
}
private IEnumerable<string> MapLockedCompositions(IContentTypeComposition source)

View File

@@ -32,7 +32,7 @@ namespace Umbraco.Web.Models.Mapping
var allLanguages = _localizationService.GetAllLanguages().OrderBy(x => x.Id).ToList();
if (allLanguages.Count == 0) return Enumerable.Empty<ContentVariantDisplay>(); //this should never happen
var langs = context.Map<IEnumerable<Language>>(allLanguages).ToList();
var langs = context.MapEnumerable<ILanguage, Language>(allLanguages).ToList();
//create a variant for each language, then we'll populate the values
var variants = langs.Select(x =>

View File

@@ -130,7 +130,7 @@ namespace Umbraco.Web.Models.Mapping
var properties = _propertyEditors
.Where(x => !x.IsDeprecated || contentSection.ShowDeprecatedPropertyEditors || source.EditorAlias == x.Alias)
.OrderBy(x => x.Name);
return context.Map<IEnumerable<PropertyEditorBasic>>(properties);
return context.MapEnumerable<IDataEditor, PropertyEditorBasic>(properties);
}
private IEnumerable<DataTypeConfigurationFieldDisplay> MapPreValues(IDataType dataType, MapperContext context)

View File

@@ -111,7 +111,7 @@ namespace Umbraco.Web.Models.Mapping
target.Owner = _commonMapper.GetOwner(source, context);
target.ParentId = source.ParentId;
target.Path = source.Path;
target.Properties = context.Map<IEnumerable<ContentPropertyBasic>>(source.Properties);
target.Properties = context.MapEnumerable<Property, ContentPropertyBasic>(source.Properties);
target.SortOrder = source.SortOrder;
target.State = null;
target.Udi = Udi.Create(Constants.UdiEntityType.Member, source.Key);

View File

@@ -216,7 +216,7 @@ namespace Umbraco.Web.Models.Mapping
//Important! Currently we are never mapping to multiple UserGroupDisplay objects but if we start doing that
// this will cause an N+1 and we'll need to change how this works.
var users = _userService.GetAllInGroup(source.Id);
target.Users = context.Map<IEnumerable<UserBasic>>(users);
target.Users = context.MapEnumerable<IUser, UserBasic>(users);
//Deal with assigned permissions:
@@ -388,7 +388,7 @@ namespace Umbraco.Web.Models.Mapping
startNodes.Add(CreateRootNode(_textService.Localize(localizedKey)));
var mediaItems = _entityService.GetAll(objectType, startNodeIds);
startNodes.AddRange(context.Map<IEnumerable<EntityBasic>>(mediaItems));
startNodes.AddRange(context.MapEnumerable<IEntitySlim, EntityBasic>(mediaItems));
return startNodes;
}

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using Umbraco.Core.Mapping;
using Umbraco.Core.Models;
using Umbraco.Core.Models.PublishedContent;
using Umbraco.Core.Services;
using Umbraco.Web.Models;
@@ -66,37 +67,37 @@ namespace Umbraco.Web
/// <inheritdoc />
public IEnumerable<TagModel> GetAllTags(string group = null, string culture = null)
{
return _mapper.Map<IEnumerable<TagModel>>(_tagService.GetAllTags(group, culture));
return _mapper.MapEnumerable<ITag, TagModel>(_tagService.GetAllTags(group, culture));
}
/// <inheritdoc />
public IEnumerable<TagModel> GetAllContentTags(string group = null, string culture = null)
{
return _mapper.Map<IEnumerable<TagModel>>(_tagService.GetAllContentTags(group, culture));
return _mapper.MapEnumerable<ITag, TagModel>(_tagService.GetAllContentTags(group, culture));
}
/// <inheritdoc />
public IEnumerable<TagModel> GetAllMediaTags(string group = null, string culture = null)
{
return _mapper.Map<IEnumerable<TagModel>>(_tagService.GetAllMediaTags(group, culture));
return _mapper.MapEnumerable<ITag, TagModel>(_tagService.GetAllMediaTags(group, culture));
}
/// <inheritdoc />
public IEnumerable<TagModel> GetAllMemberTags(string group = null, string culture = null)
{
return _mapper.Map<IEnumerable<TagModel>>(_tagService.GetAllMemberTags(group, culture));
return _mapper.MapEnumerable<ITag, TagModel>(_tagService.GetAllMemberTags(group, culture));
}
/// <inheritdoc />
public IEnumerable<TagModel> GetTagsForProperty(int contentId, string propertyTypeAlias, string group = null, string culture = null)
{
return _mapper.Map<IEnumerable<TagModel>>(_tagService.GetTagsForProperty(contentId, propertyTypeAlias, group, culture));
return _mapper.MapEnumerable<ITag, TagModel>(_tagService.GetTagsForProperty(contentId, propertyTypeAlias, group, culture));
}
/// <inheritdoc />
public IEnumerable<TagModel> GetTagsForEntity(int contentId, string group = null, string culture = null)
{
return _mapper.Map<IEnumerable<TagModel>>(_tagService.GetTagsForEntity(contentId, group, culture));
return _mapper.MapEnumerable<ITag, TagModel>(_tagService.GetTagsForEntity(contentId, group, culture));
}
}
}

View File

@@ -138,7 +138,7 @@ namespace Umbraco.Web.Trees
{
var results = Services.EntityService.GetPagedDescendants(UmbracoObjectTypes.DocumentType, pageIndex, pageSize, out totalFound,
filter: SqlContext.Query<IUmbracoEntity>().Where(x => x.Name.Contains(query)));
return Mapper.Map<IEnumerable<SearchResultEntity>>(results);
return Mapper.MapEnumerable<IEntitySlim, SearchResultEntity>(results);
}
}
}

View File

@@ -143,7 +143,7 @@ namespace Umbraco.Web.Trees
{
var results = Services.EntityService.GetPagedDescendants(UmbracoObjectTypes.DataType, pageIndex, pageSize, out totalFound,
filter: SqlContext.Query<IUmbracoEntity>().Where(x => x.Name.Contains(query)));
return Mapper.Map<IEnumerable<SearchResultEntity>>(results);
return Mapper.MapEnumerable<IEntitySlim, SearchResultEntity>(results);
}
}
}

View File

@@ -120,7 +120,7 @@ namespace Umbraco.Web.Trees
{
var results = Services.EntityService.GetPagedDescendants(UmbracoObjectTypes.MediaType, pageIndex, pageSize, out totalFound,
filter: SqlContext.Query<IUmbracoEntity>().Where(x => x.Name.Contains(query)));
return Mapper.Map<IEnumerable<SearchResultEntity>>(results);
return Mapper.MapEnumerable<IEntitySlim, SearchResultEntity>(results);
}
}
}

View File

@@ -122,7 +122,7 @@ namespace Umbraco.Web.Trees
{
var results = Services.EntityService.GetPagedDescendants(UmbracoObjectTypes.Template, pageIndex, pageSize, out totalFound,
filter: SqlContext.Query<IUmbracoEntity>().Where(x => x.Name.Contains(query)));
return Mapper.Map<IEnumerable<SearchResultEntity>>(results);
return Mapper.MapEnumerable<IEntitySlim, SearchResultEntity>(results);
}
}
}