3
3
4
4
namespace Atlassian . Bitbucket
5
5
{
6
- public class OAuth2ClientRegistry : IRegistry < BitbucketOAuth2Client >
6
+ public class OAuth2ClientRegistry : DisposableObject , IRegistry < BitbucketOAuth2Client >
7
7
{
8
- private readonly HttpClient http ;
9
- private ISettings settings ;
10
- private readonly ITrace trace ;
11
- private readonly ITrace2 trace2 ;
12
- private Cloud . BitbucketOAuth2Client cloudClient ;
13
- private DataCenter . BitbucketOAuth2Client dataCenterClient ;
8
+ private readonly ICommandContext _context ;
9
+
10
+ private HttpClient _httpClient ;
11
+ private Cloud . BitbucketOAuth2Client _cloudClient ;
12
+ private DataCenter . BitbucketOAuth2Client _dataCenterClient ;
14
13
15
14
public OAuth2ClientRegistry ( ICommandContext context )
16
15
{
17
- this . http = context . HttpClientFactory . CreateClient ( ) ;
18
- this . settings = context . Settings ;
19
- this . trace = context . Trace ;
20
- this . trace2 = context . Trace2 ;
16
+ EnsureArgument . NotNull ( context , nameof ( context ) ) ;
17
+ _context = context ;
21
18
}
22
19
23
20
public BitbucketOAuth2Client Get ( InputArguments input )
@@ -30,15 +27,20 @@ public BitbucketOAuth2Client Get(InputArguments input)
30
27
return CloudClient ;
31
28
}
32
29
33
- public void Dispose ( )
30
+ protected override void ReleaseManagedResources ( )
34
31
{
35
- http . Dispose ( ) ;
36
- settings . Dispose ( ) ;
37
- cloudClient = null ;
38
- dataCenterClient = null ;
32
+ _httpClient ? . Dispose ( ) ;
33
+ _cloudClient = null ;
34
+ _dataCenterClient = null ;
35
+ base . ReleaseManagedResources ( ) ;
39
36
}
40
37
41
- private Cloud . BitbucketOAuth2Client CloudClient => cloudClient ??= new Cloud . BitbucketOAuth2Client ( http , settings , trace2 ) ;
42
- private DataCenter . BitbucketOAuth2Client DataCenterClient => dataCenterClient ??= new DataCenter . BitbucketOAuth2Client ( http , settings , trace2 ) ;
38
+ private HttpClient HttpClient => _httpClient ??= _context . HttpClientFactory . CreateClient ( ) ;
39
+
40
+ private Cloud . BitbucketOAuth2Client CloudClient =>
41
+ _cloudClient ??= new Cloud . BitbucketOAuth2Client ( HttpClient , _context . Settings , _context . Trace2 ) ;
42
+
43
+ private DataCenter . BitbucketOAuth2Client DataCenterClient =>
44
+ _dataCenterClient ??= new DataCenter . BitbucketOAuth2Client ( HttpClient , _context . Settings , _context . Trace2 ) ;
43
45
}
44
46
}
0 commit comments