Skip to content

Commit 7dedb64

Browse files
feat: support tracking
1 parent 25ad7d1 commit 7dedb64

File tree

4 files changed

+48
-2
lines changed

4 files changed

+48
-2
lines changed

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ nexusPublishing {
107107
dependencies {
108108
implementation group: 'com.launchdarkly', name: 'launchdarkly-java-server-sdk', version: '[7.1.0, 8.0.0)'
109109

110-
implementation 'dev.openfeature:sdk:[1.7.0,2.0.0)'
110+
implementation 'dev.openfeature:sdk:[1.14.0,2.0.0)'
111111

112112
// Use JUnit test framework
113113
testImplementation(platform('org.junit:junit-bom:5.10.0'))

src/main/java/com/launchdarkly/openfeature/serverprovider/Provider.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,31 @@ public void shutdown() {
222222
}
223223
}
224224

225+
@Override
226+
public void track(String eventName, EvaluationContext ctx, TrackingEventDetails details) {
227+
if(ctx == null) {
228+
return;
229+
}
230+
231+
if(details != null) {
232+
Double metricValue = null;
233+
if (details.getValue().isPresent()) {
234+
metricValue = (Double)details.getValue().get();
235+
}
236+
LDValue data = valueConverter.toLdValue(new Value(details));
237+
238+
if (metricValue != null) {
239+
client.trackMetric(eventName, evaluationContextConverter.toLdContext(ctx), data, metricValue);
240+
} else if (!data.isNull()) {
241+
client.trackData(eventName, evaluationContextConverter.toLdContext(ctx), data);
242+
} else {
243+
client.track(eventName, evaluationContextConverter.toLdContext(ctx));
244+
}
245+
} else {
246+
client.track(eventName, evaluationContextConverter.toLdContext(ctx));
247+
}
248+
}
249+
225250
/**
226251
* Get the LaunchDarkly client associated with this provider.
227252
* <p>

src/main/java/com/launchdarkly/openfeature/serverprovider/Version.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ abstract class Version {
44
private Version() {}
55

66
// This constant is updated automatically by our Gradle script during a release, if the project version has changed
7-
static final String SDK_VERSION = "0.2.0";
7+
static final String SDK_VERSION = "1.0.1";
88
}

src/test/java/com/launchdarkly/openfeature/serverprovider/ProviderTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,4 +126,25 @@ public void itCanDoAValueEvaluation() {
126126
assertEquals("84", detailed.getVariant());
127127
assertEquals("TARGETING_MATCH", detailed.getReason());
128128
}
129+
130+
@Test
131+
public void itCanTrack() {
132+
EvaluationContext evaluationContext = new ImmutableContext("user-key");
133+
EvaluationContextConverter evaluationContextConverter = new EvaluationContextConverter(null);
134+
ValueConverter valueConverter = new ValueConverter(null);
135+
136+
TrackingEventDetails trackingEventDetails = new MutableTrackingEventDetails(99.77).add("currency", "USD");
137+
138+
OpenFeatureAPI.getInstance().setProvider(ldProvider);
139+
140+
OpenFeatureAPI
141+
.getInstance()
142+
.getClient().track("metric-key", evaluationContext, trackingEventDetails);
143+
144+
verify(mockedLdClient).trackMetric(
145+
"metric-key",
146+
evaluationContextConverter.toLdContext(evaluationContext),
147+
valueConverter.toLdValue(new Value(trackingEventDetails)),
148+
99.77);
149+
}
129150
}

0 commit comments

Comments
 (0)