Skip to content

Commit 2f767ab

Browse files
authored
Fix integer json parsing probe definition (#7957)
Following #7676 issue, numbers parsed from the json probe definition are still considered as long value which still makes then unfittable to be used as key for Integer -> Integer map. Now we parse integers (without dot numbers) as long and see if they fit into an integer, then downgrade them as DSL value with integer type.
1 parent 92eab56 commit 2f767ab

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed

dd-java-agent/agent-debugger/debugger-el/src/main/java/com/datadog/debugger/el/JsonToExpressionConverter.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,12 @@ public static ValueExpression<?> asValueExpression(JsonReader reader) throws IOE
317317
if (numberStrValue.indexOf('.') > 0) {
318318
return DSL.value(Double.parseDouble(numberStrValue));
319319
}
320-
return DSL.value(Long.parseLong(numberStrValue));
320+
long longValue = Long.parseLong(numberStrValue);
321+
// checks if the parsed number fits into integer range
322+
if (longValue <= Integer.MAX_VALUE && longValue >= Integer.MIN_VALUE) {
323+
return DSL.value((int) longValue);
324+
}
325+
return DSL.value(longValue);
321326
}
322327
case STRING:
323328
{

dd-java-agent/agent-debugger/debugger-el/src/test/java/com/datadog/debugger/el/ValueScriptTest.java

+8-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,14 @@ public void topLevelPrimitives() {
6262
"el",
6363
Values.NULL_OBJECT,
6464
Boolean.TRUE,
65-
Boolean.FALSE
65+
Boolean.FALSE,
66+
42,
67+
Integer.MAX_VALUE,
68+
-42,
69+
Integer.MIN_VALUE,
70+
17315993717L,
71+
-17315993717L,
72+
3.14
6673
};
6774
List<String> lines = loadLinesFromResource("/test_one_liner_value_expr_02.txt");
6875
int i = 0;

dd-java-agent/agent-debugger/debugger-el/src/test/resources/test_one_liner_value_expr_02.txt

+7
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,10 @@
1212
{"dsl": "", "json": null}
1313
{"dsl": "", "json": true}
1414
{"dsl": "", "json": false}
15+
{"dsl": "", "json": 42}
16+
{"dsl": "", "json": 2147483647}
17+
{"dsl": "", "json": -42}
18+
{"dsl": "", "json": -2147483648}
19+
{"dsl": "", "json": 17315993717}
20+
{"dsl": "", "json": -17315993717}
21+
{"dsl": "", "json": 3.14}

0 commit comments

Comments
 (0)