Simplified shell context creation.

This commit is contained in:
Sipke Schoorstra
2015-09-11 17:18:54 +01:00
parent 482dae3a20
commit e86a1bd1b7
5 changed files with 13 additions and 22 deletions

View File

@@ -175,7 +175,7 @@ namespace Orchard.Setup.Services {
// Creating a standalone environment. // Creating a standalone environment.
// in theory this environment can be used to resolve any normal components by interface, and those // in theory this environment can be used to resolve any normal components by interface, and those
// components will exist entirely in isolation - no crossover between the safemode container currently in effect. // components will exist entirely in isolation - no crossover between the safemode container currently in effect.
using (var environment = _orchardHost.CreateStandaloneEnvironment(shellSettings, StandaloneEnvironmentOptions.RunningEnvironment)) { using (var environment = _orchardHost.CreateStandaloneEnvironment(shellSettings)) {
try { try {
executionId = CreateTenantData(context, environment); executionId = CreateTenantData(context, environment);
} }

View File

@@ -92,13 +92,13 @@ namespace Orchard.Environment {
EndRequest(); EndRequest();
} }
IWorkContextScope IOrchardHost.CreateStandaloneEnvironment(ShellSettings shellSettings, StandaloneEnvironmentOptions options) { IWorkContextScope IOrchardHost.CreateStandaloneEnvironment(ShellSettings shellSettings) {
Logger.Debug("Creating standalone environment for tenant {0}", shellSettings.Name); Logger.Debug("Creating standalone environment for tenant {0}", shellSettings.Name);
MonitorExtensions(); MonitorExtensions();
BuildCurrent(); BuildCurrent();
var shellContext = CreateShellContext(shellSettings, options); var shellContext = CreateShellContext(shellSettings);
var workContext = shellContext.LifetimeScope.CreateWorkContextScope(); var workContext = shellContext.LifetimeScope.CreateWorkContextScope();
return new StandaloneEnvironmentWorkContextScopeWrapper(workContext, shellContext); return new StandaloneEnvironmentWorkContextScopeWrapper(workContext, shellContext);
} }
@@ -143,7 +143,7 @@ namespace Orchard.Environment {
if (allSettings.Any()) { if (allSettings.Any()) {
Parallel.ForEach(allSettings, settings => { Parallel.ForEach(allSettings, settings => {
try { try {
var context = CreateShellContext(settings, StandaloneEnvironmentOptions.None); var context = CreateShellContext(settings);
ActivateShell(context); ActivateShell(context);
} }
catch (Exception ex) { catch (Exception ex) {
@@ -195,14 +195,14 @@ namespace Orchard.Environment {
/// <summary> /// <summary>
/// Creates a shell context based on shell settings. /// Creates a shell context based on shell settings.
/// </summary> /// </summary>
private ShellContext CreateShellContext(ShellSettings settings, StandaloneEnvironmentOptions options) { private ShellContext CreateShellContext(ShellSettings settings) {
if (settings.State != TenantState.Uninitialized || options.Running) { if (settings.State == TenantState.Uninitialized || settings.State == TenantState.Invalid) {
Logger.Debug("Creating shell context for tenant {0}.", settings.Name); Logger.Debug("Creating shell context for tenant {0} setup.", settings.Name);
return _shellContextFactory.CreateShellContext(settings); return _shellContextFactory.CreateSetupContext(settings);
} }
Logger.Debug("Creating shell context for tenant {0} setup.", settings.Name); Logger.Debug("Creating shell context for tenant {0}.", settings.Name);
return _shellContextFactory.CreateSetupContext(settings); return _shellContextFactory.CreateShellContext(settings);
} }
private void SetupExtensions() { private void SetupExtensions() {
@@ -289,7 +289,7 @@ namespace Orchard.Environment {
// is this is a new tenant ? or is it a tenant waiting for setup ? // is this is a new tenant ? or is it a tenant waiting for setup ?
if (shellContext == null || settings.State == TenantState.Uninitialized) { if (shellContext == null || settings.State == TenantState.Uninitialized) {
// create the Shell // create the Shell
var context = CreateShellContext(settings, StandaloneEnvironmentOptions.None); var context = CreateShellContext(settings);
// activate the Shell // activate the Shell
ActivateShell(context); ActivateShell(context);

View File

@@ -1,6 +1,5 @@
using Orchard.Environment.Configuration; using Orchard.Environment.Configuration;
using Orchard.Environment.ShellBuilders; using Orchard.Environment.ShellBuilders;
using Orchard.Localization;
namespace Orchard.Environment { namespace Orchard.Environment {
public interface IOrchardHost { public interface IOrchardHost {
@@ -31,6 +30,6 @@ namespace Orchard.Environment {
/// Can be used to build an temporary self-contained instance of a shell's configured code. /// Can be used to build an temporary self-contained instance of a shell's configured code.
/// Services may be resolved from within this instance to configure and initialize its storage. /// Services may be resolved from within this instance to configure and initialize its storage.
/// </summary> /// </summary>
IWorkContextScope CreateStandaloneEnvironment(ShellSettings shellSettings, StandaloneEnvironmentOptions options = null); IWorkContextScope CreateStandaloneEnvironment(ShellSettings shellSettings);
} }
} }

View File

@@ -1,7 +0,0 @@
namespace Orchard.Environment {
public class StandaloneEnvironmentOptions {
public static readonly StandaloneEnvironmentOptions None = new StandaloneEnvironmentOptions();
public static readonly StandaloneEnvironmentOptions RunningEnvironment = new StandaloneEnvironmentOptions {Running = true};
public bool Running { get; set; }
}
}

View File

@@ -155,7 +155,6 @@
<Compile Include="Data\Migration\Schema\DropUniqueConstraintCommand.cs" /> <Compile Include="Data\Migration\Schema\DropUniqueConstraintCommand.cs" />
<Compile Include="Environment\Extensions\Models\LifecycleStatus.cs" /> <Compile Include="Environment\Extensions\Models\LifecycleStatus.cs" />
<Compile Include="Environment\ShellBuilders\ICompositionStrategy.cs" /> <Compile Include="Environment\ShellBuilders\ICompositionStrategy.cs" />
<Compile Include="Environment\StandaloneEnvironmentOptions.cs" />
<Compile Include="IBackgroundHttpContextFactory.cs" /> <Compile Include="IBackgroundHttpContextFactory.cs" />
<Compile Include="Mvc\Updater.cs" /> <Compile Include="Mvc\Updater.cs" />
<Compile Include="Recipes\Models\ConfigurationContext.cs" /> <Compile Include="Recipes\Models\ConfigurationContext.cs" />