/// <summary> /// Configures the component instance. This method should set <see cref="IApplicationComponent.IsConfigured"/>. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> /// <remarks> /// </remarks> public virtual void Configure(ApplicationConfigurationBase applicationConfiguration) { if (IsConfigured) { return; } applicationConfiguration.CompositionContainer.ComposeExportedValue <IManageAutoMapper>(this); var mappingConfigurations = applicationConfiguration.CompositionContainer.GetExportedValues <IConfigureAutoMapper>(); Mapper.Initialize(c => mappingConfigurations .OrderBy(mappingConfiguration => mappingConfiguration.Priority) .ForEach(mappingConfiguration => mappingConfiguration.Configure(Configuration))); // Uncomment the following for AutoMapper >= version 4. // _Configuration = new MapperConfiguration(c => // { // mappingConfigurations // .OrderBy(mappingConfiguration => mappingConfiguration.Priority) // .ForEach(mappingConfiguration => mappingConfiguration.Configure(c)); // }); _IsConfigured = true; }
/// <summary> /// Configures the component instance. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> /// <remarks></remarks> public virtual void Configure(ApplicationConfigurationBase applicationConfiguration) { if (_IsConfigured) { return; } _Container = UnityContainerFactory.Create( _UnityConfiguration.ConfigurationFileName, _UnityConfiguration.ConfigurationSectionName, _UnityConfiguration.ContainerName); SetServiceLocator(); applicationConfiguration.CompositionContainer.ComposeExportedValue<IManageUnity>(this); applicationConfiguration.CompositionContainer.ComposeExportedValue<IUnityContainer>(_Container); _Container.RegisterInstance<CompositionContainer>(applicationConfiguration.CompositionContainer); applicationConfiguration.CompositionContainer .GetExportedValues<IConfigureAUnityContainer>() .OrderBy(configurable => configurable.Priority) .ForEach(configurable => configurable.ConfigureContainer(_Container)); _IsConfigured = true; }
/// <summary> /// Configures the component instance. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> /// <remarks></remarks> public void Configure(ApplicationConfigurationBase applicationConfiguration) { if (!_IsConfigured) { applicationConfiguration.CompositionContainer.ComposeExportedValue <IManageCryptography>(this); _DefaultHashAlgorithm = _CryptographyConfiguration.DefaultHashAlgorithm; _DefaultKeyedHashAlgorithm = _CryptographyConfiguration.DefaultKeyedHashAlgorithm; _DefaultSymmetricAlgorithm = _CryptographyConfiguration.DefaultSymmetricAlgorithm; _HashProvider = new Lazy <IProvideHashing>( _CryptographyConfiguration.HashProviderFactory ?? (() => new HashProvider(DefaultHashAlgorithm))); _KeyedHashProvider = new Lazy <IProvideKeyedHashing>( _CryptographyConfiguration.KeyedHashProviderFactory ?? (() => new KeyedHashProvider(DefaultKeyedHashAlgorithm))); _SymmetricEncryptionProvider = new Lazy <IProvideSymmetricEncryption>( _CryptographyConfiguration.SymmetricEncryptionProviderFactory ?? (() => new SymmetricEncryptionProvider(DefaultSymmetricAlgorithm))); _IsConfigured = true; } }
/// <summary> /// Configures the component instance. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> /// <remarks></remarks> public virtual void Configure(ApplicationConfigurationBase applicationConfiguration) { if (IsConfigured) { return; } applicationConfiguration.CompositionContainer.ComposeExportedValue <IManageWebApi>(this); CompositionContainer = applicationConfiguration.CompositionContainer; if (!WebApiConfiguration.IsSelfHosted && WebApiConfiguration.AspNetHttpConfigurationDelegate != null) { WebApiConfiguration.AspNetHttpConfigurationDelegate.Invoke(HttpConfiguration); } var webApiConfigurations = _CompositionContainer.GetExportedValues <IConfigureWebApi>(); foreach (var webApiConfiguration in webApiConfigurations) { webApiConfiguration.Configure(HttpConfiguration); } var routingConfigurations = _CompositionContainer.GetExportedValues <IConfigureHttpRouting>().OrderBy(c => c.Priority); foreach (var routingConfiguration in routingConfigurations) { routingConfiguration.Configure(this); } CreateRoutes(); IsConfigured = true; }
public void Configure(ApplicationConfigurationBase applicationConfiguration) { if (IsConfigured) { return; } // Compose app container var batch = new CompositionBatch(); foreach (var entry in _Entries) { var entryType = entry.GetType(); var contractName = AttributedModelServices.GetContractName(entryType); var typeIdentity = AttributedModelServices.GetTypeIdentity(entryType); var metadata = new Dictionary <string, object> { { "ExportTypeIdentity", typeIdentity } }; batch.AddExport(new Export(contractName, metadata, () => entry)); } applicationConfiguration.CompositionContainer.Compose(batch); IsConfigured = true; }
/// <summary> /// Configures the component instance. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> /// <remarks></remarks> public virtual void Configure(ApplicationConfigurationBase applicationConfiguration) { if (_IsConfigured) { return; } _Container = UnityContainerFactory.Create( _UnityConfiguration.ConfigurationFileName, _UnityConfiguration.ConfigurationSectionName, _UnityConfiguration.ContainerName); SetServiceLocator(); applicationConfiguration.CompositionContainer.ComposeExportedValue <IManageUnity>(this); applicationConfiguration.CompositionContainer.ComposeExportedValue <IUnityContainer>(_Container); _Container.RegisterInstance <CompositionContainer>(applicationConfiguration.CompositionContainer); applicationConfiguration.CompositionContainer .GetExportedValues <IConfigureAUnityContainer>() .OrderBy(configurable => configurable.Priority) .ForEach(configurable => configurable.ConfigureContainer(_Container)); _IsConfigured = true; }
/// <summary> /// Configures the specified application configuration. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> public override void Configure(ApplicationConfigurationBase applicationConfiguration) { if (IsConfigured) return; applicationConfiguration.CompositionContainer.ComposeExportedValue<IManageWebApi>(this); CompositionContainer = applicationConfiguration.CompositionContainer; var webApiConfigurations = CompositionContainer.GetExportedValues<IConfigureWebApi>(); foreach (var webApiConfiguration in webApiConfigurations) { webApiConfiguration.Configure(HttpConfiguration); } var routingConfigurations = CompositionContainer.GetExportedValues<IConfigureHttpRouting>().OrderBy(c => c.Priority); foreach (var routingConfiguration in routingConfigurations) { routingConfiguration.Configure(this); } CreateRoutes(); var owinConfigurations = CompositionContainer.GetExportedValues<IConfigureOwin>().OrderBy(oc => oc.Priority); foreach (var owinConfiguration in owinConfigurations) { owinConfiguration.Configure(AppBuilder); } AppBuilder.UseWebApi(HttpConfiguration); IsConfigured = true; }
/// <summary> /// Configures the component instance. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> /// <remarks></remarks> public virtual void Configure(ApplicationConfigurationBase applicationConfiguration) { if (!_IsConfigured) { applicationConfiguration.CompositionContainer.ComposeExportedValue <IManageSecurity>(this); _IsConfigured = true; } }
public void Configure(ApplicationConfigurationBase applicationConfiguration) { if (IsConfigured) { return; } _IsConfigured = true; }
/// <summary> /// Configures the component instance. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> /// <remarks></remarks> public virtual void Configure(ApplicationConfigurationBase applicationConfiguration) { if (_IsConfigured) { return; } applicationConfiguration.CompositionContainer.ComposeExportedValue <IManageCaching>(this); _IsConfigured = true; }
/// <summary> /// Configures the component instance. This method should set <see cref="IsConfigured" />. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> public void Configure(ApplicationConfigurationBase applicationConfiguration) { if (_IsConfigured) { return; } applicationConfiguration.CompositionContainer.ComposeExportedValue <IManageEvents>(this); _CompositionContainer = applicationConfiguration.CompositionContainer; _IsConfigured = true; }
/// <summary> /// Configures the component instance. This method should set <see cref="IsConfigured" />. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> public void Configure(ApplicationConfigurationBase applicationConfiguration) { if (_IsConfigured) { return; } applicationConfiguration.CompositionContainer.ComposeExportedValue <IManageEvents>(this); _CompositionContainer = applicationConfiguration.CompositionContainer; _ConditionalEventHandlers = _CompositionContainer.GetExportTypesThatImplement <IConditionallyHandleEvents>().ToList(); _IsConfigured = true; }
/// <summary> /// Configures the component instance. This method should set <see cref="IsConfigured" />. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> public void Configure(ApplicationConfigurationBase applicationConfiguration) { if (_IsConfigured) { return; } applicationConfiguration.CompositionContainer.ComposeExportedValue <IManageLogging>(this); _LogTargets = new HashSet <ILogTarget>(_LoggingConfiguration.LogTargetFactories.Select(logTargetFactory => logTargetFactory.Value)); _LogTargets.ForEach(logTarget => _Broadcast.LinkTo(logTarget, new DataflowLinkOptions(), logTarget.ShouldLog)); _IsConfigured = true; }
/// <summary> /// Configures the component instance. This method should set <see cref="IsConfigured" />. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> public void Configure(ApplicationConfigurationBase applicationConfiguration) { if (_IsConfigured) { return; } applicationConfiguration.CompositionContainer.ComposeExportedValue<IManageLogging>(this); _LogTargets = new HashSet<ILogTarget>(_LoggingConfiguration.LogTargetFactories.Select(logTargetFactory => logTargetFactory.Value)); _LogTargets.ForEach(logTarget => _Broadcast.LinkTo(logTarget, new DataflowLinkOptions(), logTarget.ShouldLog)); _IsConfigured = true; }
/// <summary> /// Configures the component instance. This method should set <see cref="IApplicationComponent.IsConfigured"/>. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> /// <remarks> /// </remarks> public virtual void Configure(ApplicationConfigurationBase applicationConfiguration) { if (IsConfigured) { return; } applicationConfiguration.CompositionContainer.ComposeExportedValue<IManageAutoMapper>(this); var mappingConfigurations = applicationConfiguration.CompositionContainer.GetExportedValues<IConfigureAutoMapper>(); mappingConfigurations.OrderBy(mappingConfiguration => mappingConfiguration.Priority) .ForEach(mappingConfiguration => mappingConfiguration.Configure(Configuration)); _IsConfigured = true; }
/// <summary> /// Configures the component instance. This method should set <see cref="IApplicationComponent.IsConfigured"/>. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> /// <remarks> /// </remarks> public virtual void Configure(ApplicationConfigurationBase applicationConfiguration) { if (IsConfigured) { return; } applicationConfiguration.CompositionContainer.ComposeExportedValue <IManageAutoMapper>(this); var mappingConfigurations = applicationConfiguration.CompositionContainer.GetExportedValues <IConfigureAutoMapper>(); mappingConfigurations.OrderBy(mappingConfiguration => mappingConfiguration.Priority) .ForEach(mappingConfiguration => mappingConfiguration.Configure(Configuration)); _IsConfigured = true; }
/// <summary> /// Configures the component instance. This method should set <see cref="IApplicationComponent.IsConfigured"/>. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> /// <remarks> /// </remarks> public virtual void Configure(ApplicationConfigurationBase applicationConfiguration) { if (_IsConfigured) { return; } _Kernel = _Configuration.CreateKernel(); applicationConfiguration.CompositionContainer.ComposeExportedValue<IKernel>(_Kernel); applicationConfiguration.CompositionContainer.ComposeExportedValue<IManageNinject>(this); _Kernel.Bind<CompositionContainer>().ToConstant(applicationConfiguration.CompositionContainer).InSingletonScope(); applicationConfiguration.CompositionContainer .GetExportedValues<IConfigureANinjectKernel>() .OrderBy(configurable => configurable.Priority) .ForEach(configurable => configurable.ConfigureKernel(_Kernel)); _IsConfigured = true; }
public void Configure(ApplicationConfigurationBase applicationConfiguration) { if (IsConfigured) return; // Compose app container var batch = new CompositionBatch(); foreach (var entry in _Entries) { var entryType = entry.GetType(); var contractName = AttributedModelServices.GetContractName(entryType); var typeIdentity = AttributedModelServices.GetTypeIdentity(entryType); var metadata = new Dictionary<string, object> { { "ExportTypeIdentity", typeIdentity } }; batch.AddExport(new Export(contractName, metadata, () => entry)); } applicationConfiguration.CompositionContainer.Compose(batch); IsConfigured = true; }
/// <summary> /// Configures the component instance. This method should set <see cref="IApplicationComponent.IsConfigured"/>. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> /// <remarks> /// </remarks> public virtual void Configure(ApplicationConfigurationBase applicationConfiguration) { if (_IsConfigured) { return; } _Kernel = _Configuration.CreateKernel(); applicationConfiguration.CompositionContainer.ComposeExportedValue <IKernel>(_Kernel); applicationConfiguration.CompositionContainer.ComposeExportedValue <IManageNinject>(this); _Kernel.Bind <CompositionContainer>().ToConstant(applicationConfiguration.CompositionContainer).InSingletonScope(); applicationConfiguration.CompositionContainer .GetExportedValues <IConfigureANinjectKernel>() .OrderBy(configurable => configurable.Priority) .ForEach(configurable => configurable.ConfigureKernel(_Kernel)); _IsConfigured = true; }
/// <summary> /// Configures the component instance. This method should set <see cref="IApplicationComponent.IsConfigured"/>. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> /// <remarks> /// </remarks> public virtual void Configure(ApplicationConfigurationBase applicationConfiguration) { if (_IsConfigured) { return; } _Container = _Configuration.CreateContainer(applicationConfiguration); applicationConfiguration.CompositionContainer.ComposeExportedValue <IContainer>(_Container); applicationConfiguration.CompositionContainer.ComposeExportedValue <DryIocManager>(this); Container.RegisterInstance <CompositionContainer>(applicationConfiguration.CompositionContainer, Reuse.Singleton); Container.RegisterDelegate(resolver => (IContainer)resolver, setup: Setup.With(allowDisposableTransient: true)); applicationConfiguration.CompositionContainer .GetExportedValues <IConfigureDryIoc>() .OrderByDescending(configurable => configurable.Priority) .ForEach(configurable => configurable.ConfigureContainer(Container)); _IsConfigured = true; }
/// <summary> /// Configures the component instance. This method should set <see cref="IApplicationComponent.IsConfigured"/>. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> /// <remarks> /// </remarks> public virtual void Configure(ApplicationConfigurationBase applicationConfiguration) { if (_IsConfigured) { return; } _Container = _Configuration.CreateContainer(applicationConfiguration); applicationConfiguration.CompositionContainer.ComposeExportedValue<IContainer>(_Container); applicationConfiguration.CompositionContainer.ComposeExportedValue<DryIocManager>(this); Container.RegisterInstance<CompositionContainer>(applicationConfiguration.CompositionContainer, Reuse.Singleton); Container.RegisterDelegate(resolver => (IContainer)resolver, setup: Setup.With(allowDisposableTransient: true)); applicationConfiguration.CompositionContainer .GetExportedValues<IConfigureDryIoc>() .OrderByDescending(configurable => configurable.Priority) .ForEach(configurable => configurable.ConfigureContainer(Container)); _IsConfigured = true; }
/// <summary> /// Configures the component instance. This method should set <see cref="IApplicationComponent.IsConfigured"/>. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> /// <remarks> /// </remarks> public virtual void Configure(ApplicationConfigurationBase applicationConfiguration) { if (IsConfigured) { return; } applicationConfiguration.CompositionContainer.ComposeExportedValue <IManageAutoMapper>(this); var mappingConfigurations = applicationConfiguration.CompositionContainer.GetExportedValues <IConfigureAutoMapper>(); _ConfigurationProvder = new MapperConfiguration(c => { ConfigureMappings(c, mappingConfigurations); }); _Mapper = _ConfigurationProvder.CreateMapper(); Initialize(c => { ConfigureMappings(c, mappingConfigurations); }); _IsConfigured = true; }
/// <summary> /// Configures the component instance. This method should set <see cref="IApplicationComponent.IsConfigured"/>. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> /// <remarks> /// </remarks> public virtual void Configure(ApplicationConfigurationBase applicationConfiguration) { if (IsConfigured) return; applicationConfiguration.CompositionContainer.ComposeExportedValue<IManageAutoMapper>(this); var mappingConfigurations = applicationConfiguration.CompositionContainer.GetExportedValues<IConfigureAutoMapper>(); Mapper.Initialize(c => mappingConfigurations .OrderBy(mappingConfiguration => mappingConfiguration.Priority) .ForEach(mappingConfiguration => mappingConfiguration.Configure(Configuration))); // Uncomment the following for AutoMapper >= version 4. // _Configuration = new MapperConfiguration(c => // { // mappingConfigurations // .OrderBy(mappingConfiguration => mappingConfiguration.Priority) // .ForEach(mappingConfiguration => mappingConfiguration.Configure(c)); // }); _IsConfigured = true; }
/// <summary> /// Configures the component instance. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> /// <remarks></remarks> public virtual void Configure(ApplicationConfigurationBase applicationConfiguration) { if (IsConfigured) { return; } applicationConfiguration.CompositionContainer.ComposeExportedValue <IManageWebApi>(this); HttpConfiguration = _WebApiConfiguration.HttpConfigurationFactory(); var webApiConfigurations = applicationConfiguration.CompositionContainer.GetExportedValues <IConfigureWebApi>(); foreach (var webApiConfiguration in webApiConfigurations) { webApiConfiguration.Configure(HttpConfiguration); } var routingConfigurations = applicationConfiguration.CompositionContainer.GetExportedValues <IConfigureHttpRouting>().OrderBy(c => c.Priority); foreach (var routingConfiguration in routingConfigurations) { routingConfiguration.Configure(this); } _HttpRoutes.ForEach( route => { HttpConfiguration .Routes .MapHttpRoute(route.RouteName, route.RouteTemplate, route.Defaults, route.Constraints); }); _WebApiConfiguration.HostConfigurationAction(); IsConfigured = true; }
/// <summary> /// Configures the specified application configuration. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> public override void Configure(ApplicationConfigurationBase applicationConfiguration) { if (IsConfigured) { return; } applicationConfiguration.CompositionContainer.ComposeExportedValue <IManageWebApi>(this); CompositionContainer = applicationConfiguration.CompositionContainer; var webApiConfigurations = CompositionContainer.GetExportedValues <IConfigureWebApi>(); foreach (var webApiConfiguration in webApiConfigurations) { webApiConfiguration.Configure(HttpConfiguration); } var routingConfigurations = CompositionContainer.GetExportedValues <IConfigureHttpRouting>().OrderBy(c => c.Priority); foreach (var routingConfiguration in routingConfigurations) { routingConfiguration.Configure(this); } CreateRoutes(); var owinConfigurations = CompositionContainer.GetExportedValues <IConfigureOwin>().OrderBy(oc => oc.Priority); foreach (var owinConfiguration in owinConfigurations) { owinConfiguration.Configure(AppBuilder); } AppBuilder.UseWebApi(HttpConfiguration); IsConfigured = true; }
/// <summary> /// Creates the <see cref="IContainer"/> instance. /// </summary> /// <returns>Instance of <see cref="IContainer"/>.</returns> /// <remarks></remarks> public virtual IContainer CreateContainer(ApplicationConfigurationBase applicationConfiguration) { return _ContainerFactory.Invoke(applicationConfiguration); }
/// <summary> /// Configures the component instance. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> /// <remarks></remarks> public virtual void Configure(ApplicationConfigurationBase applicationConfiguration) { if (IsConfigured) return; applicationConfiguration.CompositionContainer.ComposeExportedValue<IManageWebApi>(this); HttpConfiguration = _WebApiConfiguration.HttpConfigurationFactory(); var webApiConfigurations = applicationConfiguration.CompositionContainer.GetExportedValues<IConfigureWebApi>(); foreach (var webApiConfiguration in webApiConfigurations) { webApiConfiguration.Configure(HttpConfiguration); } var routingConfigurations = applicationConfiguration.CompositionContainer.GetExportedValues<IConfigureHttpRouting>().OrderBy(c => c.Priority); foreach (var routingConfiguration in routingConfigurations) { routingConfiguration.Configure(this); } _HttpRoutes.ForEach( route => { HttpConfiguration .Routes .MapHttpRoute(route.RouteName, route.RouteTemplate, route.Defaults, route.Constraints); }); _WebApiConfiguration.HostConfigurationAction(); IsConfigured = true; }
public void Configure(ApplicationConfigurationBase applicationConfiguration) { if (IsConfigured) { return; } var serverConfiguration = new ScimServerConfiguration(); applicationConfiguration.CompositionContainer.ComposeExportedValue(serverConfiguration); // configure appBuilder middleware AppBuilder.Use <ExceptionHandlerMiddleware>(); // global exception handler for returning SCIM-formatted messages AppBuilder.Use((context, task) => { AmbientRequestService.SetRequestInformation(context, serverConfiguration); return(task.Invoke()); }); // discover and register all type definitions var versionedSchemaTypes = new Dictionary <ScimVersion, IList <Type> > { { ScimVersion.One, new List <Type>() }, { ScimVersion.Two, new List <Type>() } }; var typeDefinitions = applicationConfiguration.CompositionContainer.GetExportTypesThatImplement <IScimTypeDefinition>(); foreach (var typeDefinition in typeDefinitions) { Type distinctTypeDefinition; var typeDefinitionTarget = GetTargetDefinitionType(typeDefinition); // the type of object being defined (e.g. User, Group, Name) if (serverConfiguration.TypeDefinitionRegistry.TryGetValue(typeDefinitionTarget, out distinctTypeDefinition)) { // already have a definition registered for the target type // let's favor non-Owin.Scim definitions over built-in defaults if (distinctTypeDefinition.Assembly.FullName.StartsWith(BuiltInAssemblyNamePrefix) && !typeDefinition.Assembly.FullName.StartsWith(BuiltInAssemblyNamePrefix)) { serverConfiguration.TypeDefinitionRegistry[typeDefinitionTarget] = typeDefinition; } continue; } // register type definition if (typeof(IScimSchemaTypeDefinition).IsAssignableFrom(typeDefinition)) { var targetVersion = typeDefinitionTarget.Namespace.GetScimVersion() ?? serverConfiguration.DefaultScimVersion; versionedSchemaTypes[targetVersion].Add(typeDefinitionTarget); } serverConfiguration.TypeDefinitionRegistry[typeDefinitionTarget] = typeDefinition; } serverConfiguration.SchemaTypeVersionCache = versionedSchemaTypes; // instantiate an instance of each type definition and add it to configuration // type definitions MAY instantiate new type definitions themselves during attribute definition composition var enumerator = serverConfiguration.TypeDefinitionRegistry.Values.GetEnumerator(); while (enumerator.MoveNext()) { // creating type definitions may be expensive due to reflection // when a type definition is instantiated, it may implicitly instantiate/register other type // definitions for complex attributes, therefore, no need to re-create the same definition more than once if (serverConfiguration.ContainsTypeDefinition(enumerator.Current)) { continue; } var typeDefinition = (IScimTypeDefinition)enumerator.Current.CreateInstance(serverConfiguration); serverConfiguration.AddTypeDefiniton(typeDefinition); } // define a new HttpConfiguration var httpConfiguration = serverConfiguration.HttpConfiguration = new HttpConfiguration(); // invoke custom configuration action if not null if (_ConfigureScimServerAction != null) { _ConfigureScimServerAction.Invoke(serverConfiguration); } // register any optional middleware if (serverConfiguration.RequireSsl) { AppBuilder.Use <RequireSslMiddleware>(); } // create a DryIoC container with an optional fallback dependency resolver if one has been specified if (serverConfiguration.DependencyResolver != null) { Container = new Container( rules => rules.WithoutThrowIfDependencyHasShorterReuseLifespan() .WithUnknownServiceResolvers(request => { var shouldResolve = _TypeResolverCache.GetOrAdd( request.ServiceType, type => _CompositionConstraints.Any( constraint => constraint(new FileInfo(type.Assembly.Location)))); if (!shouldResolve) { return(null); } return(new DelegateFactory( resolver => serverConfiguration.DependencyResolver.Resolve(request.ServiceType))); }), new AsyncExecutionFlowScopeContext()); } else { Container = new Container( rules => rules.WithoutThrowIfDependencyHasShorterReuseLifespan(), new AsyncExecutionFlowScopeContext()); } // Configure http configuration for SCIM ConfigureHttpConfiguration(serverConfiguration); // Register our ScimServerConfiguration as a singleton Container.RegisterInstance(serverConfiguration, Reuse.Singleton); Container.WithWebApi(httpConfiguration); AppBuilder.UseWebApi(httpConfiguration); IsConfigured = true; }
/// <summary> /// Configures the component instance. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> /// <remarks></remarks> public virtual void Configure(ApplicationConfigurationBase applicationConfiguration) { if (IsConfigured) return; applicationConfiguration.CompositionContainer.ComposeExportedValue<IManageWebApi>(this); CompositionContainer = applicationConfiguration.CompositionContainer; if (!WebApiConfiguration.IsSelfHosted && WebApiConfiguration.AspNetHttpConfigurationDelegate != null) { WebApiConfiguration.AspNetHttpConfigurationDelegate.Invoke(HttpConfiguration); } var webApiConfigurations = _CompositionContainer.GetExportedValues<IConfigureWebApi>(); foreach (var webApiConfiguration in webApiConfigurations) { webApiConfiguration.Configure(HttpConfiguration); } var routingConfigurations = _CompositionContainer.GetExportedValues<IConfigureHttpRouting>().OrderBy(c => c.Priority); foreach (var routingConfiguration in routingConfigurations) { routingConfiguration.Configure(this); } CreateRoutes(); IsConfigured = true; }
/// <summary> /// Configures the component instance. This method should set <see cref="IsConfigured" />. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> public void Configure(ApplicationConfigurationBase applicationConfiguration) { if (_IsConfigured) { return; } applicationConfiguration.CompositionContainer.ComposeExportedValue<IManageEvents>(this); _CompositionContainer = applicationConfiguration.CompositionContainer; _IsConfigured = true; }
/// <summary> /// Creates the <see cref="IContainer"/> instance. /// </summary> /// <returns>Instance of <see cref="IContainer"/>.</returns> /// <remarks></remarks> public virtual IContainer CreateContainer(ApplicationConfigurationBase applicationConfiguration) { return(_ContainerFactory.Invoke(applicationConfiguration)); }
/// <summary> /// Configures the component instance. /// </summary> /// <param name="applicationConfiguration">The application configuration.</param> /// <remarks></remarks> public void Configure(ApplicationConfigurationBase applicationConfiguration) { if (!_IsConfigured) { applicationConfiguration.CompositionContainer.ComposeExportedValue<IManageCryptography>(this); _DefaultHashAlgorithm = _CryptographyConfiguration.DefaultHashAlgorithm; _DefaultKeyedHashAlgorithm = _CryptographyConfiguration.DefaultKeyedHashAlgorithm; _DefaultSymmetricAlgorithm = _CryptographyConfiguration.DefaultSymmetricAlgorithm; _HashProvider = new Lazy<IProvideHashing>( _CryptographyConfiguration.HashProviderFactory ?? (() => new HashProvider(DefaultHashAlgorithm))); _KeyedHashProvider = new Lazy<IProvideKeyedHashing>( _CryptographyConfiguration.KeyedHashProviderFactory ?? (() => new KeyedHashProvider(DefaultKeyedHashAlgorithm))); _SymmetricEncryptionProvider = new Lazy<IProvideSymmetricEncryption>( _CryptographyConfiguration.SymmetricEncryptionProviderFactory ?? (() => new SymmetricEncryptionProvider(DefaultSymmetricAlgorithm))); _IsConfigured = true; } }
public void Configure(ApplicationConfigurationBase applicationConfiguration) { if (IsConfigured) return; var serverConfiguration = new ScimServerConfiguration(); applicationConfiguration.CompositionContainer.ComposeExportedValue(serverConfiguration); // configure appBuilder middleware AppBuilder.Use<ExceptionHandlerMiddleware>(); // global exception handler for returning SCIM-formatted messages AppBuilder.Use((context, task) => { AmbientRequestService.SetRequestInformation(context, serverConfiguration); return task.Invoke(); }); // discover and register all type definitions var versionedSchemaTypes = new Dictionary<ScimVersion, IList<Type>> { { ScimVersion.One, new List<Type>() }, { ScimVersion.Two, new List<Type>() } }; var typeDefinitions = applicationConfiguration.CompositionContainer.GetExportTypesThatImplement<IScimTypeDefinition>(); foreach (var typeDefinition in typeDefinitions) { Type distinctTypeDefinition; var typeDefinitionTarget = GetTargetDefinitionType(typeDefinition); // the type of object being defined (e.g. User, Group, Name) if (serverConfiguration.TypeDefinitionRegistry.TryGetValue(typeDefinitionTarget, out distinctTypeDefinition)) { // already have a definition registered for the target type // let's favor non-Owin.Scim definitions over built-in defaults if (distinctTypeDefinition.Assembly.FullName.StartsWith(BuiltInAssemblyNamePrefix) && !typeDefinition.Assembly.FullName.StartsWith(BuiltInAssemblyNamePrefix)) { serverConfiguration.TypeDefinitionRegistry[typeDefinitionTarget] = typeDefinition; } continue; } // register type definition if (typeof(IScimSchemaTypeDefinition).IsAssignableFrom(typeDefinition)) { var targetVersion = typeDefinitionTarget.Namespace.GetScimVersion() ?? serverConfiguration.DefaultScimVersion; versionedSchemaTypes[targetVersion].Add(typeDefinitionTarget); } serverConfiguration.TypeDefinitionRegistry[typeDefinitionTarget] = typeDefinition; } serverConfiguration.SchemaTypeVersionCache = versionedSchemaTypes; // instantiate an instance of each type definition and add it to configuration // type definitions MAY instantiate new type definitions themselves during attribute definition composition var enumerator = serverConfiguration.TypeDefinitionRegistry.Values.GetEnumerator(); while (enumerator.MoveNext()) { // creating type definitions may be expensive due to reflection // when a type definition is instantiated, it may implicitly instantiate/register other type // definitions for complex attributes, therefore, no need to re-create the same definition more than once if (serverConfiguration.ContainsTypeDefinition(enumerator.Current)) continue; var typeDefinition = (IScimTypeDefinition)enumerator.Current.CreateInstance(serverConfiguration); serverConfiguration.AddTypeDefiniton(typeDefinition); } // define a new HttpConfiguration var httpConfiguration = serverConfiguration.HttpConfiguration = new HttpConfiguration(); // invoke custom configuration action if not null if (_ConfigureScimServerAction != null) _ConfigureScimServerAction.Invoke(serverConfiguration); // register any optional middleware if (serverConfiguration.RequireSsl) AppBuilder.Use<RequireSslMiddleware>(); // create a DryIoC container with an optional fallback dependency resolver if one has been specified if (serverConfiguration.DependencyResolver != null) { Container = new Container( rules => rules.WithoutThrowIfDependencyHasShorterReuseLifespan() .WithUnknownServiceResolvers(request => { var shouldResolve = _TypeResolverCache.GetOrAdd( request.ServiceType, type => _CompositionConstraints.Any( constraint => constraint(new FileInfo(type.Assembly.Location)))); if (!shouldResolve) return null; return new DelegateFactory( resolver => serverConfiguration.DependencyResolver.Resolve(request.ServiceType)); }), new AsyncExecutionFlowScopeContext()); } else { Container = new Container( rules => rules.WithoutThrowIfDependencyHasShorterReuseLifespan(), new AsyncExecutionFlowScopeContext()); } // Configure http configuration for SCIM ConfigureHttpConfiguration(serverConfiguration); // Register our ScimServerConfiguration as a singleton Container.RegisterInstance(serverConfiguration, Reuse.Singleton); Container.WithWebApi(httpConfiguration); AppBuilder.UseWebApi(httpConfiguration); IsConfigured = true; }