Skip to content

Commit f9a501f

Browse files
committed
chore: reuse OpenFeatureStatus (#208)
Signed-off-by: Marcin Stepien <marcin.stepien@fluxon.com>
1 parent 8156a96 commit f9a501f

3 files changed

Lines changed: 12 additions & 37 deletions

File tree

kotlin-sdk/api/android/kotlin-sdk.api

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -911,7 +911,7 @@ public final class dev/openfeature/kotlin/sdk/providers/memory/InMemoryProvider
911911
public fun getIntegerEvaluation (Ljava/lang/String;ILdev/openfeature/kotlin/sdk/EvaluationContext;)Ldev/openfeature/kotlin/sdk/ProviderEvaluation;
912912
public fun getMetadata ()Ldev/openfeature/kotlin/sdk/ProviderMetadata;
913913
public fun getObjectEvaluation (Ljava/lang/String;Ldev/openfeature/kotlin/sdk/Value;Ldev/openfeature/kotlin/sdk/EvaluationContext;)Ldev/openfeature/kotlin/sdk/ProviderEvaluation;
914-
public final fun getState ()Ldev/openfeature/kotlin/sdk/providers/memory/ProviderState;
914+
public final fun getState ()Ldev/openfeature/kotlin/sdk/OpenFeatureStatus;
915915
public fun getStringEvaluation (Ljava/lang/String;Ljava/lang/String;Ldev/openfeature/kotlin/sdk/EvaluationContext;)Ldev/openfeature/kotlin/sdk/ProviderEvaluation;
916916
public fun initialize (Ldev/openfeature/kotlin/sdk/EvaluationContext;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
917917
public fun observe ()Lkotlinx/coroutines/flow/Flow;
@@ -928,12 +928,3 @@ public final class dev/openfeature/kotlin/sdk/providers/memory/InMemoryProvider$
928928
public fun getOriginalMetadata ()Ljava/util/Map;
929929
}
930930

931-
public final class dev/openfeature/kotlin/sdk/providers/memory/ProviderState : java/lang/Enum {
932-
public static final field FATAL Ldev/openfeature/kotlin/sdk/providers/memory/ProviderState;
933-
public static final field NOT_READY Ldev/openfeature/kotlin/sdk/providers/memory/ProviderState;
934-
public static final field READY Ldev/openfeature/kotlin/sdk/providers/memory/ProviderState;
935-
public static fun getEntries ()Lkotlin/enums/EnumEntries;
936-
public static fun valueOf (Ljava/lang/String;)Ldev/openfeature/kotlin/sdk/providers/memory/ProviderState;
937-
public static fun values ()[Ldev/openfeature/kotlin/sdk/providers/memory/ProviderState;
938-
}
939-

kotlin-sdk/api/jvm/kotlin-sdk.api

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -911,7 +911,7 @@ public final class dev/openfeature/kotlin/sdk/providers/memory/InMemoryProvider
911911
public fun getIntegerEvaluation (Ljava/lang/String;ILdev/openfeature/kotlin/sdk/EvaluationContext;)Ldev/openfeature/kotlin/sdk/ProviderEvaluation;
912912
public fun getMetadata ()Ldev/openfeature/kotlin/sdk/ProviderMetadata;
913913
public fun getObjectEvaluation (Ljava/lang/String;Ldev/openfeature/kotlin/sdk/Value;Ldev/openfeature/kotlin/sdk/EvaluationContext;)Ldev/openfeature/kotlin/sdk/ProviderEvaluation;
914-
public final fun getState ()Ldev/openfeature/kotlin/sdk/providers/memory/ProviderState;
914+
public final fun getState ()Ldev/openfeature/kotlin/sdk/OpenFeatureStatus;
915915
public fun getStringEvaluation (Ljava/lang/String;Ljava/lang/String;Ldev/openfeature/kotlin/sdk/EvaluationContext;)Ldev/openfeature/kotlin/sdk/ProviderEvaluation;
916916
public fun initialize (Ldev/openfeature/kotlin/sdk/EvaluationContext;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
917917
public fun observe ()Lkotlinx/coroutines/flow/Flow;
@@ -928,12 +928,3 @@ public final class dev/openfeature/kotlin/sdk/providers/memory/InMemoryProvider$
928928
public fun getOriginalMetadata ()Ljava/util/Map;
929929
}
930930

931-
public final class dev/openfeature/kotlin/sdk/providers/memory/ProviderState : java/lang/Enum {
932-
public static final field FATAL Ldev/openfeature/kotlin/sdk/providers/memory/ProviderState;
933-
public static final field NOT_READY Ldev/openfeature/kotlin/sdk/providers/memory/ProviderState;
934-
public static final field READY Ldev/openfeature/kotlin/sdk/providers/memory/ProviderState;
935-
public static fun getEntries ()Lkotlin/enums/EnumEntries;
936-
public static fun valueOf (Ljava/lang/String;)Ldev/openfeature/kotlin/sdk/providers/memory/ProviderState;
937-
public static fun values ()[Ldev/openfeature/kotlin/sdk/providers/memory/ProviderState;
938-
}
939-

kotlin-sdk/src/commonMain/kotlin/dev/openfeature/kotlin/sdk/providers/memory/InMemoryProvider.kt

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package dev.openfeature.kotlin.sdk.providers.memory
33
import dev.openfeature.kotlin.sdk.EvaluationContext
44
import dev.openfeature.kotlin.sdk.FeatureProvider
55
import dev.openfeature.kotlin.sdk.Hook
6+
import dev.openfeature.kotlin.sdk.OpenFeatureStatus
67
import dev.openfeature.kotlin.sdk.ProviderEvaluation
78
import dev.openfeature.kotlin.sdk.ProviderMetadata
89
import dev.openfeature.kotlin.sdk.Reason
@@ -12,8 +13,6 @@ import dev.openfeature.kotlin.sdk.events.OpenFeatureProviderEvents.EventDetails
1213
import dev.openfeature.kotlin.sdk.events.OpenFeatureProviderEvents.ProviderConfigurationChanged
1314
import dev.openfeature.kotlin.sdk.events.OpenFeatureProviderEvents.ProviderReady
1415
import dev.openfeature.kotlin.sdk.exceptions.OpenFeatureError.FlagNotFoundError
15-
import dev.openfeature.kotlin.sdk.exceptions.OpenFeatureError.GeneralError
16-
import dev.openfeature.kotlin.sdk.exceptions.OpenFeatureError.ProviderFatalError
1716
import dev.openfeature.kotlin.sdk.exceptions.OpenFeatureError.ProviderNotReadyError
1817
import dev.openfeature.kotlin.sdk.exceptions.OpenFeatureError.TypeMismatchError
1918
import kotlinx.coroutines.flow.Flow
@@ -23,12 +22,6 @@ import kotlinx.coroutines.flow.asSharedFlow
2322
import kotlinx.coroutines.flow.update
2423
import kotlin.concurrent.Volatile
2524

26-
enum class ProviderState {
27-
NOT_READY,
28-
READY,
29-
FATAL
30-
}
31-
3225
class InMemoryProvider(initialFlags: Map<String, Flag<*>> = emptyMap()) : FeatureProvider {
3326

3427
override val hooks: List<Hook<*>> = emptyList()
@@ -37,18 +30,18 @@ class InMemoryProvider(initialFlags: Map<String, Flag<*>> = emptyMap()) : Featur
3730
private val flagsState = MutableStateFlow<Map<String, Flag<*>>>(initialFlags.toMap())
3831

3932
@Volatile
40-
var state: ProviderState = ProviderState.NOT_READY
33+
var state: OpenFeatureStatus = OpenFeatureStatus.NotReady
4134
private set
4235

4336
private val eventFlow = MutableSharedFlow<OpenFeatureProviderEvents>(extraBufferCapacity = 64)
4437

4538
override suspend fun initialize(initialContext: EvaluationContext?) {
46-
state = ProviderState.READY
39+
state = OpenFeatureStatus.Ready
4740
eventFlow.tryEmit(ProviderReady())
4841
}
4942

5043
override fun shutdown() {
51-
state = ProviderState.NOT_READY
44+
state = OpenFeatureStatus.NotReady
5245
}
5346

5447
override suspend fun onContextSet(
@@ -130,12 +123,12 @@ class InMemoryProvider(initialFlags: Map<String, Flag<*>> = emptyMap()) : Featur
130123
context: EvaluationContext?,
131124
expectedClass: kotlin.reflect.KClass<T>
132125
): ProviderEvaluation<T> {
133-
if (state != ProviderState.READY) {
134-
when (state) {
135-
ProviderState.NOT_READY ->
136-
throw ProviderNotReadyError("provider not yet initialized")
137-
ProviderState.FATAL -> throw ProviderFatalError("provider in fatal error state")
138-
else -> throw GeneralError("unknown error")
126+
when (val currentState = state) {
127+
is OpenFeatureStatus.NotReady -> throw ProviderNotReadyError("provider not yet initialized")
128+
is OpenFeatureStatus.Fatal -> throw currentState.error
129+
is OpenFeatureStatus.Error -> throw currentState.error
130+
else -> {
131+
// fall through
139132
}
140133
}
141134

0 commit comments

Comments
 (0)