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. |