Skip to content

Commit 90dc639

Browse files
committed
Rewrite AlertApiModule
1 parent f0bff11 commit 90dc639

File tree

2 files changed

+39
-81
lines changed

2 files changed

+39
-81
lines changed

agent/agent-profiler/agent-diagnostics-serialization/src/main/java/com/microsoft/applicationinsights/diagnostics/collection/json/AlertApiModule.java

Lines changed: 39 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,57 @@
33

44
package com.microsoft.applicationinsights.diagnostics.collection.json;
55

6-
import com.azure.json.JsonSerializable;
6+
import com.azure.json.JsonProviders;
7+
import com.azure.json.JsonReader;
8+
import com.azure.json.JsonToken;
79
import com.azure.json.JsonWriter;
810
import com.microsoft.applicationinsights.alerting.aiconfig.AlertingConfig;
11+
import java.io.ByteArrayOutputStream;
912
import java.io.IOException;
13+
import java.util.Locale;
1014

11-
public class AlertApiModule implements JsonSerializable<AlertApiModule> {
15+
public class AlertApiModule {
1216

13-
@Override
14-
public JsonWriter toJson(JsonWriter jsonWriter) throws IOException {
15-
jsonWriter.writeStartObject();
16-
addEnumConfig(jsonWriter, AlertingConfig.RequestFilterType.class);
17-
addEnumConfig(jsonWriter, AlertingConfig.RequestAggregationType.class);
18-
addEnumConfig(jsonWriter, AlertingConfig.RequestTriggerThresholdType.class);
19-
addEnumConfig(jsonWriter, AlertingConfig.RequestTriggerThrottlingType.class);
20-
addEnumConfig(jsonWriter, AlertingConfig.RequestAggregationType.class);
21-
jsonWriter.writeEndObject();
22-
return jsonWriter;
17+
public AlertApiModule() {
18+
addEnumConfig(AlertingConfig.RequestFilterType.class);
19+
addEnumConfig(AlertingConfig.RequestAggregationType.class);
20+
addEnumConfig(AlertingConfig.RequestTriggerThresholdType.class);
21+
addEnumConfig(AlertingConfig.RequestTriggerThrottlingType.class);
22+
addEnumConfig(AlertingConfig.RequestAggregationType.class);
23+
}
24+
25+
private <T extends Enum<T>> void addEnumConfig(Class<T> clazz) {
26+
try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
27+
JsonWriter jsonWriter = JsonProviders.createWriter(outputStream);
28+
JsonReader jsonReader = JsonProviders.createReader(outputStream.toByteArray())) {
29+
addSerializer(jsonWriter, clazz);
30+
addDeserializer(jsonReader, clazz);
31+
} catch (IOException ignored) {
32+
// Ignored
33+
}
2334
}
2435

25-
private <T extends Enum<T>> void addEnumConfig(JsonWriter jsonWriter, Class<T> clazz)
36+
private <T extends Enum<T>> void addSerializer(JsonWriter jsonWriter, Class<T> clazz)
2637
throws IOException {
2738
jsonWriter.writeStartObject(clazz.getSimpleName());
2839
for (T enumConstant : clazz.getEnumConstants()) {
2940
jsonWriter.writeStringField(
30-
enumConstant.name().toLowerCase().replace("_", "-"), enumConstant.name());
41+
enumConstant.name().toLowerCase(Locale.ROOT).replace("_", "-"), enumConstant.name());
3142
}
3243
jsonWriter.writeEndObject();
3344
}
45+
46+
private <T extends Enum<T>> T addDeserializer(JsonReader jsonReader, Class<T> clazz)
47+
throws IOException {
48+
return jsonReader.readObject(
49+
reader -> {
50+
if (reader.nextToken() != JsonToken.END_OBJECT) {
51+
return Enum.valueOf(
52+
clazz, jsonReader.getString().toUpperCase(Locale.ROOT).replace("-", "_"));
53+
} else {
54+
reader.skipChildren();
55+
return null;
56+
}
57+
});
58+
}
3459
}

agent/agent-profiler/agent-diagnostics-serialization/src/main/java/com/microsoft/applicationinsights/diagnostics/collection/json/LowerCaseEnumSerializers.java

Lines changed: 0 additions & 67 deletions
This file was deleted.

0 commit comments

Comments
 (0)