From 80f9d2b139c82915df74ff0bc6f73abd83c9810c Mon Sep 17 00:00:00 2001 From: Fabrizio Demaria Date: Wed, 12 Jul 2023 12:03:38 +0200 Subject: [PATCH] Different Metadata interfaces client/provider --- OpenFeature/src/main/java/dev/openfeature/sdk/Client.kt | 2 +- .../dev/openfeature/sdk/{Metadata.kt => ClientMetadata.kt} | 2 +- .../src/main/java/dev/openfeature/sdk/FeatureProvider.kt | 2 +- .../src/main/java/dev/openfeature/sdk/HookContext.kt | 4 ++-- .../src/main/java/dev/openfeature/sdk/NoOpProvider.kt | 4 ++-- .../src/main/java/dev/openfeature/sdk/OpenFeatureAPI.kt | 2 +- .../src/main/java/dev/openfeature/sdk/OpenFeatureClient.kt | 4 ++-- .../src/main/java/dev/openfeature/sdk/ProviderMetadata.kt | 5 +++++ .../dev/openfeature/sdk/helpers/AlwaysBrokenProvider.kt | 6 +++--- .../java/dev/openfeature/sdk/helpers/DoSomethingProvider.kt | 6 +++--- 10 files changed, 21 insertions(+), 16 deletions(-) rename OpenFeature/src/main/java/dev/openfeature/sdk/{Metadata.kt => ClientMetadata.kt} (65%) create mode 100644 OpenFeature/src/main/java/dev/openfeature/sdk/ProviderMetadata.kt diff --git a/OpenFeature/src/main/java/dev/openfeature/sdk/Client.kt b/OpenFeature/src/main/java/dev/openfeature/sdk/Client.kt index aedcb58..e87d89b 100644 --- a/OpenFeature/src/main/java/dev/openfeature/sdk/Client.kt +++ b/OpenFeature/src/main/java/dev/openfeature/sdk/Client.kt @@ -1,7 +1,7 @@ package dev.openfeature.sdk interface Client : Features { - val metadata: Metadata + val metadata: ClientMetadata val hooks: List> fun addHooks(hooks: List>) diff --git a/OpenFeature/src/main/java/dev/openfeature/sdk/Metadata.kt b/OpenFeature/src/main/java/dev/openfeature/sdk/ClientMetadata.kt similarity index 65% rename from OpenFeature/src/main/java/dev/openfeature/sdk/Metadata.kt rename to OpenFeature/src/main/java/dev/openfeature/sdk/ClientMetadata.kt index 8fcc170..7977cf5 100644 --- a/OpenFeature/src/main/java/dev/openfeature/sdk/Metadata.kt +++ b/OpenFeature/src/main/java/dev/openfeature/sdk/ClientMetadata.kt @@ -1,5 +1,5 @@ package dev.openfeature.sdk -interface Metadata { +interface ClientMetadata { val name: String? } \ No newline at end of file diff --git a/OpenFeature/src/main/java/dev/openfeature/sdk/FeatureProvider.kt b/OpenFeature/src/main/java/dev/openfeature/sdk/FeatureProvider.kt index 70e7ae3..f0b6338 100644 --- a/OpenFeature/src/main/java/dev/openfeature/sdk/FeatureProvider.kt +++ b/OpenFeature/src/main/java/dev/openfeature/sdk/FeatureProvider.kt @@ -2,7 +2,7 @@ package dev.openfeature.sdk interface FeatureProvider { val hooks: List> - val metadata: Metadata + val metadata: ProviderMetadata // Called by OpenFeatureAPI whenever the new Provider is registered suspend fun initialize(initialContext: EvaluationContext?) diff --git a/OpenFeature/src/main/java/dev/openfeature/sdk/HookContext.kt b/OpenFeature/src/main/java/dev/openfeature/sdk/HookContext.kt index 8811d75..ac500fd 100644 --- a/OpenFeature/src/main/java/dev/openfeature/sdk/HookContext.kt +++ b/OpenFeature/src/main/java/dev/openfeature/sdk/HookContext.kt @@ -5,6 +5,6 @@ data class HookContext( val type: FlagValueType, var defaultValue: T, var ctx: EvaluationContext?, - var clientMetadata: Metadata?, - var providerMetadata: Metadata + var clientMetadata: ClientMetadata?, + var providerMetadata: ProviderMetadata ) \ No newline at end of file diff --git a/OpenFeature/src/main/java/dev/openfeature/sdk/NoOpProvider.kt b/OpenFeature/src/main/java/dev/openfeature/sdk/NoOpProvider.kt index 3e939d0..fbb46fe 100644 --- a/OpenFeature/src/main/java/dev/openfeature/sdk/NoOpProvider.kt +++ b/OpenFeature/src/main/java/dev/openfeature/sdk/NoOpProvider.kt @@ -1,7 +1,7 @@ package dev.openfeature.sdk class NoOpProvider : FeatureProvider { - override var metadata: Metadata = NoOpMetadata("No-op provider") + override var metadata: ProviderMetadata = NoOpProviderMetadata("No-op provider") override suspend fun initialize(initialContext: EvaluationContext?) { // no-op } @@ -54,5 +54,5 @@ class NoOpProvider : FeatureProvider { return ProviderEvaluation(defaultValue, "Passed in default", Reason.DEFAULT.toString()) } - data class NoOpMetadata(override var name: String?) : Metadata + data class NoOpProviderMetadata(override var name: String?) : ProviderMetadata } \ No newline at end of file diff --git a/OpenFeature/src/main/java/dev/openfeature/sdk/OpenFeatureAPI.kt b/OpenFeature/src/main/java/dev/openfeature/sdk/OpenFeatureAPI.kt index 3cbce8e..a4e7f2b 100644 --- a/OpenFeature/src/main/java/dev/openfeature/sdk/OpenFeatureAPI.kt +++ b/OpenFeature/src/main/java/dev/openfeature/sdk/OpenFeatureAPI.kt @@ -35,7 +35,7 @@ object OpenFeatureAPI { return context } - fun getProviderMetadata(): Metadata? { + fun getProviderMetadata(): ProviderMetadata? { return provider?.metadata } diff --git a/OpenFeature/src/main/java/dev/openfeature/sdk/OpenFeatureClient.kt b/OpenFeature/src/main/java/dev/openfeature/sdk/OpenFeatureClient.kt index a0cdd5b..9e9c433 100644 --- a/OpenFeature/src/main/java/dev/openfeature/sdk/OpenFeatureClient.kt +++ b/OpenFeature/src/main/java/dev/openfeature/sdk/OpenFeatureClient.kt @@ -17,7 +17,7 @@ class OpenFeatureClient( version: String? = null, override val hooks: MutableList> = mutableListOf() ) : Client { - override val metadata: Metadata = ClientMetadata(name) + override val metadata: ClientMetadata = Metadata(name) private var hookSupport = HookSupport() override fun addHooks(hooks: List>) { this.hooks += hooks @@ -242,5 +242,5 @@ class OpenFeatureClient( } } - data class ClientMetadata(override var name: String?) : Metadata + data class Metadata(override var name: String?) : ClientMetadata } \ No newline at end of file diff --git a/OpenFeature/src/main/java/dev/openfeature/sdk/ProviderMetadata.kt b/OpenFeature/src/main/java/dev/openfeature/sdk/ProviderMetadata.kt new file mode 100644 index 0000000..1a2c53e --- /dev/null +++ b/OpenFeature/src/main/java/dev/openfeature/sdk/ProviderMetadata.kt @@ -0,0 +1,5 @@ +package dev.openfeature.sdk + +interface ProviderMetadata { + val name: String? +} \ No newline at end of file diff --git a/OpenFeature/src/test/java/dev/openfeature/sdk/helpers/AlwaysBrokenProvider.kt b/OpenFeature/src/test/java/dev/openfeature/sdk/helpers/AlwaysBrokenProvider.kt index 3467a77..4bac97b 100644 --- a/OpenFeature/src/test/java/dev/openfeature/sdk/helpers/AlwaysBrokenProvider.kt +++ b/OpenFeature/src/test/java/dev/openfeature/sdk/helpers/AlwaysBrokenProvider.kt @@ -3,12 +3,12 @@ package dev.openfeature.sdk.helpers import dev.openfeature.sdk.EvaluationContext import dev.openfeature.sdk.FeatureProvider import dev.openfeature.sdk.Hook -import dev.openfeature.sdk.Metadata import dev.openfeature.sdk.ProviderEvaluation +import dev.openfeature.sdk.ProviderMetadata import dev.openfeature.sdk.Value import dev.openfeature.sdk.exceptions.OpenFeatureError.FlagNotFoundError -class AlwaysBrokenProvider(override var hooks: List> = listOf(), override var metadata: Metadata = AlwaysBrokenMetadata()) : +class AlwaysBrokenProvider(override var hooks: List> = listOf(), override var metadata: ProviderMetadata = AlwaysBrokenProviderMetadata()) : FeatureProvider { override suspend fun initialize(initialContext: EvaluationContext?) { // no-op @@ -61,5 +61,5 @@ class AlwaysBrokenProvider(override var hooks: List> = listOf(), overrid throw FlagNotFoundError(key) } - class AlwaysBrokenMetadata(override var name: String? = "test") : Metadata + class AlwaysBrokenProviderMetadata(override var name: String? = "test") : ProviderMetadata } \ No newline at end of file diff --git a/OpenFeature/src/test/java/dev/openfeature/sdk/helpers/DoSomethingProvider.kt b/OpenFeature/src/test/java/dev/openfeature/sdk/helpers/DoSomethingProvider.kt index b0da3c1..06f5007 100644 --- a/OpenFeature/src/test/java/dev/openfeature/sdk/helpers/DoSomethingProvider.kt +++ b/OpenFeature/src/test/java/dev/openfeature/sdk/helpers/DoSomethingProvider.kt @@ -3,11 +3,11 @@ package dev.openfeature.sdk.helpers import dev.openfeature.sdk.EvaluationContext import dev.openfeature.sdk.FeatureProvider import dev.openfeature.sdk.Hook -import dev.openfeature.sdk.Metadata import dev.openfeature.sdk.ProviderEvaluation +import dev.openfeature.sdk.ProviderMetadata import dev.openfeature.sdk.Value -class DoSomethingProvider(override val hooks: List> = listOf(), override val metadata: Metadata = DoSomethingMetadata()) : FeatureProvider { +class DoSomethingProvider(override val hooks: List> = listOf(), override val metadata: ProviderMetadata = DoSomethingProviderMetadata()) : FeatureProvider { override suspend fun initialize(initialContext: EvaluationContext?) { // no-op } @@ -58,5 +58,5 @@ class DoSomethingProvider(override val hooks: List> = listOf(), override ): ProviderEvaluation { return ProviderEvaluation(Value.Null) } - class DoSomethingMetadata(override var name: String? = "something") : Metadata + class DoSomethingProviderMetadata(override var name: String? = "something") : ProviderMetadata } \ No newline at end of file