Skip to content
This repository has been archived by the owner on Jan 24, 2021. It is now read-only.

Commit

Permalink
Renamed IResourceAssemblyProvider
Browse files Browse the repository at this point in the history
It's now called IAssemblyProvider and was moved to the Nancy
namespace.
  • Loading branch information
thecodejunkie committed Jan 3, 2013
1 parent d46b4d7 commit 9e82356
Show file tree
Hide file tree
Showing 10 changed files with 76 additions and 69 deletions.
14 changes: 7 additions & 7 deletions src/Nancy.Testing/ConfigurableBootstrapper.cs
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -1137,24 +1137,24 @@ public ConfigurableBoostrapperConfigurator RequestDispatcher<T>() where T : IReq
} }


/// <summary> /// <summary>
/// Configures the bootstrapper to use the provided instance of <see cref="IResourceAssemblyProvider"/>. /// Configures the bootstrapper to use the provided instance of <see cref="IAssemblyProvider"/>.
/// </summary> /// </summary>
/// <param name="resourceAssemblyProvider">The <see cref="IResourceAssemblyProvider"/> instance that should be used by the bootstrapper.</param> /// <param name="assemblyProvider">The <see cref="IAssemblyProvider"/> instance that should be used by the bootstrapper.</param>
/// <returns>A reference to the current <see cref="ConfigurableBoostrapperConfigurator"/>.</returns> /// <returns>A reference to the current <see cref="ConfigurableBoostrapperConfigurator"/>.</returns>
public ConfigurableBoostrapperConfigurator ResourceAssemblyProvider(IResourceAssemblyProvider resourceAssemblyProvider) public ConfigurableBoostrapperConfigurator ResourceAssemblyProvider(IAssemblyProvider assemblyProvider)
{ {
this.bootstrapper.registeredInstances.Add( this.bootstrapper.registeredInstances.Add(
new InstanceRegistration(typeof(IResourceAssemblyProvider), resourceAssemblyProvider)); new InstanceRegistration(typeof(IAssemblyProvider), assemblyProvider));


return this; return this;
} }


/// <summary> /// <summary>
/// Configures the bootstrapper to create an <see cref="IResourceAssemblyProvider"/> instance of the specified type. /// Configures the bootstrapper to create an <see cref="IAssemblyProvider"/> instance of the specified type.
/// </summary> /// </summary>
/// <typeparam name="T">The type of the <see cref="IResourceAssemblyProvider"/> that the bootstrapper should use.</typeparam> /// <typeparam name="T">The type of the <see cref="IAssemblyProvider"/> that the bootstrapper should use.</typeparam>
/// <returns>A reference to the current <see cref="ConfigurableBoostrapperConfigurator"/>.</returns> /// <returns>A reference to the current <see cref="ConfigurableBoostrapperConfigurator"/>.</returns>
public ConfigurableBoostrapperConfigurator ResourceAssemblyProvider<T>() where T : IResourceAssemblyProvider public ConfigurableBoostrapperConfigurator ResourceAssemblyProvider<T>() where T : IAssemblyProvider
{ {
this.bootstrapper.configuration.ResourceAssemblyProvider = typeof(T); this.bootstrapper.configuration.ResourceAssemblyProvider = typeof(T);
return this; return this;
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public class ResourceBasedTextResourceFixture
public void Should_Return_Null_If_No_Assembly_Found() public void Should_Return_Null_If_No_Assembly_Found()
{ {
//Given //Given
var resourceAssemblyProvider = A.Fake<IResourceAssemblyProvider>(); var resourceAssemblyProvider = A.Fake<IAssemblyProvider>();
A.CallTo(() => resourceAssemblyProvider.GetAssembliesToScan()).Returns(new[] { typeof(NancyEngine).Assembly }); A.CallTo(() => resourceAssemblyProvider.GetAssembliesToScan()).Returns(new[] { typeof(NancyEngine).Assembly });


var defaultTextResource = new ResourceBasedTextResource(resourceAssemblyProvider); var defaultTextResource = new ResourceBasedTextResource(resourceAssemblyProvider);
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -12,14 +12,14 @@ namespace Nancy.Tests.Unit.ViewEngines
public class ResourceViewLocationProviderFixture public class ResourceViewLocationProviderFixture
{ {
private readonly IResourceReader reader; private readonly IResourceReader reader;
private readonly IResourceAssemblyProvider assemblyProvider; private readonly IAssemblyProvider assemblyProvider;
private readonly ResourceViewLocationProvider viewProvider; private readonly ResourceViewLocationProvider viewProvider;


public ResourceViewLocationProviderFixture() public ResourceViewLocationProviderFixture()
{ {
ResourceViewLocationProvider.Ignore.Clear(); ResourceViewLocationProvider.Ignore.Clear();
this.reader = A.Fake<IResourceReader>(); this.reader = A.Fake<IResourceReader>();
this.assemblyProvider = A.Fake<IResourceAssemblyProvider>(); this.assemblyProvider = A.Fake<IAssemblyProvider>();
this.viewProvider = new ResourceViewLocationProvider(this.reader, this.assemblyProvider); this.viewProvider = new ResourceViewLocationProvider(this.reader, this.assemblyProvider);


if (!ResourceViewLocationProvider.RootNamespaces.ContainsKey(this.GetType().Assembly)) if (!ResourceViewLocationProvider.RootNamespaces.ContainsKey(this.GetType().Assembly))
Expand Down
4 changes: 2 additions & 2 deletions src/Nancy/Bootstrapper/NancyInternalConfiguration.cs
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ public static NancyInternalConfiguration Default
RouteDescriptionProvider = typeof(DefaultRouteDescriptionProvider), RouteDescriptionProvider = typeof(DefaultRouteDescriptionProvider),
CultureService = typeof(DefaultCultureService), CultureService = typeof(DefaultCultureService),
TextResource = typeof(ResourceBasedTextResource), TextResource = typeof(ResourceBasedTextResource),
ResourceAssemblyProvider = typeof(DefaultResourceAssemblyProvider), ResourceAssemblyProvider = typeof(DefaultAssemblyProvider),
}; };
} }
} }
Expand Down Expand Up @@ -264,7 +264,7 @@ public IEnumerable<TypeRegistration> GetTypeRegistations()
new TypeRegistration(typeof(IRouteDescriptionProvider), this.RouteDescriptionProvider), new TypeRegistration(typeof(IRouteDescriptionProvider), this.RouteDescriptionProvider),
new TypeRegistration(typeof(ICultureService), this.CultureService), new TypeRegistration(typeof(ICultureService), this.CultureService),
new TypeRegistration(typeof(ITextResource), this.TextResource), new TypeRegistration(typeof(ITextResource), this.TextResource),
new TypeRegistration(typeof(IResourceAssemblyProvider), this.ResourceAssemblyProvider), new TypeRegistration(typeof(IAssemblyProvider), this.ResourceAssemblyProvider),
}; };
} }


Expand Down
49 changes: 49 additions & 0 deletions src/Nancy/DefaultAssemblyProvider.cs
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,49 @@
namespace Nancy
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using Nancy.Bootstrapper;

/// <summary>
/// Default set of assemblies that should be scanned for views embedded as resources.
/// </summary>
public class DefaultAssemblyProvider : IAssemblyProvider
{
private IEnumerable<Assembly> filteredAssemblies;

private readonly List<Func<Assembly, bool>> excludedAssemblies = new List<Func<Assembly, bool>>()
{
asm => asm.FullName.StartsWith("Microsoft.", StringComparison.InvariantCulture),
asm => asm.FullName.StartsWith("System.", StringComparison.InvariantCulture),
asm => asm.FullName.StartsWith("System,", StringComparison.InvariantCulture),
asm => asm.FullName.StartsWith("CR_ExtUnitTest", StringComparison.InvariantCulture),
asm => asm.FullName.StartsWith("mscorlib,", StringComparison.InvariantCulture),
asm => asm.FullName.StartsWith("CR_VSTest", StringComparison.InvariantCulture),
asm => asm.FullName.StartsWith("DevExpress.CodeRush", StringComparison.InvariantCulture),
asm => asm.FullName.StartsWith("IronPython", StringComparison.InvariantCulture),
asm => asm.FullName.StartsWith("IronRuby", StringComparison.InvariantCulture),
asm => asm.FullName.StartsWith("xunit", StringComparison.InvariantCulture),
asm => asm.FullName.StartsWith("Nancy.Testing", StringComparison.InvariantCulture),
asm => asm.FullName.StartsWith("MonoDevelop.NUnit", StringComparison.InvariantCulture),
};

/// <summary>
/// Gets a list of assemblies that should be scanned for views.
/// </summary>
/// <returns>An <see cref="IEnumerable{T}"/> of <see cref="Assembly"/> instances.</returns>
public IEnumerable<Assembly> GetAssembliesToScan()
{
return (this.filteredAssemblies ?? (this.filteredAssemblies = GetFilteredAssemblies()));
}

private IEnumerable<Assembly> GetFilteredAssemblies()
{
return AppDomainAssemblyTypeScanner
.Assemblies
.Where(x => !x.IsDynamic)
.Where(x => !this.excludedAssemblies.Any(asm => asm.Invoke(x)));
}
}
}
42 changes: 0 additions & 42 deletions src/Nancy/DefaultResourceAssemblyProvider.cs

This file was deleted.

Original file line number Original file line Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
using System.Reflection; using System.Reflection;


/// <summary> /// <summary>
/// Defines the functionality for retrieving which assemblies that should have their resources scanned for views. /// Defines the functionality for retrieving which assemblies that should be used by Nancy.
/// </summary> /// </summary>
public interface IResourceAssemblyProvider public interface IAssemblyProvider
{ {
/// <summary> /// <summary>
/// Gets a list of assemblies that should be scanned for views embedded as resources. /// Gets a list of assemblies that should be scanned.
/// </summary> /// </summary>
/// <returns>An <see cref="IEnumerable{T}"/> of <see cref="Assembly"/> instances.</returns> /// <returns>An <see cref="IEnumerable{T}"/> of <see cref="Assembly"/> instances.</returns>
IEnumerable<Assembly> GetAssembliesToScan(); IEnumerable<Assembly> GetAssembliesToScan();
Expand Down
8 changes: 4 additions & 4 deletions src/Nancy/Localization/ResourceBasedTextResource.cs
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -11,19 +11,19 @@ namespace Nancy.Localization
/// </summary> /// </summary>
public class ResourceBasedTextResource : ITextResource public class ResourceBasedTextResource : ITextResource
{ {
private readonly IResourceAssemblyProvider resourceAssemblyProvider; private readonly IAssemblyProvider assemblyProvider;
private readonly Assembly culturedAssembly; private readonly Assembly culturedAssembly;
private readonly ResourceManager resourceManager; private readonly ResourceManager resourceManager;


/// <summary> /// <summary>
/// Initializes a new instance of <see cref="ResourceBasedTextResource"/> to read strings from *.resx files /// Initializes a new instance of <see cref="ResourceBasedTextResource"/> to read strings from *.resx files
/// </summary> /// </summary>
/// <remarks>Looks for *.resx files in a Resources folder with files called Text.resx as default or Text.CultureName.resx eg/ Text.en-GB.resx</remarks> /// <remarks>Looks for *.resx files in a Resources folder with files called Text.resx as default or Text.CultureName.resx eg/ Text.en-GB.resx</remarks>
public ResourceBasedTextResource(IResourceAssemblyProvider resourceAssemblyProvider) public ResourceBasedTextResource(IAssemblyProvider assemblyProvider)
{ {
this.resourceAssemblyProvider = resourceAssemblyProvider; this.assemblyProvider = assemblyProvider;


this.culturedAssembly = this.resourceAssemblyProvider this.culturedAssembly = this.assemblyProvider
.GetAssembliesToScan() .GetAssembliesToScan()
.FirstOrDefault(x => x.GetManifestResourceNames().Any(y => y.Contains(".Resources.Text"))); .FirstOrDefault(x => x.GetManifestResourceNames().Any(y => y.Contains(".Resources.Text")));


Expand Down
4 changes: 2 additions & 2 deletions src/Nancy/Nancy.csproj
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@
<Compile Include="ViewEngines\DefaultFileSystemReader.cs" /> <Compile Include="ViewEngines\DefaultFileSystemReader.cs" />
<Compile Include="ViewEngines\DefaultRenderContext.cs" /> <Compile Include="ViewEngines\DefaultRenderContext.cs" />
<Compile Include="ViewEngines\DefaultRenderContextFactory.cs" /> <Compile Include="ViewEngines\DefaultRenderContextFactory.cs" />
<Compile Include="DefaultResourceAssemblyProvider.cs" /> <Compile Include="DefaultAssemblyProvider.cs" />
<Compile Include="ViewEngines\DefaultResourceReader.cs" /> <Compile Include="ViewEngines\DefaultResourceReader.cs" />
<Compile Include="Localization\ResourceBasedTextResource.cs" /> <Compile Include="Localization\ResourceBasedTextResource.cs" />
<Compile Include="ViewEngines\DefaultViewCache.cs" /> <Compile Include="ViewEngines\DefaultViewCache.cs" />
Expand Down Expand Up @@ -374,7 +374,7 @@
<Compile Include="ViewEngines\IFileSystemReader.cs" /> <Compile Include="ViewEngines\IFileSystemReader.cs" />
<Compile Include="ViewEngines\IRenderContext.cs" /> <Compile Include="ViewEngines\IRenderContext.cs" />
<Compile Include="ViewEngines\IRenderContextFactory.cs" /> <Compile Include="ViewEngines\IRenderContextFactory.cs" />
<Compile Include="IResourceAssemblyProvider.cs" /> <Compile Include="IAssemblyProvider.cs" />
<Compile Include="ViewEngines\IResourceReader.cs" /> <Compile Include="ViewEngines\IResourceReader.cs" />
<Compile Include="Localization\ITextResource.cs" /> <Compile Include="Localization\ITextResource.cs" />
<Compile Include="ViewEngines\IViewCache.cs" /> <Compile Include="ViewEngines\IViewCache.cs" />
Expand Down
12 changes: 6 additions & 6 deletions src/Nancy/ViewEngines/ResourceViewLocationProvider.cs
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
public class ResourceViewLocationProvider : IViewLocationProvider public class ResourceViewLocationProvider : IViewLocationProvider
{ {
private readonly IResourceReader resourceReader; private readonly IResourceReader resourceReader;
private readonly IResourceAssemblyProvider resourceAssemblyProvider; private readonly IAssemblyProvider assemblyProvider;


/// <summary> /// <summary>
/// User-configured root namespaces for assemblies. /// User-configured root namespaces for assemblies.
Expand All @@ -28,19 +28,19 @@ public class ResourceViewLocationProvider : IViewLocationProvider
/// Initializes a new instance of the <see cref="ResourceViewLocationProvider"/> class. /// Initializes a new instance of the <see cref="ResourceViewLocationProvider"/> class.
/// </summary> /// </summary>
public ResourceViewLocationProvider() public ResourceViewLocationProvider()
: this(new DefaultResourceReader(), new DefaultResourceAssemblyProvider()) : this(new DefaultResourceReader(), new DefaultAssemblyProvider())
{ {
} }


/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="ResourceViewLocationProvider"/> class. /// Initializes a new instance of the <see cref="ResourceViewLocationProvider"/> class.
/// </summary> /// </summary>
/// <param name="resourceReader">An <see cref="IResourceReader"/> instance that should be used when extracting embedded views.</param> /// <param name="resourceReader">An <see cref="IResourceReader"/> instance that should be used when extracting embedded views.</param>
/// <param name="resourceAssemblyProvider">An <see cref="IResourceAssemblyProvider"/> instance that should be used to determine which assemblies to scan for embedded views.</param> /// <param name="assemblyProvider">An <see cref="IAssemblyProvider"/> instance that should be used to determine which assemblies to scan for embedded views.</param>
public ResourceViewLocationProvider(IResourceReader resourceReader, IResourceAssemblyProvider resourceAssemblyProvider) public ResourceViewLocationProvider(IResourceReader resourceReader, IAssemblyProvider assemblyProvider)
{ {
this.resourceReader = resourceReader; this.resourceReader = resourceReader;
this.resourceAssemblyProvider = resourceAssemblyProvider; this.assemblyProvider = assemblyProvider;
} }


/// <summary> /// <summary>
Expand All @@ -56,7 +56,7 @@ public IEnumerable<ViewLocationResult> GetLocatedViews(IEnumerable<string> suppo
return Enumerable.Empty<ViewLocationResult>(); return Enumerable.Empty<ViewLocationResult>();
} }


return this.resourceAssemblyProvider return this.assemblyProvider
.GetAssembliesToScan() .GetAssembliesToScan()
.Where(x => !Ignore.Contains(x)) .Where(x => !Ignore.Contains(x))
.SelectMany(x => GetViewLocations(x, supportedViewExtensions)); .SelectMany(x => GetViewLocations(x, supportedViewExtensions));
Expand Down

0 comments on commit 9e82356

Please sign in to comment.