Added null checks and logging when assemblies can't be loaded

--HG--
branch : perf
This commit is contained in:
Renaud Paquay
2010-11-10 16:18:47 -08:00
parent 509a051a3c
commit 578adc7bcd
2 changed files with 16 additions and 7 deletions

View File

@@ -1,12 +1,12 @@
using System;
using System.Linq;
using System.Reflection;
using Orchard.Environment.Extensions.Models;
using Orchard.FileSystems.Dependencies;
using Orchard.Logging;
namespace Orchard.Environment.Extensions.Loaders {
public class AreaExtensionLoader : ExtensionLoaderBase {
private readonly string _hostAssemblyName = "Orchard.Web";
private readonly IAssemblyLoader _assemblyLoader;
public AreaExtensionLoader(IDependenciesFolder dependenciesFolder, IAssemblyLoader assemblyLoader)
@@ -35,7 +35,11 @@ namespace Orchard.Environment.Extensions.Loaders {
protected override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {
//Logger.Information("Loading extension \"{0}\"", descriptor.Name);
var assembly = _assemblyLoader.Load("Orchard.Web");
var assembly = _assemblyLoader.Load(_hostAssemblyName);
if (assembly == null) {
Logger.Warning("Support for 'Areas' modules disabled because assembly '{0}' could not be loaded", _hostAssemblyName);
return null;
}
return new ExtensionEntry {
Descriptor = descriptor,
@@ -44,8 +48,8 @@ namespace Orchard.Environment.Extensions.Loaders {
};
}
private static bool IsTypeFromModule(Type type, ExtensionDescriptor descriptor) {
return (type.Namespace + ".").StartsWith("Orchard.Web.Areas." + descriptor.Name + ".");
private bool IsTypeFromModule(Type type, ExtensionDescriptor descriptor) {
return (type.Namespace + ".").StartsWith(_hostAssemblyName + ".Areas." + descriptor.Name + ".");
}
}
}

View File

@@ -10,6 +10,7 @@ namespace Orchard.Environment.Extensions.Loaders {
/// Load an extension by looking into specific namespaces of the "Orchard.Core" assembly
/// </summary>
public class CoreExtensionLoader : ExtensionLoaderBase {
private readonly string _coreAssemblyName = "Orchard.Core";
private readonly IAssemblyLoader _assemblyLoader;
public CoreExtensionLoader(IDependenciesFolder dependenciesFolder, IAssemblyLoader assemblyLoader)
@@ -38,7 +39,11 @@ namespace Orchard.Environment.Extensions.Loaders {
protected override ExtensionEntry LoadWorker(ExtensionDescriptor descriptor) {
//Logger.Information("Loading extension \"{0}\"", descriptor.Name);
var assembly = _assemblyLoader.Load("Orchard.Core");
var assembly = _assemblyLoader.Load(_coreAssemblyName);
if (assembly == null) {
Logger.Error("Core modules cannot be activated because assembly '{0}' could not be loaded", _coreAssemblyName);
return null;
}
return new ExtensionEntry {
Descriptor = descriptor,
@@ -47,8 +52,8 @@ namespace Orchard.Environment.Extensions.Loaders {
};
}
private static bool IsTypeFromModule(Type type, ExtensionDescriptor descriptor) {
return (type.Namespace + ".").StartsWith("Orchard.Core." + descriptor.Name + ".");
private bool IsTypeFromModule(Type type, ExtensionDescriptor descriptor) {
return (type.Namespace + ".").StartsWith(_coreAssemblyName + "." + descriptor.Name + ".");
}
}
}