Skip to content

Commit 123ad65

Browse files
committed
Add the .Or method and Is Present, for other sources of config (and not deprecated aliases)
1 parent fc89b9c commit 123ad65

13 files changed

+48
-29
lines changed

tracer/src/Datadog.Trace/Configuration/ConfigurationSources/CompositeConfigurationSource.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ public void Add(IConfigurationSource source)
5858
[PublicApi]
5959
IEnumerator IEnumerable.GetEnumerator() => _sources.GetEnumerator();
6060

61+
public bool IsPresent(string key) => _sources.Any(source => source.IsPresent(key));
62+
6163
/// <inheritdoc />
6264
public ConfigurationResult<string> GetString(string key, IConfigurationTelemetry telemetry, Func<string, bool>? validator, bool recordValue)
6365
{

tracer/src/Datadog.Trace/Configuration/ConfigurationSources/DictionaryConfigurationSource.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ public DictionaryConfigurationSource(IReadOnlyDictionary<string, string> diction
2121

2222
public override ConfigurationOrigins Origin => ConfigurationOrigins.Code;
2323

24+
public override bool IsPresent(string key) => _dictionary.ContainsKey(key);
25+
2426
protected override string? GetString(string key)
2527
{
2628
_dictionary.TryGetValue(key, out var value);

tracer/src/Datadog.Trace/Configuration/ConfigurationSources/DictionaryObjectConfigurationSource.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ public DictionaryObjectConfigurationSource(IReadOnlyDictionary<string, object?>
3030

3131
protected IReadOnlyDictionary<string, object?> Dictionary { get; }
3232

33+
public bool IsPresent(string key) => Dictionary.ContainsKey(key);
34+
3335
protected virtual bool TryGetValue(string key, out object? value)
3436
=> Dictionary.TryGetValue(key, out value);
3537

tracer/src/Datadog.Trace/Configuration/ConfigurationSources/EnvironmentConfigurationSource.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,7 @@ internal class EnvironmentConfigurationSource : StringConfigurationSource
3434

3535
return null;
3636
}
37+
38+
public override bool IsPresent(string key) => GetString(key) is not null;
3739
}
3840
}

tracer/src/Datadog.Trace/Configuration/ConfigurationSources/GlobalConfigurationSource.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ internal static bool TryLoadJsonConfigurationFile(IConfigurationSource configura
9797

9898
// if environment variable is not set, look for default file name in the current directory
9999
var configurationFileName = new ConfigurationBuilder(configurationSource, telemetry)
100-
.WithKeys(ConfigurationKeys.ConfigurationFileName, "DD_DOTNET_TRACER_CONFIG_FILE")
100+
.WithKeys(ConfigurationKeys.ConfigurationFileName)
101101
.AsString(
102102
getDefaultValue: () => Path.Combine(baseDirectory ?? GetCurrentDirectory(), "datadog.json"),
103103
validator: null);

tracer/src/Datadog.Trace/Configuration/ConfigurationSources/HandsOffConfigurationSource.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,6 @@ internal sealed class HandsOffConfigurationSource(Dictionary<string, string> con
2424
_configurations.TryGetValue(key, out var value);
2525
return value;
2626
}
27+
28+
public override bool IsPresent(string key) => _configurations.ContainsKey(key);
2729
}

tracer/src/Datadog.Trace/Configuration/ConfigurationSources/IConfigurationSource.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ public interface IConfigurationSource
2323
/// </summary>
2424
public ConfigurationOrigins Origin { get; }
2525

26+
/// <summary>
27+
/// Gets a value indicating whether the key is present in the configuration source.
28+
/// </summary>
29+
bool IsPresent(string key);
30+
2631
/// <summary>
2732
/// Gets the <see cref="string"/> value of
2833
/// the setting with the specified key.

tracer/src/Datadog.Trace/Configuration/ConfigurationSources/JsonConfigurationSource.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ private protected JsonConfigurationSource(string json, ConfigurationOrigins orig
6868

6969
internal bool TreatNullDictionaryAsEmpty { get; set; } = true;
7070

71+
public bool IsPresent(string key) => SelectToken(key) is not null;
72+
7173
/// <summary>
7274
/// Creates a new <see cref="JsonConfigurationSource"/> instance
7375
/// by loading the JSON string from the specified file.

tracer/src/Datadog.Trace/Configuration/ConfigurationSources/NameValueConfigurationSource.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,5 +46,7 @@ internal NameValueConfigurationSource(NameValueCollection nameValueCollection, C
4646
{
4747
return _nameValueCollection[key];
4848
}
49+
50+
public override bool IsPresent(string key) => _nameValueCollection[key] is not null;
4951
}
5052
}

tracer/src/Datadog.Trace/Configuration/ConfigurationSources/NullConfigurationSource.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,6 @@ public ConfigurationResult<IDictionary<string, string>> GetDictionary(string key
4141

4242
public ConfigurationResult<T> GetAs<T>(string key, IConfigurationTelemetry telemetry, Func<string, ParsingResult<T>> converter, Func<T, bool>? validator, bool recordValue)
4343
=> ConfigurationResult<T>.NotFound();
44+
45+
public bool IsPresent(string key) => false;
4446
}

0 commit comments

Comments
 (0)