Skip to content

Commit 6650376

Browse files
committed
simplify providers' hooks
Signed-off-by: Roman Dmytrenko <[email protected]>
1 parent e1dbe11 commit 6650376

File tree

1 file changed

+8
-9
lines changed

1 file changed

+8
-9
lines changed

openfeature/multi/multiprovider.go

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ type (
6161
// The name will be used when reporting errors & results to specify the provider associated with them.
6262
namedProvider struct {
6363
of.FeatureProvider
64-
name string
64+
name string
65+
extraHooks []of.Hook
6566
}
6667

6768
// Option function used for setting configuration via the options pattern
@@ -80,7 +81,6 @@ type (
8081
customStrategy StrategyConstructor
8182
logger *slog.Logger
8283
hooks []of.Hook
83-
providerHooks map[string][]of.Hook
8484
providers []*namedProvider
8585
customComparator Comparator
8686
}
@@ -181,10 +181,10 @@ func WithGlobalHooks(hooks ...of.Hook) Option {
181181
// are provided determines the order in which the providers are registered and evaluated.
182182
func WithProvider(providerName string, provider of.FeatureProvider, hooks ...of.Hook) Option {
183183
return func(conf *configuration) {
184-
conf.providerHooks[providerName] = hooks
185184
conf.providers = append(conf.providers, &namedProvider{
186185
name: providerName,
187186
FeatureProvider: provider,
187+
extraHooks: hooks,
188188
})
189189
}
190190
}
@@ -210,9 +210,8 @@ func buildMetadata(m []NamedProvider) of.Metadata {
210210
// NewProvider returns a new [multi.Provider] that acts as a unified interface of multiple providers for interaction.
211211
func NewProvider(evaluationStrategy EvaluationStrategy, options ...Option) (*Provider, error) {
212212
config := &configuration{
213-
logger: slog.New(slog.DiscardHandler),
214-
providerHooks: make(map[string][]of.Hook),
215-
providers: make([]*namedProvider, 0, 2),
213+
logger: slog.New(slog.DiscardHandler),
214+
providers: make([]*namedProvider, 0, 2),
216215
}
217216

218217
for _, opt := range options {
@@ -235,16 +234,16 @@ func NewProvider(evaluationStrategy EvaluationStrategy, options ...Option) (*Pro
235234
}
236235

237236
// Wrap any providers that include hooks
238-
if (len(provider.Hooks()) + len(config.providerHooks[provider.Name()])) == 0 {
237+
if (len(provider.Hooks()) + len(provider.extraHooks)) == 0 {
239238
providers = append(providers, provider)
240239
continue
241240
}
242241

243242
var wrappedProvider NamedProvider
244243
if _, ok := provider.FeatureProvider.(of.EventHandler); ok {
245-
wrappedProvider = isolateProviderWithEvents(provider, config.providerHooks[provider.Name()])
244+
wrappedProvider = isolateProviderWithEvents(provider, provider.extraHooks)
246245
} else {
247-
wrappedProvider = isolateProvider(provider, config.providerHooks[provider.Name()])
246+
wrappedProvider = isolateProvider(provider, provider.extraHooks)
248247
}
249248

250249
providers = append(providers, wrappedProvider)

0 commit comments

Comments
 (0)