Skip to content

Commit 01dd6fa

Browse files
Avoid custom registration for the Json serializer (#117)
1 parent a8ad6d6 commit 01dd6fa

File tree

4 files changed

+12
-16
lines changed

4 files changed

+12
-16
lines changed

CoreDistributedCache/NHibernate.Caches.CoreDistributedCache.Tests/Async/CoreDistributedCacheFixture.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public async Task CanUseCacheKeyWithJsonSerializerAsync()
7878
const string value = "valuePut";
7979

8080
var props = GetDefaultProperties();
81-
props["cache.serializer"] = typeof(DistributedCacheJsonSerializer).AssemblyQualifiedName;
81+
props["cache.serializer"] = typeof(JsonCacheSerializer).AssemblyQualifiedName;
8282
var cache = (CacheBase) DefaultProvider.BuildCache(DefaultRegion, props);
8383
// Due to async version, it may already be there.
8484
await (cache.RemoveAsync(key, CancellationToken.None));

CoreDistributedCache/NHibernate.Caches.CoreDistributedCache.Tests/CoreDistributedCacheFixture.cs

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public void CanUseCacheKeyWithJsonSerializer()
7373
const string value = "valuePut";
7474

7575
var props = GetDefaultProperties();
76-
props["cache.serializer"] = typeof(DistributedCacheJsonSerializer).AssemblyQualifiedName;
76+
props["cache.serializer"] = typeof(JsonCacheSerializer).AssemblyQualifiedName;
7777
var cache = (CacheBase) DefaultProvider.BuildCache(DefaultRegion, props);
7878
// Due to async version, it may already be there.
7979
cache.Remove(key);
@@ -85,13 +85,5 @@ public void CanUseCacheKeyWithJsonSerializer()
8585
Assert.That(item, Is.Not.Null, "Unable to retrieve cached item");
8686
Assert.That(item, Is.EqualTo(value), "didn't return the item we added");
8787
}
88-
89-
private class DistributedCacheJsonSerializer : JsonCacheSerializer
90-
{
91-
public DistributedCacheJsonSerializer()
92-
{
93-
RegisterType(typeof(Tuple<string, object>), "tso");
94-
}
95-
}
9688
}
9789
}

CoreDistributedCache/NHibernate.Caches.CoreDistributedCache/Async/CoreDistributedCache.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,10 @@ public override async Task<object> GetAsync(object key, CancellationToken cancel
4040
if (cachedData == null)
4141
return null;
4242

43-
var entry = _serializer.Deserialize(cachedData) as Tuple<string, object>;
44-
return Equals(entry?.Item1, fullKey) ? entry.Item2 : null;
43+
var entry = _serializer.Deserialize(cachedData) as object[];
44+
if (entry == null || entry.Length != 2)
45+
return null;
46+
return Equals(entry[0], fullKey) ? entry[1] : null;
4547
}
4648

4749
/// <inheritdoc />
@@ -64,7 +66,7 @@ public override Task PutAsync(object key, object value, CancellationToken cancel
6466
{
6567

6668
var (fullKey, cacheKey) = GetCacheKey(key);
67-
var entry = new Tuple<string, object>(fullKey, value);
69+
var entry = new object[] { fullKey, value };
6870
var cachedData = _serializer.Serialize(entry);
6971

7072
var options = new DistributedCacheEntryOptions();

CoreDistributedCache/NHibernate.Caches.CoreDistributedCache/CoreDistributedCache.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -357,8 +357,10 @@ public override object Get(object key)
357357
if (cachedData == null)
358358
return null;
359359

360-
var entry = _serializer.Deserialize(cachedData) as Tuple<string, object>;
361-
return Equals(entry?.Item1, fullKey) ? entry.Item2 : null;
360+
var entry = _serializer.Deserialize(cachedData) as object[];
361+
if (entry == null || entry.Length != 2)
362+
return null;
363+
return Equals(entry[0], fullKey) ? entry[1] : null;
362364
}
363365

364366
/// <inheritdoc />
@@ -375,7 +377,7 @@ public override void Put(object key, object value)
375377
}
376378

377379
var (fullKey, cacheKey) = GetCacheKey(key);
378-
var entry = new Tuple<string, object>(fullKey, value);
380+
var entry = new object[] { fullKey, value };
379381
var cachedData = _serializer.Serialize(entry);
380382

381383
var options = new DistributedCacheEntryOptions();

0 commit comments

Comments
 (0)