Skip to content

Commit 0da98f7

Browse files
committed
refactor: make ParseAssemblyName static and enhance error handling in assembly name parsing
1 parent 0f88519 commit 0da98f7

File tree

2 files changed

+24
-23
lines changed

2 files changed

+24
-23
lines changed

libraries/src/AWS.Lambda.Powertools.Common/Core/PowertoolsEnvironment.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -117,26 +117,26 @@ public void SetExecutionEnvironment<T>(T type)
117117
/// </summary>
118118
/// <param name="assemblyName"></param>
119119
/// <returns></returns>
120-
internal string ParseAssemblyName(string assemblyName)
120+
internal static string ParseAssemblyName(string assemblyName)
121121
{
122122
// Use cache to avoid repeated string operations
123-
return ParsedAssemblyNameCache.GetOrAdd(assemblyName, name =>
123+
try
124124
{
125-
try
125+
return ParsedAssemblyNameCache.GetOrAdd(assemblyName, name =>
126126
{
127127
var lastDotIndex = name.LastIndexOf('.');
128128
if (lastDotIndex >= 0 && lastDotIndex < name.Length - 1)
129129
{
130130
var parsedName = name.Substring(lastDotIndex + 1);
131131
return $"{Constants.FeatureContextIdentifier}/{parsedName}";
132132
}
133-
}
134-
catch
135-
{
136-
//NOOP
137-
}
138133

139-
return $"{Constants.FeatureContextIdentifier}/{name}";
140-
});
134+
return $"{Constants.FeatureContextIdentifier}/{name}";
135+
});
136+
}
137+
catch (Exception e)
138+
{
139+
return string.Empty;
140+
}
141141
}
142142
}

libraries/tests/AWS.Lambda.Powertools.Common.Tests/Core/PowertoolsEnvironmentTest.cs

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -235,11 +235,8 @@ public void GetAssemblyVersion_Should_Handle_Regular_Object()
235235
[Fact]
236236
public void ParseAssemblyName_Should_Handle_Assembly_Without_Dots()
237237
{
238-
// Arrange
239-
var powertoolsEnv = new PowertoolsEnvironment();
240-
241238
// Act
242-
var result = powertoolsEnv.ParseAssemblyName("SimpleAssemblyName");
239+
var result = PowertoolsEnvironment.ParseAssemblyName("SimpleAssemblyName");
243240

244241
// Assert
245242
Assert.Equal($"{Constants.FeatureContextIdentifier}/SimpleAssemblyName", result);
@@ -248,11 +245,8 @@ public void ParseAssemblyName_Should_Handle_Assembly_Without_Dots()
248245
[Fact]
249246
public void ParseAssemblyName_Should_Handle_Assembly_With_Dots()
250247
{
251-
// Arrange
252-
var powertoolsEnv = new PowertoolsEnvironment();
253-
254248
// Act
255-
var result = powertoolsEnv.ParseAssemblyName("AWS.Lambda.Powertools.Common");
249+
var result = PowertoolsEnvironment.ParseAssemblyName("AWS.Lambda.Powertools.Common");
256250

257251
// Assert
258252
Assert.Equal($"{Constants.FeatureContextIdentifier}/Common", result);
@@ -261,18 +255,25 @@ public void ParseAssemblyName_Should_Handle_Assembly_With_Dots()
261255
[Fact]
262256
public void ParseAssemblyName_Should_Use_Cache_For_Same_Assembly_Name()
263257
{
264-
// Arrange
265-
var powertoolsEnv = new PowertoolsEnvironment();
266-
267258
// Act - Call twice with same assembly name
268-
var result1 = powertoolsEnv.ParseAssemblyName("AWS.Lambda.Powertools.Tests");
269-
var result2 = powertoolsEnv.ParseAssemblyName("AWS.Lambda.Powertools.Tests");
259+
var result1 = PowertoolsEnvironment.ParseAssemblyName("AWS.Lambda.Powertools.Tests");
260+
var result2 = PowertoolsEnvironment.ParseAssemblyName("AWS.Lambda.Powertools.Tests");
270261

271262
// Assert - Should return same result (cached)
272263
Assert.Equal(result1, result2);
273264
Assert.Equal($"{Constants.FeatureContextIdentifier}/Tests", result1);
274265
}
275266

267+
[Fact]
268+
public void ParseAssemblyName_Null_Return_Empty()
269+
{
270+
// Act - Call twice with same assembly name
271+
var result = PowertoolsEnvironment.ParseAssemblyName(null);
272+
273+
// Assert - Should return null
274+
Assert.Empty(result);
275+
}
276+
276277
[Fact]
277278
public void SetExecutionEnvironment_Should_Handle_Empty_Current_Environment()
278279
{

0 commit comments

Comments
 (0)