Skip to content

Commit 4085b7b

Browse files
committed
properly dispose GitProvider; removed SourceControlProviderFactory, kept abstract factory and switched ninject binding to factory extension, which properly disposes the provider instances.
1 parent 0b96108 commit 4085b7b

File tree

4 files changed

+9
-35
lines changed

4 files changed

+9
-35
lines changed

RetailCoder.VBE/Root/RubberduckModule.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
using Rubberduck.UI.UnitTesting;
2727
using Rubberduck.Parsing.Preprocessing;
2828
using System.Globalization;
29-
using Ninject.Activation;
3029
using Ninject.Extensions.Interception.Infrastructure.Language;
3130
using Ninject.Extensions.NamedScope;
3231
using Rubberduck.Parsing.Symbols;
@@ -109,10 +108,6 @@ public override void Load()
109108
.ToSelf()
110109
.InSingletonScope();
111110

112-
Bind<ISourceControlProviderFactory>()
113-
.To<SourceControlProviderFactory>()
114-
.WhenInjectedInto<SourceControlViewViewModel>();
115-
116111
Bind<IDockablePresenter>().To<SourceControlDockablePresenter>()
117112
.WhenInjectedInto(
118113
typeof(ShowSourceControlPanelCommand),

RetailCoder.VBE/UI/SourceControl/SourceControlProviderFactory.cs

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,4 @@ public interface ISourceControlProviderFactory
99
ISourceControlProvider CreateProvider(IVBProject project, IRepository repository);
1010
ISourceControlProvider CreateProvider(IVBProject isAny, IRepository repository, SecureCredentials secureCredentials);
1111
}
12-
13-
public class SourceControlProviderFactory : ISourceControlProviderFactory
14-
{
15-
public ISourceControlProvider CreateProvider(IVBProject project)
16-
{
17-
return new GitProvider(project);
18-
}
19-
20-
public ISourceControlProvider CreateProvider(IVBProject project, IRepository repository)
21-
{
22-
return new GitProvider(project, repository);
23-
}
24-
25-
public ISourceControlProvider CreateProvider(IVBProject project, IRepository repository, SecureCredentials creds)
26-
{
27-
return new GitProvider(project, repository, creds);
28-
}
29-
}
3012
}

Rubberduck.SourceControl/GitProvider.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,11 @@
55
using System.Security;
66
using LibGit2Sharp;
77
using LibGit2Sharp.Handlers;
8-
using Rubberduck.VBEditor.SafeComWrappers;
98
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
10-
using Rubberduck.VBEditor.SafeComWrappers.VBA;
119

1210
namespace Rubberduck.SourceControl
1311
{
14-
public class GitProvider : SourceControlProviderBase // note: why not : IDisposable?
12+
public class GitProvider : SourceControlProviderBase, IDisposable
1513
{
1614
private readonly LibGit2Sharp.Repository _repo;
1715
private readonly LibGit2Sharp.Credentials _credentials;
@@ -42,7 +40,7 @@ public GitProvider(IVBProject project, IRepository repository)
4240
}
4341
}
4442

45-
public GitProvider(VBProject project, IRepository repository, string userName, string passWord)
43+
public GitProvider(IVBProject project, IRepository repository, string userName, string passWord)
4644
: this(project, repository)
4745
{
4846
_credentials = new UsernamePasswordCredentials()
@@ -66,7 +64,7 @@ public GitProvider(IVBProject project, IRepository repository, ICredentials<Secu
6664
_credentialsHandler = (url, user, cred) => _credentials;
6765
}
6866

69-
~GitProvider()
67+
public void Dispose()
7068
{
7169
if (_repo != null)
7270
{

Rubberduck.SourceControl/Interop/GitProvider.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@
44
using System.Linq;
55
using System.Runtime.InteropServices;
66
using System.Security;
7-
using Rubberduck.VBEditor.SafeComWrappers;
8-
using Rubberduck.VBEditor.SafeComWrappers.VBA;
7+
using Rubberduck.VBEditor.SafeComWrappers.Abstract;
98

109
namespace Rubberduck.SourceControl.Interop
1110
{
@@ -16,20 +15,20 @@ namespace Rubberduck.SourceControl.Interop
1615
[Description("VBA Editor integrated access to Git.")]
1716
class GitProvider : SourceControl.GitProvider, ISourceControlProvider
1817
{
19-
public GitProvider(VBProject project)
18+
public GitProvider(IVBProject project)
2019
: base(project)
2120
{ }
2221

23-
public GitProvider(VBProject project, IRepository repository)
22+
public GitProvider(IVBProject project, IRepository repository)
2423
: base(project, repository)
2524
{ }
2625

27-
[Obsolete]
28-
public GitProvider(VBProject project, IRepository repository, string userName, string passWord)
26+
[Obsolete("Use the ICredentials overload instead.")]
27+
public GitProvider(IVBProject project, IRepository repository, string userName, string passWord)
2928
: base(project, repository, userName, passWord)
3029
{ }
3130

32-
public GitProvider(VBProject project, IRepository repository, ICredentials credentials)
31+
public GitProvider(IVBProject project, IRepository repository, ICredentials credentials)
3332
:base(project, repository, credentials.Username, credentials.Password)
3433
{ }
3534

0 commit comments

Comments
 (0)