@@ -12,7 +12,8 @@ import kotlinx.coroutines.flow.flatMapLatest
12
12
13
13
@Suppress(" TooManyFunctions" )
14
14
object OpenFeatureAPI {
15
- private var provider: FeatureProvider ? = null
15
+ private val NOOP_PROVIDER = NoOpProvider ()
16
+ private var provider: FeatureProvider = NOOP_PROVIDER
16
17
private var context: EvaluationContext ? = null
17
18
private val providersFlow: MutableSharedFlow <FeatureProvider > = MutableSharedFlow (replay = 1 )
18
19
internal val sharedProvidersFlow: SharedFlow <FeatureProvider > get() = providersFlow
@@ -40,26 +41,26 @@ object OpenFeatureAPI {
40
41
provider.awaitReadyOrError(dispatcher)
41
42
}
42
43
43
- fun getProvider (): FeatureProvider ? {
44
+ fun getProvider (): FeatureProvider {
44
45
return provider
45
46
}
46
47
47
48
fun clearProvider () {
48
- provider = null
49
+ provider = NOOP_PROVIDER
49
50
}
50
51
51
52
fun setEvaluationContext (evaluationContext : EvaluationContext ) {
52
53
val oldContext = context
53
54
context = evaluationContext
54
- getProvider()? .onContextSet(oldContext, evaluationContext)
55
+ getProvider().onContextSet(oldContext, evaluationContext)
55
56
}
56
57
57
58
fun getEvaluationContext (): EvaluationContext ? {
58
59
return context
59
60
}
60
61
61
62
fun getProviderMetadata (): ProviderMetadata ? {
62
- return provider? .metadata
63
+ return provider.metadata
63
64
}
64
65
65
66
fun getClient (name : String? = null, version : String? = null): Client {
@@ -75,7 +76,7 @@ object OpenFeatureAPI {
75
76
}
76
77
77
78
fun shutdown () {
78
- provider? .shutdown()
79
+ provider.shutdown()
79
80
}
80
81
81
82
/*
0 commit comments