Skip to content

Commit

Permalink
refactor: use the noop-provider instead of null provider (#112)
Browse files Browse the repository at this point in the history
Signed-off-by: Nicklas Lundin <[email protected]>
  • Loading branch information
nicklasl authored Nov 18, 2024
1 parent 6e9aa29 commit 1f59e3d
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 7 deletions.
13 changes: 7 additions & 6 deletions android/src/main/java/dev/openfeature/sdk/OpenFeatureAPI.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ import kotlinx.coroutines.flow.flatMapLatest

@Suppress("TooManyFunctions")
object OpenFeatureAPI {
private var provider: FeatureProvider? = null
private val NOOP_PROVIDER = NoOpProvider()
private var provider: FeatureProvider = NOOP_PROVIDER
private var context: EvaluationContext? = null
private val providersFlow: MutableSharedFlow<FeatureProvider> = MutableSharedFlow(replay = 1)
internal val sharedProvidersFlow: SharedFlow<FeatureProvider> get() = providersFlow
Expand Down Expand Up @@ -40,26 +41,26 @@ object OpenFeatureAPI {
provider.awaitReadyOrError(dispatcher)
}

fun getProvider(): FeatureProvider? {
fun getProvider(): FeatureProvider {
return provider
}

fun clearProvider() {
provider = null
provider = NOOP_PROVIDER
}

fun setEvaluationContext(evaluationContext: EvaluationContext) {
val oldContext = context
context = evaluationContext
getProvider()?.onContextSet(oldContext, evaluationContext)
getProvider().onContextSet(oldContext, evaluationContext)
}

fun getEvaluationContext(): EvaluationContext? {
return context
}

fun getProviderMetadata(): ProviderMetadata? {
return provider?.metadata
return provider.metadata
}

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

fun shutdown() {
provider?.shutdown()
provider.shutdown()
}

/*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ class OpenFeatureClient(
val options = optionsIn ?: FlagEvaluationOptions(listOf(), mapOf())
val hints = options.hookHints
var details = FlagEvaluationDetails(key, defaultValue)
val provider = openFeatureAPI.getProvider() ?: NoOpProvider()
val provider = openFeatureAPI.getProvider()
val mergedHooks: List<Hook<*>> =
provider.hooks + options.hooks + hooks + openFeatureAPI.hooks
val context = openFeatureAPI.getEvaluationContext()
Expand Down

0 comments on commit 1f59e3d

Please sign in to comment.