1- using System ;
1+ using System ;
22using System . Collections . Generic ;
33using System . Linq ;
44using 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