@@ -29,26 +29,29 @@ internal class JsonConfigurationSource : IConfigurationSource
2929 {
3030 private static readonly IDatadogLogger Log = DatadogLogging . GetLoggerFor ( typeof ( JsonConfigurationSource ) ) ;
3131 private readonly JToken ? _configuration ;
32+ private readonly ConfigurationOrigins _origin ;
3233
33- internal JsonConfigurationSource ( string json , ConfigurationOrigins origin )
34- : this ( json , origin , j => ( JToken ? ) JsonHelper . DeserializeObject ( j ) )
34+ /// <summary>
35+ /// Initializes a new instance of the <see cref="JsonConfigurationSource"/>
36+ /// class with the specified JSON string.
37+ /// </summary>
38+ /// <param name="json">A JSON string that contains configuration values.</param>
39+ [ PublicApi ]
40+ public JsonConfigurationSource ( string json )
41+ : this ( json , ConfigurationOrigins . Code )
3542 {
43+ TelemetryFactory . Metrics . Record ( PublicApiUsage . JsonConfigurationSource_Ctor_Json ) ;
3644 }
3745
38- internal JsonConfigurationSource ( string json , ConfigurationOrigins origin , string ? filename )
39- : this ( json , origin , j => ( JToken ? ) JsonHelper . DeserializeObject ( j ) )
46+ internal JsonConfigurationSource ( string json , ConfigurationOrigins origin )
47+ : this ( json , origin , j => ( JToken ? ) JsonConvert . DeserializeObject ( j ) )
4048 {
41- JsonConfigurationFilePath = filename ;
4249 }
4350
44- internal JsonConfigurationSource ( JToken ? configToken , ConfigurationOrigins origin , Func < JToken ? , JToken ? > extractConfig )
51+ internal JsonConfigurationSource ( string json , ConfigurationOrigins origin , string filename )
52+ : this ( json , origin , j => ( JToken ? ) JsonConvert . DeserializeObject ( j ) )
4553 {
46- if ( configToken is null ) { ThrowHelper . ThrowArgumentNullException ( nameof ( configToken ) ) ; }
47-
48- if ( extractConfig is null ) { ThrowHelper . ThrowArgumentNullException ( nameof ( extractConfig ) ) ; }
49-
50- _configuration = extractConfig ( configToken ) ;
51- Origin = origin ;
54+ ConfigurationSource = filename ;
5255 }
5356
5457 private protected JsonConfigurationSource ( string json , ConfigurationOrigins origin , Func < string , JToken ? > deserialize )
@@ -61,9 +64,7 @@ private protected JsonConfigurationSource(string json, ConfigurationOrigins orig
6164 Origin = origin ;
6265 }
6366
64- public ConfigurationOrigins Origin { get ; }
65-
66- internal string ? JsonConfigurationFilePath { get ; }
67+ internal string ConfigurationSource { get ; set ; } = "N/A because Jsonconfigsource.cs" ;
6768
6869 internal bool TreatNullDictionaryAsEmpty { get ; set ; } = true ;
6970
@@ -80,6 +81,17 @@ internal static JsonConfigurationSource FromFile(string filename, ConfigurationO
8081 return new JsonConfigurationSource ( json , origin , filename ) ;
8182 }
8283
84+ /// <summary>
85+ /// Returns a string that represents the current object.
86+ /// </summary>
87+ /// <returns>
88+ /// A string that indicates the source of the datadog.json configuration.
89+ /// </returns>
90+ public override string ToString ( )
91+ {
92+ return "The datadog.json configuration is coming from " + ConfigurationSource ;
93+ }
94+
8395 /// <summary>
8496 /// Gets the value of the setting with the specified key and converts it into type <typeparamref name="T"/>.
8597 /// Supports JPath.
0 commit comments