Skip to content

Commit dbb8432

Browse files
committed
Fix metric export
1 parent 7859a29 commit dbb8432

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

core/src/main/java/com/microsoft/applicationinsights/TelemetryClient.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import com.microsoft.applicationinsights.internal.config.connection.EndpointProvider;
4141
import com.microsoft.applicationinsights.internal.config.connection.InvalidConnectionStringException;
4242
import com.microsoft.applicationinsights.internal.quickpulse.QuickPulseDataCollector;
43+
import com.microsoft.applicationinsights.internal.util.CollectionTypeJsonSerializer;
4344
import com.microsoft.applicationinsights.internal.util.PropertyHelper;
4445
import org.apache.commons.text.StringSubstitutor;
4546
import org.checkerframework.checker.nullness.qual.Nullable;
@@ -445,7 +446,7 @@ private JacksonJsonAdapter() {
445446

446447
// Customize serializer to use NDJSON
447448
SimpleModule ndjsonModule = new SimpleModule("Ndjson List Serializer");
448-
ndjsonModule.addSerializer(new NdJsonSerializer());
449+
ndjsonModule.setSerializers(new CollectionTypeJsonSerializer());
449450
mapper.registerModule(ndjsonModule);
450451
}
451452

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.microsoft.applicationinsights.internal.util;
2+
3+
import com.azure.monitor.opentelemetry.exporter.implementation.NdJsonSerializer;
4+
import com.fasterxml.jackson.databind.BeanDescription;
5+
import com.fasterxml.jackson.databind.JavaType;
6+
import com.fasterxml.jackson.databind.JsonSerializer;
7+
import com.fasterxml.jackson.databind.SerializationConfig;
8+
import com.fasterxml.jackson.databind.jsontype.TypeSerializer;
9+
import com.fasterxml.jackson.databind.module.SimpleSerializers;
10+
import com.fasterxml.jackson.databind.type.CollectionType;
11+
import java.util.List;
12+
13+
public class CollectionTypeJsonSerializer extends SimpleSerializers {
14+
15+
@Override
16+
public JsonSerializer<?> findCollectionSerializer(SerializationConfig config,
17+
CollectionType type,
18+
BeanDescription beanDesc,
19+
TypeSerializer elementTypeSerializer,
20+
JsonSerializer<Object> elementValueSerializer) {
21+
22+
if (isJavaLangObjectListType(type)) {
23+
return new NdJsonSerializer();
24+
}
25+
return super.findCollectionSerializer(config, type, beanDesc, elementTypeSerializer, elementValueSerializer);
26+
}
27+
28+
29+
private boolean isJavaLangObjectListType(CollectionType type) {
30+
JavaType contentType = type.getContentType();
31+
if (List.class.isAssignableFrom(type.getRawClass())) {
32+
// this means it's a list
33+
if(contentType.isJavaLangObject()) {
34+
return true;
35+
}
36+
}
37+
return false;
38+
}
39+
}

0 commit comments

Comments
 (0)