Beispiel #1
0
        /// <summary>
        /// Initialize components and plugins in the ocean environment.
        /// </summary>
        /// <param name="config">Config</param>
        public void Initialize(OceanConfig config)
        {
            bool databaseInstalled = false;// DataSettingsHelper.DatabaseIsInstalled();

            if (databaseInstalled)
            {
                //startup tasks
                RunStartupTasks();
            }
        }
Beispiel #2
0
        protected virtual string[] GetComponentConfigurations(OceanConfig configuration)
        {
            var    configurations     = new List <string>();
            string trustConfiguration = (CommonHelper.GetTrustLevel() > System.Web.AspNetHostingPermissionLevel.Medium)
                ? ConfigurationKeys.FullTrust
                : ConfigurationKeys.MediumTrust;

            configurations.Add(trustConfiguration);
            return(configurations.ToArray());
        }
Beispiel #3
0
        /// <summary>
        /// Creates a factory instance and adds a http application injecting facility.
        /// </summary>
        /// <returns>A new factory</returns>
        public static IEngine CreateEngineInstance(OceanConfig config)
        {
            if (config != null && !string.IsNullOrEmpty(config.EngineType))
            {
                var engineType = Type.GetType(config.EngineType);
                if (engineType == null)
                {
                    throw new ConfigurationErrorsException("The type '" + engineType + "' could not be found. Please check the configuration at /configuration/ocean/engine[@engineType] or check for missing assemblies.");
                }
                if (!typeof(IEngine).IsAssignableFrom(engineType))
                {
                    throw new ConfigurationErrorsException("The type '" + engineType + "' doesn't implement 'Ocean.Core.Infrastructure.IEngine' and cannot be configured in /configuration/ocean/engine[@engineType] for that purpose.");
                }
                return(Activator.CreateInstance(engineType) as IEngine);
            }

            return(new OceanEngine());
        }
Beispiel #4
0
 public WebAppTypeFinder(OceanConfig config)
 {
     this._ensureBinFolderAssembliesLoaded = config.DynamicDiscovery;
 }
Beispiel #5
0
 public ThemeProvider(OceanConfig oceanConfig, IWebHelper webHelper)
 {
     basePath = webHelper.MapPath(oceanConfig.ThemeBasePath);
     LoadConfigurations();
 }
Beispiel #6
0
        private void InitializeContainer(ContainerConfigurer configurer, EventBroker broker, OceanConfig config)
        {
            var builder = new ContainerBuilder();

            _containerManager = new ContainerManager(builder.Build());
            configurer.Configure(this, _containerManager, broker, config);
        }
Beispiel #7
0
        public virtual void Configure(IEngine engine, ContainerManager containerManager, EventBroker broker, OceanConfig configuration)
        {
            //other dependencies
            containerManager.AddComponentInstance <OceanConfig>(configuration, "ocean.configuration");
            containerManager.AddComponentInstance <IEngine>(engine, "ocean.engine");
            containerManager.AddComponentInstance <ContainerConfigurer>(this, "ocean.containerConfigurer");

            //type finder
            containerManager.AddComponent <ITypeFinder, WebAppTypeFinder>("ocean.typeFinder");

            //register dependencies provided by other assemblies
            var typeFinder = containerManager.Resolve <ITypeFinder>();

            containerManager.UpdateContainer(x =>
            {
                var drTypes     = typeFinder.FindClassesOfType <IDependencyRegistrar>();
                var drInstances = new List <IDependencyRegistrar>();
                foreach (var drType in drTypes)
                {
                    drInstances.Add((IDependencyRegistrar)Activator.CreateInstance(drType));
                }
                //sort
                drInstances = drInstances.AsQueryable().OrderBy(t => t.Order).ToList();
                foreach (var dependencyRegistrar in drInstances)
                {
                    dependencyRegistrar.Register(x, typeFinder);
                }
            });

            //event broker
            containerManager.AddComponentInstance(broker);

            //service registration
            containerManager.AddComponent <DependencyAttributeRegistrator>("ocean.serviceRegistrator");
            var registrator    = containerManager.Resolve <DependencyAttributeRegistrator>();
            var services       = registrator.FindServices();
            var configurations = GetComponentConfigurations(configuration);

            services = registrator.FilterServices(services, configurations);
            registrator.RegisterServices(services);
        }