Skip to content

Commit 1f59e3d

Browse files
authored
refactor: use the noop-provider instead of null provider (#112)
Signed-off-by: Nicklas Lundin <[email protected]>
1 parent 6e9aa29 commit 1f59e3d

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

android/src/main/java/dev/openfeature/sdk/OpenFeatureAPI.kt

+7-6
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ import kotlinx.coroutines.flow.flatMapLatest
1212

1313
@Suppress("TooManyFunctions")
1414
object OpenFeatureAPI {
15-
private var provider: FeatureProvider? = null
15+
private val NOOP_PROVIDER = NoOpProvider()
16+
private var provider: FeatureProvider = NOOP_PROVIDER
1617
private var context: EvaluationContext? = null
1718
private val providersFlow: MutableSharedFlow<FeatureProvider> = MutableSharedFlow(replay = 1)
1819
internal val sharedProvidersFlow: SharedFlow<FeatureProvider> get() = providersFlow
@@ -40,26 +41,26 @@ object OpenFeatureAPI {
4041
provider.awaitReadyOrError(dispatcher)
4142
}
4243

43-
fun getProvider(): FeatureProvider? {
44+
fun getProvider(): FeatureProvider {
4445
return provider
4546
}
4647

4748
fun clearProvider() {
48-
provider = null
49+
provider = NOOP_PROVIDER
4950
}
5051

5152
fun setEvaluationContext(evaluationContext: EvaluationContext) {
5253
val oldContext = context
5354
context = evaluationContext
54-
getProvider()?.onContextSet(oldContext, evaluationContext)
55+
getProvider().onContextSet(oldContext, evaluationContext)
5556
}
5657

5758
fun getEvaluationContext(): EvaluationContext? {
5859
return context
5960
}
6061

6162
fun getProviderMetadata(): ProviderMetadata? {
62-
return provider?.metadata
63+
return provider.metadata
6364
}
6465

6566
fun getClient(name: String? = null, version: String? = null): Client {
@@ -75,7 +76,7 @@ object OpenFeatureAPI {
7576
}
7677

7778
fun shutdown() {
78-
provider?.shutdown()
79+
provider.shutdown()
7980
}
8081

8182
/*

android/src/main/java/dev/openfeature/sdk/OpenFeatureClient.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ class OpenFeatureClient(
168168
val options = optionsIn ?: FlagEvaluationOptions(listOf(), mapOf())
169169
val hints = options.hookHints
170170
var details = FlagEvaluationDetails(key, defaultValue)
171-
val provider = openFeatureAPI.getProvider() ?: NoOpProvider()
171+
val provider = openFeatureAPI.getProvider()
172172
val mergedHooks: List<Hook<*>> =
173173
provider.hooks + options.hooks + hooks + openFeatureAPI.hooks
174174
val context = openFeatureAPI.getEvaluationContext()

0 commit comments

Comments
 (0)