diff --git a/build/NuSpecs/UmbracoCms.Core.nuspec b/build/NuSpecs/UmbracoCms.Core.nuspec
index 76fececf9b..eb84c78e38 100644
--- a/build/NuSpecs/UmbracoCms.Core.nuspec
+++ b/build/NuSpecs/UmbracoCms.Core.nuspec
@@ -29,7 +29,7 @@
-
+
diff --git a/src/Umbraco.Core/CoreBootManager.cs b/src/Umbraco.Core/CoreBootManager.cs
index cab8d0a75b..ba60925b11 100644
--- a/src/Umbraco.Core/CoreBootManager.cs
+++ b/src/Umbraco.Core/CoreBootManager.cs
@@ -28,6 +28,8 @@ using Umbraco.Core.PropertyEditors;
using Umbraco.Core.Publishing;
using Umbraco.Core.Macros;
using Umbraco.Core.Manifest;
+using Umbraco.Core.Models.Identity;
+using Umbraco.Core.Models.Membership;
using Umbraco.Core.Services;
using Umbraco.Core.Sync;
using Umbraco.Core.Strings;
@@ -183,6 +185,9 @@ namespace Umbraco.Core
//Data Services/ServiceContext/etc...
container.RegisterFrom();
+ //ModelMappers
+ container.RegisterFrom();
+
container.RegisterSingleton();
container.RegisterSingleton(factory => PluginManager);
@@ -221,22 +226,18 @@ namespace Umbraco.Core
}
///
- /// This method allows for configuration of model mappers
- ///
- ///
- /// Model mappers MUST be defined on ApplicationEventHandler instances with the interface IMapperConfiguration.
- /// This allows us to search for less types on startup.
- ///
+ /// This method initializes all of the model mappers registered in the container
+ ///
protected void InitializeModelMappers()
{
Mapper.Initialize(configuration =>
+ {
+ //foreach (var m in ApplicationEventsResolver.Current.ApplicationEventHandlers.OfType())
+ foreach (var m in Container.GetAllInstances())
{
- //foreach (var m in ApplicationEventsResolver.Current.ApplicationEventHandlers.OfType())
- foreach (var m in _appStartupEvtContainer.GetAllInstances().OfType())
- {
- m.ConfigureMappings(configuration, ApplicationContext);
- }
- });
+ m.ConfigureMappings(configuration, ApplicationContext);
+ }
+ });
}
///
diff --git a/src/Umbraco.Core/DependencyInjection/CoreModelMappersCompositionRoot.cs b/src/Umbraco.Core/DependencyInjection/CoreModelMappersCompositionRoot.cs
new file mode 100644
index 0000000000..ae5a215521
--- /dev/null
+++ b/src/Umbraco.Core/DependencyInjection/CoreModelMappersCompositionRoot.cs
@@ -0,0 +1,13 @@
+using LightInject;
+using Umbraco.Core.Models.Identity;
+
+namespace Umbraco.Core.DependencyInjection
+{
+ public sealed class CoreModelMappersCompositionRoot : ICompositionRoot
+ {
+ public void Compose(IServiceRegistry container)
+ {
+ container.Register();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Core/DependencyInjection/ServicesCompositionRoot.cs b/src/Umbraco.Core/DependencyInjection/ServicesCompositionRoot.cs
index 9eeefc5759..0326072447 100644
--- a/src/Umbraco.Core/DependencyInjection/ServicesCompositionRoot.cs
+++ b/src/Umbraco.Core/DependencyInjection/ServicesCompositionRoot.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.ComponentModel;
using System.IO;
using System.Linq;
using LightInject;
diff --git a/src/Umbraco.Core/ModelMapperHelper.cs b/src/Umbraco.Core/ModelMapperHelper.cs
index a76b68e7dd..d8d52678de 100644
--- a/src/Umbraco.Core/ModelMapperHelper.cs
+++ b/src/Umbraco.Core/ModelMapperHelper.cs
@@ -7,7 +7,7 @@ namespace Umbraco.Core
///
internal static class ModelMapperHelper
{
- internal static IMappingExpression SelfMap(this IConfiguration config)
+ internal static IMappingExpression SelfMap(this IMapperConfiguration config)
{
return config.CreateMap();
}
diff --git a/src/Umbraco.Core/Models/Identity/IdentityModelMappings.cs b/src/Umbraco.Core/Models/Identity/IdentityModelMappings.cs
index 0dc95a8987..534b4367ff 100644
--- a/src/Umbraco.Core/Models/Identity/IdentityModelMappings.cs
+++ b/src/Umbraco.Core/Models/Identity/IdentityModelMappings.cs
@@ -1,21 +1,20 @@
using System;
using System.Linq;
using AutoMapper;
-
using Umbraco.Core.Models.Mapping;
using Umbraco.Core.Models.Membership;
using Umbraco.Core.Security;
namespace Umbraco.Core.Models.Identity
{
- public class IdentityModelMappings : MapperConfiguration
+ public class IdentityModelMappings : ModelMapperConfiguration
{
- public override void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext)
+ public override void ConfigureMappings(IMapperConfiguration config, ApplicationContext applicationContext)
{
config.CreateMap()
.ForMember(user => user.Email, expression => expression.MapFrom(user => user.Email))
.ForMember(user => user.Id, expression => expression.MapFrom(user => user.Id))
- .ForMember(user => user.LockoutEndDateUtc, expression => expression.MapFrom(user => user.IsLockedOut ? DateTime.MaxValue.ToUniversalTime() : (DateTime?)null))
+ .ForMember(user => user.LockoutEndDateUtc, expression => expression.MapFrom(user => user.IsLockedOut ? DateTime.MaxValue.ToUniversalTime() : (DateTime?) null))
.ForMember(user => user.UserName, expression => expression.MapFrom(user => user.Username))
.ForMember(user => user.PasswordHash, expression => expression.MapFrom(user => GetPasswordHash(user.RawPasswordValue)))
.ForMember(user => user.Culture, expression => expression.MapFrom(user => user.GetUserCulture(applicationContext.Services.TextService)))
@@ -24,7 +23,16 @@ namespace Umbraco.Core.Models.Identity
.ForMember(user => user.StartContentId, expression => expression.MapFrom(user => user.StartContentId))
.ForMember(user => user.UserTypeAlias, expression => expression.MapFrom(user => user.UserType.Alias))
.ForMember(user => user.AccessFailedCount, expression => expression.MapFrom(user => user.FailedPasswordAttempts))
- .ForMember(user => user.AllowedSections, expression => expression.MapFrom(user => user.AllowedSections.ToArray()));
+ .ForMember(user => user.AllowedSections, expression => expression.MapFrom(user => user.AllowedSections.ToArray()))
+ .ForMember(user => user.LockoutEnabled, expression => expression.Ignore())
+ .ForMember(user => user.Logins, expression => expression.Ignore())
+ .ForMember(user => user.LoginsChanged, expression => expression.Ignore())
+ .ForMember(user => user.EmailConfirmed, expression => expression.Ignore())
+ .ForMember(user => user.PhoneNumber, expression => expression.Ignore())
+ .ForMember(user => user.PhoneNumberConfirmed, expression => expression.Ignore())
+ .ForMember(user => user.TwoFactorEnabled, expression => expression.Ignore())
+ .ForMember(user => user.Roles, expression => expression.Ignore())
+ .ForMember(user => user.Claims, expression => expression.Ignore());
config.CreateMap()
.ConstructUsing((BackOfficeIdentityUser user) => new UserData(Guid.NewGuid().ToString("N"))) //this is the 'session id'
diff --git a/src/Umbraco.Core/Models/Mapping/IMapperConfiguration.cs b/src/Umbraco.Core/Models/Mapping/IMapperConfiguration.cs
deleted file mode 100644
index f9c0c2cc1e..0000000000
--- a/src/Umbraco.Core/Models/Mapping/IMapperConfiguration.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using AutoMapper;
-
-namespace Umbraco.Core.Models.Mapping
-{
- ///
- /// This is used to explicitly decorate any ApplicationEventHandler class if there are
- /// AutoMapper configurations defined.
- ///
- ///
- /// All automapper configurations are done during startup
- /// inside an Automapper Initialize call which is better for performance
- ///
- public interface IMapperConfiguration : IApplicationEventHandler
- {
- void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext);
- }
-}
diff --git a/src/Umbraco.Core/Models/Mapping/MapperConfiguration.cs b/src/Umbraco.Core/Models/Mapping/ModelMapperConfiguration.cs
similarity index 58%
rename from src/Umbraco.Core/Models/Mapping/MapperConfiguration.cs
rename to src/Umbraco.Core/Models/Mapping/ModelMapperConfiguration.cs
index 046f4429b2..863ce60369 100644
--- a/src/Umbraco.Core/Models/Mapping/MapperConfiguration.cs
+++ b/src/Umbraco.Core/Models/Mapping/ModelMapperConfiguration.cs
@@ -1,17 +1,17 @@
-using AutoMapper;
-
-namespace Umbraco.Core.Models.Mapping
-{
- ///
- /// Used to declare a mapper configuration
- ///
- ///
- /// Use this class if your mapper configuration isn't also explicitly an ApplicationEventHandler.
- ///
- public abstract class MapperConfiguration : ApplicationEventHandler, IMapperConfiguration
- {
- public abstract void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext);
- }
-
-
+using AutoMapper;
+
+namespace Umbraco.Core.Models.Mapping
+{
+ ///
+ /// Used to declare a mapper configuration
+ ///
+ ///
+ /// Use this class if your mapper configuration isn't also explicitly an ApplicationEventHandler.
+ ///
+ public abstract class ModelMapperConfiguration
+ {
+ public abstract void ConfigureMappings(IMapperConfiguration config, ApplicationContext applicationContext);
+ }
+
+
}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Umbraco.Core.csproj b/src/Umbraco.Core/Umbraco.Core.csproj
index 518c20af5e..02d8ac1f84 100644
--- a/src/Umbraco.Core/Umbraco.Core.csproj
+++ b/src/Umbraco.Core/Umbraco.Core.csproj
@@ -37,8 +37,8 @@
false
-
- ..\packages\AutoMapper.4.1.1\lib\net45\AutoMapper.dll
+
+ ..\packages\AutoMapper.4.2.1\lib\net45\AutoMapper.dll
True
@@ -288,6 +288,7 @@
+
@@ -684,8 +685,7 @@
-
-
+
diff --git a/src/Umbraco.Core/packages.config b/src/Umbraco.Core/packages.config
index bcfc44c229..f8b0213c77 100644
--- a/src/Umbraco.Core/packages.config
+++ b/src/Umbraco.Core/packages.config
@@ -1,6 +1,6 @@
-
+
diff --git a/src/Umbraco.Tests/Configurations/UmbracoSettings/umbracoSettings.minimal.config b/src/Umbraco.Tests/Configurations/UmbracoSettings/umbracoSettings.minimal.config
index e7deb293cc..0848a893d6 100644
--- a/src/Umbraco.Tests/Configurations/UmbracoSettings/umbracoSettings.minimal.config
+++ b/src/Umbraco.Tests/Configurations/UmbracoSettings/umbracoSettings.minimal.config
@@ -60,9 +60,6 @@
-
-
-
diff --git a/src/Umbraco.Tests/Models/Mapping/AutoMapperTests.cs b/src/Umbraco.Tests/Models/Mapping/AutoMapperTests.cs
index f385bf4954..8bc09292c4 100644
--- a/src/Umbraco.Tests/Models/Mapping/AutoMapperTests.cs
+++ b/src/Umbraco.Tests/Models/Mapping/AutoMapperTests.cs
@@ -1,10 +1,12 @@
using System;
using System.Collections.Generic;
+using System.IO;
using System.Linq;
using AutoMapper;
using Moq;
using NUnit.Framework;
using Umbraco.Core.Logging;
+using Umbraco.Core.Manifest;
using Umbraco.Core.PropertyEditors;
using Umbraco.Tests.TestHelpers;
@@ -20,14 +22,15 @@ namespace Umbraco.Tests.Models.Mapping
protected override void FreezeResolution()
{
Func> typeListProducerList = Enumerable.Empty;
- var propertyEditorResolver = new Mock(
- //ctor args
- Mock.Of(),
- Mock.Of(),
+ var propertyEditorResolver = new PropertyEditorResolver(
+ Container,
+ Logger,
typeListProducerList,
- Umbraco.Core.CacheHelper.CreateDisabledCacheHelper().RuntimeCache);
+ new ManifestBuilder(
+ Core.CacheHelper.CreateDisabledCacheHelper().RuntimeCache,
+ new ManifestParser(Logger, new DirectoryInfo(TestHelper.CurrentAssemblyDirectory), Core.CacheHelper.CreateDisabledCacheHelper().RuntimeCache)));
- PropertyEditorResolver.Current = propertyEditorResolver.Object;
+ PropertyEditorResolver.Current = propertyEditorResolver;
base.FreezeResolution();
}
diff --git a/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs b/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs
index 73a9bd1939..e6065e780d 100644
--- a/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs
+++ b/src/Umbraco.Tests/TestHelpers/BaseUmbracoApplicationTest.cs
@@ -30,6 +30,8 @@ using umbraco.BusinessLogic;
using Umbraco.Core.DependencyInjection;
using Umbraco.Core.Persistence.Mappers;
using Umbraco.Core.Events;
+using Umbraco.Core.Models.Identity;
+using Umbraco.Web.DependencyInjection;
using ObjectExtensions = Umbraco.Core.ObjectExtensions;
namespace Umbraco.Tests.TestHelpers
@@ -97,6 +99,10 @@ namespace Umbraco.Tests.TestHelpers
{
var settings = SettingsForTests.GetDefault();
+ //register mappers
+ Container.RegisterFrom();
+ Container.RegisterFrom();
+
Container.Register(factory => Container);
Container.Register(factory => PluginManager.Current);
@@ -105,7 +111,7 @@ namespace Umbraco.Tests.TestHelpers
//register basic stuff that might need to be there for some container resolvers to work, we can
// add more to this in base classes in resolution freezing
- Container.Register(factory => Logger);
+ Container.RegisterSingleton(factory => Logger);
Container.Register(factory => CacheHelper);
Container.Register(factory => ProfilingLogger);
Container.RegisterSingleton(factory => SettingsForTests.GetDefault());
@@ -157,11 +163,7 @@ namespace Umbraco.Tests.TestHelpers
{
Mapper.Initialize(configuration =>
{
- var mappers = PluginManager.Current.FindAndCreateInstances(
- specificAssemblies: new[]
- {
- typeof(ContentModelMapper).Assembly
- });
+ var mappers = Container.GetAllInstances();
foreach (var mapper in mappers)
{
mapper.ConfigureMappings(configuration, ApplicationContext);
diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj
index 8dd049f1cf..db5c16a038 100644
--- a/src/Umbraco.Tests/Umbraco.Tests.csproj
+++ b/src/Umbraco.Tests/Umbraco.Tests.csproj
@@ -51,8 +51,8 @@
false
-
- ..\packages\AutoMapper.4.1.1\lib\net45\AutoMapper.dll
+
+ ..\packages\AutoMapper.4.2.1\lib\net45\AutoMapper.dll
True
diff --git a/src/Umbraco.Tests/packages.config b/src/Umbraco.Tests/packages.config
index ae388fe4e5..89fcc07e97 100644
--- a/src/Umbraco.Tests/packages.config
+++ b/src/Umbraco.Tests/packages.config
@@ -1,7 +1,7 @@
-
+
diff --git a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
index bee59365e4..0860a1a437 100644
--- a/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
+++ b/src/Umbraco.Web.UI/Umbraco.Web.UI.csproj
@@ -108,8 +108,8 @@
{07fbc26b-2927-4a22-8d96-d644c667fecc}
UmbracoExamine
-
- ..\packages\AutoMapper.4.1.1\lib\net45\AutoMapper.dll
+
+ ..\packages\AutoMapper.4.2.1\lib\net45\AutoMapper.dll
True
diff --git a/src/Umbraco.Web.UI/packages.config b/src/Umbraco.Web.UI/packages.config
index 3b9519d1d7..86dbb54fe0 100644
--- a/src/Umbraco.Web.UI/packages.config
+++ b/src/Umbraco.Web.UI/packages.config
@@ -1,6 +1,6 @@
-
+
diff --git a/src/Umbraco.Web/DependencyInjection/WebModelMappersCompositionRoot.cs b/src/Umbraco.Web/DependencyInjection/WebModelMappersCompositionRoot.cs
new file mode 100644
index 0000000000..aba298e6a2
--- /dev/null
+++ b/src/Umbraco.Web/DependencyInjection/WebModelMappersCompositionRoot.cs
@@ -0,0 +1,25 @@
+using LightInject;
+using Umbraco.Web.Models.Mapping;
+
+namespace Umbraco.Web.DependencyInjection
+{
+ public sealed class WebModelMappersCompositionRoot : ICompositionRoot
+ {
+ public void Compose(IServiceRegistry container)
+ {
+ container.Register();
+ container.Register();
+ container.Register();
+ container.Register();
+ container.Register();
+ container.Register();
+ container.Register();
+ container.Register();
+ container.Register();
+ container.Register();
+ container.Register();
+ container.Register();
+ container.Register();
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs b/src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs
index 1d2281eb9f..cd3df47b16 100644
--- a/src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/ContentModelMapper.cs
@@ -21,9 +21,9 @@ namespace Umbraco.Web.Models.Mapping
///
/// Declares how model mappings for content
///
- internal class ContentModelMapper : MapperConfiguration
+ internal class ContentModelMapper : ModelMapperConfiguration
{
- public override void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext)
+ public override void ConfigureMappings(IMapperConfiguration config, ApplicationContext applicationContext)
{
//FROM IContent TO ContentItemDisplay
diff --git a/src/Umbraco.Web/Models/Mapping/ContentPropertyModelMapper.cs b/src/Umbraco.Web/Models/Mapping/ContentPropertyModelMapper.cs
index ba51eb1790..6f09823644 100644
--- a/src/Umbraco.Web/Models/Mapping/ContentPropertyModelMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/ContentPropertyModelMapper.cs
@@ -12,9 +12,9 @@ namespace Umbraco.Web.Models.Mapping
/// A mapper which declares how to map content properties. These mappings are shared among media (and probably members) which is
/// why they are in their own mapper
///
- internal class ContentPropertyModelMapper : MapperConfiguration
+ internal class ContentPropertyModelMapper : ModelMapperConfiguration
{
- public override void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext)
+ public override void ConfigureMappings(IMapperConfiguration config, ApplicationContext applicationContext)
{
var lazyDataTypeService = new Lazy(() => applicationContext.Services.DataTypeService);
diff --git a/src/Umbraco.Web/Models/Mapping/ContentTypeModelMapper.cs b/src/Umbraco.Web/Models/Mapping/ContentTypeModelMapper.cs
index 70d8bc8d7a..4ef1991b40 100644
--- a/src/Umbraco.Web/Models/Mapping/ContentTypeModelMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/ContentTypeModelMapper.cs
@@ -16,7 +16,7 @@ namespace Umbraco.Web.Models.Mapping
///
/// Defines mappings for content/media/members type mappings
///
- internal class ContentTypeModelMapper : MapperConfiguration
+ internal class ContentTypeModelMapper : ModelMapperConfiguration
{
private readonly Lazy _propertyEditorResolver;
@@ -32,7 +32,7 @@ namespace Umbraco.Web.Models.Mapping
_propertyEditorResolver = propertyEditorResolver;
}
- public override void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext)
+ public override void ConfigureMappings(IMapperConfiguration config, ApplicationContext applicationContext)
{
config.CreateMap()
diff --git a/src/Umbraco.Web/Models/Mapping/DataTypeModelMapper.cs b/src/Umbraco.Web/Models/Mapping/DataTypeModelMapper.cs
index 3df195e073..515db330b5 100644
--- a/src/Umbraco.Web/Models/Mapping/DataTypeModelMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/DataTypeModelMapper.cs
@@ -14,9 +14,9 @@ namespace Umbraco.Web.Models.Mapping
///
/// Configure's model mappings for Data types
///
- internal class DataTypeModelMapper : MapperConfiguration
+ internal class DataTypeModelMapper : ModelMapperConfiguration
{
- public override void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext)
+ public override void ConfigureMappings(IMapperConfiguration config, ApplicationContext applicationContext)
{
var lazyDataTypeService = new Lazy(() => applicationContext.Services.DataTypeService);
diff --git a/src/Umbraco.Web/Models/Mapping/EntityModelMapper.cs b/src/Umbraco.Web/Models/Mapping/EntityModelMapper.cs
index 5610a70008..f6e13fada4 100644
--- a/src/Umbraco.Web/Models/Mapping/EntityModelMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/EntityModelMapper.cs
@@ -12,9 +12,9 @@ using UmbracoExamine;
namespace Umbraco.Web.Models.Mapping
{
- internal class EntityModelMapper : MapperConfiguration
+ internal class EntityModelMapper : ModelMapperConfiguration
{
- public override void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext)
+ public override void ConfigureMappings(IMapperConfiguration config, ApplicationContext applicationContext)
{
config.CreateMap()
.ForMember(basic => basic.Icon, expression => expression.MapFrom(entity => entity.ContentTypeIcon))
diff --git a/src/Umbraco.Web/Models/Mapping/LogModelMapper.cs b/src/Umbraco.Web/Models/Mapping/LogModelMapper.cs
index d829da89d1..349141ea4e 100644
--- a/src/Umbraco.Web/Models/Mapping/LogModelMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/LogModelMapper.cs
@@ -7,12 +7,14 @@ using Umbraco.Core.Models;
namespace Umbraco.Web.Models.Mapping
{
- internal class LogModelMapper : MapperConfiguration
+ internal class LogModelMapper : ModelMapperConfiguration
{
- public override void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext)
+ public override void ConfigureMappings(IMapperConfiguration config, ApplicationContext applicationContext)
{
config.CreateMap()
- .ForMember(log => log.LogType, expression => expression.MapFrom(item => item.AuditType.ToString()));
+ .ForMember(log => log.NodeId, expression => expression.Ignore())
+ .ForMember(log => log.Timestamp, expression => expression.MapFrom(item => item.CreateDate))
+ .ForMember(log => log.LogType, expression => expression.MapFrom(item => item.AuditType.ToString()));
}
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Web/Models/Mapping/MacroModelMapper.cs b/src/Umbraco.Web/Models/Mapping/MacroModelMapper.cs
index 54ebca6e68..eb8497c948 100644
--- a/src/Umbraco.Web/Models/Mapping/MacroModelMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/MacroModelMapper.cs
@@ -14,9 +14,9 @@ namespace Umbraco.Web.Models.Mapping
///
/// Declares model mappings for macros.
///
- internal class MacroModelMapper : MapperConfiguration
+ internal class MacroModelMapper : ModelMapperConfiguration
{
- public override void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext)
+ public override void ConfigureMappings(IMapperConfiguration config, ApplicationContext applicationContext)
{
//FROM IMacro TO EntityBasic
config.CreateMap()
diff --git a/src/Umbraco.Web/Models/Mapping/MediaModelMapper.cs b/src/Umbraco.Web/Models/Mapping/MediaModelMapper.cs
index 799a93a220..90b61841a6 100644
--- a/src/Umbraco.Web/Models/Mapping/MediaModelMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/MediaModelMapper.cs
@@ -23,9 +23,9 @@ namespace Umbraco.Web.Models.Mapping
///
/// Declares model mappings for media.
///
- internal class MediaModelMapper : MapperConfiguration
+ internal class MediaModelMapper : ModelMapperConfiguration
{
- public override void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext)
+ public override void ConfigureMappings(IMapperConfiguration config, ApplicationContext applicationContext)
{
//FROM IMedia TO MediaItemDisplay
config.CreateMap()
diff --git a/src/Umbraco.Web/Models/Mapping/MemberModelMapper.cs b/src/Umbraco.Web/Models/Mapping/MemberModelMapper.cs
index 06dd39124d..3d2b250225 100644
--- a/src/Umbraco.Web/Models/Mapping/MemberModelMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/MemberModelMapper.cs
@@ -22,9 +22,9 @@ namespace Umbraco.Web.Models.Mapping
///
/// Declares model mappings for members.
///
- internal class MemberModelMapper : MapperConfiguration
+ internal class MemberModelMapper : ModelMapperConfiguration
{
- public override void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext)
+ public override void ConfigureMappings(IMapperConfiguration config, ApplicationContext applicationContext)
{
//FROM MembershipUser TO MediaItemDisplay - used when using a non-umbraco membership provider
config.CreateMap()
diff --git a/src/Umbraco.Web/Models/Mapping/RelationModelMapper.cs b/src/Umbraco.Web/Models/Mapping/RelationModelMapper.cs
index bc133abf96..11b435a21d 100644
--- a/src/Umbraco.Web/Models/Mapping/RelationModelMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/RelationModelMapper.cs
@@ -7,9 +7,9 @@ using RelationType = Umbraco.Web.Models.ContentEditing.RelationType;
namespace Umbraco.Web.Models.Mapping
{
- internal class RelationModelMapper : MapperConfiguration
+ internal class RelationModelMapper : ModelMapperConfiguration
{
- public override void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext)
+ public override void ConfigureMappings(IMapperConfiguration config, ApplicationContext applicationContext)
{
//FROM IRelationType TO RelationType
config.CreateMap();
diff --git a/src/Umbraco.Web/Models/Mapping/SectionModelMapper.cs b/src/Umbraco.Web/Models/Mapping/SectionModelMapper.cs
index bcd7590433..e72db45bdf 100644
--- a/src/Umbraco.Web/Models/Mapping/SectionModelMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/SectionModelMapper.cs
@@ -8,9 +8,9 @@ using umbraco;
namespace Umbraco.Web.Models.Mapping
{
- internal class SectionModelMapper : MapperConfiguration
+ internal class SectionModelMapper : ModelMapperConfiguration
{
- public override void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext)
+ public override void ConfigureMappings(IMapperConfiguration config, ApplicationContext applicationContext)
{
config.CreateMap()
.ForMember(
diff --git a/src/Umbraco.Web/Models/Mapping/TabModelMapper.cs b/src/Umbraco.Web/Models/Mapping/TabModelMapper.cs
index 0bdfb311a5..466b123df7 100644
--- a/src/Umbraco.Web/Models/Mapping/TabModelMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/TabModelMapper.cs
@@ -5,9 +5,9 @@ using Umbraco.Core.Models.Mapping;
namespace Umbraco.Web.Models.Mapping
{
- internal class TabModelMapper : MapperConfiguration
+ internal class TabModelMapper : ModelMapperConfiguration
{
- public override void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext)
+ public override void ConfigureMappings(IMapperConfiguration config, ApplicationContext applicationContext)
{
config.CreateMap();
}
diff --git a/src/Umbraco.Web/Models/Mapping/UserModelMapper.cs b/src/Umbraco.Web/Models/Mapping/UserModelMapper.cs
index 72093b19a8..11bc2e8419 100644
--- a/src/Umbraco.Web/Models/Mapping/UserModelMapper.cs
+++ b/src/Umbraco.Web/Models/Mapping/UserModelMapper.cs
@@ -11,9 +11,9 @@ using Umbraco.Core.Security;
namespace Umbraco.Web.Models.Mapping
{
- internal class UserModelMapper : MapperConfiguration
+ internal class UserModelMapper : ModelMapperConfiguration
{
- public override void ConfigureMappings(IConfiguration config, ApplicationContext applicationContext)
+ public override void ConfigureMappings(IMapperConfiguration config, ApplicationContext applicationContext)
{
config.CreateMap()
.ForMember(detail => detail.UserId, opt => opt.MapFrom(user => GetIntId(user.Id)))
diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj
index 6b5c03000d..6f39ec21d8 100644
--- a/src/Umbraco.Web/Umbraco.Web.csproj
+++ b/src/Umbraco.Web/Umbraco.Web.csproj
@@ -97,10 +97,8 @@
{07fbc26b-2927-4a22-8d96-d644c667fecc}
UmbracoExamine
-
- ..\packages\AutoMapper.4.1.1\lib\net45\AutoMapper.dll
- False
- False
+
+ ..\packages\AutoMapper.4.2.1\lib\net45\AutoMapper.dll
True
@@ -320,6 +318,7 @@
+
diff --git a/src/Umbraco.Web/WebBootManager.cs b/src/Umbraco.Web/WebBootManager.cs
index b81be47d33..545d7d7e24 100644
--- a/src/Umbraco.Web/WebBootManager.cs
+++ b/src/Umbraco.Web/WebBootManager.cs
@@ -41,6 +41,7 @@ using Umbraco.Core.Services;
using Umbraco.Web.Services;
using Umbraco.Web.Editors;
using Umbraco.Core.DependencyInjection;
+using Umbraco.Web.DependencyInjection;
using Umbraco.Web._Legacy.Actions;
using Action = System.Action;
using GlobalSettings = Umbraco.Core.Configuration.GlobalSettings;
@@ -330,6 +331,9 @@ namespace Umbraco.Web
{
base.ConfigureCoreServices(container);
+ //ModelMappers
+ container.RegisterFrom();
+
container.EnablePerWebRequestScope();
//no need to declare as per request, it's lifetime is already managed as a singleton
diff --git a/src/Umbraco.Web/packages.config b/src/Umbraco.Web/packages.config
index b22330600c..2cdde6b199 100644
--- a/src/Umbraco.Web/packages.config
+++ b/src/Umbraco.Web/packages.config
@@ -1,6 +1,6 @@
-
+