|
From: <jer...@us...> - 2008-11-19 19:10:28
|
Revision: 195
http://structuremap.svn.sourceforge.net/structuremap/?rev=195&view=rev
Author: jeremydmiller
Date: 2008-11-19 19:10:25 +0000 (Wed, 19 Nov 2008)
Log Message:
-----------
Mild fix for a production issue with auto scanning open generic types
Modified Paths:
--------------
trunk/Source/StructureMap/Graph/FindAllTypesFilter.cs
trunk/Source/StructureMap/Graph/TypeRules.cs
trunk/Source/StructureMap/Pipeline/HttpContextBuildPolicy.cs
trunk/Source/StructureMap/Pipeline/HybridBuildPolicy.cs
trunk/Source/StructureMap.Testing/ModelQueryTester.cs
Modified: trunk/Source/StructureMap/Graph/FindAllTypesFilter.cs
===================================================================
--- trunk/Source/StructureMap/Graph/FindAllTypesFilter.cs 2008-10-27 02:13:42 UTC (rev 194)
+++ trunk/Source/StructureMap/Graph/FindAllTypesFilter.cs 2008-11-19 19:10:25 UTC (rev 195)
@@ -15,6 +15,8 @@
public void Process(Type type, PluginGraph graph)
{
+
+
if (CanBeCast(_pluginType, type))
{
graph.AddType(_pluginType, type);
Modified: trunk/Source/StructureMap/Graph/TypeRules.cs
===================================================================
--- trunk/Source/StructureMap/Graph/TypeRules.cs 2008-10-27 02:13:42 UTC (rev 194)
+++ trunk/Source/StructureMap/Graph/TypeRules.cs 2008-11-19 19:10:25 UTC (rev 195)
@@ -22,14 +22,25 @@
return false;
}
- if (GenericsPluginGraph.CanBeCast(pluginType, pluggedType))
+ if (IsGeneric(pluginType))
{
- return true;
+ return GenericsPluginGraph.CanBeCast(pluginType, pluggedType);
}
+ if (IsGeneric(pluggedType))
+ {
+ return false;
+ }
+
+
return pluginType.IsAssignableFrom(pluggedType);
}
+ public static bool IsGeneric(Type pluggedType)
+ {
+ return pluggedType.IsGenericTypeDefinition || pluggedType.ContainsGenericParameters;
+ }
+
/// <summary>
/// Determines if the PluggedType is a valid Plugin into the
/// PluginType
Modified: trunk/Source/StructureMap/Pipeline/HttpContextBuildPolicy.cs
===================================================================
--- trunk/Source/StructureMap/Pipeline/HttpContextBuildPolicy.cs 2008-10-27 02:13:42 UTC (rev 194)
+++ trunk/Source/StructureMap/Pipeline/HttpContextBuildPolicy.cs 2008-11-19 19:10:25 UTC (rev 195)
@@ -5,8 +5,9 @@
{
public class HttpContextBuildPolicy : CacheInterceptor
{
- private readonly string _prefix = Guid.NewGuid().ToString();
+ private string _prefix = Guid.NewGuid().ToString();
+
public static bool HasContext()
{
return HttpContext.Current != null;
Modified: trunk/Source/StructureMap/Pipeline/HybridBuildPolicy.cs
===================================================================
--- trunk/Source/StructureMap/Pipeline/HybridBuildPolicy.cs 2008-10-27 02:13:42 UTC (rev 194)
+++ trunk/Source/StructureMap/Pipeline/HybridBuildPolicy.cs 2008-11-19 19:10:25 UTC (rev 195)
@@ -4,15 +4,25 @@
{
public class HybridBuildPolicy : IBuildInterceptor
{
+ private readonly IBuildInterceptor _http;
+ private readonly IBuildInterceptor _threadLocal;
+
+ public HybridBuildPolicy()
+ {
+ _http = new HttpContextBuildPolicy();
+ _threadLocal = new ThreadLocalStoragePolicy();
+ }
+
private IBuildPolicy _innerPolicy;
+
private IBuildInterceptor interceptor
{
get
{
return HttpContextBuildPolicy.HasContext()
- ? (IBuildInterceptor)new HttpContextBuildPolicy(){InnerPolicy = _innerPolicy}
- : new ThreadLocalStoragePolicy(){InnerPolicy = _innerPolicy};
+ ? _http
+ : _threadLocal;
}
}
@@ -21,7 +31,12 @@
public IBuildPolicy InnerPolicy
{
get { return _innerPolicy; }
- set { _innerPolicy = value; }
+ set
+ {
+ _http.InnerPolicy = value;
+ _threadLocal.InnerPolicy = value;
+ _innerPolicy = value;
+ }
}
public object Build(BuildSession buildSession, Type pluginType, Instance instance)
Modified: trunk/Source/StructureMap.Testing/ModelQueryTester.cs
===================================================================
--- trunk/Source/StructureMap.Testing/ModelQueryTester.cs 2008-10-27 02:13:42 UTC (rev 194)
+++ trunk/Source/StructureMap.Testing/ModelQueryTester.cs 2008-11-19 19:10:25 UTC (rev 195)
@@ -1,5 +1,6 @@
using System;
using System.Data;
+using System.Data.SqlClient;
using System.Linq;
using NUnit.Framework;
using StructureMap.Configuration.DSL;
@@ -31,6 +32,7 @@
}
+
[SetUp]
public void SetUp()
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|