From 6e1ddd01d0eed5a7bf32871fdcf54adb10cbd7a2 Mon Sep 17 00:00:00 2001 From: albertjan Date: Fri, 1 Jun 2012 11:26:38 +0200 Subject: [PATCH] Proposed solution making sure the default assemblies are always ignored when the adats is hit before it is initialised from the bootstrapper. --- .../Bootstrapper/NancyInternalConfigurationFixture.cs | 5 +++++ .../Bootstrapper/AppDomainAssemblyTypeScanner.cs | 11 +++++++++++ src/Nancy/Bootstrapper/NancyBootstrapperBase.cs | 4 +--- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/Nancy.Tests/Unit/Bootstrapper/NancyInternalConfigurationFixture.cs b/src/Nancy.Tests/Unit/Bootstrapper/NancyInternalConfigurationFixture.cs index 0119e32115..01f20a0dbf 100644 --- a/src/Nancy.Tests/Unit/Bootstrapper/NancyInternalConfigurationFixture.cs +++ b/src/Nancy.Tests/Unit/Bootstrapper/NancyInternalConfigurationFixture.cs @@ -70,10 +70,13 @@ public void Should_not_be_valid_if_any_types_null() [Fact] public void Should_set_ignored_assemblies_on_appdomainassemblytypescanner_when_creating_default_config() { + //Given AppDomainAssemblyTypeScanner.IgnoredAssemblies = null; + //When var config = NancyInternalConfiguration.Default; + //Then AppDomainAssemblyTypeScanner.Types.Where(t => config.IgnoredAssemblies.Any(f => f(t.Assembly))).Count(). ShouldEqual(0); } @@ -81,8 +84,10 @@ public void Should_set_ignored_assemblies_on_appdomainassemblytypescanner_when_c [Fact] public void Should_update_ignored_assemblies_on_appdomianassemblystypescanner_when_adding_one_to_the_config() { + //Given & When var config = NancyInternalConfiguration.Default.WithIgnoredAssembly(f => f.FullName.StartsWith("Machine.")); + //Then AppDomainAssemblyTypeScanner.Types.Where (t => config.IgnoredAssemblies.Any (f => f (t.Assembly))).Count (). ShouldEqual (0); } diff --git a/src/Nancy/Bootstrapper/AppDomainAssemblyTypeScanner.cs b/src/Nancy/Bootstrapper/AppDomainAssemblyTypeScanner.cs index e747513b8d..1d7eecc2be 100644 --- a/src/Nancy/Bootstrapper/AppDomainAssemblyTypeScanner.cs +++ b/src/Nancy/Bootstrapper/AppDomainAssemblyTypeScanner.cs @@ -61,6 +61,10 @@ public static IEnumerable Types { get { + if (!nancyAssembliesLoaded) + { + LoadNancyAssemblies(); + } return types; } } @@ -141,6 +145,13 @@ private static void UpdateAssemblies() /// public static void LoadNancyAssemblies() { + //If the ignoredassemblies is null at this point get the default ignored assemblies from the internal config. + //These will get updates when the user adjusts them. + if (IgnoredAssemblies == null) + { + IgnoredAssemblies = NancyInternalConfiguration.DefaultIgnoredAssemblies; + } + if (nancyAssembliesLoaded) { return; diff --git a/src/Nancy/Bootstrapper/NancyBootstrapperBase.cs b/src/Nancy/Bootstrapper/NancyBootstrapperBase.cs index df3e578682..b17c6f8592 100755 --- a/src/Nancy/Bootstrapper/NancyBootstrapperBase.cs +++ b/src/Nancy/Bootstrapper/NancyBootstrapperBase.cs @@ -53,8 +53,6 @@ public abstract class NancyBootstrapperBase : INancyBootstrapper, IN /// protected NancyBootstrapperBase() { - AppDomainAssemblyTypeScanner.LoadNancyAssemblies(); - this.ApplicationPipelines = new Pipelines(); this.conventions = new NancyConventions(); } @@ -209,7 +207,7 @@ public void Initialise() { throw new InvalidOperationException("Configuration is invalid"); } - + this.ApplicationContainer = this.GetApplicationContainer(); this.RegisterBootstrapperTypes(this.ApplicationContainer);