From d3177c0ff3d928d8379d0568f2f65a4b22d26be0 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Wed, 2 Sep 2026 15:03:05 +0000 Subject: [PATCH] fix: Accept any numeric tracking event value Signed-off-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-Authored-By: rlamb@launchdarkly.com <4955475+kinyoklion@users.noreply.github.com> --- .../openfeature/serverprovider/Provider.java | 2 +- .../serverprovider/ProviderTest.java | 21 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/launchdarkly/openfeature/serverprovider/Provider.java b/src/main/java/com/launchdarkly/openfeature/serverprovider/Provider.java index eadbdc2..b83e3d9 100644 --- a/src/main/java/com/launchdarkly/openfeature/serverprovider/Provider.java +++ b/src/main/java/com/launchdarkly/openfeature/serverprovider/Provider.java @@ -266,7 +266,7 @@ public void track(String eventName, EvaluationContext ctx, TrackingEventDetails if (details != null) { Double metricValue = null; if (details.getValue().isPresent()) { - metricValue = (Double) details.getValue().get(); + metricValue = details.getValue().get().doubleValue(); } // Convert the Structure portion of the TrackingEventDetails into a key value // map. diff --git a/src/test/java/com/launchdarkly/openfeature/serverprovider/ProviderTest.java b/src/test/java/com/launchdarkly/openfeature/serverprovider/ProviderTest.java index f64f969..65e3115 100644 --- a/src/test/java/com/launchdarkly/openfeature/serverprovider/ProviderTest.java +++ b/src/test/java/com/launchdarkly/openfeature/serverprovider/ProviderTest.java @@ -214,4 +214,25 @@ public void itCanTrackFullTrackingEventDetails() { valueConverter.toLdValue(new Value(trackingEventDetails)), 99.77); } + + @Test + public void itCanTrackAnIntegerTrackingEventValue() { + EvaluationContext evaluationContext = new ImmutableContext("user-key"); + EvaluationContextConverter evaluationContextConverter = new EvaluationContextConverter(null); + ValueConverter valueConverter = new ValueConverter(null); + + TrackingEventDetails trackingEventDetails = new MutableTrackingEventDetails(99).add("currency", "USD"); + + OpenFeatureAPI.getInstance().setProvider(ldProvider); + + OpenFeatureAPI + .getInstance() + .getClient().track("metric-key", evaluationContext, trackingEventDetails); + + verify(mockedLdClient).trackMetric( + "metric-key", + evaluationContextConverter.toLdContext(evaluationContext), + valueConverter.toLdValue(new Value(trackingEventDetails)), + 99.0); + } }