|
From: <jer...@us...> - 2008-12-20 18:17:03
|
Revision: 205
http://structuremap.svn.sourceforge.net/structuremap/?rev=205&view=rev
Author: jeremydmiller
Date: 2008-12-20 18:16:59 +0000 (Sat, 20 Dec 2008)
Log Message:
-----------
added a new caching strategy for Session
Modified Paths:
--------------
trunk/Source/StructureMap/Attributes/InstanceScope.cs
trunk/Source/StructureMap/Graph/PluginFamily.cs
trunk/Source/StructureMap/StructureMap.csproj
trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs
Removed Paths:
-------------
trunk/Source/StructureMap/Pipeline/HttpContextBuildStorage.cs
Modified: trunk/Source/StructureMap/Attributes/InstanceScope.cs
===================================================================
--- trunk/Source/StructureMap/Attributes/InstanceScope.cs 2008-12-20 17:59:45 UTC (rev 204)
+++ trunk/Source/StructureMap/Attributes/InstanceScope.cs 2008-12-20 18:16:59 UTC (rev 205)
@@ -6,6 +6,7 @@
Singleton,
ThreadLocal,
HttpContext,
- Hybrid
+ Hybrid,
+ HttpSession
}
}
\ No newline at end of file
Modified: trunk/Source/StructureMap/Graph/PluginFamily.cs
===================================================================
--- trunk/Source/StructureMap/Graph/PluginFamily.cs 2008-12-20 17:59:45 UTC (rev 204)
+++ trunk/Source/StructureMap/Graph/PluginFamily.cs 2008-12-20 18:16:59 UTC (rev 205)
@@ -77,6 +77,10 @@
case InstanceScope.Hybrid:
AddInterceptor(new HybridBuildPolicy());
break;
+
+ case InstanceScope.HttpSession:
+ AddInterceptor(new HttpSessionBuildPolicy());
+ break;
}
}
Deleted: trunk/Source/StructureMap/Pipeline/HttpContextBuildStorage.cs
===================================================================
--- trunk/Source/StructureMap/Pipeline/HttpContextBuildStorage.cs 2008-12-20 17:59:45 UTC (rev 204)
+++ trunk/Source/StructureMap/Pipeline/HttpContextBuildStorage.cs 2008-12-20 18:16:59 UTC (rev 205)
@@ -1,41 +0,0 @@
-using System.Collections;
-using System.Web;
-
-namespace StructureMap.Pipeline
-{
- public class HttpContextBuildPolicy : CacheInterceptor
- {
- public static readonly string ITEM_NAME = "STRUCTUREMAP-INSTANCES";
-
- public static bool HasContext()
- {
- return HttpContext.Current != null;
- }
-
- protected override InstanceCache findCache()
- {
- IDictionary items = HttpContext.Current.Items;
-
- if (!items.Contains(ITEM_NAME))
- {
- lock (items.SyncRoot)
- {
- if (!items.Contains(ITEM_NAME))
- {
- InstanceCache cache = buildNewCache();
- items.Add(ITEM_NAME, cache);
-
- return cache;
- }
- }
- }
-
- return (InstanceCache) items[ITEM_NAME];
- }
-
- protected override CacheInterceptor clone()
- {
- return this;
- }
- }
-}
\ No newline at end of file
Modified: trunk/Source/StructureMap/StructureMap.csproj
===================================================================
--- trunk/Source/StructureMap/StructureMap.csproj 2008-12-20 17:59:45 UTC (rev 204)
+++ trunk/Source/StructureMap/StructureMap.csproj 2008-12-20 18:16:59 UTC (rev 205)
@@ -411,7 +411,7 @@
<Compile Include="Pipeline\BuildFrame.cs" />
<Compile Include="Pipeline\BuildStack.cs" />
<Compile Include="Pipeline\ConfiguredInstanceBase.cs" />
- <Compile Include="Pipeline\HttpContextBuildStorage.cs" />
+ <Compile Include="Pipeline\HttpContextBuildPolicy.cs" />
<Compile Include="Pipeline\InstanceKey.cs" />
<Compile Include="Pipeline\IStructuredInstance.cs" />
<Compile Include="Pipeline\PropertyExpression.cs" />
Modified: trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs
===================================================================
--- trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs 2008-12-20 17:59:45 UTC (rev 204)
+++ trunk/Source/StructureMap.Testing/Graph/PluginFamilyTester.cs 2008-12-20 18:16:59 UTC (rev 205)
@@ -260,6 +260,15 @@
}
[Test]
+ public void set_the_scope_to_session()
+ {
+ var family = new PluginFamily(typeof(IServiceProvider));
+ family.SetScopeTo(InstanceScope.HttpSession);
+
+ family.Policy.ShouldBeOfType<HttpSessionBuildPolicy>();
+ }
+
+ [Test]
public void SetScopeToSingleton()
{
var family = new PluginFamily(typeof (IServiceProvider));
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|