From 547f02e40299a042c68d5b51b958cfca17aacadf Mon Sep 17 00:00:00 2001 From: Scott Xu Date: Sun, 26 Jan 2014 20:21:12 +0800 Subject: [PATCH 1/3] Remove the FactoryModule (replaced by Ninject.Extensions.Factory) and fix unit tests --- .../Nancy.Bootstrappers.Ninject.Tests.csproj | 6 + .../NinjectNancyBootstrapperFixture.cs | 9 +- .../packages.config | 2 + .../FactoryModule.cs | 68 --------- .../Nancy.Bootstrappers.Ninject.csproj | 133 +++++++++--------- .../NinjectNancyBootstrapper.cs | 2 +- 6 files changed, 80 insertions(+), 140 deletions(-) delete mode 100644 src/Nancy.Bootstrappers.Ninject/FactoryModule.cs diff --git a/src/Nancy.Bootstrappers.Ninject.Tests/Nancy.Bootstrappers.Ninject.Tests.csproj b/src/Nancy.Bootstrappers.Ninject.Tests/Nancy.Bootstrappers.Ninject.Tests.csproj index 9073487..5d6282f 100644 --- a/src/Nancy.Bootstrappers.Ninject.Tests/Nancy.Bootstrappers.Ninject.Tests.csproj +++ b/src/Nancy.Bootstrappers.Ninject.Tests/Nancy.Bootstrappers.Ninject.Tests.csproj @@ -31,10 +31,16 @@ 4 + + ..\packages\Castle.Core.3.0.0.4001\lib\net40-client\Castle.Core.dll + False ..\packages\Ninject.3.0.1.10\lib\net40\Ninject.dll + + ..\packages\Ninject.Extensions.Factory.3.0.1.0\lib\net40\Ninject.Extensions.Factory.dll + diff --git a/src/Nancy.Bootstrappers.Ninject.Tests/NinjectNancyBootstrapperFixture.cs b/src/Nancy.Bootstrappers.Ninject.Tests/NinjectNancyBootstrapperFixture.cs index a442835..6746544 100644 --- a/src/Nancy.Bootstrappers.Ninject.Tests/NinjectNancyBootstrapperFixture.cs +++ b/src/Nancy.Bootstrappers.Ninject.Tests/NinjectNancyBootstrapperFixture.cs @@ -27,15 +27,16 @@ public void Should_be_able_to_resolve_engine() } [Fact] - public void GetAllModules_Returns_As_MultiInstance() + public void GetAllModules_With_Different_Contexts_Returns_Different_Instances() { // Given this.bootstrapper.GetEngine(); - var context = new NancyContext(); + var context1 = new NancyContext(); + var context2 = new NancyContext(); // When - var output1 = this.bootstrapper.GetAllModules(context).FirstOrDefault(nm => nm.GetType() == typeof(FakeNancyModuleWithBasePath)); - var output2 = this.bootstrapper.GetAllModules(context).FirstOrDefault(nm => nm.GetType() == typeof(FakeNancyModuleWithBasePath)); + var output1 = this.bootstrapper.GetAllModules(context1).FirstOrDefault(nm => nm.GetType() == typeof(FakeNancyModuleWithBasePath)); + var output2 = this.bootstrapper.GetAllModules(context2).FirstOrDefault(nm => nm.GetType() == typeof(FakeNancyModuleWithBasePath)); // Then output1.ShouldNotBeNull(); diff --git a/src/Nancy.Bootstrappers.Ninject.Tests/packages.config b/src/Nancy.Bootstrappers.Ninject.Tests/packages.config index bbb1653..df833d2 100644 --- a/src/Nancy.Bootstrappers.Ninject.Tests/packages.config +++ b/src/Nancy.Bootstrappers.Ninject.Tests/packages.config @@ -1,6 +1,8 @@  + + \ No newline at end of file diff --git a/src/Nancy.Bootstrappers.Ninject/FactoryModule.cs b/src/Nancy.Bootstrappers.Ninject/FactoryModule.cs deleted file mode 100644 index 659989f..0000000 --- a/src/Nancy.Bootstrappers.Ninject/FactoryModule.cs +++ /dev/null @@ -1,68 +0,0 @@ -namespace Nancy.Bootstrappers.Ninject -{ - using System; - using System.Linq; - using global::Ninject; - using global::Ninject.Activation; - using global::Ninject.Modules; - using global::Ninject.Parameters; - - /// - /// Helper module for Ninject, in order to be able to resolve dependencies. - /// - public class FactoryModule : NinjectModule - { - /// - /// Loads the module into the kernel. - /// - public override void Load() - { - this.Kernel.Bind(typeof(Func<>)).ToMethod(CreateFunc).When(VerifyFactoryFunction); - } - - private static bool VerifyFactoryFunction(IRequest request) - { - var genericArguments = request.Service.GetGenericArguments(); - if (genericArguments.Count() != 1) - { - return false; - } - - var instanceType = genericArguments.Single(); - return request.ParentContext.Kernel.CanResolve(new Request(genericArguments[0], null, new IParameter[0], null, false, true)) || - TypeIsSelfBindable(instanceType); - } - - private static object CreateFunc(IContext ctx) - { - var functionFactoryType = typeof(FunctionFactory<>).MakeGenericType(ctx.GenericArguments); - var ctor = functionFactoryType.GetConstructors().Single(); - var functionFactory = ctor.Invoke(new object[] { ctx.Kernel }); - return functionFactoryType.GetMethod("Create").Invoke(functionFactory, new object[0]); - } - - private static bool TypeIsSelfBindable(Type service) - { - return !service.IsInterface - && !service.IsAbstract - && !service.IsValueType - && service != typeof(string) - && !service.ContainsGenericParameters; - } - - public class FunctionFactory - { - private readonly IKernel kernel; - - public FunctionFactory(IKernel kernel) - { - this.kernel = kernel; - } - - public Func Create() - { - return () => this.kernel.Get(); - } - } - } -} \ No newline at end of file diff --git a/src/Nancy.Bootstrappers.Ninject/Nancy.Bootstrappers.Ninject.csproj b/src/Nancy.Bootstrappers.Ninject/Nancy.Bootstrappers.Ninject.csproj index a179b93..d8f6355 100644 --- a/src/Nancy.Bootstrappers.Ninject/Nancy.Bootstrappers.Ninject.csproj +++ b/src/Nancy.Bootstrappers.Ninject/Nancy.Bootstrappers.Ninject.csproj @@ -1,74 +1,73 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {760A88F1-7CEA-47FE-86AC-4F75609100F2} - Library - Properties - Nancy.Bootstrappers.Ninject - Nancy.Bootstrappers.Ninject - v4.0 - 512 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - False - ..\packages\Ninject.3.0.1.10\lib\net40\Ninject.dll - - - False - ..\packages\Ninject.Extensions.ChildKernel.3.0.0.5\lib\net40\Ninject.Extensions.ChildKernel.dll - - - - - - - - - - - - Properties\SharedAssemblyInfo.cs - - - - - - - - - - {34576216-0DCA-4B0F-A0DC-9075E75A676F} - Nancy - - - + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {760A88F1-7CEA-47FE-86AC-4F75609100F2} + Library + Properties + Nancy.Bootstrappers.Ninject + Nancy.Bootstrappers.Ninject + v4.0 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + False + ..\packages\Ninject.3.0.1.10\lib\net40\Ninject.dll + + + False + ..\packages\Ninject.Extensions.ChildKernel.3.0.0.5\lib\net40\Ninject.Extensions.ChildKernel.dll + + + + + + + + + + + + Properties\SharedAssemblyInfo.cs + + + + + + + + + {34576216-0DCA-4B0F-A0DC-9075E75A676F} + Nancy + + + + --> \ No newline at end of file diff --git a/src/Nancy.Bootstrappers.Ninject/NinjectNancyBootstrapper.cs b/src/Nancy.Bootstrappers.Ninject/NinjectNancyBootstrapper.cs index 93e1da6..b7b6932 100644 --- a/src/Nancy.Bootstrappers.Ninject/NinjectNancyBootstrapper.cs +++ b/src/Nancy.Bootstrappers.Ninject/NinjectNancyBootstrapper.cs @@ -55,7 +55,7 @@ protected override sealed INancyEngine GetEngineInternal() /// Container instance protected override IKernel GetApplicationContainer() { - return new StandardKernel(new[] { new FactoryModule() }); + return new StandardKernel(); } /// From e4231a71907c121e5dc40fc20a2c8759a76cdc60 Mon Sep 17 00:00:00 2001 From: Scott Xu Date: Sun, 26 Jan 2014 20:28:15 +0800 Subject: [PATCH 2/3] EOL --- .../Nancy.Bootstrappers.Ninject.csproj | 132 +++++++++--------- 1 file changed, 66 insertions(+), 66 deletions(-) diff --git a/src/Nancy.Bootstrappers.Ninject/Nancy.Bootstrappers.Ninject.csproj b/src/Nancy.Bootstrappers.Ninject/Nancy.Bootstrappers.Ninject.csproj index d8f6355..0ddf7bf 100644 --- a/src/Nancy.Bootstrappers.Ninject/Nancy.Bootstrappers.Ninject.csproj +++ b/src/Nancy.Bootstrappers.Ninject/Nancy.Bootstrappers.Ninject.csproj @@ -1,73 +1,73 @@ - - - - Debug - AnyCPU - 8.0.30703 - 2.0 - {760A88F1-7CEA-47FE-86AC-4F75609100F2} - Library - Properties - Nancy.Bootstrappers.Ninject - Nancy.Bootstrappers.Ninject - v4.0 - 512 - - - true - full - false - bin\Debug\ - DEBUG;TRACE - prompt - 4 - - - pdbonly - true - bin\Release\ - TRACE - prompt - 4 - - - - False - ..\packages\Ninject.3.0.1.10\lib\net40\Ninject.dll - - - False - ..\packages\Ninject.Extensions.ChildKernel.3.0.0.5\lib\net40\Ninject.Extensions.ChildKernel.dll - - - - - - - - - - - - Properties\SharedAssemblyInfo.cs - - - - - - - - - {34576216-0DCA-4B0F-A0DC-9075E75A676F} - Nancy - - - + + + + Debug + AnyCPU + 8.0.30703 + 2.0 + {760A88F1-7CEA-47FE-86AC-4F75609100F2} + Library + Properties + Nancy.Bootstrappers.Ninject + Nancy.Bootstrappers.Ninject + v4.0 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + False + ..\packages\Ninject.3.0.1.10\lib\net40\Ninject.dll + + + False + ..\packages\Ninject.Extensions.ChildKernel.3.0.0.5\lib\net40\Ninject.Extensions.ChildKernel.dll + + + + + + + + + + + + Properties\SharedAssemblyInfo.cs + + + + + + + + + {34576216-0DCA-4B0F-A0DC-9075E75A676F} + Nancy + + + + --> \ No newline at end of file From 35b320baea693c4c803ef0aa5d92344fca172349 Mon Sep 17 00:00:00 2001 From: Scott Xu Date: Wed, 10 Sep 2014 16:50:57 +0800 Subject: [PATCH 3/3] Ninject.Extensions.Factory Add Ninject.Extensions.Factory dependency --- .../nancy.bootstrappers.ninject.nuspec | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Nancy.Bootstrappers.Ninject/nancy.bootstrappers.ninject.nuspec b/src/Nancy.Bootstrappers.Ninject/nancy.bootstrappers.ninject.nuspec index 62ed1d4..2a8217a 100644 --- a/src/Nancy.Bootstrappers.Ninject/nancy.bootstrappers.ninject.nuspec +++ b/src/Nancy.Bootstrappers.Ninject/nancy.bootstrappers.ninject.nuspec @@ -16,6 +16,7 @@ + Nancy Ninject