private static ProviderMappingGroup GenerateMappingGroup(string mappingName, IResolutionContext resolutionContext, string[] mappedReadWriterKeys, string[] mappedReaderKeys)
        {
            var tryReadersInGroup     = TryResolveGroupReaders(resolutionContext, mappedReaderKeys).ToArray();
            var tryReadWritersInGroup = TryResolveGroupReadWriters(resolutionContext, mappedReadWriterKeys).ToArray();

            var readersInGroup     = tryReadersInGroup.Where(x => x.Success);
            var readWritersInGroup = tryReadWritersInGroup.Where(x => x.Success);

            if (!readersInGroup.Any() && !readWritersInGroup.Any())
            {
                var errorBuilder = new StringBuilder();
                errorBuilder.AppendLine("Writers:");
                foreach (var namedResolutionAttempt in tryReadWritersInGroup)
                {
                    errorBuilder.AppendLine("Key: {0}, Error: {1}".InvariantFormat(namedResolutionAttempt.Key, namedResolutionAttempt.Error.ToString()));
                }
                errorBuilder.AppendLine();
                errorBuilder.AppendLine("Readers:");
                foreach (var namedResolutionAttempt in tryReadersInGroup)
                {
                    errorBuilder.AppendLine("Key: {0}, Error: {1}".InvariantFormat(namedResolutionAttempt.Key, namedResolutionAttempt.Error.ToString()));
                }
                throw new InvalidOperationException(
                          "Could not create mapping group '{0}'. Errors:\n{1}".InvariantFormat(mappingName,
                                                                                               errorBuilder.ToString()));
            }

            var uriMatches       = resolutionContext.Resolve <IEnumerable <WildcardUriMatch> >(mappingName);
            var frameworkContext = resolutionContext.Resolve <IFrameworkContext>();

            var readonlyProviderSetups = readersInGroup.Select(x => x.Value).ToArray();
            var providerSetups         = readWritersInGroup.Select(x => x.Value).ToArray();

            return(new ProviderMappingGroup(mappingName, uriMatches, readonlyProviderSetups, providerSetups, frameworkContext));
        }
 public IVersionedUpdateCommandHandler <TCommand> CreateVersionedCommand <TCommand>() where TCommand : IVersionedUpdateCommand
 {
     if (_resolutionContext.IsRegistered <IAsyncVersionedUpdateCommandHandler <TCommand> >())
     {
         return(_resolutionContext.Resolve <IAsyncVersionedUpdateCommandHandler <TCommand> >());
     }
     else
     {
         return(_resolutionContext.Resolve <ISyncVersionedUpdateCommandHandler <TCommand> >());
     }
 }
Esempio n. 3
0
        /// <summary>
        /// Creates an instance of a role initializer for the specified role
        /// definition if one has been implemented; otherwise returns null
        /// </summary>
        /// <param name="roleDefinition">The role to find an initializer for</typeparam>
        /// <returns>IRoleInitializer if one has been implemented; otherwise null</returns>
        public IRoleInitializer Create(IRoleDefinition roleDefinition)
        {
            Condition.Requires(roleDefinition).IsNotNull();

            // Never add permission to the super admin role
            if (roleDefinition is SuperAdminRole)
            {
                return(null);
            }

            var type = typeof(IRoleInitializer <>).MakeGenericType(roleDefinition.GetType());

            if (_resolutionContext.IsRegistered(type))
            {
                return((IRoleInitializer)_resolutionContext.Resolve(type));
            }
            else if (roleDefinition is AnonymousRole)
            {
                // We use a default initializer just for the anonymous role
                // as it's the only built in role with permissions
                return(new DefaultAnonymousRoleInitializer());
            }

            return(null);
        }
Esempio n. 4
0
        public async Task DeliverAsync(IResolutionContext resolutionContext, object message)
        {
            Condition.Requires(message)
            .IsNotNull()
            .IsOfType(typeof(TMessageSubscribedTo));

            var handler = resolutionContext.Resolve <TMessageHandler>();
            await handler.HandleAsync((TMessageSubscribedTo)message);
        }
Esempio n. 5
0
        public TDisplayModel MapDetails <TDisplayModel>(CustomEntityRenderDetails dataModel)
            where TDisplayModel : ICustomEntityDisplayModel
        {
            var mapperType = typeof(ICustomEntityDetailsDisplayModelMapper <,>).MakeGenericType(dataModel.Model.GetType(), typeof(TDisplayModel));
            var mapper     = _resolutionContext.Resolve(mapperType);

            var method = mapperType.GetMethod("MapDetails");

            return((TDisplayModel)method.Invoke(mapper, new object[] { dataModel, dataModel.Model }));
        }
Esempio n. 6
0
        public ITemplate CreateInstance(InstanceContext context)
        {
            var instance = context.Loader.CreateInstance(context.TemplateType);

            // Just doing some simple building up of the url helper. Could do something more scaleable if here if required.
            if (instance is IEmailTemplateWithUrlHelper)
            {
                ((IEmailTemplateWithUrlHelper)instance).Url = _resolutionContext.Resolve <RazorEngineUrlHelper>();
            }

            return(instance);
        }
Esempio n. 7
0
        private List <PageModuleDisplayModelMapperOutput> MapGeneric <T>(IEnumerable <IEntityVersionPageModule> versionModules, WorkFlowStatusQuery workflowStatus) where T : IPageModuleDataModel
        {
            var mapperType = typeof(IPageModuleDisplayModelMapper <T>);

            if (!_resolutionContext.IsRegistered(mapperType))
            {
                string msg = @"{0} does not implement IPageModuleDisplayModel and no custom mapper could be found. You must create 
                               a class that implements IPageModuleDisplayModelMapper<{0}> if you are using a custom display model. Full type name: {1}";
                throw new ApplicationException(string.Format(msg, typeof(T).Name, typeof(T).FullName));
            }

            var mapper     = (IPageModuleDisplayModelMapper <T>)_resolutionContext.Resolve(typeof(IPageModuleDisplayModelMapper <T>));
            var dataModels = new List <PageModuleDisplayModelMapperInput <T> >();

            foreach (var pageModule in versionModules)
            {
                var mapperModel = new PageModuleDisplayModelMapperInput <T>();
                mapperModel.DataModel       = (T)_dbUnstructuredDataSerializer.Deserialize(pageModule.SerializedData, typeof(T));
                mapperModel.VersionModuleId = pageModule.GetVersionModuleId();
                dataModels.Add(mapperModel);
            }

            return(mapper.Map(dataModels, workflowStatus).ToList());
        }
Esempio n. 8
0
        private static ProviderMappingGroup GenerateMappingGroup(string mappingName, IResolutionContext resolutionContext, string[] mappedReadWriterKeys, string[] mappedReaderKeys)
        {
            var tryReadersInGroup = TryResolveGroupReaders(resolutionContext, mappedReaderKeys).ToArray();
            var tryReadWritersInGroup = TryResolveGroupReadWriters(resolutionContext, mappedReadWriterKeys).ToArray();

            var readersInGroup = tryReadersInGroup.Where(x => x.Success);
            var readWritersInGroup = tryReadWritersInGroup.Where(x => x.Success);

            if (!readersInGroup.Any() && !readWritersInGroup.Any())
            {
                var errorBuilder = new StringBuilder();
                errorBuilder.AppendLine("Writers:");
                foreach (var namedResolutionAttempt in tryReadWritersInGroup)
                {
                    errorBuilder.AppendLine("Key: {0}, Error: {1}".InvariantFormat(namedResolutionAttempt.Key, namedResolutionAttempt.Error.ToString()));
                }
                errorBuilder.AppendLine();
                errorBuilder.AppendLine("Readers:");
                foreach (var namedResolutionAttempt in tryReadersInGroup)
                {
                    errorBuilder.AppendLine("Key: {0}, Error: {1}".InvariantFormat(namedResolutionAttempt.Key, namedResolutionAttempt.Error.ToString()));
                }
                throw new InvalidOperationException(
                    "Could not create mapping group '{0}'. Errors:\n{1}".InvariantFormat(mappingName,
                                                                                         errorBuilder.ToString()));
            }

            var uriMatches = resolutionContext.Resolve<IEnumerable<WildcardUriMatch>>(mappingName);
            var frameworkContext = resolutionContext.Resolve<IFrameworkContext>();

            var readonlyProviderSetups = readersInGroup.Select(x => x.Value).ToArray();
            var providerSetups = readWritersInGroup.Select(x => x.Value).ToArray();

            return new ProviderMappingGroup(mappingName, uriMatches, readonlyProviderSetups, providerSetups, frameworkContext);
        }
Esempio n. 9
0
 private static Lazy<AbstractTask, TaskMetadata> GetCacheWatcherTaskFactory(IResolutionContext x, string trigger)
 {
     return new Lazy<AbstractTask, TaskMetadata>(
         () => new CacheWatcherTask(x.Resolve<IFrameworkContext>()),
         new TaskMetadata(trigger, true));
 }
Esempio n. 10
0
 /// <summary>
 /// Creates a new ICommandHandler instance with the specified type signature.
 /// </summary>
 public ICommandHandler <T> Create <T>() where T : ICommand
 {
     return(_resolutionContext.Resolve <ICommandHandler <T> >());
 }
Esempio n. 11
0
 /// <summary>
 /// Creates a new IQueryHandler instance with the specified type signature.
 /// </summary>
 public IQueryHandler <TQuery, TResult> Create <TQuery, TResult>() where TQuery : IQuery <TResult>
 {
     return(_resolutionContext.Resolve <IQueryHandler <TQuery, TResult> >());
 }
 private static Lazy <AbstractTask, TaskMetadata> GetCacheWatcherTaskFactory(IResolutionContext x, string trigger)
 {
     return(new Lazy <AbstractTask, TaskMetadata>(
                () => new CacheWatcherTask(x.Resolve <IFrameworkContext>()),
                new TaskMetadata(trigger, true)));
 }