You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by mm...@apache.org on 2021/07/28 00:00:20 UTC

[geode-dotnet-core-client] 02/03: GEODE-9359: Add netcore-session to geode-native

This is an automated email from the ASF dual-hosted git repository.

mmartell pushed a commit to branch AddNonSteeltoeSample
in repository https://gitbox.apache.org/repos/asf/geode-dotnet-core-client.git

commit ff7e02e9a58767bcf24a43b77f9c1a873f6c6c82
Author: Mike Martell <mm...@pivotal.io>
AuthorDate: Tue Jul 27 16:52:33 2021 -0700

    GEODE-9359: Add netcore-session to geode-native
---
 .../NetCore.Session.IntegrationTests.csproj        |  0
 .../Properties/launchSettings.json                 |  0
 .../SessionStateIntegrationTests.cs                | 10 ++---
 .../NetCore.Session.Tests.csproj                   |  0
 .../SessionStateCacheTests.cs                      |  0
 .../GeodeCacheServiceCollectionExtensions.cs       | 28 +++++++++++++
 NetCore.Session/GeodeSessionStateCacheOptions.cs   | 16 ++++++++
 NetCore.Session/NetCoreSessionState.cs             | 46 +++++++++++++---------
 geode-dotnet-core.sln                              | 46 +++++++++++++++++-----
 9 files changed, 113 insertions(+), 33 deletions(-)

diff --git a/Session.IntegrationTests/NetCore.Session.IntegrationTests.csproj b/NetCore.Session.IntegrationTests/NetCore.Session.IntegrationTests.csproj
similarity index 100%
rename from Session.IntegrationTests/NetCore.Session.IntegrationTests.csproj
rename to NetCore.Session.IntegrationTests/NetCore.Session.IntegrationTests.csproj
diff --git a/Session.IntegrationTests/Properties/launchSettings.json b/NetCore.Session.IntegrationTests/Properties/launchSettings.json
similarity index 100%
rename from Session.IntegrationTests/Properties/launchSettings.json
rename to NetCore.Session.IntegrationTests/Properties/launchSettings.json
diff --git a/Session.IntegrationTests/SessionStateIntegrationTests.cs b/NetCore.Session.IntegrationTests/SessionStateIntegrationTests.cs
similarity index 94%
rename from Session.IntegrationTests/SessionStateIntegrationTests.cs
rename to NetCore.Session.IntegrationTests/SessionStateIntegrationTests.cs
index 52538df..eafb590 100644
--- a/Session.IntegrationTests/SessionStateIntegrationTests.cs
+++ b/NetCore.Session.IntegrationTests/SessionStateIntegrationTests.cs
@@ -24,7 +24,7 @@ namespace Apache.Geode.Session.IntegrationTests
             using var poolFactory = cache.PoolFactory.AddLocator("localhost", 10334);
             using var pool = poolFactory.CreatePool("myPool");
 
-            using var ssCache = new SessionStateCache(cache, _regionName);
+            using var ssCache = new GeodeSessionStateCache(cache, _regionName);
 
             var options = new DistributedCacheEntryOptions();
             DateTime localTime = DateTime.Now.AddDays(1);
@@ -48,7 +48,7 @@ namespace Apache.Geode.Session.IntegrationTests
             using PoolFactory poolFactory = cache.PoolFactory.AddLocator("localhost", 10334);
             using var pool = poolFactory.CreatePool("myPool");
 
-            using var ssCache = new SessionStateCache(cache, _regionName);
+            using var ssCache = new GeodeSessionStateCache(cache, _regionName);
 
             var options = new DistributedCacheEntryOptions();
             int numSeconds = 20;
@@ -81,7 +81,7 @@ namespace Apache.Geode.Session.IntegrationTests
             using var cache = (Cache)cacheFactory.CreateCache();
             PoolFactory poolFactory = cache.PoolFactory;
 
-            using var ssCache = new SessionStateCache(cache, _regionName);
+            using var ssCache = new GeodeSessionStateCache(cache, _regionName);
 
             var options = new DistributedCacheEntryOptions();
             options.AbsoluteExpiration = DateTime.Now.AddSeconds(5);
@@ -102,7 +102,7 @@ namespace Apache.Geode.Session.IntegrationTests
             using var poolFactory = cache.PoolFactory.AddLocator("localhost", 10334);
             using var pool = poolFactory.CreatePool("myPool");
 
-            using var ssCache = new SessionStateCache(cache, _regionName);
+            using var ssCache = new GeodeSessionStateCache(cache, _regionName);
 
             var options = new DistributedCacheEntryOptions();
             DateTime localTime = DateTime.Now.AddDays(1);
@@ -129,7 +129,7 @@ namespace Apache.Geode.Session.IntegrationTests
             using var poolFactory = cache.PoolFactory.AddLocator("localhost", 10334);
             using var pool = poolFactory.CreatePool("myPool");
 
-            using var ssCache = new SessionStateCache(cache, _regionName);
+            using var ssCache = new GeodeSessionStateCache(cache, _regionName);
 
             var options = new DistributedCacheEntryOptions();
             DateTime localTime = DateTime.Now.AddDays(1);
diff --git a/Session.Tests/NetCore.Session.Tests.csproj b/NetCore.Session.Tests/NetCore.Session.Tests.csproj
similarity index 100%
rename from Session.Tests/NetCore.Session.Tests.csproj
rename to NetCore.Session.Tests/NetCore.Session.Tests.csproj
diff --git a/Session.Tests/SessionStateCacheTests.cs b/NetCore.Session.Tests/SessionStateCacheTests.cs
similarity index 100%
rename from Session.Tests/SessionStateCacheTests.cs
rename to NetCore.Session.Tests/SessionStateCacheTests.cs
diff --git a/NetCore.Session/GeodeCacheServiceCollectionExtensions.cs b/NetCore.Session/GeodeCacheServiceCollectionExtensions.cs
new file mode 100644
index 0000000..19f0f54
--- /dev/null
+++ b/NetCore.Session/GeodeCacheServiceCollectionExtensions.cs
@@ -0,0 +1,28 @@
+using System;
+using Microsoft.Extensions.Caching.Distributed;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace Apache.Geode.Session
+{
+    public static class GeodeCacheServiceCollectionExtensions
+    {
+        public static IServiceCollection AddGeodeSessionStateCache(this IServiceCollection services, Action<GeodeSessionStateCacheOptions> setupAction)
+        {
+            if (services == null)
+            {
+                throw new ArgumentNullException(nameof(services));
+            }
+
+            if (setupAction == null)
+            {
+                throw new ArgumentNullException(nameof(setupAction));
+            }
+
+            services.AddOptions();
+            services.Add(ServiceDescriptor.Singleton<IDistributedCache, GeodeSessionStateCache>());
+            services.Configure(setupAction);
+
+            return services;
+        }
+    }
+}
diff --git a/NetCore.Session/GeodeSessionStateCacheOptions.cs b/NetCore.Session/GeodeSessionStateCacheOptions.cs
new file mode 100644
index 0000000..aecf7e6
--- /dev/null
+++ b/NetCore.Session/GeodeSessionStateCacheOptions.cs
@@ -0,0 +1,16 @@
+using Microsoft.Extensions.Options;
+
+namespace Apache.Geode.Session
+{
+    public class GeodeSessionStateCacheOptions : IOptions<GeodeSessionStateCacheOptions>
+    {
+        public string RegionName { get; set; }
+        public string Host { get; set; }
+        public int Port { get; set; }
+
+        GeodeSessionStateCacheOptions IOptions<GeodeSessionStateCacheOptions>.Value
+        {
+            get { return this; }
+        }
+    }
+}
diff --git a/NetCore.Session/NetCoreSessionState.cs b/NetCore.Session/NetCoreSessionState.cs
index 0f39ae0..df4f8c8 100644
--- a/NetCore.Session/NetCoreSessionState.cs
+++ b/NetCore.Session/NetCoreSessionState.cs
@@ -1,21 +1,22 @@
 using Apache.Geode.NetCore;
 using Microsoft.Extensions.Caching.Distributed;
 using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Options;
 using System;
 using System.Threading;
 using System.Threading.Tasks;
 
 namespace Apache.Geode.Session
 {
-    public class SessionStateValue
+    public class GeodeSessionStateValue
     {
         DateTime _lastAccessTimeUtc;
         DateTime _expirationTimeUtc = DateTime.MinValue;
         TimeSpan _spanUntilStale = TimeSpan.Zero;
         private byte[] _value;
 
-        public SessionStateValue() { }
-        public SessionStateValue(byte[] value)
+        public GeodeSessionStateValue() { }
+        public GeodeSessionStateValue(byte[] value)
         {
             FromByteArray(value);
         }
@@ -88,32 +89,41 @@ namespace Apache.Geode.Session
         }
     }
 
-    public class SessionStateCache : GeodeNativeObject, IDistributedCache
+    public class GeodeSessionStateCache : GeodeNativeObject, IDistributedCache
     {
-        private readonly Cache _cache;
-        private ILogger<SessionStateCache> _logger;
+        private readonly IGeodeCache _cache;
+        private ILogger<GeodeSessionStateCache> _logger;
         private static Region _region;
         private string _regionName;
         private readonly SemaphoreSlim _connectLock = new SemaphoreSlim(initialCount: 1, maxCount: 1);
 
-        public SessionStateCache(Cache cache, string regionName, ILogger<SessionStateCache> logger = null)
-        {
-            _regionName = regionName ?? throw new ArgumentNullException(regionName);
-            _cache = cache ?? throw new ArgumentNullException(nameof(cache));
-            _logger = logger;
+        public GeodeSessionStateCache(IOptions<GeodeSessionStateCacheOptions> optionsAccessor) {
+
+            var host = optionsAccessor.Value.Host;
+            var port = optionsAccessor.Value.Port;
+            _regionName = optionsAccessor.Value.RegionName;
+
+            _cache = CacheFactory.Create()
+                .SetProperty("log-level", "none")
+                .CreateCache();
+
+            _cache.PoolManager
+                .CreatePoolFactory()
+                .AddLocator(host, port)
+                .CreatePool("pool");
 
-            _cache.PoolFactory.AddLocator("localhost", 10334);
-            using var pool = _cache.PoolFactory.CreatePool("pool");
+            var regionFactory = _cache.CreateRegionFactory(RegionShortcut.Proxy);
+            _region = regionFactory.CreateRegion(_regionName);
         }
 
         // Returns the SessionStateValue for key, or null if key doesn't exist
-        public SessionStateValue GetValueForKey(string key)
+        public GeodeSessionStateValue GetValueForKey(string key)
         {
             byte[] cacheValue = _region.GetByteArray(key);
 
             if (cacheValue != null)
             {
-                return new SessionStateValue(cacheValue);
+                return new GeodeSessionStateValue(cacheValue);
             }
             else
                 return null;
@@ -129,7 +139,7 @@ namespace Apache.Geode.Session
             Connect();
 
             // Check for nonexistent key
-            SessionStateValue ssValue = GetValueForKey(key);
+            GeodeSessionStateValue ssValue = GetValueForKey(key);
             if (ssValue == null)
                 return null;
 
@@ -178,7 +188,7 @@ namespace Apache.Geode.Session
             Connect();
 
             // Check for nonexistent key
-            SessionStateValue ssValue = GetValueForKey(key);
+            GeodeSessionStateValue ssValue = GetValueForKey(key);
             if (ssValue == null)
                 return;
 
@@ -263,7 +273,7 @@ namespace Apache.Geode.Session
 
             Connect();
 
-            SessionStateValue ssValue = new SessionStateValue();
+            GeodeSessionStateValue ssValue = new GeodeSessionStateValue();
             ssValue.Value = value;
 
             DateTime nowUtc = DateTime.UtcNow;
diff --git a/geode-dotnet-core.sln b/geode-dotnet-core.sln
index 2f1a398..0ede2ac 100644
--- a/geode-dotnet-core.sln
+++ b/geode-dotnet-core.sln
@@ -15,64 +15,90 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NetCore.Session.Tests", "Se
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NetCore.Session.IntegrationTests", "Session.IntegrationTests\NetCore.Session.IntegrationTests.csproj", "{742B4109-544E-492E-86AC-DC1E0FCCA596}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SessionSample", "SessionSample\SessionSample.csproj", "{6D0D1D93-917E-48EE-977C-16F65DB982BE}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AspNetCore GeodeSession Sample", "AspNetCore GeodeSession Sample\AspNetCore GeodeSession Sample.csproj", "{0EB901F7-293F-41A3-B1A3-A8C831CCAD85}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
 		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
 		Release|Any CPU = Release|Any CPU
 		Release|x64 = Release|x64
+		Release|x86 = Release|x86
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
 		{09ABBCE7-B217-43F1-A51B-CC5BDCD8EE98}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{09ABBCE7-B217-43F1-A51B-CC5BDCD8EE98}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{09ABBCE7-B217-43F1-A51B-CC5BDCD8EE98}.Debug|x64.ActiveCfg = Debug|x64
 		{09ABBCE7-B217-43F1-A51B-CC5BDCD8EE98}.Debug|x64.Build.0 = Debug|x64
+		{09ABBCE7-B217-43F1-A51B-CC5BDCD8EE98}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{09ABBCE7-B217-43F1-A51B-CC5BDCD8EE98}.Debug|x86.Build.0 = Debug|Any CPU
 		{09ABBCE7-B217-43F1-A51B-CC5BDCD8EE98}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{09ABBCE7-B217-43F1-A51B-CC5BDCD8EE98}.Release|Any CPU.Build.0 = Release|Any CPU
 		{09ABBCE7-B217-43F1-A51B-CC5BDCD8EE98}.Release|x64.ActiveCfg = Release|Any CPU
 		{09ABBCE7-B217-43F1-A51B-CC5BDCD8EE98}.Release|x64.Build.0 = Release|Any CPU
+		{09ABBCE7-B217-43F1-A51B-CC5BDCD8EE98}.Release|x86.ActiveCfg = Release|Any CPU
+		{09ABBCE7-B217-43F1-A51B-CC5BDCD8EE98}.Release|x86.Build.0 = Release|Any CPU
 		{501DEA7E-8985-42A8-8BC9-C073E1B6DFE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{501DEA7E-8985-42A8-8BC9-C073E1B6DFE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{501DEA7E-8985-42A8-8BC9-C073E1B6DFE0}.Debug|x64.ActiveCfg = Debug|x64
 		{501DEA7E-8985-42A8-8BC9-C073E1B6DFE0}.Debug|x64.Build.0 = Debug|x64
+		{501DEA7E-8985-42A8-8BC9-C073E1B6DFE0}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{501DEA7E-8985-42A8-8BC9-C073E1B6DFE0}.Debug|x86.Build.0 = Debug|Any CPU
 		{501DEA7E-8985-42A8-8BC9-C073E1B6DFE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{501DEA7E-8985-42A8-8BC9-C073E1B6DFE0}.Release|Any CPU.Build.0 = Release|Any CPU
 		{501DEA7E-8985-42A8-8BC9-C073E1B6DFE0}.Release|x64.ActiveCfg = Release|Any CPU
 		{501DEA7E-8985-42A8-8BC9-C073E1B6DFE0}.Release|x64.Build.0 = Release|Any CPU
+		{501DEA7E-8985-42A8-8BC9-C073E1B6DFE0}.Release|x86.ActiveCfg = Release|Any CPU
+		{501DEA7E-8985-42A8-8BC9-C073E1B6DFE0}.Release|x86.Build.0 = Release|Any CPU
 		{CC1FEC64-9AD6-4A69-ADF2-038CF67A8590}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{CC1FEC64-9AD6-4A69-ADF2-038CF67A8590}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{CC1FEC64-9AD6-4A69-ADF2-038CF67A8590}.Debug|x64.ActiveCfg = Debug|x64
 		{CC1FEC64-9AD6-4A69-ADF2-038CF67A8590}.Debug|x64.Build.0 = Debug|x64
+		{CC1FEC64-9AD6-4A69-ADF2-038CF67A8590}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{CC1FEC64-9AD6-4A69-ADF2-038CF67A8590}.Debug|x86.Build.0 = Debug|Any CPU
 		{CC1FEC64-9AD6-4A69-ADF2-038CF67A8590}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{CC1FEC64-9AD6-4A69-ADF2-038CF67A8590}.Release|Any CPU.Build.0 = Release|Any CPU
 		{CC1FEC64-9AD6-4A69-ADF2-038CF67A8590}.Release|x64.ActiveCfg = Release|Any CPU
 		{CC1FEC64-9AD6-4A69-ADF2-038CF67A8590}.Release|x64.Build.0 = Release|Any CPU
+		{CC1FEC64-9AD6-4A69-ADF2-038CF67A8590}.Release|x86.ActiveCfg = Release|Any CPU
+		{CC1FEC64-9AD6-4A69-ADF2-038CF67A8590}.Release|x86.Build.0 = Release|Any CPU
 		{C107D019-3B4F-403D-9040-ECB6E86C44E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{C107D019-3B4F-403D-9040-ECB6E86C44E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{C107D019-3B4F-403D-9040-ECB6E86C44E9}.Debug|x64.ActiveCfg = Debug|x64
 		{C107D019-3B4F-403D-9040-ECB6E86C44E9}.Debug|x64.Build.0 = Debug|x64
+		{C107D019-3B4F-403D-9040-ECB6E86C44E9}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{C107D019-3B4F-403D-9040-ECB6E86C44E9}.Debug|x86.Build.0 = Debug|Any CPU
 		{C107D019-3B4F-403D-9040-ECB6E86C44E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{C107D019-3B4F-403D-9040-ECB6E86C44E9}.Release|Any CPU.Build.0 = Release|Any CPU
 		{C107D019-3B4F-403D-9040-ECB6E86C44E9}.Release|x64.ActiveCfg = Release|Any CPU
 		{C107D019-3B4F-403D-9040-ECB6E86C44E9}.Release|x64.Build.0 = Release|Any CPU
+		{C107D019-3B4F-403D-9040-ECB6E86C44E9}.Release|x86.ActiveCfg = Release|Any CPU
+		{C107D019-3B4F-403D-9040-ECB6E86C44E9}.Release|x86.Build.0 = Release|Any CPU
 		{742B4109-544E-492E-86AC-DC1E0FCCA596}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{742B4109-544E-492E-86AC-DC1E0FCCA596}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{742B4109-544E-492E-86AC-DC1E0FCCA596}.Debug|x64.ActiveCfg = Debug|x64
 		{742B4109-544E-492E-86AC-DC1E0FCCA596}.Debug|x64.Build.0 = Debug|x64
+		{742B4109-544E-492E-86AC-DC1E0FCCA596}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{742B4109-544E-492E-86AC-DC1E0FCCA596}.Debug|x86.Build.0 = Debug|Any CPU
 		{742B4109-544E-492E-86AC-DC1E0FCCA596}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{742B4109-544E-492E-86AC-DC1E0FCCA596}.Release|Any CPU.Build.0 = Release|Any CPU
 		{742B4109-544E-492E-86AC-DC1E0FCCA596}.Release|x64.ActiveCfg = Release|Any CPU
 		{742B4109-544E-492E-86AC-DC1E0FCCA596}.Release|x64.Build.0 = Release|Any CPU
-		{6D0D1D93-917E-48EE-977C-16F65DB982BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{6D0D1D93-917E-48EE-977C-16F65DB982BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{6D0D1D93-917E-48EE-977C-16F65DB982BE}.Debug|x64.ActiveCfg = Debug|x64
-		{6D0D1D93-917E-48EE-977C-16F65DB982BE}.Debug|x64.Build.0 = Debug|x64
-		{6D0D1D93-917E-48EE-977C-16F65DB982BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{6D0D1D93-917E-48EE-977C-16F65DB982BE}.Release|Any CPU.Build.0 = Release|Any CPU
-		{6D0D1D93-917E-48EE-977C-16F65DB982BE}.Release|x64.ActiveCfg = Release|x64
-		{6D0D1D93-917E-48EE-977C-16F65DB982BE}.Release|x64.Build.0 = Release|x64
+		{742B4109-544E-492E-86AC-DC1E0FCCA596}.Release|x86.ActiveCfg = Release|Any CPU
+		{742B4109-544E-492E-86AC-DC1E0FCCA596}.Release|x86.Build.0 = Release|Any CPU
+		{0EB901F7-293F-41A3-B1A3-A8C831CCAD85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{0EB901F7-293F-41A3-B1A3-A8C831CCAD85}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{0EB901F7-293F-41A3-B1A3-A8C831CCAD85}.Debug|x64.ActiveCfg = Debug|x64
+		{0EB901F7-293F-41A3-B1A3-A8C831CCAD85}.Debug|x64.Build.0 = Debug|x64
+		{0EB901F7-293F-41A3-B1A3-A8C831CCAD85}.Debug|x86.ActiveCfg = Debug|x86
+		{0EB901F7-293F-41A3-B1A3-A8C831CCAD85}.Debug|x86.Build.0 = Debug|x86
+		{0EB901F7-293F-41A3-B1A3-A8C831CCAD85}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{0EB901F7-293F-41A3-B1A3-A8C831CCAD85}.Release|Any CPU.Build.0 = Release|Any CPU
+		{0EB901F7-293F-41A3-B1A3-A8C831CCAD85}.Release|x64.ActiveCfg = Release|x64
+		{0EB901F7-293F-41A3-B1A3-A8C831CCAD85}.Release|x64.Build.0 = Release|x64
+		{0EB901F7-293F-41A3-B1A3-A8C831CCAD85}.Release|x86.ActiveCfg = Release|x86
+		{0EB901F7-293F-41A3-B1A3-A8C831CCAD85}.Release|x86.Build.0 = Release|x86
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -81,7 +107,7 @@ Global
 		{CC1FEC64-9AD6-4A69-ADF2-038CF67A8590} = {38D87C7D-D5FE-43B8-80CC-1CE70167FB69}
 		{C107D019-3B4F-403D-9040-ECB6E86C44E9} = {38D87C7D-D5FE-43B8-80CC-1CE70167FB69}
 		{742B4109-544E-492E-86AC-DC1E0FCCA596} = {38D87C7D-D5FE-43B8-80CC-1CE70167FB69}
-		{6D0D1D93-917E-48EE-977C-16F65DB982BE} = {38D87C7D-D5FE-43B8-80CC-1CE70167FB69}
+		{0EB901F7-293F-41A3-B1A3-A8C831CCAD85} = {38D87C7D-D5FE-43B8-80CC-1CE70167FB69}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {B30A49F0-1C96-4D6C-A222-0088B1D7FBBE}