Skip to content

Commit 7239c64

Browse files
committed
Relax unboxing of number types in Otel attributes
1 parent b2cd8a0 commit 7239c64

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

dd-trace-core/src/main/java/datadog/trace/core/otlp/common/OtlpCommonProto.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -173,10 +173,10 @@ public static void writeAttribute(StreamingBuffer buf, int type, CharSequence ke
173173
writeBooleanAttribute(buf, keyUtf8, (boolean) value);
174174
break;
175175
case LONG:
176-
writeLongAttribute(buf, keyUtf8, (long) value);
176+
writeLongAttribute(buf, keyUtf8, ((Number) value).longValue());
177177
break;
178178
case DOUBLE:
179-
writeDoubleAttribute(buf, keyUtf8, (double) value);
179+
writeDoubleAttribute(buf, keyUtf8, ((Number) value).doubleValue());
180180
break;
181181
case STRING_ARRAY:
182182
writeStringArrayAttribute(buf, keyUtf8, (List<String>) value);
@@ -185,10 +185,10 @@ public static void writeAttribute(StreamingBuffer buf, int type, CharSequence ke
185185
writeBooleanArrayAttribute(buf, keyUtf8, (List<Boolean>) value);
186186
break;
187187
case LONG_ARRAY:
188-
writeLongArrayAttribute(buf, keyUtf8, (List<Long>) value);
188+
writeLongArrayAttribute(buf, keyUtf8, (List<? extends Number>) value);
189189
break;
190190
case DOUBLE_ARRAY:
191-
writeDoubleArrayAttribute(buf, keyUtf8, (List<Double>) value);
191+
writeDoubleArrayAttribute(buf, keyUtf8, (List<? extends Number>) value);
192192
break;
193193
default:
194194
throw new IllegalArgumentException("Unknown attribute type: " + type);
@@ -324,10 +324,10 @@ private static void writeBooleanArrayAttribute(
324324
}
325325

326326
private static void writeLongArrayAttribute(
327-
StreamingBuffer buf, byte[] keyUtf8, List<Long> values) {
327+
StreamingBuffer buf, byte[] keyUtf8, List<? extends Number> values) {
328328
long[] longValues = new long[values.size()];
329329
for (int i = 0; i < longValues.length; i++) {
330-
longValues[i] = values.get(i); // avoid repeated unboxing later
330+
longValues[i] = values.get(i).longValue(); // avoid repeated unboxing later
331331
}
332332
int arraySize = 0;
333333
for (long longValue : longValues) {
@@ -355,7 +355,7 @@ private static void writeLongArrayAttribute(
355355
}
356356

357357
private static void writeDoubleArrayAttribute(
358-
StreamingBuffer buf, byte[] keyUtf8, List<Double> values) {
358+
StreamingBuffer buf, byte[] keyUtf8, List<? extends Number> values) {
359359
int arraySize = 11 * values.size();
360360
int valueSize = 1 + sizeVarInt(arraySize) + arraySize;
361361
int keyValueSize =
@@ -368,11 +368,11 @@ private static void writeDoubleArrayAttribute(
368368
writeVarInt(buf, valueSize);
369369
writeTag(buf, 5, LEN_WIRE_TYPE);
370370
writeVarInt(buf, arraySize);
371-
for (double value : values) {
371+
for (Number value : values) {
372372
writeTag(buf, 1, LEN_WIRE_TYPE);
373373
buf.put((byte) 9);
374374
writeTag(buf, 4, I64_WIRE_TYPE);
375-
writeI64(buf, value);
375+
writeI64(buf, value.doubleValue());
376376
}
377377
}
378378
}

0 commit comments

Comments
 (0)