GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - splitio/split-openfeature-provider-java: Open Feature Java Provider for Split.io

BranchesTags
Open more actions menu

Latest commit

 

History

171 Commits
171 Commits

Folders and files

NameName
Last commit message
Last commit date
.harness/orgs/PROD/projects/Harness_Split/pipelines
.harness/orgs/PROD/projects/Harness_Split/pipelines
 
 
src
src
 
 
.gitignore
.gitignore
 
 
.pre-commit-config.yaml
.pre-commit-config.yaml
 
 
CHANGES.txt
CHANGES.txt
 
 
CONTRIBUTORS-GUIDE.md
CONTRIBUTORS-GUIDE.md
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
pom.xml
pom.xml
 
 

Repository files navigation

Split OpenFeature Provider for Java

Twitter Follow

Overview

This Provider is designed to allow the use of OpenFeature with Split, the platform for controlled rollouts, serving features to your users via the Split feature flag to manage your complete customer experience.

Compatibility

This SDK is compatible with Java 11 and higher.

Getting started

Add it to your maven build

<dependency>
    <groupId>io.split.openfeature</groupId>
    <artifactId>split-openfeature-provider</artifactId>
    <version>1.2.1</version>
</dependency>

Configure it

Below is a simple example that describes the instantiation of the Split Provider. Please see the OpenFeature Documentation for details on how to use the OpenFeature SDK.

import dev.openfeature.sdk.OpenFeatureAPI;
import io.split.openfeature.SplitProvider;

OpenFeatureAPI api = OpenFeatureAPI.getInstance();
api.setProviderAndWait(new SplitProvider("YOUR_API_KEY"));

If you are more familiar with Split or want access to other initialization options, you can provide a SplitClient to the constructor. See the Split Java SDK Documentation for more information.

import dev.openfeature.sdk.OpenFeatureAPI;
import io.split.openfeature.SplitProvider;
import io.split.client.SplitClient;
import io.split.client.SplitClientConfig;
import io.split.client.SplitFactoryBuilder;

OpenFeatureAPI api = OpenFeatureAPI.getInstance();


SplitClientConfig config = SplitClientConfig.builder()
   .setBlockUntilReadyTimeout(10000)
   .build();
SplitClient splitClient = SplitFactoryBuilder.build("YOUR_API_KEY", config).client();
api.setProviderAndWait(new SplitProvider(splitClient));

Use of OpenFeature with Split

After the initial setup you can use OpenFeature according to their documentation.

One important note is that the Split Provider requires a targeting key to be set. Often times this should be set when evaluating the value of a flag by setting an EvaluationContext which contains the targeting key. An example flag evaluation is

Client client = api.getClient("CLIENT_NAME");

EvaluationContext context = new MutableContext("TARGETING_KEY");
Boolean boolValue = client.getBooleanValue("boolFlag", false, context);

If the same targeting key is used repeatedly, the evaluation context may be set at the client level

EvaluationContext context = new MutableContext("TARGETING_KEY");
client.setEvaluationContext(context)

or at the OpenFeatureAPI level

EvaluationContext context = new MutableContext("TARGETING_KEY");
OpenFeatureAPI.getInstance().setEvaluationContext(context)

If the context was set at the client or api level, it is not required to provide it during flag evaluation.

Evaluate with details

Use the get*Details(...) APIs to get the value and rich context (variant, reason, error code, metadata). This provider includes the Split treatment config as a raw JSON string under flagMetadata["config"]

// boolean/string/number/object all have *Details variants:
FlagEvaluationDetails<String> details =
    client.getStringDetails("my-flag", "fallback", ctx);

String jsonConfig = details.getFlagMetadata().getString("config"); // ← Split treatment config

Tracking

To use track(eventName, context, details) you must provide:

  • targetingKey on the EvaluationContext (non-blank).

  • trafficType in the context (string, e.g. "user" or "account").

  • A non-blank eventName.

Optional:

  • details.value: numeric event value (defaults to 0).

  • details.properties: map of attributes (prefer primitives: string/number/boolean/null).

Example:

MutableContext ctx = new MutableContext("user-123");
ctx.add("trafficType", new Value("user"));

TrackingEventDetails details = new MutableTrackingEventDetails(19.99)
    .add("plan", new Value("pro"))
    .add("coupon", new Value("WELCOME10"));

client.track("checkout.completed", ctx, details);

Submitting issues

The Split team monitors all issues submitted to this issue tracker. We encourage you to use this issue tracker to submit any bug reports, feedback, and feature enhancements. We'll do our best to respond in a timely manner.

Contributing

Please see Contributors Guide to find all you need to submit a Pull Request (PR).

License

Licensed under the Apache License, Version 2.0. See: Apache License.

About Split

Split is the leading Feature Delivery Platform for engineering teams that want to confidently deploy features as fast as they can develop them. Split’s fine-grained management, real-time monitoring, and data-driven experimentation ensure that new features will improve the customer experience without breaking or degrading performance. Companies like Twilio, Salesforce, GoDaddy and WePay trust Split to power their feature delivery.

To learn more about Split, contact [email protected], or get started with feature flags for free at https://www.split.io/signup.

Split has built and maintains SDKs for:

  • .NET Github Docs
  • Android Github Docs
  • Angular Github Docs
  • Elixir thin-client Github Docs
  • Flutter Github Docs
  • GO Github Docs
  • iOS Github Docs
  • Java Github Docs
  • JavaScript Github Docs
  • JavaScript for Browser Github Docs
  • Node.js Github Docs
  • PHP Github Docs
  • PHP thin-client Github Docs
  • Python Github Docs
  • React Github Docs
  • React Native Github Docs
  • Redux Github Docs
  • Ruby Github Docs

For a comprehensive list of open source projects visit our Github page.

Learn more about Split:

Visit split.io/product for an overview of Split, or visit our documentation at help.split.io for more detailed information.

About

Open Feature Java Provider for Split.io

split.io

Topics

feature-flagsjavaopenfeaturesdksplitiosplitsoftware

Resources

Readme
License
Activity
Custom properties

Stars

23 stars

Watchers

5 watching

Forks

1 fork
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.