Skip to content

Commit 2829b40

Browse files
committed
Refactor to allow multiple CloudFoundryServiceBindingConfigurationSources in configuration, each scoped to a subset of post-processors
1 parent f6b32aa commit 2829b40

39 files changed

Lines changed: 648 additions & 226 deletions

File tree

src/Bootstrap/test/AutoConfiguration.Test/HostBuilderExtensionsTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ private static void AssertConnectorsAreAutowired(HostWrapper hostWrapper)
308308
var configuration = hostWrapper.Services.GetRequiredService<IConfiguration>();
309309

310310
configuration.EnumerateProviders<KubernetesServiceBindingConfigurationProvider>().Should().NotBeEmpty();
311-
configuration.EnumerateProviders<CloudFoundryServiceBindingConfigurationProvider>().Should().ContainSingle();
311+
configuration.EnumerateProviders<CloudFoundryServiceBindingConfigurationProvider>().Should().NotBeEmpty();
312312

313313
hostWrapper.Services.GetService<ConnectorFactory<CosmosDbOptions, CosmosClient>>().Should().NotBeNull();
314314
hostWrapper.Services.GetService<ConnectorFactory<MongoDbOptions, IMongoClient>>().Should().NotBeNull();
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,14 @@
11
#nullable enable
2+
static Steeltoe.Configuration.CloudFoundry.ServiceBindings.ConfigurationBuilderExtensions.AddCloudFoundryServiceBindings(this Microsoft.Extensions.Configuration.IConfigurationBuilder! builder, Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes brokerTypes) -> Microsoft.Extensions.Configuration.IConfigurationBuilder!
3+
static Steeltoe.Configuration.CloudFoundry.ServiceBindings.ConfigurationBuilderExtensions.AddCloudFoundryServiceBindings(this Microsoft.Extensions.Configuration.IConfigurationBuilder! builder, System.Predicate<string!>! ignoreKeyPredicate, Steeltoe.Configuration.CloudFoundry.ServiceBindings.IServiceBindingsReader? serviceBindingsReader, Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes brokerTypes, Microsoft.Extensions.Logging.ILoggerFactory! loggerFactory) -> Microsoft.Extensions.Configuration.IConfigurationBuilder!
4+
Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes
5+
Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes.All = Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes.Eureka | Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes.Identity | Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes.MongoDb | Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes.MySql | Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes.PostgreSql | Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes.RabbitMQ | Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes.Redis | Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes.SqlServer -> Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes
6+
Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes.Eureka = 1 -> Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes
7+
Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes.Identity = 2 -> Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes
8+
Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes.MongoDb = 4 -> Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes
9+
Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes.MySql = 8 -> Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes
10+
Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes.None = 0 -> Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes
11+
Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes.PostgreSql = 16 -> Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes
12+
Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes.RabbitMQ = 32 -> Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes
13+
Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes.Redis = 64 -> Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes
14+
Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes.SqlServer = 128 -> Steeltoe.Configuration.CloudFoundry.ServiceBindings.CloudFoundryServiceBrokerTypes

src/Configuration/src/CloudFoundry/ServiceBindings/CloudFoundryServiceBindingConfigurationSource.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,23 @@
22
// The .NET Foundation licenses this file to you under the Apache 2.0 License.
33
// See the LICENSE file in the project root for more information.
44

5+
using System.Diagnostics;
56
using Microsoft.Extensions.Configuration;
67

78
namespace Steeltoe.Configuration.CloudFoundry.ServiceBindings;
89

10+
[DebuggerDisplay("{DebuggerToString(),nq}")]
911
internal sealed class CloudFoundryServiceBindingConfigurationSource : PostProcessorConfigurationSource, IConfigurationSource
1012
{
1113
private readonly IServiceBindingsReader _serviceBindingsReader;
14+
private readonly CloudFoundryServiceBrokerTypes _brokerTypes;
1215

13-
public CloudFoundryServiceBindingConfigurationSource(IServiceBindingsReader serviceBindingsReader)
16+
public CloudFoundryServiceBindingConfigurationSource(IServiceBindingsReader serviceBindingsReader, CloudFoundryServiceBrokerTypes brokerTypes)
1417
{
1518
ArgumentNullException.ThrowIfNull(serviceBindingsReader);
1619

1720
_serviceBindingsReader = serviceBindingsReader;
21+
_brokerTypes = brokerTypes;
1822
}
1923

2024
public IConfigurationProvider Build(IConfigurationBuilder builder)
@@ -24,4 +28,9 @@ public IConfigurationProvider Build(IConfigurationBuilder builder)
2428
CaptureConfigurationBuilder(builder);
2529
return new CloudFoundryServiceBindingConfigurationProvider(this, _serviceBindingsReader);
2630
}
31+
32+
private string DebuggerToString()
33+
{
34+
return $"{GetType().FullName} ({_brokerTypes})";
35+
}
2736
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the Apache 2.0 License.
3+
// See the LICENSE file in the project root for more information.
4+
5+
namespace Steeltoe.Configuration.CloudFoundry.ServiceBindings;
6+
7+
/// <summary>
8+
/// Lists the built-in Cloud Foundry service brokers.
9+
/// </summary>
10+
[Flags]
11+
public enum CloudFoundryServiceBrokerTypes
12+
{
13+
None = 0x0,
14+
15+
Eureka = 0x1,
16+
Identity = 0x2,
17+
MongoDb = 0x4,
18+
MySql = 0x8,
19+
PostgreSql = 0x10,
20+
RabbitMQ = 0x20,
21+
Redis = 0x40,
22+
SqlServer = 0x80,
23+
24+
All = Eureka | Identity | MongoDb | MySql | PostgreSql | RabbitMQ | Redis | SqlServer
25+
}

src/Configuration/src/CloudFoundry/ServiceBindings/ConfigurationBuilderExtensions.cs

Lines changed: 94 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,24 @@ public static class ConfigurationBuilderExtensions
2929
/// </returns>
3030
public static IConfigurationBuilder AddCloudFoundryServiceBindings(this IConfigurationBuilder builder)
3131
{
32-
return builder.AddCloudFoundryServiceBindings(DefaultIgnoreKeyPredicate, DefaultReader, NullLoggerFactory.Instance);
32+
return builder.AddCloudFoundryServiceBindings(DefaultIgnoreKeyPredicate, null, CloudFoundryServiceBrokerTypes.All, NullLoggerFactory.Instance);
33+
}
34+
35+
/// <summary>
36+
/// Adds CloudFoundry service bindings from the JSON provided by the specified reader.
37+
/// </summary>
38+
/// <param name="builder">
39+
/// The <see cref="IConfigurationBuilder" /> to add configuration to.
40+
/// </param>
41+
/// <param name="brokerTypes">
42+
/// The set of broker types to read service bindings for.
43+
/// </param>
44+
/// <returns>
45+
/// The incoming <paramref name="builder" /> so that additional calls can be chained.
46+
/// </returns>
47+
public static IConfigurationBuilder AddCloudFoundryServiceBindings(this IConfigurationBuilder builder, CloudFoundryServiceBrokerTypes brokerTypes)
48+
{
49+
return builder.AddCloudFoundryServiceBindings(DefaultIgnoreKeyPredicate, null, brokerTypes, NullLoggerFactory.Instance);
3350
}
3451

3552
/// <summary>
@@ -46,7 +63,8 @@ public static IConfigurationBuilder AddCloudFoundryServiceBindings(this IConfigu
4663
/// </returns>
4764
public static IConfigurationBuilder AddCloudFoundryServiceBindings(this IConfigurationBuilder builder, IServiceBindingsReader serviceBindingsReader)
4865
{
49-
return builder.AddCloudFoundryServiceBindings(DefaultIgnoreKeyPredicate, serviceBindingsReader, NullLoggerFactory.Instance);
66+
return builder.AddCloudFoundryServiceBindings(DefaultIgnoreKeyPredicate, serviceBindingsReader, CloudFoundryServiceBrokerTypes.All,
67+
NullLoggerFactory.Instance);
5068
}
5169

5270
/// <summary>
@@ -56,7 +74,7 @@ public static IConfigurationBuilder AddCloudFoundryServiceBindings(this IConfigu
5674
/// The <see cref="IConfigurationBuilder" /> to add configuration to.
5775
/// </param>
5876
/// <param name="ignoreKeyPredicate">
59-
/// A predicate which is called before adding a key to the configuration. If it returns false, the key will be ignored.
77+
/// A predicate that is called before adding a key to the configuration. If it returns false, the key will be ignored.
6078
/// </param>
6179
/// <param name="serviceBindingsReader">
6280
/// The source to read JSON service bindings from.
@@ -69,15 +87,41 @@ public static IConfigurationBuilder AddCloudFoundryServiceBindings(this IConfigu
6987
/// </returns>
7088
public static IConfigurationBuilder AddCloudFoundryServiceBindings(this IConfigurationBuilder builder, Predicate<string> ignoreKeyPredicate,
7189
IServiceBindingsReader serviceBindingsReader, ILoggerFactory loggerFactory)
90+
{
91+
return AddCloudFoundryServiceBindings(builder, ignoreKeyPredicate, serviceBindingsReader, CloudFoundryServiceBrokerTypes.All, loggerFactory);
92+
}
93+
94+
/// <summary>
95+
/// Adds CloudFoundry service bindings from the JSON provided by the specified reader.
96+
/// </summary>
97+
/// <param name="builder">
98+
/// The <see cref="IConfigurationBuilder" /> to add configuration to.
99+
/// </param>
100+
/// <param name="ignoreKeyPredicate">
101+
/// A predicate that is called before adding a key to the configuration. If it returns false, the key will be ignored.
102+
/// </param>
103+
/// <param name="serviceBindingsReader">
104+
/// The source to read JSON service bindings from.
105+
/// </param>
106+
/// <param name="brokerTypes">
107+
/// The set of broker types to read service bindings for.
108+
/// </param>
109+
/// <param name="loggerFactory">
110+
/// Used for internal logging. Pass <see cref="NullLoggerFactory.Instance" /> to disable logging.
111+
/// </param>
112+
/// <returns>
113+
/// The incoming <paramref name="builder" /> so that additional calls can be chained.
114+
/// </returns>
115+
public static IConfigurationBuilder AddCloudFoundryServiceBindings(this IConfigurationBuilder builder, Predicate<string> ignoreKeyPredicate,
116+
IServiceBindingsReader? serviceBindingsReader, CloudFoundryServiceBrokerTypes brokerTypes, ILoggerFactory loggerFactory)
72117
{
73118
ArgumentNullException.ThrowIfNull(builder);
74119
ArgumentNullException.ThrowIfNull(ignoreKeyPredicate);
75-
ArgumentNullException.ThrowIfNull(serviceBindingsReader);
76120
ArgumentNullException.ThrowIfNull(loggerFactory);
77121

78-
if (!builder.EnumerateSources<CloudFoundryServiceBindingConfigurationSource>().Any())
122+
if (brokerTypes != CloudFoundryServiceBrokerTypes.None)
79123
{
80-
var source = new CloudFoundryServiceBindingConfigurationSource(serviceBindingsReader)
124+
var source = new CloudFoundryServiceBindingConfigurationSource(serviceBindingsReader ?? DefaultReader, brokerTypes)
81125
{
82126
IgnoreKeyPredicate = ignoreKeyPredicate
83127
};
@@ -86,25 +130,56 @@ public static IConfigurationBuilder AddCloudFoundryServiceBindings(this IConfigu
86130
// WebApplicationBuilder immediately builds the configuration provider and loads it, which executes the post-processors.
87131
// Therefore, adding post-processors afterward is a no-op.
88132

89-
RegisterPostProcessors(source, loggerFactory);
133+
RegisterPostProcessors(source, brokerTypes, loggerFactory);
90134
builder.Add(source);
91135
}
92136

93137
return builder;
94138
}
95139

96-
private static void RegisterPostProcessors(CloudFoundryServiceBindingConfigurationSource source, ILoggerFactory loggerFactory)
140+
private static void RegisterPostProcessors(CloudFoundryServiceBindingConfigurationSource source, CloudFoundryServiceBrokerTypes brokerTypes,
141+
ILoggerFactory loggerFactory)
97142
{
98-
ILogger<EurekaCloudFoundryPostProcessor> eurekaLogger = loggerFactory.CreateLogger<EurekaCloudFoundryPostProcessor>();
99-
ILogger<IdentityCloudFoundryPostProcessor> identityLogger = loggerFactory.CreateLogger<IdentityCloudFoundryPostProcessor>();
100-
101-
source.RegisterPostProcessor(new EurekaCloudFoundryPostProcessor(eurekaLogger));
102-
source.RegisterPostProcessor(new IdentityCloudFoundryPostProcessor(identityLogger));
103-
source.RegisterPostProcessor(new MongoDbCloudFoundryPostProcessor());
104-
source.RegisterPostProcessor(new MySqlCloudFoundryPostProcessor());
105-
source.RegisterPostProcessor(new PostgreSqlCloudFoundryPostProcessor());
106-
source.RegisterPostProcessor(new RabbitMQCloudFoundryPostProcessor());
107-
source.RegisterPostProcessor(new RedisCloudFoundryPostProcessor());
108-
source.RegisterPostProcessor(new SqlServerCloudFoundryPostProcessor());
143+
if (brokerTypes.HasFlag(CloudFoundryServiceBrokerTypes.Eureka))
144+
{
145+
ILogger<EurekaCloudFoundryPostProcessor> eurekaLogger = loggerFactory.CreateLogger<EurekaCloudFoundryPostProcessor>();
146+
source.RegisterPostProcessor(new EurekaCloudFoundryPostProcessor(eurekaLogger));
147+
}
148+
149+
if (brokerTypes.HasFlag(CloudFoundryServiceBrokerTypes.Identity))
150+
{
151+
ILogger<IdentityCloudFoundryPostProcessor> identityLogger = loggerFactory.CreateLogger<IdentityCloudFoundryPostProcessor>();
152+
source.RegisterPostProcessor(new IdentityCloudFoundryPostProcessor(identityLogger));
153+
}
154+
155+
if (brokerTypes.HasFlag(CloudFoundryServiceBrokerTypes.MongoDb))
156+
{
157+
source.RegisterPostProcessor(new MongoDbCloudFoundryPostProcessor());
158+
}
159+
160+
if (brokerTypes.HasFlag(CloudFoundryServiceBrokerTypes.MySql))
161+
{
162+
source.RegisterPostProcessor(new MySqlCloudFoundryPostProcessor());
163+
}
164+
165+
if (brokerTypes.HasFlag(CloudFoundryServiceBrokerTypes.PostgreSql))
166+
{
167+
source.RegisterPostProcessor(new PostgreSqlCloudFoundryPostProcessor());
168+
}
169+
170+
if (brokerTypes.HasFlag(CloudFoundryServiceBrokerTypes.RabbitMQ))
171+
{
172+
source.RegisterPostProcessor(new RabbitMQCloudFoundryPostProcessor());
173+
}
174+
175+
if (brokerTypes.HasFlag(CloudFoundryServiceBrokerTypes.Redis))
176+
{
177+
source.RegisterPostProcessor(new RedisCloudFoundryPostProcessor());
178+
}
179+
180+
if (brokerTypes.HasFlag(CloudFoundryServiceBrokerTypes.SqlServer))
181+
{
182+
source.RegisterPostProcessor(new SqlServerCloudFoundryPostProcessor());
183+
}
109184
}
110185
}

src/Configuration/src/Kubernetes.ServiceBindings/ConfigurationBuilderExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public static IConfigurationBuilder AddKubernetesServiceBindings(this IConfigura
6868
/// Whether the configuration should be reloaded if the files are changed, added or removed.
6969
/// </param>
7070
/// <param name="ignoreKeyPredicate">
71-
/// A predicate which is called before adding a key to the configuration. If it returns false, the key will be ignored.
71+
/// A predicate that is called before adding a key to the configuration. If it returns false, the key will be ignored.
7272
/// </param>
7373
/// <param name="serviceBindingsReader">
7474
/// The source to read Kubernetes secret files on disk from.

src/Configuration/test/CloudFoundry.Test/ServiceBindings/CloudFoundryServiceBindingConfigurationProviderTest.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ public void PostProcessors_OnByDefault()
118118
var postProcessor = new TestPostProcessor();
119119

120120
var reader = new StringServiceBindingsReader(VcapServicesJson);
121-
var source = new CloudFoundryServiceBindingConfigurationSource(reader);
121+
var source = new CloudFoundryServiceBindingConfigurationSource(reader, CloudFoundryServiceBrokerTypes.All);
122122
source.RegisterPostProcessor(postProcessor);
123123

124124
var builder = new ConfigurationBuilder();
@@ -137,7 +137,7 @@ public void Build_CapturesParentConfiguration()
137137
};
138138

139139
var reader = new StringServiceBindingsReader(string.Empty);
140-
var source = new CloudFoundryServiceBindingConfigurationSource(reader);
140+
var source = new CloudFoundryServiceBindingConfigurationSource(reader, CloudFoundryServiceBrokerTypes.All);
141141

142142
var builder = new ConfigurationBuilder();
143143
builder.Add(source);
@@ -153,7 +153,7 @@ public void Build_CapturesParentConfiguration()
153153
public void Build_LoadsServiceBindings()
154154
{
155155
var reader = new StringServiceBindingsReader(VcapServicesJson);
156-
var source = new CloudFoundryServiceBindingConfigurationSource(reader);
156+
var source = new CloudFoundryServiceBindingConfigurationSource(reader, CloudFoundryServiceBrokerTypes.All);
157157

158158
var builder = new ConfigurationBuilder();
159159
builder.Add(source);

src/Configuration/test/CloudFoundry.Test/ServiceBindings/ConfigurationBuilderExtensionsTest.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,17 @@ public void AddCloudFoundryServiceBindings_RegistersProcessors()
5757
source.PostProcessors.Should().NotBeEmpty();
5858
}
5959

60+
[Fact]
61+
public void AddCloudFoundryServiceBindings_RegistersSubsetOfProcessors()
62+
{
63+
var builder = new ConfigurationBuilder();
64+
builder.AddCloudFoundryServiceBindings(CloudFoundryServiceBrokerTypes.PostgreSql | CloudFoundryServiceBrokerTypes.MySql);
65+
66+
builder.Sources.Should().ContainSingle();
67+
CloudFoundryServiceBindingConfigurationSource source = builder.Sources[0].Should().BeOfType<CloudFoundryServiceBindingConfigurationSource>().Subject;
68+
source.PostProcessors.Should().HaveCount(2);
69+
}
70+
6071
[Fact]
6172
public void AddCloudFoundryServiceBindings_EnvironmentVariableSet_LoadsServiceBindings()
6273
{

src/Connectors/src/Connectors/ConnectorConfigureOptionsBuilder.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@
22
// The .NET Foundation licenses this file to you under the Apache 2.0 License.
33
// See the LICENSE file in the project root for more information.
44

5+
using Steeltoe.Configuration.CloudFoundry.ServiceBindings;
6+
57
namespace Steeltoe.Connectors;
68

79
public sealed class ConnectorConfigureOptionsBuilder
810
{
11+
internal CloudFoundryServiceBrokerTypes CloudFoundryBrokerTypes { get; set; }
12+
913
/// <summary>
1014
/// Gets or sets a value indicating whether connection string changes are detected while the application is running. This is <c>false</c> by default to
1115
/// optimize startup performance. When set to <c>true</c>, existing configuration providers may get reloaded multiple times, potentially resulting in

src/Connectors/src/Connectors/ConnectorConfigurer.cs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,30 @@
33
// See the LICENSE file in the project root for more information.
44

55
using Microsoft.Extensions.Configuration;
6+
using Microsoft.Extensions.Logging;
67
using Steeltoe.Configuration;
78
using Steeltoe.Configuration.CloudFoundry.ServiceBindings;
89
using Steeltoe.Configuration.Kubernetes.ServiceBindings;
10+
using IServiceBindingsReader = Steeltoe.Configuration.CloudFoundry.ServiceBindings.IServiceBindingsReader;
911

1012
namespace Steeltoe.Connectors;
1113

1214
internal static class ConnectorConfigurer
1315
{
14-
public static void Configure<TPostProcessor>(IConfigurationBuilder builder, Action<ConnectorConfigureOptionsBuilder>? configureAction,
15-
TPostProcessor connectionStringPostProcessor)
16+
private static readonly Predicate<string> DefaultIgnoreKeyPredicate = _ => false;
17+
18+
public static void Configure<TPostProcessor>(IConfigurationBuilder builder, Action<ConnectorConfigureOptionsBuilder> configureAction,
19+
TPostProcessor connectionStringPostProcessor, IServiceBindingsReader? serviceBindingsReader, ILoggerFactory loggerFactory)
1620
where TPostProcessor : ConnectionStringPostProcessor
1721
{
1822
if (!IsConfigured<TPostProcessor>(builder))
1923
{
2024
var optionsBuilder = new ConnectorConfigureOptionsBuilder();
21-
configureAction?.Invoke(optionsBuilder);
25+
configureAction.Invoke(optionsBuilder);
2226

2327
if (!optionsBuilder.SkipDefaultServiceBindings)
2428
{
25-
builder.AddCloudFoundryServiceBindings();
29+
builder.AddCloudFoundryServiceBindings(DefaultIgnoreKeyPredicate, serviceBindingsReader, optionsBuilder.CloudFoundryBrokerTypes, loggerFactory);
2630
builder.AddKubernetesServiceBindings();
2731
}
2832

0 commit comments

Comments
 (0)