From e2f45c59eab74d14a70b09e4f2cce19028060e45 Mon Sep 17 00:00:00 2001 From: Louis DeJardin Date: Sat, 8 Feb 2014 16:03:59 -0800 Subject: [PATCH 1/2] Placing IServiceProvider on IBuilder Replaces concept of features/items on builder instance for now --- src/Microsoft.AspNet.Abstractions/IBuilder.cs | 5 +-- src/Microsoft.AspNet.PipelineCore/Builder.cs | 44 ++----------------- 2 files changed, 6 insertions(+), 43 deletions(-) diff --git a/src/Microsoft.AspNet.Abstractions/IBuilder.cs b/src/Microsoft.AspNet.Abstractions/IBuilder.cs index 778e98d4..5699bed1 100644 --- a/src/Microsoft.AspNet.Abstractions/IBuilder.cs +++ b/src/Microsoft.AspNet.Abstractions/IBuilder.cs @@ -4,13 +4,12 @@ namespace Microsoft.AspNet.Abstractions { public interface IBuilder { + IServiceProvider ServiceProvider { get; set; } + IBuilder Use(Func middleware); IBuilder Run(RequestDelegate handler); IBuilder New(); RequestDelegate Build(); - - object GetItem(Type type); - void SetItem(Type type, object feature); } } diff --git a/src/Microsoft.AspNet.PipelineCore/Builder.cs b/src/Microsoft.AspNet.PipelineCore/Builder.cs index 8e4d2f0a..48edba1c 100644 --- a/src/Microsoft.AspNet.PipelineCore/Builder.cs +++ b/src/Microsoft.AspNet.PipelineCore/Builder.cs @@ -1,56 +1,20 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Threading.Tasks; using Microsoft.AspNet.Abstractions; -using Microsoft.AspNet.FeatureModel; namespace Microsoft.AspNet.PipelineCore { public class Builder : IBuilder { - private readonly IFeatureCollection _interfaces; - private readonly IDictionary _properties; private readonly IList> _components = new List>(); - public Builder() + public Builder(IServiceProvider serviceProvider) { - _interfaces = new FeatureCollection(); - _properties = new Dictionary(); + ServiceProvider = serviceProvider; } - public Builder(IFeatureCollection interfaces, IDictionary properties) - { - _interfaces = interfaces; - _properties = properties; - } - - public void Dispose() - { - _interfaces.Dispose(); - } - - public virtual object GetItem(Type key) - { - object value; - return _interfaces.TryGetValue(key, out value); - } - - public virtual void SetItem(Type key, object value) - { - _interfaces[key] = value; - } - - public virtual object GetItem(string key) - { - object value; - return _properties.TryGetValue(key, out value); - } - - public virtual void SetItem(string key, object value) - { - _properties[key] = value; - } + public IServiceProvider ServiceProvider { get; set; } public IBuilder Use(Func middleware) { @@ -65,7 +29,7 @@ public IBuilder Run(RequestDelegate handler) public IBuilder New() { - return new Builder(_interfaces, _properties); + return new Builder(ServiceProvider); } public RequestDelegate Build() From 86025a3ec43d5120da71d6fed589022c2c420890 Mon Sep 17 00:00:00 2001 From: Louis DeJardin Date: Sun, 9 Feb 2014 18:24:16 -0800 Subject: [PATCH 2/2] Updated Builder constructors --- .../AppBuilderSupportExtensions.cs | 2 +- test/Microsoft.AspNet.PipelineCore.Tests/BuilderTests.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Microsoft.AspNet.AppBuilderSupport/AppBuilderSupportExtensions.cs b/src/Microsoft.AspNet.AppBuilderSupport/AppBuilderSupportExtensions.cs index d434c85b..dfb66eb4 100644 --- a/src/Microsoft.AspNet.AppBuilderSupport/AppBuilderSupportExtensions.cs +++ b/src/Microsoft.AspNet.AppBuilderSupport/AppBuilderSupportExtensions.cs @@ -16,7 +16,7 @@ public static class AppBuilderSupportExtensions { public static IAppBuilder UseBuilder(this IAppBuilder appBuilder, Action configuration) { - IBuilder builder = new Builder(); + IBuilder builder = new Builder(null); configuration(builder); Func middleware1 = next1 => { Func middleware2 = next2 => { diff --git a/test/Microsoft.AspNet.PipelineCore.Tests/BuilderTests.cs b/test/Microsoft.AspNet.PipelineCore.Tests/BuilderTests.cs index 3dfc4278..4541585c 100644 --- a/test/Microsoft.AspNet.PipelineCore.Tests/BuilderTests.cs +++ b/test/Microsoft.AspNet.PipelineCore.Tests/BuilderTests.cs @@ -8,7 +8,7 @@ public class BuilderTests [Fact] public void BuildReturnsCallableDelegate() { - var builder = new Builder(); + var builder = new Builder(null); var app = builder.Build(); var mockHttpContext = new Moq.Mock();