/// <summary>
        /// Configures Firestorm Stems using Stem types from the given <see cref="Assembly"/> within the given <see cref="baseNamespace"/>.
        /// </summary>
        public static IFirestormServicesBuilder AddRoots(this IFirestormServicesBuilder builder, Assembly assembly, string baseNamespace)
        {
            builder.AddDerivedRoots();

            builder.Add(new AxisTypesLocation <Root>(assembly, baseNamespace));
            return(builder);
        }
Exemple #2
0
        /// <summary>
        /// Configures the data source for this Firestorm API.
        /// </summary>
        public static IFirestormServicesBuilder AddDataSource(this IFirestormServicesBuilder builder, IDataSource dataSource)
        {
            //builder.AddDataSourceTypeFinder();
            //builder.AddDataSourceRoots();

            builder.Add <IDataSource>(dataSource);
            return(builder);
        }
        /// <summary>
        /// Configures Firestorm endpoints.
        /// </summary>
        public static IFirestormServicesBuilder AddEndpoints(this IFirestormServicesBuilder builder, Func <IServiceProvider, EndpointConfiguration> factoryFunction)
        {
            builder.AddEndpointsInvoker();

            builder.Add <EndpointConfiguration>(factoryFunction);

            return(builder);
        }
        /// <summary>
        /// Configures Firestorm endpoints.
        /// </summary>
        public static IFirestormServicesBuilder AddEndpoints(this IFirestormServicesBuilder builder, EndpointConfiguration config)
        {
            builder.AddEndpointsInvoker();

            builder.Add <EndpointConfiguration>(config);

            return(builder);
        }
        /// <summary>
        /// Configures the <see cref="DerivedRootsResourceFactory"/>.
        /// </summary>
        private static IFirestormServicesBuilder AddDerivedRoots(this IFirestormServicesBuilder builder)
        {
            builder.Add <IRootResourceFactory>(sp => new DerivedRootsResourceFactory
            {
                RootTypeGetter = sp.GetService <AxisTypesLocation <Root> >().GetTypeGetter()
            });

            return(builder);
        }
        /// <summary>
        /// Configures Firestorm endpoints.
        /// Assumes <see cref="EndpointConfiguration"/> is already configured elsewhere.
        /// </summary>
        public static IFirestormServicesBuilder AddEndpointsInvoker(this IFirestormServicesBuilder builder)
        {
            builder
            .Add <IRequestInvoker, EndpointsRequestInvoker>()
            .EnableFeatures <EndpointServices>()
            .AddFeature <EndpointServices, DefaultEndpointFeature>();

            return(builder);
        }
        /// <summary>
        /// Configures Firestorm endpoints.
        /// </summary>
        public static IFirestormServicesBuilder AddEndpoints(this IFirestormServicesBuilder builder, Action <EndpointConfiguration> configureAction)
        {
            builder.AddEndpointsInvoker();

            var config = new EndpointConfiguration();

            configureAction(config);
            builder.Add <EndpointConfiguration>(config);

            return(builder);
        }
        /// <summary>
        /// Configures the <see cref="DataSourceRootResourceFactory"/> for Stems.
        /// </summary>
        internal static IFirestormServicesBuilder AddDataSourceRoots(this IFirestormServicesBuilder builder)
        {
            builder.Add <IRootResourceFactory>(sp => new DataSourceRootResourceFactory
            {
                DataSource     = sp.GetService <IDataSource>(),
                StemTypeGetter = sp.GetService <AxisTypesLocation <Stem> >().GetTypeGetter(),
                RootBehavior   = DataSourceRootAttributeBehavior.UseAllStemsExceptDisallowed // TODO support this option
            });

            return(builder);
        }
Exemple #9
0
        /// <summary>
        /// Configures Firestorm Stems using Stem types from the given <see cref="Assembly"/> within the given <see cref="baseNamespace"/>.
        /// </summary>
        public static IFirestormServicesBuilder AddStems(this IFirestormServicesBuilder builder, Assembly assembly, string baseNamespace)
        {
            builder.EnableFeatures <StemsServices>()
            .AddFeature <StemsServices, DefaultStemsFeature>();

            builder.AddStartResourceFactory(sp => new StemsStartResourceFactory
            {
                StemsServices       = sp.GetService <StemsServices>(),
                RootResourceFactory = CreateRootResourceFactory(sp)
            });

            builder.Add(new AxisTypesLocation <Stem>(assembly, baseNamespace));

            return(builder);
        }
Exemple #10
0
        public static IFirestormServicesBuilder EnableFeatures <T>(this IFirestormServicesBuilder builder)
            where T : class, new()
        {
            return(builder
                   .Add <T>(sp =>
            {
                var target = new T();

                foreach (IFeature <T> feature in sp.GetServices <IFeature <T> >())
                {
                    feature.AddTo(target);
                }

                return target;
            }));
        }
 public static IFirestormServicesBuilder Add <TAbstraction, TImplementation>(this IFirestormServicesBuilder builder)
     where TImplementation : class, TAbstraction
     where TAbstraction : class
 {
     return(builder.Add(typeof(TAbstraction), typeof(TImplementation)));
 }
Exemple #12
0
 public static IFirestormServicesBuilder AddFeature <T, TFeature>(this IFirestormServicesBuilder builder)
     where TFeature : class, IFeature <T>
 {
     return(builder.Add <IFeature <T>, TFeature>());
 }
Exemple #13
0
 /// <summary>
 /// Configures a <see cref="IItemTypeFinder"/> that finds the entity types in the data source.
 /// </summary>
 internal static IFirestormServicesBuilder AddDataSourceTypeFinder(this IFirestormServicesBuilder builder)
 {
     builder.Add <IItemTypeFinder, DataSourceTypeFinder>();
     return(builder);
 }
 /// <summary>
 /// Configures the start resource for this Firestorm API.
 /// </summary>
 public static IFirestormServicesBuilder AddStartResourceFactory(this IFirestormServicesBuilder builder, IStartResourceFactory startResourceFactory)
 {
     builder.Add <IStartResourceFactory>(startResourceFactory);
     return(builder);
 }
 /// <summary>
 /// Configures the start resource for this Firestorm API.
 /// </summary>
 public static IFirestormServicesBuilder AddStartResourceFactory(this IFirestormServicesBuilder builder, Func <IServiceProvider, IStartResourceFactory> startResourceFactoryFunc)
 {
     builder.Add <IStartResourceFactory>(startResourceFactoryFunc);
     return(builder);
 }
 public static IFirestormServicesBuilder Add(this IFirestormServicesBuilder builder, Type serviceType)
 {
     return(builder.Add(serviceType, serviceType));
 }
 public static IFirestormServicesBuilder Add <TService>(this IFirestormServicesBuilder builder)
     where TService : class
 {
     return(builder.Add(typeof(TService), typeof(TService)));
 }