JAVA SDK usage
Install dependencies
The first thing we will do is install the Open Feature SDK and the GO Feature Flag provider.
- maven
- gradle
<dependency>
<groupId>dev.openfeature</groupId>
<artifactId>sdk</artifactId>
<artifactId>1.12.1</artifactId>
</dependency>
<dependency>
<groupId>dev.openfeature.contrib.providers</groupId>
<artifactId>go-feature-flag</artifactId>
<version>0.3.0</version>
</dependency>
implementation group: 'dev.openfeature', name: 'javasdk', version: '1.12.1'
implementation group: 'dev.openfeature.contrib.providers', name: 'go-feature-flag', version: '0.3.0'
Initialize your Open Feature client
To evaluate the flag you need to have an Open Feature configured in your app. This code block shows you how you can create a client that you can use in your application.
- java
- Kotlin
import dev.openfeature.contrib.providers.gofeatureflag.GoFeatureFlagProvider;
import dev.openfeature.contrib.providers.gofeatureflag.GoFeatureFlagProviderOptions;
import dev.openfeature.sdk.EvaluationContext;
import dev.openfeature.sdk.MutableContext;
import dev.openfeature.sdk.OpenFeatureAPI;
// ...
GoFeatureFlagProviderOptions options = GoFeatureFlagProviderOptions.builder().endpoint("http://localhost:1031/").build();
GoFeatureFlagProvider provider = new GoFeatureFlagProvider(options);
OpenFeatureAPI.getInstance().setProvider(provider);
OpenFeatureAPI api = OpenFeatureAPI.getInstance();
Client featureFlagClient = api.getClient();
import dev.openfeature.contrib.providers.gofeatureflag.GoFeatureFlagProvider
import dev.openfeature.contrib.providers.gofeatureflag.GoFeatureFlagProviderOptions
import dev.openfeature.sdk.EvaluationContext
import dev.openfeature.sdk.MutableContext
import dev.openfeature.sdk.OpenFeatureAPI
// ...
val options = GoFeatureFlagProviderOptions.builder().endpoint("http://localhost:1031/").build()
val provider = GoFeatureFlagProvider(options)
OpenFeatureAPI.getInstance().provider = provider
// wait for the provider to be ready
val api = OpenFeatureAPI.getInstance()
val featureFlagClient = api.client
Evaluate your flag
This code block explain how you can create an EvaluationContext
and use it to evaluate your flag.
note
In this example we are evaluating a boolean
flag, but other types are available.
Refer to the Open Feature documentation to know more about it.
- java
- Kotlin
// Context of your flag evaluation.
// With GO Feature Flag you MUST have a targetingKey that is a unique identifier of the user.
EvaluationContext userContext = new MutableContext("1d1b9238-2591-4a47-94cf-d2bc080892f1")
.add("firstname", "john")
.add("lastname", "doe")
.add("email","john.doe@gofeatureflag.org")
.add("admin", true)
.add("anonymous", false);
Boolean adminFlag = featureFlagClient.getBooleanValue("flag-only-for-admin", false, userContext);
if (adminFlag) {
// flag "flag-only-for-admin" is true for the user
} else {
// flag "flag-only-for-admin" is false for the user
}
// Context of your flag evaluation.
// With GO Feature Flag you MUST have a targetingKey that is a unique identifier of the user.
val userContext: EvaluationContext = MutableContext("1d1b9238-2591-4a47-94cf-d2bc080892f1")
.add("firstname", "john")
.add("lastname", "doe")
.add("email", "john.doe@gofeatureflag.org")
.add("admin", true)
.add("anonymous", false)
val adminFlag = featureFlagClient.getBooleanValue("bool_targeting_match", false, userContext)
if (adminFlag) {
// flag "flag-only-for-admin" is true for the user
} else {
// flag "flag-only-for-admin" is false for the user
}
Contribute to the provider
You can find the source of the provider in the open-feature/java-sdk-contrib
repository.