diff --git a/src/main/java/dev/openfeature/sdk/Structure.java b/src/main/java/dev/openfeature/sdk/Structure.java index bfb744998..4a52580a8 100644 --- a/src/main/java/dev/openfeature/sdk/Structure.java +++ b/src/main/java/dev/openfeature/sdk/Structure.java @@ -80,6 +80,8 @@ default Object convertValue(Value value) { return numberValue.doubleValue(); } else if (numberValue instanceof Integer) { return numberValue.intValue(); + } else if (numberValue instanceof Long) { + return numberValue.longValue(); } } diff --git a/src/test/java/dev/openfeature/sdk/StructureTest.java b/src/test/java/dev/openfeature/sdk/StructureTest.java index 2a2406a54..e185e430b 100644 --- a/src/test/java/dev/openfeature/sdk/StructureTest.java +++ b/src/test/java/dev/openfeature/sdk/StructureTest.java @@ -116,4 +116,20 @@ void convertValueHandlesNullValue() { ImmutableStructure structure = new ImmutableStructure(); assertNull(structure.convertValue(new Value((String) null))); } + + @Test + void convertValueHandlesLongValue() { + long value = 4133980802L; // > Integer.MAX_VALUE + ImmutableStructure structure = new ImmutableStructure(); + assertEquals(value, structure.convertValue(new Value(value))); + } + + @Test + void asObjectMapHandlesLongValue() { + long value = 4133980802L; + Map map = new HashMap<>(); + map.put("long", new Value(value)); + ImmutableStructure structure = new ImmutableStructure(map); + assertEquals(value, structure.asObjectMap().get("long")); + } }