Skip to content

Commit

Permalink
Fix whitespace in IOC tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mythz committed May 27, 2016
1 parent 09d19a8 commit e96444d
Show file tree
Hide file tree
Showing 6 changed files with 94 additions and 92 deletions.
Binary file modified lib/ServiceStack.Text.dll
Binary file not shown.
66 changes: 33 additions & 33 deletions src/ServiceStack/Host/ContainerResolveCache.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,24 +7,24 @@

namespace ServiceStack.Host
{
public class ContainerResolveCache : ITypeFactory
{
private Container container;
private static Dictionary<Type, Func<Container, object>> resolveFnMap = new Dictionary<Type, Func<Container, object>>();
public class ContainerResolveCache : ITypeFactory
{
private Container container;
private static Dictionary<Type, Func<Container, object>> resolveFnMap = new Dictionary<Type, Func<Container, object>>();

public ContainerResolveCache(Container container)
{
this.container = container;
}
public ContainerResolveCache(Container container)
{
this.container = container;
}

private Func<Container, object> GenerateServiceFactory(Type type, bool tryResolve)
{
private Func<Container, object> GenerateServiceFactory(Type type, bool tryResolve)
{
var resolveType = tryResolve ? "TryResolve" : "Resolve";
var containerParam = Expression.Parameter(typeof(Container), "container");
var resolveInstance = Expression.Call(containerParam, resolveType, new[] { type });
var resolveObject = Expression.Convert(resolveInstance, typeof(object));
return Expression.Lambda<Func<Container, object>>(resolveObject, containerParam).Compile();
}
var containerParam = Expression.Parameter(typeof(Container), "container");
var resolveInstance = Expression.Call(containerParam, resolveType, new[] { type });
var resolveObject = Expression.Convert(resolveInstance, typeof(object));
return Expression.Lambda<Func<Container, object>>(resolveObject, containerParam).Compile();
}

/// <summary>
/// Creates instance using straight Resolve approach.
Expand All @@ -40,24 +40,24 @@ public object CreateInstance(Type type)
/// Otherwise uses Resolve approach, which will throw an exception if resolution fails
/// </summary>
public object CreateInstance(Type type, bool tryResolve)
{
Func<Container, object> resolveFn;
if (!resolveFnMap.TryGetValue(type, out resolveFn))
{
resolveFn = GenerateServiceFactory(type, tryResolve);
{
Func<Container, object> resolveFn;
if (!resolveFnMap.TryGetValue(type, out resolveFn))
{
resolveFn = GenerateServiceFactory(type, tryResolve);

//Support for multiple threads is needed
Dictionary<Type, Func<Container, object>> snapshot, newCache;
do
{
snapshot = resolveFnMap;
newCache = new Dictionary<Type, Func<Container, object>>(resolveFnMap);
newCache[type] = resolveFn;
} while (!ReferenceEquals(
Interlocked.CompareExchange(ref resolveFnMap, newCache, snapshot), snapshot));
}
//Support for multiple threads is needed
Dictionary<Type, Func<Container, object>> snapshot, newCache;
do
{
snapshot = resolveFnMap;
newCache = new Dictionary<Type, Func<Container, object>>(resolveFnMap);
newCache[type] = resolveFn;
} while (!ReferenceEquals(
Interlocked.CompareExchange(ref resolveFnMap, newCache, snapshot), snapshot));
}

return resolveFn(this.container);
}
}
return resolveFn(this.container);
}
}
}
14 changes: 7 additions & 7 deletions src/ServiceStack/Host/ServiceController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -366,14 +366,14 @@ public void RegisterServiceExecutor(Type requestType, Type serviceType, ITypeFac
var serviceExecDef = typeof(ServiceRequestExec<,>).MakeGenericType(serviceType, requestType);
var iserviceExec = (IServiceExec)serviceExecDef.CreateInstance();

ServiceExecFn handlerFn = (requestContext, dto) =>
ServiceExecFn handlerFn = (req, dto) =>
{
var service = serviceFactoryFn.CreateInstance(serviceType);
ServiceExecFn serviceExec = (reqCtx, req) =>
iserviceExec.Execute(reqCtx, service, req);
ServiceExecFn serviceExec = (reqCtx, requestDto) =>
iserviceExec.Execute(reqCtx, service, requestDto);
return ManagedServiceExec(serviceExec, (IService)service, requestContext, dto);
return ManagedServiceExec(serviceExec, (IService)service, req, dto);
};

AddToRequestExecMap(requestType, serviceType, handlerFn);
Expand Down Expand Up @@ -449,14 +449,14 @@ private object ManagedServiceExec(ServiceExecFn serviceExec, IService service, I
}
}

internal static void InjectRequestContext(object service, IRequest requestContext)
internal static void InjectRequestContext(object service, IRequest req)
{
if (requestContext == null) return;
if (req == null) return;

var serviceRequiresContext = service as IRequiresRequest;
if (serviceRequiresContext != null)
{
serviceRequiresContext.Request = requestContext;
serviceRequiresContext.Request = req;
}
}

Expand Down
48 changes: 24 additions & 24 deletions tests/ServiceStack.WebHost.Endpoints.Tests/IocServiceTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -87,13 +87,13 @@ public void Can_resolve_all_dependencies()
{
var response = client.Get<IocResponse>("ioc");
var expected = new List<string> {
typeof(FunqDepCtor).Name,
typeof(AltDepCtor).Name,
typeof(FunqDepProperty).Name,
typeof(FunqDepDisposableProperty).Name,
typeof(AltDepProperty).Name,
typeof(AltDepDisposableProperty).Name,
};
typeof(FunqDepCtor).Name,
typeof(AltDepCtor).Name,
typeof(FunqDepProperty).Name,
typeof(FunqDepDisposableProperty).Name,
typeof(AltDepProperty).Name,
typeof(AltDepDisposableProperty).Name,
};

//Console.WriteLine(response.Results.Dump());
Assert.That(expected.EquivalentTo(response.Results));
Expand All @@ -112,13 +112,13 @@ public void Can_resolve_all_dependencies_Async()
{
var response = client.Get<IocResponse>("iocasync");
var expected = new List<string> {
typeof(FunqDepCtor).Name,
typeof(AltDepCtor).Name,
typeof(FunqDepProperty).Name,
typeof(FunqDepDisposableProperty).Name,
typeof(AltDepProperty).Name,
typeof(AltDepDisposableProperty).Name,
};
typeof(FunqDepCtor).Name,
typeof(AltDepCtor).Name,
typeof(FunqDepProperty).Name,
typeof(FunqDepDisposableProperty).Name,
typeof(AltDepProperty).Name,
typeof(AltDepDisposableProperty).Name,
};

//Console.WriteLine(response.Results.Dump());
Assert.That(expected.EquivalentTo(response.Results));
Expand Down Expand Up @@ -258,11 +258,11 @@ public void Does_AutoWire_ActionLevel_RequestFilters()
var response = client.Get(new ActionAttr());

var expected = new List<string> {
typeof(FunqDepProperty).Name,
typeof(FunqDepDisposableProperty).Name,
typeof(AltDepProperty).Name,
typeof(AltDepDisposableProperty).Name,
};
typeof(FunqDepProperty).Name,
typeof(FunqDepDisposableProperty).Name,
typeof(AltDepProperty).Name,
typeof(AltDepDisposableProperty).Name,
};

Assert.That(expected.EquivalentTo(response.Results));

Expand All @@ -283,11 +283,11 @@ public void Does_AutoWire_ActionLevel_RequestFilters_Async()
var response = client.Get(new ActionAttrAsync());

var expected = new List<string> {
typeof(FunqDepProperty).Name,
typeof(FunqDepDisposableProperty).Name,
typeof(AltDepProperty).Name,
typeof(AltDepDisposableProperty).Name,
};
typeof(FunqDepProperty).Name,
typeof(FunqDepDisposableProperty).Name,
typeof(AltDepProperty).Name,
typeof(AltDepDisposableProperty).Name,
};

Assert.That(expected.EquivalentTo(response.Results));

Expand Down
29 changes: 15 additions & 14 deletions tests/ServiceStack.WebHost.Endpoints.Tests/Shared/IocService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ namespace ServiceStack.Shared.Tests
{
public static class IocShared
{
public static void Configure(ServiceStackHost appHost)
{
var container = appHost.Container;
public static void Configure(ServiceStackHost appHost)
{
var container = appHost.Container;

container.Adapter = new IocAdapter();
container.Register(c => new FunqDepCtor());
Expand Down Expand Up @@ -189,9 +189,9 @@ public override void Execute(IRequest req, IResponse res, object requestDto)
var response = new IocResponse();

var deps = new object[] {
FunqDepProperty, FunqDepDisposableProperty,
AltDepProperty, AltDepDisposableProperty
};
FunqDepProperty, FunqDepDisposableProperty,
AltDepProperty, AltDepDisposableProperty
};

foreach (var dep in deps)
{
Expand Down Expand Up @@ -282,10 +282,10 @@ public object Any(Ioc request)
var response = new IocResponse();

var deps = new object[] {
funqDepCtor, altDepCtor,
FunqDepProperty, FunqDepDisposableProperty,
AltDepProperty, AltDepDisposableProperty
};
funqDepCtor, altDepCtor,
FunqDepProperty, FunqDepDisposableProperty,
AltDepProperty, AltDepDisposableProperty
};

foreach (var dep in deps)
{
Expand Down Expand Up @@ -316,7 +316,7 @@ public async Task<IocResponse> Any(ActionAttrAsync request)
await Task.Delay(10);
return Request.Items["action-attr"] as IocResponse;
}

public static int DisposeCount = 0;
public static bool ThrowErrors = false;

Expand Down Expand Up @@ -385,12 +385,13 @@ public object Any(IocScope request)
if (request.Throw)
throw new Exception("Exception requested by user");

var response = new IocScopeResponse {
var response = new IocScopeResponse
{
Results = {
{ typeof(FunqSingletonScope).Name, FunqSingletonScope.Count },
{ typeof(FunqRequestScope).Name, FunqRequestScope.Count },
{ typeof(FunqNoneScope).Name, FunqNoneScope.Count },
},
},
};

return response;
Expand All @@ -408,7 +409,7 @@ public async Task<object> Any(IocScopeAsync request)
public void Dispose()
{
Interlocked.Increment(ref DisposedCount);
}
}
}

public class IocDispose : IReturn<IocDisposeResponse>
Expand Down
29 changes: 15 additions & 14 deletions tests/ServiceStack.WebHost.IntegrationTests/Shared/IocService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ namespace ServiceStack.Shared.Tests
{
public static class IocShared
{
public static void Configure(ServiceStackHost appHost)
{
var container = appHost.Container;
public static void Configure(ServiceStackHost appHost)
{
var container = appHost.Container;

container.Adapter = new IocAdapter();
container.Register(c => new FunqDepCtor());
Expand Down Expand Up @@ -190,9 +190,9 @@ public override void Execute(IRequest req, IResponse res, object requestDto)
var response = new IocResponse();

var deps = new object[] {
FunqDepProperty, FunqDepDisposableProperty,
AltDepProperty, AltDepDisposableProperty
};
FunqDepProperty, FunqDepDisposableProperty,
AltDepProperty, AltDepDisposableProperty
};

foreach (var dep in deps)
{
Expand Down Expand Up @@ -283,10 +283,10 @@ public object Any(Ioc request)
var response = new IocResponse();

var deps = new object[] {
funqDepCtor, altDepCtor,
FunqDepProperty, FunqDepDisposableProperty,
AltDepProperty, AltDepDisposableProperty
};
funqDepCtor, altDepCtor,
FunqDepProperty, FunqDepDisposableProperty,
AltDepProperty, AltDepDisposableProperty
};

foreach (var dep in deps)
{
Expand Down Expand Up @@ -317,7 +317,7 @@ public async Task<IocResponse> Any(ActionAttrAsync request)
await Task.Delay(10);
return Request.Items["action-attr"] as IocResponse;
}

public static int DisposeCount = 0;
public static bool ThrowErrors = false;

Expand Down Expand Up @@ -386,12 +386,13 @@ public object Any(IocScope request)
if (request.Throw)
throw new Exception("Exception requested by user");

var response = new IocScopeResponse {
var response = new IocScopeResponse
{
Results = {
{ typeof(FunqSingletonScope).Name, FunqSingletonScope.Count },
{ typeof(FunqRequestScope).Name, FunqRequestScope.Count },
{ typeof(FunqNoneScope).Name, FunqNoneScope.Count },
},
},
};

return response;
Expand All @@ -409,7 +410,7 @@ public async Task<object> Any(IocScopeAsync request)
public void Dispose()
{
DisposedCount++;
}
}
}

public class IocDispose : IReturn<IocDisposeResponse>
Expand Down

0 comments on commit e96444d

Please sign in to comment.