aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2020-04-02 21:00:43 +1000
committerSean Hall <r.sean.hall@gmail.com>2020-04-02 21:34:24 +1000
commit7027e259b8987e425362ee8248e5d0efe8003d51 (patch)
tree7745b9055aecb9817bfa51576c81dd7efc38c019 /src
parent177784c9a6d93eeb3c195e6d62b97eb4c1dde32b (diff)
downloadwix-7027e259b8987e425362ee8248e5d0efe8003d51.tar.gz
wix-7027e259b8987e425362ee8248e5d0efe8003d51.tar.bz2
wix-7027e259b8987e425362ee8248e5d0efe8003d51.zip
Hide the concrete implementation of the service provider interfaces
by adding WixToolsetServiceProviderFactory. This forces consumers to code to the interfaces.
Diffstat (limited to 'src')
-rw-r--r--src/WixToolset.Core.TestPackage/WixRunner.cs4
-rw-r--r--src/WixToolset.Core/ExtensibilityServices/ExtensionManager.cs6
-rw-r--r--src/WixToolset.Core/WixToolsetServiceProvider.cs2
-rw-r--r--src/WixToolset.Core/WixToolsetServiceProviderFactory.cs14
-rw-r--r--src/test/Example.Extension/ExampleExtensionFactory.cs5
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/LinkerFixture.cs2
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/ParseFixture.cs2
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs2
-rw-r--r--src/test/WixToolsetTest.CoreIntegration/VariableResolverFixture.cs2
9 files changed, 27 insertions, 12 deletions
diff --git a/src/WixToolset.Core.TestPackage/WixRunner.cs b/src/WixToolset.Core.TestPackage/WixRunner.cs
index 39c4d2f7..082e9e10 100644
--- a/src/WixToolset.Core.TestPackage/WixRunner.cs
+++ b/src/WixToolset.Core.TestPackage/WixRunner.cs
@@ -12,13 +12,13 @@ namespace WixToolset.Core.TestPackage
12 { 12 {
13 public static int Execute(string[] args, out List<Message> messages) 13 public static int Execute(string[] args, out List<Message> messages)
14 { 14 {
15 var serviceProvider = new WixToolsetServiceProvider(); 15 var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider();
16 return Execute(args, serviceProvider, out messages); 16 return Execute(args, serviceProvider, out messages);
17 } 17 }
18 18
19 public static WixRunnerResult Execute(params string[] args) 19 public static WixRunnerResult Execute(params string[] args)
20 { 20 {
21 var serviceProvider = new WixToolsetServiceProvider(); 21 var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider();
22 var exitCode = Execute(args, serviceProvider, out var messages); 22 var exitCode = Execute(args, serviceProvider, out var messages);
23 return new WixRunnerResult { ExitCode = exitCode, Messages = messages.ToArray() }; 23 return new WixRunnerResult { ExitCode = exitCode, Messages = messages.ToArray() };
24 } 24 }
diff --git a/src/WixToolset.Core/ExtensibilityServices/ExtensionManager.cs b/src/WixToolset.Core/ExtensibilityServices/ExtensionManager.cs
index d80f25a2..97216479 100644
--- a/src/WixToolset.Core/ExtensibilityServices/ExtensionManager.cs
+++ b/src/WixToolset.Core/ExtensibilityServices/ExtensionManager.cs
@@ -16,12 +16,12 @@ namespace WixToolset.Core.ExtensibilityServices
16 private List<IExtensionFactory> extensionFactories = new List<IExtensionFactory>(); 16 private List<IExtensionFactory> extensionFactories = new List<IExtensionFactory>();
17 private Dictionary<Type, List<object>> loadedExtensionsByType = new Dictionary<Type, List<object>>(); 17 private Dictionary<Type, List<object>> loadedExtensionsByType = new Dictionary<Type, List<object>>();
18 18
19 public ExtensionManager(IServiceProvider serviceProvider) 19 public ExtensionManager(IWixToolsetCoreServiceProvider serviceProvider)
20 { 20 {
21 this.ServiceProvider = serviceProvider; 21 this.ServiceProvider = serviceProvider;
22 } 22 }
23 23
24 private IServiceProvider ServiceProvider { get; } 24 private IWixToolsetCoreServiceProvider ServiceProvider { get; }
25 25
26 public void Add(Assembly extensionAssembly) 26 public void Add(Assembly extensionAssembly)
27 { 27 {
@@ -33,7 +33,7 @@ namespace WixToolset.Core.ExtensibilityServices
33 33
34 private IExtensionFactory CreateExtensionFactory(Type type) 34 private IExtensionFactory CreateExtensionFactory(Type type)
35 { 35 {
36 var constructor = type.GetConstructor(new[] { typeof(IServiceProvider) }); 36 var constructor = type.GetConstructor(new[] { typeof(IWixToolsetCoreServiceProvider) });
37 if (constructor != null) 37 if (constructor != null)
38 { 38 {
39 return (IExtensionFactory)constructor.Invoke(new[] { this.ServiceProvider }); 39 return (IExtensionFactory)constructor.Invoke(new[] { this.ServiceProvider });
diff --git a/src/WixToolset.Core/WixToolsetServiceProvider.cs b/src/WixToolset.Core/WixToolsetServiceProvider.cs
index 68def7a8..2cd097a4 100644
--- a/src/WixToolset.Core/WixToolsetServiceProvider.cs
+++ b/src/WixToolset.Core/WixToolsetServiceProvider.cs
@@ -10,7 +10,7 @@ namespace WixToolset.Core
10 using WixToolset.Extensibility.Data; 10 using WixToolset.Extensibility.Data;
11 using WixToolset.Extensibility.Services; 11 using WixToolset.Extensibility.Services;
12 12
13 public sealed class WixToolsetServiceProvider : IWixToolsetCoreServiceProvider 13 internal class WixToolsetServiceProvider : IWixToolsetCoreServiceProvider
14 { 14 {
15 public WixToolsetServiceProvider() 15 public WixToolsetServiceProvider()
16 { 16 {
diff --git a/src/WixToolset.Core/WixToolsetServiceProviderFactory.cs b/src/WixToolset.Core/WixToolsetServiceProviderFactory.cs
new file mode 100644
index 00000000..51e7a447
--- /dev/null
+++ b/src/WixToolset.Core/WixToolsetServiceProviderFactory.cs
@@ -0,0 +1,14 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.Core
4{
5 using WixToolset.Extensibility.Services;
6
7 public static class WixToolsetServiceProviderFactory
8 {
9 public static IWixToolsetCoreServiceProvider CreateServiceProvider()
10 {
11 return new WixToolsetServiceProvider();
12 }
13 }
14}
diff --git a/src/test/Example.Extension/ExampleExtensionFactory.cs b/src/test/Example.Extension/ExampleExtensionFactory.cs
index ee9641a2..e54561ee 100644
--- a/src/test/Example.Extension/ExampleExtensionFactory.cs
+++ b/src/test/Example.Extension/ExampleExtensionFactory.cs
@@ -4,12 +4,13 @@ namespace Example.Extension
4{ 4{
5 using System; 5 using System;
6 using WixToolset.Extensibility; 6 using WixToolset.Extensibility;
7 using WixToolset.Extensibility.Services;
7 8
8 public class ExampleExtensionFactory : IExtensionFactory 9 public class ExampleExtensionFactory : IExtensionFactory
9 { 10 {
10 private ExamplePreprocessorExtensionAndCommandLine preprocessorExtension; 11 private ExamplePreprocessorExtensionAndCommandLine preprocessorExtension;
11 12
12 public ExampleExtensionFactory(IServiceProvider serviceProvider) 13 public ExampleExtensionFactory(IWixToolsetCoreServiceProvider serviceProvider)
13 { 14 {
14 this.ServiceProvider = serviceProvider; 15 this.ServiceProvider = serviceProvider;
15 } 16 }
@@ -17,7 +18,7 @@ namespace Example.Extension
17 /// <summary> 18 /// <summary>
18 /// This exists just to show it is possible to get a service provider to the extension factory. 19 /// This exists just to show it is possible to get a service provider to the extension factory.
19 /// </summary> 20 /// </summary>
20 private IServiceProvider ServiceProvider { get; } 21 private IWixToolsetCoreServiceProvider ServiceProvider { get; }
21 22
22 public bool TryCreateExtension(Type extensionType, out object extension) 23 public bool TryCreateExtension(Type extensionType, out object extension)
23 { 24 {
diff --git a/src/test/WixToolsetTest.CoreIntegration/LinkerFixture.cs b/src/test/WixToolsetTest.CoreIntegration/LinkerFixture.cs
index 254b78f8..97e6bde9 100644
--- a/src/test/WixToolsetTest.CoreIntegration/LinkerFixture.cs
+++ b/src/test/WixToolsetTest.CoreIntegration/LinkerFixture.cs
@@ -21,7 +21,7 @@ namespace WixToolsetTest.CoreIntegration
21 { 21 {
22 var intermediate1 = new Intermediate("TestIntermediate1", new[] { new IntermediateSection("test1", SectionType.Product, 65001) }, null); 22 var intermediate1 = new Intermediate("TestIntermediate1", new[] { new IntermediateSection("test1", SectionType.Product, 65001) }, null);
23 var intermediate2 = new Intermediate("TestIntermediate2", new[] { new IntermediateSection("test2", SectionType.Fragment, 65001) }, null); 23 var intermediate2 = new Intermediate("TestIntermediate2", new[] { new IntermediateSection("test2", SectionType.Fragment, 65001) }, null);
24 var serviceProvider = new WixToolsetServiceProvider(); 24 var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider();
25 25
26 var listener = new TestMessageListener(); 26 var listener = new TestMessageListener();
27 var messaging = serviceProvider.GetService<IMessaging>(); 27 var messaging = serviceProvider.GetService<IMessaging>();
diff --git a/src/test/WixToolsetTest.CoreIntegration/ParseFixture.cs b/src/test/WixToolsetTest.CoreIntegration/ParseFixture.cs
index eca3aa34..afb93041 100644
--- a/src/test/WixToolsetTest.CoreIntegration/ParseFixture.cs
+++ b/src/test/WixToolsetTest.CoreIntegration/ParseFixture.cs
@@ -15,7 +15,7 @@ namespace WixToolsetTest.CoreIntegration
15 [Fact] 15 [Fact]
16 public void GeneratesCorrectCustomActionIdentifiers() 16 public void GeneratesCorrectCustomActionIdentifiers()
17 { 17 {
18 var serviceProvider = new WixToolsetServiceProvider(); 18 var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider();
19 var section = new IntermediateSection("section", SectionType.Fragment, 0); 19 var section = new IntermediateSection("section", SectionType.Fragment, 0);
20 var parseHelper = serviceProvider.GetService<IParseHelper>(); 20 var parseHelper = serviceProvider.GetService<IParseHelper>();
21 21
diff --git a/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs b/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs
index 432d025a..b038812d 100644
--- a/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs
+++ b/src/test/WixToolsetTest.CoreIntegration/PreprocessorFixture.cs
@@ -21,7 +21,7 @@ namespace WixToolsetTest.CoreIntegration
21 var includeFolder = Path.Combine(folder, "data"); 21 var includeFolder = Path.Combine(folder, "data");
22 var includeFile = Path.Combine(includeFolder, "Package.wxi"); 22 var includeFile = Path.Combine(includeFolder, "Package.wxi");
23 23
24 var serviceProvider = new WixToolsetServiceProvider(); 24 var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider();
25 25
26 var context = serviceProvider.GetService<IPreprocessContext>(); 26 var context = serviceProvider.GetService<IPreprocessContext>();
27 context.SourcePath = sourcePath; 27 context.SourcePath = sourcePath;
diff --git a/src/test/WixToolsetTest.CoreIntegration/VariableResolverFixture.cs b/src/test/WixToolsetTest.CoreIntegration/VariableResolverFixture.cs
index 3443896b..28c68e99 100644
--- a/src/test/WixToolsetTest.CoreIntegration/VariableResolverFixture.cs
+++ b/src/test/WixToolsetTest.CoreIntegration/VariableResolverFixture.cs
@@ -15,7 +15,7 @@ namespace WixToolsetTest.CoreIntegration
15 [Fact] 15 [Fact]
16 public void CanRecursivelyResolveVariables() 16 public void CanRecursivelyResolveVariables()
17 { 17 {
18 var serviceProvider = new WixToolsetServiceProvider(); 18 var serviceProvider = WixToolsetServiceProviderFactory.CreateServiceProvider();
19 var variableResolver = serviceProvider.GetService<IVariableResolver>(); 19 var variableResolver = serviceProvider.GetService<IVariableResolver>();
20 20
21 var variables = new Dictionary<string, BindVariable>() 21 var variables = new Dictionary<string, BindVariable>()