From b1037d1936b636572bfe2ac85f486ae98fff7ffa Mon Sep 17 00:00:00 2001 From: Robert Foster Date: Sun, 30 Mar 2014 19:07:35 +1100 Subject: [PATCH 1/3] Added a TagMapper class to resolve ITag back to TagDto. --- .../Persistence/Mappers/TagMapper.cs | 44 +++++++++++++++++++ src/Umbraco.Core/Umbraco.Core.csproj | 1 + 2 files changed, 45 insertions(+) create mode 100644 src/Umbraco.Core/Persistence/Mappers/TagMapper.cs diff --git a/src/Umbraco.Core/Persistence/Mappers/TagMapper.cs b/src/Umbraco.Core/Persistence/Mappers/TagMapper.cs new file mode 100644 index 0000000000..672a433b12 --- /dev/null +++ b/src/Umbraco.Core/Persistence/Mappers/TagMapper.cs @@ -0,0 +1,44 @@ +using System.Collections.Concurrent; +using Umbraco.Core.Models; +using Umbraco.Core.Models.Rdbms; + +namespace Umbraco.Core.Persistence.Mappers +{ + /// + /// Represents a to DTO mapper used to translate the properties of the public api + /// implementation to that of the database's DTO as sql: [tableName].[columnName]. + /// + [MapperFor(typeof(Tag))] + [MapperFor(typeof(ITag))] + public sealed class TagMapper : BaseMapper + { + private static readonly ConcurrentDictionary PropertyInfoCacheInstance = new ConcurrentDictionary(); + + //NOTE: its an internal class but the ctor must be public since we're using Activator.CreateInstance to create it + // otherwise that would fail because there is no public constructor. + public TagMapper() + { + BuildMap(); + } + + #region Overrides of BaseMapper + + internal override ConcurrentDictionary PropertyInfoCache + { + get { return PropertyInfoCacheInstance; } + } + + internal override void BuildMap() + { + if (PropertyInfoCache.IsEmpty) + { + CacheMap(src => src.Id, dto => dto.Id); + CacheMap(src => src.Text, dto => dto.Tag); + CacheMap(src => src.Group, dto => dto.Group); + //CacheMap(src => src., dto => dto.ParentId); // Doesn't seem to be enabled - RJF + } + } + + #endregion + } +} diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj index 264612e738..d85391a0cd 100644 --- a/src/Umbraco.Core/Umbraco.Core.csproj +++ b/src/Umbraco.Core/Umbraco.Core.csproj @@ -364,6 +364,7 @@ + From 3f97c747129a78bfa389dc325b692442b95f6b1a Mon Sep 17 00:00:00 2001 From: Robert Foster Date: Mon, 31 Mar 2014 22:00:54 +1100 Subject: [PATCH 2/3] removed commented out code --- src/Umbraco.Core/Persistence/Mappers/TagMapper.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Umbraco.Core/Persistence/Mappers/TagMapper.cs b/src/Umbraco.Core/Persistence/Mappers/TagMapper.cs index 672a433b12..bd997a6661 100644 --- a/src/Umbraco.Core/Persistence/Mappers/TagMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/TagMapper.cs @@ -35,7 +35,6 @@ namespace Umbraco.Core.Persistence.Mappers CacheMap(src => src.Id, dto => dto.Id); CacheMap(src => src.Text, dto => dto.Tag); CacheMap(src => src.Group, dto => dto.Group); - //CacheMap(src => src., dto => dto.ParentId); // Doesn't seem to be enabled - RJF } } From 44504ff6af61613c1e5d67b3ea2d4b39c8f0989c Mon Sep 17 00:00:00 2001 From: Sebastiaan Janssen Date: Mon, 31 Mar 2014 12:59:28 +0200 Subject: [PATCH 3/3] Fixes summary for the TagMapper --- src/Umbraco.Core/Persistence/Mappers/TagMapper.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Umbraco.Core/Persistence/Mappers/TagMapper.cs b/src/Umbraco.Core/Persistence/Mappers/TagMapper.cs index bd997a6661..74a0a05063 100644 --- a/src/Umbraco.Core/Persistence/Mappers/TagMapper.cs +++ b/src/Umbraco.Core/Persistence/Mappers/TagMapper.cs @@ -5,7 +5,7 @@ using Umbraco.Core.Models.Rdbms; namespace Umbraco.Core.Persistence.Mappers { /// - /// Represents a to DTO mapper used to translate the properties of the public api + /// Represents a to DTO mapper used to translate the properties of the public api /// implementation to that of the database's DTO as sql: [tableName].[columnName]. /// [MapperFor(typeof(Tag))]