-
Notifications
You must be signed in to change notification settings - Fork 55
/
LoadedModuleWireModelCollectionJsonConverter.cs
55 lines (43 loc) · 1.88 KB
/
LoadedModuleWireModelCollectionJsonConverter.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// Copyright 2020 New Relic, Inc. All rights reserved.
// SPDX-License-Identifier: Apache-2.0
using System;
using NewRelic.Agent.Core.WireModels;
using Newtonsoft.Json;
namespace NewRelic.Agent.Core.JsonConverters
{
public class LoadedModuleWireModelCollectionJsonConverter : JsonConverter<LoadedModuleWireModelCollection>
{
// The payload is labeled "Jars" since the collector method was originally meant for and used by Java.
private const string JarsName = "Jars";
public override LoadedModuleWireModelCollection ReadJson(JsonReader reader, Type objectType, LoadedModuleWireModelCollection existingValue, bool hasExistingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override void WriteJson(JsonWriter jsonWriter, LoadedModuleWireModelCollection value, JsonSerializer serializer)
{
WriteJsonImpl(jsonWriter, value);
}
private static void WriteJsonImpl(JsonWriter jsonWriter, LoadedModuleWireModelCollection value)
{
jsonWriter.WriteValue(JarsName);
jsonWriter.WriteStartArray();
foreach (var loadedModule in value.LoadedModules)
{
// MODULE
jsonWriter.WriteStartArray();
jsonWriter.WriteValue(loadedModule.AssemblyName);
jsonWriter.WriteValue(loadedModule.Version ?? " ");
// DATA DICTIONARY
jsonWriter.WriteStartObject();
foreach (var item in loadedModule.Data)
{
jsonWriter.WritePropertyName(item.Key);
jsonWriter.WriteValue(item.Value?.ToString() ?? " ");
}
jsonWriter.WriteEndObject();
jsonWriter.WriteEndArray();
}
jsonWriter.WriteEndArray();
}
}
}