Skip to content

Commit bac207b

Browse files
authored
Merge pull request #362 from dotnetcore/opt-iss359
optimization: more clear exception message for not found
2 parents 3cdf2a5 + 2a3e49e commit bac207b

File tree

15 files changed

+81
-66
lines changed

15 files changed

+81
-66
lines changed

build/version.props

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
<Project>
22
<PropertyGroup>
3-
<EasyCachingCorePackageVersion>1.5.2</EasyCachingCorePackageVersion>
4-
<EasyCachingMemcachedPackageVersion>1.5.2</EasyCachingMemcachedPackageVersion>
5-
<EasyCachingRedisPackageVersion>1.5.2</EasyCachingRedisPackageVersion>
6-
<EasyCachingSQLitePackageVersion>1.5.2</EasyCachingSQLitePackageVersion>
7-
<EasyCachingInMemoryPackageVersion>1.5.2</EasyCachingInMemoryPackageVersion>
8-
<EasyCachingHybridPackageVersion>1.5.2</EasyCachingHybridPackageVersion>
9-
<EasyCachingAspectCorePackageVersion>1.5.2</EasyCachingAspectCorePackageVersion>
10-
<EasyCachingCastlePackageVersion>1.5.2</EasyCachingCastlePackageVersion>
11-
<EasyCachingResponseCachingPackageVersion>1.5.2</EasyCachingResponseCachingPackageVersion>
12-
<EasyCachingJsonPackageVersion>1.5.2</EasyCachingJsonPackageVersion>
13-
<EasyCachingMessagePackPackageVersion>1.5.2</EasyCachingMessagePackPackageVersion>
14-
<EasyCachingProtobufPackageVersion>1.5.2</EasyCachingProtobufPackageVersion>
15-
<EasyCachingCSRedisPackageVersion>1.5.3</EasyCachingCSRedisPackageVersion>
16-
<EasyCachingRedisBusPackageVersion>1.5.2</EasyCachingRedisBusPackageVersion>
17-
<EasyCachingCSRedisBusPackageVersion>1.5.2</EasyCachingCSRedisBusPackageVersion>
18-
<EasyCachingRabbitBusPackageVersion>1.5.2</EasyCachingRabbitBusPackageVersion>
19-
<EasyCachingDiskPackageVersion>1.5.2</EasyCachingDiskPackageVersion>
20-
<EasyCachingMsExtPackageVersion>1.5.2</EasyCachingMsExtPackageVersion>
21-
<EasyCachingLiteDBPackageVersion>1.5.2</EasyCachingLiteDBPackageVersion>
22-
<EasyCachingSTJsonPackageVersion>1.5.2</EasyCachingSTJsonPackageVersion>
3+
<EasyCachingCorePackageVersion>1.6.0</EasyCachingCorePackageVersion>
4+
<EasyCachingMemcachedPackageVersion>1.6.0</EasyCachingMemcachedPackageVersion>
5+
<EasyCachingRedisPackageVersion>1.6.0</EasyCachingRedisPackageVersion>
6+
<EasyCachingSQLitePackageVersion>1.6.0</EasyCachingSQLitePackageVersion>
7+
<EasyCachingInMemoryPackageVersion>1.6.0</EasyCachingInMemoryPackageVersion>
8+
<EasyCachingHybridPackageVersion>1.6.0</EasyCachingHybridPackageVersion>
9+
<EasyCachingAspectCorePackageVersion>1.6.0</EasyCachingAspectCorePackageVersion>
10+
<EasyCachingCastlePackageVersion>1.6.0</EasyCachingCastlePackageVersion>
11+
<EasyCachingResponseCachingPackageVersion>1.6.0</EasyCachingResponseCachingPackageVersion>
12+
<EasyCachingJsonPackageVersion>1.6.0</EasyCachingJsonPackageVersion>
13+
<EasyCachingMessagePackPackageVersion>1.6.0</EasyCachingMessagePackPackageVersion>
14+
<EasyCachingProtobufPackageVersion>1.6.0</EasyCachingProtobufPackageVersion>
15+
<EasyCachingCSRedisPackageVersion>1.6.0</EasyCachingCSRedisPackageVersion>
16+
<EasyCachingRedisBusPackageVersion>1.6.0</EasyCachingRedisBusPackageVersion>
17+
<EasyCachingCSRedisBusPackageVersion>1.6.0</EasyCachingCSRedisBusPackageVersion>
18+
<EasyCachingRabbitBusPackageVersion>1.6.0</EasyCachingRabbitBusPackageVersion>
19+
<EasyCachingDiskPackageVersion>1.6.0</EasyCachingDiskPackageVersion>
20+
<EasyCachingMsExtPackageVersion>1.6.0</EasyCachingMsExtPackageVersion>
21+
<EasyCachingLiteDBPackageVersion>1.6.0</EasyCachingLiteDBPackageVersion>
22+
<EasyCachingSTJsonPackageVersion>1.6.0</EasyCachingSTJsonPackageVersion>
2323
</PropertyGroup>
2424
</Project>

src/EasyCaching.CSRedis/DefaultCSRedisCachingProvider.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,15 @@ public DefaultCSRedisCachingProvider(
8686
this._name = name;
8787
this._options = options;
8888
this._logger = loggerFactory?.CreateLogger<DefaultCSRedisCachingProvider>();
89-
this._cache = clients.Single(x => x.Name.Equals(_name));
89+
this._cache = clients.FirstOrDefault(x => x.Name.Equals(_name));
90+
91+
if (this._cache == null) throw new EasyCachingNotFoundException(string.Format(EasyCachingConstValue.NotFoundCliExceptionMessage, _name));
92+
9093
this._cacheStats = new CacheStats();
9194

92-
this._serializer = !string.IsNullOrWhiteSpace(options.SerializerName)
93-
? serializers.Single(x => x.Name.Equals(options.SerializerName))
94-
: serializers.FirstOrDefault(x => x.Name.Equals(_name)) ?? serializers.Single(x => x.Name.Equals(EasyCachingConstValue.DefaultSerializerName));
95+
var serName = !string.IsNullOrWhiteSpace(options.SerializerName) ? options.SerializerName : _name;
96+
this._serializer = serializers.FirstOrDefault(x => x.Name.Equals(serName));
97+
if (this._serializer == null) throw new EasyCachingNotFoundException(string.Format(EasyCachingConstValue.NotFoundSerExceptionMessage, serName));
9598

9699
this.ProviderName = this._name;
97100
this.ProviderType = CachingProviderType.Redis;
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
namespace EasyCaching.Core
2+
{
3+
using System;
4+
5+
public class EasyCachingException : Exception
6+
{
7+
public EasyCachingException(string message)
8+
: base(message)
9+
{
10+
}
11+
}
12+
13+
public class EasyCachingNotFoundException : Exception
14+
{
15+
public EasyCachingNotFoundException(string message)
16+
: base(message)
17+
{
18+
}
19+
}
20+
}

src/EasyCaching.Core/Internal/EasyCachingConstValue.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,5 +103,9 @@ public class EasyCachingConstValue
103103
/// The LiteDB Bus section.
104104
/// </summary>
105105
public const string LiteDBSection= "easycaching:litedb";
106+
107+
public const string NotFoundCliExceptionMessage = "Can not find the matched client instance, client name is {0}";
108+
109+
public const string NotFoundSerExceptionMessage = "Can not find the matched serializer instance, serializer name is {0}";
106110
}
107111
}

src/EasyCaching.LiteDB/DefaultLiteDBCachingProvider.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ public DefaultLiteDBCachingProvider(
5252
LiteDBOptions options,
5353
ILoggerFactory loggerFactory = null)
5454
{
55-
this._dbProvider = dbProviders.Single(x => x.DBProviderName.Equals(name));
55+
this._dbProvider = dbProviders.FirstOrDefault(x => x.DBProviderName.Equals(name));
56+
if (this._dbProvider == null) throw new EasyCachingNotFoundException(string.Format(EasyCachingConstValue.NotFoundCliExceptionMessage, _name));
57+
5658
this._options = options;
5759
this._logger = loggerFactory?.CreateLogger<DefaultLiteDBCachingProvider>();
5860
this._litedb = _dbProvider.GetConnection();

src/EasyCaching.Memcached/DefaultMemcachedCachingProvider.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,9 @@ public DefaultMemcachedCachingProvider(
7777
: base(factory, options)
7878
{
7979
this._name = name;
80-
this._memcachedClient = memcachedClients.Single(x => x.Name.Equals(this._name));
80+
this._memcachedClient = memcachedClients.FirstOrDefault(x => x.Name.Equals(this._name));
81+
if (this._memcachedClient == null) throw new EasyCachingNotFoundException(string.Format(EasyCachingConstValue.NotFoundCliExceptionMessage, _name));
82+
8183
this._options = options;
8284
this._logger = loggerFactory?.CreateLogger<DefaultMemcachedCachingProvider>();
8385
this._cacheStats = new CacheStats();

src/EasyCaching.Redis/DefaultRedisCachingProvider.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,16 +98,19 @@ public DefaultRedisCachingProvider(
9898
ArgumentCheck.NotNullAndCountGTZero(serializers, nameof(serializers));
9999

100100
this._name = name;
101-
this._dbProvider = dbProviders.Single(x => x.DBProviderName.Equals(name));
101+
this._dbProvider = dbProviders.FirstOrDefault(x => x.DBProviderName.Equals(name));
102+
if (this._dbProvider == null) throw new EasyCachingNotFoundException(string.Format(EasyCachingConstValue.NotFoundCliExceptionMessage, _name));
103+
102104
this._options = options;
103105
this._logger = loggerFactory?.CreateLogger<DefaultRedisCachingProvider>();
104106
this._cache = _dbProvider.GetDatabase();
105107
this._servers = _dbProvider.GetServerList();
106108
this._cacheStats = new CacheStats();
107109

108-
this._serializer = !string.IsNullOrWhiteSpace(options.SerializerName)
109-
? serializers.Single(x => x.Name.Equals(options.SerializerName))
110-
: serializers.FirstOrDefault(x => x.Name.Equals(_name)) ?? serializers.Single(x => x.Name.Equals(EasyCachingConstValue.DefaultSerializerName));
110+
var serName = !string.IsNullOrWhiteSpace(options.SerializerName) ? options.SerializerName : _name;
111+
112+
this._serializer = serializers.FirstOrDefault(x => x.Name.Equals(serName));
113+
if (this._serializer == null) throw new EasyCachingNotFoundException(string.Format(EasyCachingConstValue.NotFoundSerExceptionMessage, serName));
111114

112115
this.ProviderName = this._name;
113116
this.ProviderType = CachingProviderType.Redis;

test/EasyCaching.UnitTests/CachingTests/CSRedisCachingProviderTest.cs

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ protected override IEasyCachingProvider CreateCachingProvider(Action<BaseProvide
3333
}
3434
};
3535
additionalSetup(options);
36-
}).UseCSRedisLock());
36+
}).UseCSRedisLock().WithJson(EasyCachingConstValue.DefaultCSRedisName));
3737

3838
IServiceProvider serviceProvider = services.BuildServiceProvider();
3939
return serviceProvider.GetService<IEasyCachingProvider>();
@@ -91,18 +91,6 @@ public CSRedisCachingProviderWithNamedSerTest()
9191

9292
}, "cs2");
9393

94-
option.UseCSRedis(config =>
95-
{
96-
config.DBConfig = new CSRedisDBOptions
97-
{
98-
ConnectionStrings = new System.Collections.Generic.List<string>
99-
{
100-
"127.0.0.1:6388,defaultDatabase=3,poolsize=10"
101-
}
102-
};
103-
104-
}, "cs3");
105-
10694
option.WithJson("json").WithMessagePack("cs11").WithJson("cs2");
10795
});
10896

@@ -115,15 +103,12 @@ public void NamedSerializerTest()
115103
{
116104
var cs1 = _providerFactory.GetCachingProvider("cs1");
117105
var cs2 = _providerFactory.GetCachingProvider("cs2");
118-
var cs3 = _providerFactory.GetCachingProvider("cs3");
119106

120107
var info1 = cs1.GetProviderInfo();
121108
var info2 = cs2.GetProviderInfo();
122-
var info3 = cs3.GetProviderInfo();
123109

124110
Assert.Equal("cs11", info1.Serializer.Name);
125111
Assert.Equal("cs2", info2.Serializer.Name);
126-
Assert.Equal(EasyCachingConstValue.DefaultSerializerName, info3.Serializer.Name);
127112
}
128113
}
129114

test/EasyCaching.UnitTests/CachingTests/CSRedisFeatureCachingProviderTest.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public CSRedisFeatureCachingProviderTest()
1212
IServiceCollection services = new ServiceCollection();
1313
services.AddEasyCaching(option =>
1414
{
15+
option.WithJson("ser");
1516
option.UseCSRedis(config =>
1617
{
1718
config.DBConfig = new CSRedisDBOptions
@@ -21,6 +22,7 @@ public CSRedisFeatureCachingProviderTest()
2122
"127.0.0.1:6388,defaultDatabase=10,poolsize=10"
2223
}
2324
};
25+
config.SerializerName = "ser";
2426
});
2527
});
2628

test/EasyCaching.UnitTests/CachingTests/HybridCachingTest.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public HybridCachingTest()
4949
{
5050
config.DBConfig.Endpoints.Add(new Core.Configurations.ServerEndPoint("127.0.0.1", 6379));
5151
config.DBConfig.Database = 5;
52-
}, "myredis");
52+
}, "myredis").WithJson("myredis");
5353

5454
option.UseHybrid(config =>
5555
{
@@ -63,6 +63,7 @@ public HybridCachingTest()
6363
{
6464
config.Endpoints.Add(new Core.Configurations.ServerEndPoint("127.0.0.1", 6379));
6565
config.Database = 6;
66+
config.SerializerName = "myredis";
6667
});
6768
});
6869

0 commit comments

Comments
 (0)