Exemplo n.º 1
0
        ShellContext IShellContextFactory.CreateShellContext(
            ShellSettings settings)
        {
            var sw = Stopwatch.StartNew();
            _logger.LogInformation("Creating shell context for tenant {0}", settings.Name);

            var blueprint = _compositionStrategy.Compose(settings, MinimumShellDescriptor());
            var provider = _shellContainerFactory.CreateContainer(settings, blueprint);

            try {
                var shellcontext = new ShellContext {
                    Settings = settings,
                    Blueprint = blueprint,
                    LifetimeScope = provider,
                    Shell = provider.GetRequiredService<IOrchardShell>()
                };

                _logger.LogVerbose("Created shell context for tenant {0} in {1}ms", settings.Name, sw.ElapsedMilliseconds);

                return shellcontext;
            }
            catch (Exception ex) {
                _logger.LogError("Cannot create shell context", ex);
                throw;
            }
        }
Exemplo n.º 2
0
        ShellContext IShellContextFactory.CreateShellContext(ShellSettings settings)
        {
            var sw = Stopwatch.StartNew();
            if (_logger.IsEnabled(LogLevel.Information))
            {
                _logger.LogInformation("Creating shell context for tenant {0}", settings.Name);
            }
            var blueprint = _compositionStrategy.Compose(settings, MinimumShellDescriptor());
            var provider = _shellContainerFactory.CreateContainer(settings, blueprint);

            try
            {
                var shellcontext = new ShellContext
                {
                    Settings = settings,
                    Blueprint = blueprint,
                    ServiceProvider = provider
                };

                if (_logger.IsEnabled(LogLevel.Verbose))
                {
                    _logger.LogVerbose("Created shell context for tenant {0} in {1}ms", settings.Name, sw.ElapsedMilliseconds);
                }
                return shellcontext;
            }
            catch (Exception ex)
            {
                _logger.LogError("Cannot create shell context", ex);
                throw;
            }
        }
Exemplo n.º 3
0
        private string CreateTenantData(SetupContext context, ShellContext shellContext)
        {
            // must mark state as Running - otherwise standalone enviro is created "for setup"

            return Guid.NewGuid().ToString();
        }
Exemplo n.º 4
0
 /// <summary>
 /// Registers the shell settings in RunningShellTable
 /// </summary>
 private void ActivateShell(ShellContext context)
 {
     if (_logger.IsEnabled(LogLevel.Debug))
     {
         _logger.LogDebug("Activating context for tenant {0}", context.Settings.Name);
     }
     if (_shellContexts.TryAdd(context.Settings.Name, context))
     {
         _runningShellTable.Add(context.Settings);
     }
 }
Exemplo n.º 5
0
        /// <summary>
        /// Registers the shell settings in RunningShellTable
        /// </summary>
        private void ActivateShell(ShellContext context)
        {
            _logger.LogDebug("Activating context for tenant {0}", context.Settings.Name);

            lock (_shellContexts)
            {
                _shellContexts[context.Settings.Name] = context;
            }

            _runningShellTable.Add(context.Settings);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Starts a Shell and registers its settings in RunningShellTable
        /// </summary>
        private void ActivateShell(ShellContext context)
        {
            _logger.LogDebug("Activating context for tenant {0}", context.Settings.Name);
            context.Shell.Activate();

            lock (_shellContextsWriteLock) {
                _shellContexts = (_shellContexts ?? Enumerable.Empty<ShellContext>())
                                .Where(c => c.Settings.Name != context.Settings.Name)
                                .Concat(new[] { context })
                                .ToArray();
            }

            _runningShellTable.Add(context.Settings);
        }