Skip to content

Commit 59400bf

Browse files
committed
mvc and webapi2 action attributes modified to inject IExecuteFunctionProvider
1 parent 9c13912 commit 59400bf

File tree

5 files changed

+23
-8
lines changed

5 files changed

+23
-8
lines changed

src/JQDT.MVC/JQDataTableAttribute.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,13 @@
1616
public class JQDataTableAttribute : ActionFilterAttribute, IJQDTActionFilter
1717
{
1818
private readonly IServiceLocator serviceLocator;
19+
private readonly IExecuteFunctionProvider<ActionExecutedContext> executeFunctionProvider;
1920

2021
/// <summary>
2122
/// Initializes a new instance of the <see cref="JQDataTableAttribute"/> class.
2223
/// </summary>
2324
public JQDataTableAttribute()
24-
: this(new ServiceLocator())
25+
: this(new ServiceLocator(), new ExecuteFunctionProvider<ActionExecutedContext>())
2526
{
2627
}
2728

@@ -30,9 +31,10 @@ public JQDataTableAttribute()
3031
/// This constructor is provided for testing purposes.
3132
/// </summary>
3233
/// <param name="serviceLocator">The service locator.</param>
33-
internal JQDataTableAttribute(IServiceLocator serviceLocator)
34+
internal JQDataTableAttribute(IServiceLocator serviceLocator, IExecuteFunctionProvider<ActionExecutedContext> executeFunctionProvider)
3435
{
3536
this.serviceLocator = serviceLocator;
37+
this.executeFunctionProvider = executeFunctionProvider;
3638
}
3739

3840
/// <summary>
@@ -168,7 +170,7 @@ public virtual void OnPagingDataProcessed(ref object data, RequestInfoModel requ
168170
private void PerformOnActionExecuted(ActionExecutedContext filterContext)
169171
{
170172
var dataCollectionType = filterContext.Controller.ViewData.Model.GetType();
171-
var applicationInitizlizationFunction = ExecuteFunctionProvider<ActionExecutedContext>.GetAppInicializationFunc(dataCollectionType, typeof(ApplicationMvc<>));
173+
var applicationInitizlizationFunction = this.executeFunctionProvider.GetAppInicializationFunc(dataCollectionType, typeof(ApplicationMvc<>));
172174
var formModelBinder = this.serviceLocator.GetFormModelBinder();
173175
var mvcApplication = applicationInitizlizationFunction(filterContext, this.serviceLocator, formModelBinder);
174176
this.SubscribeToEvents(mvcApplication);

src/JQDT.WebAPI/JQDataTableAttribute.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,13 @@
1818
public class JQDataTableAttribute : ActionFilterAttribute, IJQDTActionFilter
1919
{
2020
private readonly IServiceLocator serviceLocator;
21+
private readonly IExecuteFunctionProvider<HttpActionExecutedContext> executeFunctionProvider;
2122

2223
/// <summary>
2324
/// Initializes a new instance of the <see cref="JQDataTableAttribute"/> class.
2425
/// </summary>
2526
public JQDataTableAttribute()
26-
: this(new ServiceLocator())
27+
: this(new ServiceLocator(), new ExecuteFunctionProvider<HttpActionExecutedContext>())
2728
{
2829
}
2930

@@ -32,9 +33,10 @@ public JQDataTableAttribute()
3233
/// This constructor is provided for testing purposes.
3334
/// </summary>
3435
/// <param name="serviceLocator">The service locator.</param>
35-
internal JQDataTableAttribute(IServiceLocator serviceLocator)
36+
internal JQDataTableAttribute(IServiceLocator serviceLocator, IExecuteFunctionProvider<HttpActionExecutedContext> executeFunctionProvider)
3637
{
3738
this.serviceLocator = serviceLocator;
39+
this.executeFunctionProvider = executeFunctionProvider;
3840
}
3941

4042
/// <summary>
@@ -167,7 +169,7 @@ public void OnPagingDataProcessed(ref object data, RequestInfoModel requestInfoM
167169
private void PerformOnActionExecuted(HttpActionExecutedContext actionExecutedContext)
168170
{
169171
var modelType = ((System.Net.Http.ObjectContent)actionExecutedContext.Response.Content).ObjectType;
170-
var applicationInitizlizationFunction = ExecuteFunctionProvider<HttpActionExecutedContext>.GetAppInicializationFunc(modelType, typeof(ApplicationWebApi<>));
172+
var applicationInitizlizationFunction = this.executeFunctionProvider.GetAppInicializationFunc(modelType, typeof(ApplicationWebApi<>));
171173
var serviceLocator = new DI.ServiceLocator();
172174
var formModelBinder = serviceLocator.GetFormModelBinder();
173175
var webApiApplication = applicationInitizlizationFunction(actionExecutedContext, serviceLocator, formModelBinder);

src/JQDT/Application/ExecuteFunctionProvider.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
/// Creates and caches application execute function.
1111
/// </summary>
1212
/// <typeparam name="TContext">The type of the request context.</typeparam>
13-
public static class ExecuteFunctionProvider<TContext>
13+
public class ExecuteFunctionProvider<TContext> : IExecuteFunctionProvider<TContext>
1414
{
1515
private static ConcurrentDictionary<Type, Func<TContext, DI.IServiceLocator, IFormModelBinder, IApplicationBase>> appInitFunctionsCache = new ConcurrentDictionary<Type, Func<TContext, DI.IServiceLocator, IFormModelBinder, IApplicationBase>>();
1616

@@ -20,7 +20,7 @@ public static class ExecuteFunctionProvider<TContext>
2020
/// <param name="dataCollectionType">Type of the data collection.</param>
2121
/// <param name="appType">Type of the application.</param>
2222
/// <returns><see cref="Func{T, TResult}"/> that return new <see cref="IApplicationBaseIFormModelBinder"/> instance</returns>
23-
public static Func<TContext, DI.IServiceLocator, IFormModelBinder, IApplicationBase> GetAppInicializationFunc(Type dataCollectionType, Type appType)
23+
public Func<TContext, DI.IServiceLocator, IFormModelBinder, IApplicationBase> GetAppInicializationFunc(Type dataCollectionType, Type appType)
2424
{
2525
Func<TContext, DI.IServiceLocator, IFormModelBinder, IApplicationBase> executeFunc = null;
2626

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
namespace JQDT.Application
2+
{
3+
using System;
4+
using JQDT.ModelBinders;
5+
6+
public interface IExecuteFunctionProvider<TContext>
7+
{
8+
Func<TContext, DI.IServiceLocator, IFormModelBinder, IApplicationBase> GetAppInicializationFunc(Type dataCollectionType, Type appType);
9+
}
10+
}

src/JQDT/JQDT.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
<Compile Include="Application\ApplicationBase.cs" />
6262
<Compile Include="Application\ExecuteFunctionProvider.cs" />
6363
<Compile Include="Application\IApplicationBase.cs" />
64+
<Compile Include="Application\IExecuteFunctionProvider.cs" />
6465
<Compile Include="DataProcessing\ColumnsFilterDataProcessing\ColumnsFilterDataProcessor.cs" />
6566
<Compile Include="DataProcessing\Common\ConstantExpressionBuilder.cs" />
6667
<Compile Include="DataProcessing\Common\ContainsExpressionBuilder.cs" />

0 commit comments

Comments
 (0)