Skip to content
This repository has been archived by the owner on Sep 13, 2023. It is now read-only.

Commit

Permalink
Different Metadata interfaces client/provider
Browse files Browse the repository at this point in the history
  • Loading branch information
fabriziodemaria committed Jul 12, 2023
1 parent d6ab025 commit 80f9d2b
Show file tree
Hide file tree
Showing 10 changed files with 21 additions and 16 deletions.
2 changes: 1 addition & 1 deletion OpenFeature/src/main/java/dev/openfeature/sdk/Client.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package dev.openfeature.sdk

interface Client : Features {
val metadata: Metadata
val metadata: ClientMetadata
val hooks: List<Hook<*>>

fun addHooks(hooks: List<Hook<*>>)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package dev.openfeature.sdk

interface Metadata {
interface ClientMetadata {
val name: String?
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package dev.openfeature.sdk

interface FeatureProvider {
val hooks: List<Hook<*>>
val metadata: Metadata
val metadata: ProviderMetadata

// Called by OpenFeatureAPI whenever the new Provider is registered
suspend fun initialize(initialContext: EvaluationContext?)
Expand Down
4 changes: 2 additions & 2 deletions OpenFeature/src/main/java/dev/openfeature/sdk/HookContext.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ data class HookContext<T>(
val type: FlagValueType,
var defaultValue: T,
var ctx: EvaluationContext?,
var clientMetadata: Metadata?,
var providerMetadata: Metadata
var clientMetadata: ClientMetadata?,
var providerMetadata: ProviderMetadata
)
4 changes: 2 additions & 2 deletions OpenFeature/src/main/java/dev/openfeature/sdk/NoOpProvider.kt
Original file line number Diff line number Diff line change
@@ -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
}
Expand Down Expand Up @@ -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
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ object OpenFeatureAPI {
return context
}

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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class OpenFeatureClient(
version: String? = null,
override val hooks: MutableList<Hook<*>> = mutableListOf()
) : Client {
override val metadata: Metadata = ClientMetadata(name)
override val metadata: ClientMetadata = Metadata(name)
private var hookSupport = HookSupport()
override fun addHooks(hooks: List<Hook<*>>) {
this.hooks += hooks
Expand Down Expand Up @@ -242,5 +242,5 @@ class OpenFeatureClient(
}
}

data class ClientMetadata(override var name: String?) : Metadata
data class Metadata(override var name: String?) : ClientMetadata
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package dev.openfeature.sdk

interface ProviderMetadata {
val name: String?
}
Original file line number Diff line number Diff line change
Expand Up @@ -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<Hook<*>> = listOf(), override var metadata: Metadata = AlwaysBrokenMetadata()) :
class AlwaysBrokenProvider(override var hooks: List<Hook<*>> = listOf(), override var metadata: ProviderMetadata = AlwaysBrokenProviderMetadata()) :
FeatureProvider {
override suspend fun initialize(initialContext: EvaluationContext?) {
// no-op
Expand Down Expand Up @@ -61,5 +61,5 @@ class AlwaysBrokenProvider(override var hooks: List<Hook<*>> = listOf(), overrid
throw FlagNotFoundError(key)
}

class AlwaysBrokenMetadata(override var name: String? = "test") : Metadata
class AlwaysBrokenProviderMetadata(override var name: String? = "test") : ProviderMetadata
}
Original file line number Diff line number Diff line change
Expand Up @@ -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<Hook<*>> = listOf(), override val metadata: Metadata = DoSomethingMetadata()) : FeatureProvider {
class DoSomethingProvider(override val hooks: List<Hook<*>> = listOf(), override val metadata: ProviderMetadata = DoSomethingProviderMetadata()) : FeatureProvider {
override suspend fun initialize(initialContext: EvaluationContext?) {
// no-op
}
Expand Down Expand Up @@ -58,5 +58,5 @@ class DoSomethingProvider(override val hooks: List<Hook<*>> = listOf(), override
): ProviderEvaluation<Value> {
return ProviderEvaluation(Value.Null)
}
class DoSomethingMetadata(override var name: String? = "something") : Metadata
class DoSomethingProviderMetadata(override var name: String? = "something") : ProviderMetadata
}

0 comments on commit 80f9d2b

Please sign in to comment.