Skip to content

Commit 6e5eb2d

Browse files
committed
TfsUserMappingTool: Make user map public
1 parent af5270e commit 6e5eb2d

File tree

1 file changed

+21
-20
lines changed

1 file changed

+21
-20
lines changed

src/MigrationTools.Clients.TfsObjectModel/Tools/TfsUserMappingTool.cs

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.Collections.Generic;
33
using System.Linq;
44
using Microsoft.Extensions.Logging;
@@ -19,8 +19,14 @@ public class TfsUserMappingTool : Tool<TfsUserMappingToolOptions>
1919
{
2020
new public TfsUserMappingToolOptions Options => (TfsUserMappingToolOptions)base.Options;
2121

22-
public TfsUserMappingTool(IOptions<TfsUserMappingToolOptions> options, IServiceProvider services, ILogger<TfsUserMappingTool> logger, ITelemetryLogger telemetryLogger) : base(options, services, logger, telemetryLogger)
22+
public TfsUserMappingTool(
23+
IOptions<TfsUserMappingToolOptions> options,
24+
IServiceProvider services,
25+
ILogger<TfsUserMappingTool> logger,
26+
ITelemetryLogger telemetryLogger)
27+
: base(options, services, logger, telemetryLogger)
2328
{
29+
UserMappings = new Lazy<Dictionary<string, string>>(GetMappingFileData);
2430
}
2531

2632
private readonly CaseInsensitiveStringComparer _workItemNameComparer = new();
@@ -53,40 +59,35 @@ public void MapUserIdentityField(Field field)
5359
if (Options.Enabled && Options.IdentityFieldsToCheck.Contains(field.ReferenceName))
5460
{
5561
Log.LogDebug($"TfsUserMappingTool::MapUserIdentityField [ReferenceName|{field.ReferenceName}]");
56-
var mapps = GetMappingFileData();
57-
if (mapps != null && mapps.ContainsKey(field.Value.ToString()))
62+
if (UserMappings.Value.ContainsKey(field.Value.ToString()))
5863
{
5964
var original = field.Value;
60-
field.Value = mapps[field.Value.ToString()];
65+
field.Value = UserMappings.Value[field.Value.ToString()];
6166
Log.LogDebug($"TfsUserMappingTool::MapUserIdentityField::Map:[original|{original}][new|{field.Value}]");
6267
}
6368
}
6469
}
6570

66-
private Dictionary<string, string> _UserMappings = null;
71+
public Lazy<Dictionary<string, string>> UserMappings { get; }
6772

6873
private Dictionary<string, string> GetMappingFileData()
6974
{
7075
if (!System.IO.File.Exists(Options.UserMappingFile))
7176
{
7277
Log.LogError("TfsUserMappingTool::GetMappingFileData:: The UserMappingFile '{UserMappingFile}' cant be found! Provide a valid file or disable TfsUserMappingTool!", Options.UserMappingFile);
73-
_UserMappings = new Dictionary<string, string>();
78+
return [];
7479
}
75-
if (_UserMappings == null)
80+
var fileData = System.IO.File.ReadAllText(Options.UserMappingFile);
81+
try
7682
{
77-
var fileData = System.IO.File.ReadAllText(Options.UserMappingFile);
78-
try
79-
{
80-
var fileMaps = Newtonsoft.Json.JsonConvert.DeserializeObject<List<IdentityMapData>>(fileData);
81-
_UserMappings = fileMaps.ToDictionary(x => x.Source.DisplayName, x => x.Target?.DisplayName);
82-
}
83-
catch (Exception)
84-
{
85-
_UserMappings = new Dictionary<string, string>();
86-
Log.LogError($"TfsUserMappingTool::GetMappingFileData [UserMappingFile|{Options.UserMappingFile}] <-- invalid - No mapping are applied!");
87-
}
83+
var fileMaps = Newtonsoft.Json.JsonConvert.DeserializeObject<List<IdentityMapData>>(fileData);
84+
return fileMaps.ToDictionary(x => x.Source.DisplayName, x => x.Target?.DisplayName);
85+
}
86+
catch (Exception)
87+
{
88+
Log.LogError($"TfsUserMappingTool::GetMappingFileData [UserMappingFile|{Options.UserMappingFile}] <-- invalid - No mapping are applied!");
8889
}
89-
return _UserMappings;
90+
return [];
9091
}
9192

9293
private List<IdentityItemData> GetUsersListFromServer(IGroupSecurityService gss)

0 commit comments

Comments
 (0)