Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Various performance improvements to framework initialisation

  • Loading branch information...
commit 888aec0a966cd5beb0764728117c04a62f27813a 1 parent 83d22b8
Martin Rue authored mattburton committed
Showing with 144 additions and 75 deletions.
  1. +8 −6 src/tinyweb.framework.tests/Filters/FilterScanner/DefaultFilterScannerTests.cs
  2. +1 −1  src/tinyweb.framework.tests/Handlers/HandlerFactory/DefaultHandlerFactoryTests.cs
  3. +2 −2 src/tinyweb.framework.tests/Handlers/HandlerFactory/HandlerFactoryTests.cs
  4. +21 −19 src/tinyweb.framework.tests/Handlers/HandlerScanner/DefaultHandlerScannerTests.cs
  5. +6 −1 src/tinyweb.framework.tests/Test Data/FilterScanners/CustomFilterScanner.cs
  6. +6 −1 src/tinyweb.framework.tests/Test Data/HandlerScanners/CustomHandlerScanner.cs
  7. +27 −0 src/tinyweb.framework/AssemblyScanner/AssemblyScanner.cs
  8. +11 −0 src/tinyweb.framework/AssemblyScanner/ScanResult.cs
  9. +7 −9 src/tinyweb.framework/Filters/FilterScanner/DefaultFilterScanner.cs
  10. +4 −2 src/tinyweb.framework/Filters/FilterScanner/IFilterScanner.cs
  11. +12 −0 src/tinyweb.framework/Handlers/HandlerFactory/ActivatorHandlerFactory.cs
  12. +1 −1  src/tinyweb.framework/Handlers/HandlerFactory/HandlerFactory.cs
  13. +1 −1  src/tinyweb.framework/Handlers/HandlerFactory/{DefaultHandlerFactory.cs → StructureMapHandlerFactory.cs}
  14. +20 −26 src/tinyweb.framework/Handlers/HandlerScanner/DefaultHandlerScanner.cs
  15. +4 −2 src/tinyweb.framework/Handlers/HandlerScanner/IHandlerScanner.cs
  16. +9 −3 src/tinyweb.framework/Init/Tinyweb.cs
  17. +4 −1 src/tinyweb.framework/tinyweb.framework.csproj
View
14 src/tinyweb.framework.tests/Filters/FilterScanner/DefaultFilterScannerTests.cs
@@ -8,24 +8,26 @@ namespace tinyweb.framework.tests
public class DefaultFilterScannerTests
{
IFilterScanner defaultFilterScanner;
+ ScanResult scanResult;
[SetUp]
public void Setup()
{
defaultFilterScanner = new DefaultFilterScanner();
+ scanResult = AssemblyScanner.FindHandlersAndFilters(HandlerScanner.Current.GetSearcher(), FilterScanner.Current.GetSearcher());
}
[Test]
public void FindAll_WhenCalled_FindsAllFilters()
{
- var filters = defaultFilterScanner.FindAll();
+ var filters = defaultFilterScanner.FindAll(scanResult.Filters);
Assert.That(filters.Count(), Is.EqualTo(7));
}
[Test]
public void FindAll_WhenCalled_CorrectlyMarksAfterFilter()
{
- var filter = defaultFilterScanner.FindAll().Single(f => f.Type == typeof(AfterFilter));
+ var filter = defaultFilterScanner.FindAll(scanResult.Filters).Single(f => f.Type == typeof(AfterFilter));
Assert.That(filter.BeforeFilter, Is.False);
Assert.That(filter.AfterFilter, Is.True);
}
@@ -33,7 +35,7 @@ public void FindAll_WhenCalled_CorrectlyMarksAfterFilter()
[Test]
public void FindAll_WhenCalled_CorrectlyMarksBeforeFilter()
{
- var filter = defaultFilterScanner.FindAll().Single(f => f.Type == typeof(BeforeFilter));
+ var filter = defaultFilterScanner.FindAll(scanResult.Filters).Single(f => f.Type == typeof(BeforeFilter));
Assert.That(filter.BeforeFilter, Is.True);
Assert.That(filter.AfterFilter, Is.False);
}
@@ -41,7 +43,7 @@ public void FindAll_WhenCalled_CorrectlyMarksBeforeFilter()
[Test]
public void FindAll_WhenCalled_CorrectlyMarksBeforeAndAfterFilter()
{
- var filter = defaultFilterScanner.FindAll().Single(f => f.Type == typeof(BeforeAndAfterFilter));
+ var filter = defaultFilterScanner.FindAll(scanResult.Filters).Single(f => f.Type == typeof(BeforeAndAfterFilter));
Assert.That(filter.BeforeFilter, Is.True);
Assert.That(filter.AfterFilter, Is.True);
}
@@ -49,7 +51,7 @@ public void FindAll_WhenCalled_CorrectlyMarksBeforeAndAfterFilter()
[Test]
public void FindAll_WhenCalled_IncludesExpectedFilters()
{
- var filters = defaultFilterScanner.FindAll();
+ var filters = defaultFilterScanner.FindAll(scanResult.Filters);
Assert.That(filters.Any(f => f.Type == typeof(BeforeFilter)));
Assert.That(filters.Any(f => f.Type == typeof(BeforeAndAfterFilter)));
Assert.That(filters.Any(f => f.Type == typeof(AfterFilter)));
@@ -59,7 +61,7 @@ public void FindAll_WhenCalled_IncludesExpectedFilters()
[Test]
public void FindAll_WhenCalled_FindsCorrectFilterPriorities()
{
- var filters = defaultFilterScanner.FindAll();
+ var filters = defaultFilterScanner.FindAll(scanResult.Filters);
Assert.That(filters.Single(f => f.Type == typeof(BeforeFilter)).Priority, Is.EqualTo(3));
Assert.That(filters.Single(f => f.Type == typeof(BeforeAndAfterFilter)).Priority, Is.EqualTo(2));
Assert.That(filters.Single(f => f.Type == typeof(AfterFilter)).Priority, Is.EqualTo(1));
View
2  src/tinyweb.framework.tests/Handlers/HandlerFactory/DefaultHandlerFactoryTests.cs
@@ -11,7 +11,7 @@ public class DefaultHandlerFactoryTests
[SetUp]
public void Setup()
{
- defaultHandlerFactory = new DefaultHandlerFactory();
+ defaultHandlerFactory = new StructureMapHandlerFactory();
}
[Test]
View
4 src/tinyweb.framework.tests/Handlers/HandlerFactory/HandlerFactoryTests.cs
@@ -8,13 +8,13 @@ public class HandlerFactoryTests
[TearDown]
public void TearDown()
{
- HandlerFactory.SetHandlerFactory(new DefaultHandlerFactory());
+ HandlerFactory.SetHandlerFactory(new StructureMapHandlerFactory());
}
[Test]
public void Current_WhenRequested_ReturnsDefaultHandlerFactory()
{
- Assert.IsInstanceOf<DefaultHandlerFactory>(HandlerFactory.Current);
+ Assert.IsInstanceOf<ActivatorHandlerFactory>(HandlerFactory.Current);
}
[Test]
View
40 src/tinyweb.framework.tests/Handlers/HandlerScanner/DefaultHandlerScannerTests.cs
@@ -9,11 +9,13 @@ namespace tinyweb.framework.tests
public class DefaultHandlerScannerTests
{
IHandlerScanner defaultHandlerScanner;
+ ScanResult scanResult;
[SetUp]
public void Setup()
{
defaultHandlerScanner = new DefaultHandlerScanner();
+ scanResult = AssemblyScanner.FindHandlersAndFilters(HandlerScanner.Current.GetSearcher(), FilterScanner.Current.GetSearcher());
}
[TearDown]
@@ -25,105 +27,105 @@ public void Teardown()
[Test]
public void FindAll_WhenCalled_FindsAllHandlers()
{
- var handlers = defaultHandlerScanner.FindAll();
+ var handlers = defaultHandlerScanner.FindAll(scanResult.Handlers);
Assert.That(handlers.Count(), Is.EqualTo(15));
}
[Test]
public void FindAll_WhenCalled_FirstHandlerTypeIsResource1Handler()
{
- var handlers = defaultHandlerScanner.FindAll();
+ var handlers = defaultHandlerScanner.FindAll(scanResult.Handlers);
Assert.That(handlers.Any(h => h.Type == new Resource1Handler().GetType()));
}
[Test]
public void FindAll_WhenCalled_FirstHandlerUriIsCorrect()
{
- var handlers = defaultHandlerScanner.FindAll();
+ var handlers = defaultHandlerScanner.FindAll(scanResult.Handlers);
Assert.That(handlers.Single(h => h.Type == new Resource1Handler().GetType()).Uri == "resource1");
}
[Test]
public void FindAll_WhenCalled_SecondHandlerTypeIsResource2Handler()
{
- var handlers = defaultHandlerScanner.FindAll();
+ var handlers = defaultHandlerScanner.FindAll(scanResult.Handlers);
Assert.That(handlers.Any(h => h.Type == new Resource2Handler().GetType()));
}
[Test]
public void FindAll_WhenCalled_SecondHandlerUriIsCorrect()
{
- var handlers = defaultHandlerScanner.FindAll();
+ var handlers = defaultHandlerScanner.FindAll(scanResult.Handlers);
Assert.That(handlers.Single(h => h.Type == new Resource2Handler().GetType()).Uri == "resource2");
}
[Test]
public void FindAll_WhenCalled_ThirdHandlerTypeIsResource3Handler()
{
- var handlers = defaultHandlerScanner.FindAll();
+ var handlers = defaultHandlerScanner.FindAll(scanResult.Handlers);
Assert.That(handlers.Any(h => h.Type == new Resource3Handler().GetType()));
}
[Test]
public void FindAll_WhenCalled_ThirdHandlerUriIsCorrect()
{
- var handlers = defaultHandlerScanner.FindAll();
+ var handlers = defaultHandlerScanner.FindAll(scanResult.Handlers);
Assert.That(handlers.Single(h => h.Type == new Resource3Handler().GetType()).Uri == "resource3");
}
[Test]
public void FindAll_WhenCalled_FourthHandlerTypeIsConventionHandler()
{
- var handlers = defaultHandlerScanner.FindAll();
+ var handlers = defaultHandlerScanner.FindAll(scanResult.Handlers);
Assert.That(handlers.Any(h => h.Type == new ConventionHandler().GetType()));
}
[Test]
public void FindAll_WhenCalled_FourthHandlerUriIsCorrect()
{
- var handlers = defaultHandlerScanner.FindAll();
+ var handlers = defaultHandlerScanner.FindAll(scanResult.Handlers);
Assert.That(handlers.Single(h => h.Type == new ConventionHandler().GetType()).Uri == "convention");
}
[Test]
public void FindAll_WhenCalled_PascalConventionHandlerHasBeenLocated()
{
- var handlers = defaultHandlerScanner.FindAll();
+ var handlers = defaultHandlerScanner.FindAll(scanResult.Handlers);
Assert.That(handlers.Any(h => h.Type == new PascalConventionHandler().GetType()));
}
[Test]
public void FindAll_WhenCalled_PascalConventionHandlerHasCorrectUri()
{
- var handlers = defaultHandlerScanner.FindAll();
+ var handlers = defaultHandlerScanner.FindAll(scanResult.Handlers);
Assert.That(handlers.Single(h => h.Type == new PascalConventionHandler().GetType()).Uri, Is.EqualTo("pascal/convention"));
}
[Test]
public void FindAll_WhenCalled_RootHandlerHasEmptyUri()
{
- var handlers = defaultHandlerScanner.FindAll();
+ var handlers = defaultHandlerScanner.FindAll(scanResult.Handlers);
Assert.That(handlers.Single(h => h.Type == new RootHandler().GetType()).Uri, Is.EqualTo(String.Empty));
}
[Test]
public void FindAll_WhenCalled_ExplicitFieldRouteRootHandlerHasEmptyUri()
{
- var handlers = defaultHandlerScanner.FindAll();
+ var handlers = defaultHandlerScanner.FindAll(scanResult.Handlers);
Assert.That(handlers.Single(h => h.Type == new ExplicitFieldRouteRootHandler().GetType()).Uri, Is.EqualTo(String.Empty));
}
[Test]
public void FindAll_WhenCalled_ExplicitPropertyRouteRootHandlerHasEmptyUri()
{
- var handlers = defaultHandlerScanner.FindAll();
+ var handlers = defaultHandlerScanner.FindAll(scanResult.Handlers);
Assert.That(handlers.Single(h => h.Type == new ExplicitPropertyRouteRootHandler().GetType()).Uri, Is.EqualTo(String.Empty));
}
[Test]
public void FindAll_WhenCalled_ExplicitMethodRouteRootHandlerHasEmptyUri()
{
- var handlers = defaultHandlerScanner.FindAll();
+ var handlers = defaultHandlerScanner.FindAll(scanResult.Handlers);
Assert.That(handlers.Single(h => h.Type == new ExplicitMethodRouteRootHandler().GetType()).Uri, Is.EqualTo(String.Empty));
}
@@ -131,7 +133,7 @@ public void FindAll_WhenCalled_ExplicitMethodRouteRootHandlerHasEmptyUri()
public void FindAll_WhenCalled_AreaResourceHandlerIncludesAreaInUri()
{
Tinyweb.RegisterArea("test", typeof(ResourceHandler).Namespace);
- var handlers = defaultHandlerScanner.FindAll();
+ var handlers = defaultHandlerScanner.FindAll(scanResult.Handlers);
Assert.That(handlers.Single(h => h.Type == new ResourceHandler().GetType()).Uri, Is.EqualTo("test/resource"));
}
@@ -139,7 +141,7 @@ public void FindAll_WhenCalled_AreaResourceHandlerIncludesAreaInUri()
public void FindAll_WhenCalled_HandlerWithTheSameNameAsARegisteredAreaInANamespaceMapsToAreaRootUri()
{
Tinyweb.RegisterArea("test", typeof(TestHandler).Namespace);
- var handlers = defaultHandlerScanner.FindAll();
+ var handlers = defaultHandlerScanner.FindAll(scanResult.Handlers);
Assert.That(handlers.Single(h => h.Type == new TestHandler().GetType()).Uri, Is.EqualTo("test"));
}
@@ -147,7 +149,7 @@ public void FindAll_WhenCalled_HandlerWithTheSameNameAsARegisteredAreaInANamespa
public void FindAll_WhenCalled_AreaResourceHandlerWithExplicitRouteIncludesAreaInUri()
{
Tinyweb.RegisterArea("test", typeof(ExplicitRouteAreaHandler).Namespace);
- var handlers = defaultHandlerScanner.FindAll();
+ var handlers = defaultHandlerScanner.FindAll(scanResult.Handlers);
Assert.That(handlers.Single(h => h.Type == new ExplicitRouteAreaHandler().GetType()).Uri, Is.EqualTo("test/foo/bar"));
}
@@ -155,7 +157,7 @@ public void FindAll_WhenCalled_AreaResourceHandlerWithExplicitRouteIncludesAreaI
public void FindAll_WhenCalled_AreaResourceHandlerWithExplicitRouteWithAreaDoesNotPrependAreaAgainInUri()
{
Tinyweb.RegisterArea("test", typeof(ExplicitRouteWithAreaHandler).Namespace);
- var handlers = defaultHandlerScanner.FindAll();
+ var handlers = defaultHandlerScanner.FindAll(scanResult.Handlers);
Assert.That(handlers.Single(h => h.Type == new ExplicitRouteWithAreaHandler().GetType()).Uri, Is.EqualTo("test/foo/baz"));
}
}
View
7 src/tinyweb.framework.tests/Test Data/FilterScanners/CustomFilterScanner.cs
@@ -5,7 +5,12 @@ namespace tinyweb.framework.tests
{
public class CustomFilterScanner : IFilterScanner
{
- public IEnumerable<FilterData> FindAll()
+ public IEnumerable<FilterData> FindAll(IEnumerable<Type> types)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Func<Type, bool> GetSearcher()
{
throw new NotImplementedException();
}
View
7 src/tinyweb.framework.tests/Test Data/HandlerScanners/CustomHandlerScanner.cs
@@ -5,7 +5,12 @@ namespace tinyweb.framework.tests
{
public class CustomHandlerScanner : IHandlerScanner
{
- public IEnumerable<HandlerData> FindAll()
+ public IEnumerable<HandlerData> FindAll(IEnumerable<Type> types)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Func<Type, bool> GetSearcher()
{
throw new NotImplementedException();
}
View
27 src/tinyweb.framework/AssemblyScanner/AssemblyScanner.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace tinyweb.framework
+{
+ public class AssemblyScanner
+ {
+ public static ScanResult FindHandlersAndFilters(Func<Type, bool> isValidHandler, Func<Type, bool> isValidFilter)
+ {
+ var handlers = new List<Type>();
+ var filters = new List<Type>();
+
+ foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
+ {
+ if (assembly.GlobalAssemblyCache) continue;
+
+ var types = assembly.GetTypes();
+
+ handlers.AddRange(types.Where(isValidHandler));
+ filters.AddRange(types.Where(isValidFilter).ToList());
+ }
+
+ return new ScanResult { Handlers = handlers, Filters = filters };
+ }
+ }
+}
View
11 src/tinyweb.framework/AssemblyScanner/ScanResult.cs
@@ -0,0 +1,11 @@
+using System;
+using System.Collections.Generic;
+
+namespace tinyweb.framework
+{
+ public class ScanResult
+ {
+ public IEnumerable<Type> Handlers { get; set; }
+ public IEnumerable<Type> Filters { get; set; }
+ }
+}
View
16 src/tinyweb.framework/Filters/FilterScanner/DefaultFilterScanner.cs
@@ -6,20 +6,18 @@ namespace tinyweb.framework
{
public class DefaultFilterScanner : IFilterScanner
{
- public IEnumerable<FilterData> FindAll()
+ public IEnumerable<FilterData> FindAll(IEnumerable<Type> types)
{
- return findFilters();
+ return findFilters(types);
}
- private IEnumerable<FilterData> findFilters()
+ public Func<Type, bool> GetSearcher()
{
- var types = new List<Type>();
-
- AppDomain.CurrentDomain.GetAssemblies().ForEach(assembly =>
- {
- types.AddRange(assembly.GetTypes().Where(t => t.Name.ToLower().EndsWith("filter")));
- });
+ return t => t.Name.ToLower().EndsWith("filter");
+ }
+ private IEnumerable<FilterData> findFilters(IEnumerable<Type> types)
+ {
var filters = new List<FilterData>();
foreach (var type in types)
View
6 src/tinyweb.framework/Filters/FilterScanner/IFilterScanner.cs
@@ -1,9 +1,11 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
namespace tinyweb.framework
{
public interface IFilterScanner
{
- IEnumerable<FilterData> FindAll();
+ IEnumerable<FilterData> FindAll(IEnumerable<Type> types);
+ Func<Type, bool> GetSearcher();
}
}
View
12 src/tinyweb.framework/Handlers/HandlerFactory/ActivatorHandlerFactory.cs
@@ -0,0 +1,12 @@
+using System;
+
+namespace tinyweb.framework
+{
+ public class ActivatorHandlerFactory : IHandlerFactory
+ {
+ public object Create(HandlerData handlerData)
+ {
+ return Activator.CreateInstance(handlerData.Type);
+ }
+ }
+}
View
2  src/tinyweb.framework/Handlers/HandlerFactory/HandlerFactory.cs
@@ -2,7 +2,7 @@
{
public static class HandlerFactory
{
- static IHandlerFactory factory = new DefaultHandlerFactory();
+ static IHandlerFactory factory = new ActivatorHandlerFactory();
public static IHandlerFactory Current
{
View
2  .../Handlers/HandlerFactory/DefaultHandlerFactory.cs → ...lers/HandlerFactory/StructureMapHandlerFactory.cs
@@ -2,7 +2,7 @@
namespace tinyweb.framework
{
- public class DefaultHandlerFactory : IHandlerFactory
+ public class StructureMapHandlerFactory : IHandlerFactory
{
public object Create(HandlerData handlerData)
{
View
46 src/tinyweb.framework/Handlers/HandlerScanner/DefaultHandlerScanner.cs
@@ -7,10 +7,8 @@ namespace tinyweb.framework
{
public class DefaultHandlerScanner : IHandlerScanner
{
- public IEnumerable<HandlerData> FindAll()
+ public IEnumerable<HandlerData> FindAll(IEnumerable<Type> types)
{
- var types = findHandlers();
-
var handlers = types.Select(type => new { Route = getRoute(type), Type = type }).ToList();
return handlers.Select(t => new HandlerData
@@ -21,16 +19,9 @@ public IEnumerable<HandlerData> FindAll()
});
}
- private IEnumerable<Type> findHandlers()
+ public Func<Type, bool> GetSearcher()
{
- var typesFound = new List<Type>();
-
- AppDomain.CurrentDomain.GetAssemblies().ForEach(assembly =>
- {
- typesFound.AddRange(assembly.GetTypes().Where(t => t.Name.ToLower().EndsWith("handler") && handlerIsValid(t)));
- });
-
- return typesFound;
+ return t => t.Name.ToLower().EndsWith("handler") && handlerIsValid(t);
}
private bool handlerIsValid(Type type)
@@ -41,16 +32,26 @@ private bool handlerIsValid(Type type)
private Route getRoute(Type type)
{
- var handler = HandlerFactory.Current.Create(new HandlerData { Type = type });
- var route = getExplicitRouteFromHandler(handler) ?? new Route(getRouteUriByConvention(type));
+ Route route;
+ var routeMember = type.GetMember("Route", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.IgnoreCase).SingleOrDefault();
- if (route.RouteUri == "/")
+ if (routeMember != null)
{
- route.RouteUri = String.Empty;
+ var handler = HandlerFactory.Current.Create(new HandlerData { Type = type });
+ route = getExplicitRouteFromHandler(routeMember, handler) ?? new Route(getRouteUriByConvention(type));
+
+ if (route.RouteUri == "/")
+ {
+ route.RouteUri = String.Empty;
+ }
+ else if (route.RouteUri.IsEmpty())
+ {
+ route.RouteUri = getRouteUriByConvention(type);
+ }
}
- else if (route.RouteUri.IsEmpty())
+ else
{
- route.RouteUri = getRouteUriByConvention(type);
+ route = new Route(getRouteUriByConvention(type));
}
route.RouteUri = addHandlerAreaToRouteUriIfRegistered(type, route.RouteUri);
@@ -58,15 +59,8 @@ private Route getRoute(Type type)
return route;
}
- private Route getExplicitRouteFromHandler(object handler)
+ private Route getExplicitRouteFromHandler(MemberInfo routeMember, object handler)
{
- var routeMember = handler.GetType().GetMember("Route", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.IgnoreCase).FirstOrDefault();
-
- if (routeMember == null)
- {
- return null;
- }
-
Route route = null;
if (routeMember is MethodInfo)
View
6 src/tinyweb.framework/Handlers/HandlerScanner/IHandlerScanner.cs
@@ -1,9 +1,11 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
namespace tinyweb.framework
{
public interface IHandlerScanner
{
- IEnumerable<HandlerData> FindAll();
+ IEnumerable<HandlerData> FindAll(IEnumerable<Type> types);
+ Func<Type, bool> GetSearcher();
}
}
View
12 src/tinyweb.framework/Init/Tinyweb.cs
@@ -25,10 +25,16 @@ static Tinyweb()
public static int Init(params Registry[] registries)
{
- ObjectFactory.Initialize(x => registries.ForEach(x.AddRegistry));
+ if (registries.Any())
+ {
+ ObjectFactory.Initialize(x => registries.ForEach(x.AddRegistry));
+ HandlerFactory.SetHandlerFactory(new StructureMapHandlerFactory());
+ }
+
+ var scanResult = AssemblyScanner.FindHandlersAndFilters(HandlerScanner.Current.GetSearcher(), FilterScanner.Current.GetSearcher());
- Filters = FilterScanner.Current.FindAll();
- Handlers = HandlerScanner.Current.FindAll();
+ Handlers = HandlerScanner.Current.FindAll(scanResult.Handlers);
+ Filters = FilterScanner.Current.FindAll(scanResult.Filters);
Handlers.ForEach(addRoute);
return Handlers.Count();
View
5 src/tinyweb.framework/tinyweb.framework.csproj
@@ -61,6 +61,7 @@
<Compile Include="Filters\FilterInvoker\DefaultFilterInvoker.cs" />
<Compile Include="Filters\FilterInvoker\FilterInvoker.cs" />
<Compile Include="Filters\FilterInvoker\IFilterInvoker.cs" />
+ <Compile Include="Handlers\HandlerFactory\ActivatorHandlerFactory.cs" />
<Compile Include="Handlers\HandlerInvoker\ExecutionResult.cs" />
<Compile Include="Handlers\HandlerResult\Context\RouteValues.cs" />
<Compile Include="Handlers\HandlerResult\Context\IRouteValues.cs" />
@@ -77,6 +78,8 @@
<Compile Include="Handlers\HandlerResult\XmlResult.cs" />
<Compile Include="Handlers\HandlerResult\RedirectResult.cs" />
<Compile Include="Handlers\HandlerResult\Factory\Result.cs" />
+ <Compile Include="AssemblyScanner\AssemblyScanner.cs" />
+ <Compile Include="AssemblyScanner\ScanResult.cs" />
<Compile Include="Helpers\FakeApplicationPathProvider.cs" />
<Compile Include="Helpers\IApplicationPathProvider.cs" />
<Compile Include="Helpers\RealApplicationPathProvider.cs" />
@@ -89,7 +92,7 @@
<Compile Include="Init\Tinyweb.cs" />
<Compile Include="Handlers\HandlerInvoker\HttpVerb.cs" />
<Compile Include="Exceptions\NoParameterlessConstructor.cs" />
- <Compile Include="Handlers\HandlerFactory\DefaultHandlerFactory.cs" />
+ <Compile Include="Handlers\HandlerFactory\StructureMapHandlerFactory.cs" />
<Compile Include="Handlers\HandlerFactory\HandlerFactory.cs" />
<Compile Include="Init\HttpHandler.cs" />
<Compile Include="Init\RouteHandler.cs" />
Please sign in to comment.
Something went wrong with that request. Please try again.