Skip to content

Commit 5fe0a88

Browse files
committed
refactoring ConfigHelper and ConfigurationSources to simplify code readability and hide supported-configuration details
1 parent cad575c commit 5fe0a88

File tree

3 files changed

+34
-39
lines changed

3 files changed

+34
-39
lines changed

utils/config-utils/src/main/java/datadog/trace/config/inversion/ConfigHelper.java

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -82,32 +82,29 @@ public Map<String, String> getEnvironmentVariables() {
8282
for (Map.Entry<String, String> entry : env.entrySet()) {
8383
String key = entry.getKey();
8484
String value = entry.getValue();
85-
Map<String, String> aliasMapping = configSource.getAliasMapping();
86-
if (key.startsWith("DD_") || key.startsWith("OTEL_") || aliasMapping.containsKey(key)) {
87-
String baseConfig;
88-
if (configSource.getSupportedConfigurations().contains(key)) {
85+
String primaryEnv = configSource.primaryEnvFromAlias(key);
86+
if (key.startsWith("DD_") || key.startsWith("OTEL_") || null != primaryEnv) {
87+
if (configSource.supported(key)) {
8988
configs.put(key, value);
9089
// If this environment variable is the alias of another, and we haven't processed the
9190
// original environment variable yet, handle it here.
92-
} else if (aliasMapping.containsKey(key)
93-
&& !configs.containsKey(baseConfig = aliasMapping.get(key))) {
94-
List<String> aliasList = configSource.getAliases().get(baseConfig);
95-
for (String alias : aliasList) {
91+
} else if (null != primaryEnv && !configs.containsKey(primaryEnv)) {
92+
List<String> aliases = configSource.getAliases(primaryEnv);
93+
for (String alias : aliases) {
9694
if (env.containsKey(alias)) {
97-
configs.put(baseConfig, env.get(alias));
95+
configs.put(primaryEnv, env.get(alias));
9896
break;
9997
}
10098
}
10199
}
102-
// TODO: Follow-up - Add deprecation handling
103-
if (configSource.getDeprecatedConfigurations().containsKey(key)) {
100+
String envFromDeprecated;
101+
if ((envFromDeprecated = configSource.primaryEnvFromDeprecated(key)) != null) {
104102
String warning =
105103
"Environment variable "
106104
+ key
107-
+ " is deprecated. "
108-
+ (configSource.getAliasMapping().containsKey(key)
109-
? "Please use " + configSource.getAliasMapping().get(key) + " instead."
110-
: configSource.getDeprecatedConfigurations().get(key));
105+
+ " is deprecated. Please use "
106+
+ (primaryEnv != null ? primaryEnv : envFromDeprecated)
107+
+ " instead.";
111108
log.warn(warning);
112109
}
113110
} else {
@@ -123,8 +120,8 @@ public String getEnvironmentVariable(String name) {
123120
}
124121

125122
if ((name.startsWith("DD_") || name.startsWith("OTEL_"))
126-
&& !configSource.getAliasMapping().containsKey(name)
127-
&& !configSource.getSupportedConfigurations().contains(name)) {
123+
&& null != configSource.primaryEnvFromAlias(name)
124+
&& !configSource.supported(name)) {
128125
if (configInversionStrict != StrictnessPolicy.TEST) {
129126
ConfigInversionMetricCollectorProvider.get().setUndocumentedEnvVarMetric(name);
130127
}
@@ -136,7 +133,7 @@ public String getEnvironmentVariable(String name) {
136133

137134
String config = EnvironmentVariables.get(name);
138135
List<String> aliases;
139-
if (config == null && (aliases = configSource.getAliases().get(name)) != null) {
136+
if (config == null && (aliases = configSource.getAliases(name)) != null) {
140137
for (String alias : aliases) {
141138
String aliasValue = EnvironmentVariables.get(alias);
142139
if (aliasValue != null) {
Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,30 @@
11
package datadog.trace.config.inversion;
22

33
import java.util.List;
4-
import java.util.Map;
5-
import java.util.Set;
64

75
/**
86
* This class uses {@link #GeneratedSupportedConfigurations} for handling supported configurations
97
* for Config Inversion Can be extended for testing with custom configuration data.
108
*/
119
class SupportedConfigurationSource {
1210

13-
/** @return Set of supported configuration keys */
14-
public Set<String> getSupportedConfigurations() {
15-
return GeneratedSupportedConfigurations.SUPPORTED;
11+
/** @return Set of supported environment variable keys */
12+
public boolean supported(String env) {
13+
return GeneratedSupportedConfigurations.SUPPORTED.contains(env);
1614
}
1715

18-
/** @return Map of configuration keys to their aliases */
19-
public Map<String, List<String>> getAliases() {
20-
return GeneratedSupportedConfigurations.ALIASES;
16+
/** @return List of aliases for an environment variable */
17+
public List<String> getAliases(String env) {
18+
return GeneratedSupportedConfigurations.ALIASES.getOrDefault(env, null);
2119
}
2220

23-
/** @return Map of alias keys to their primary configuration keys */
24-
public Map<String, String> getAliasMapping() {
25-
return GeneratedSupportedConfigurations.ALIAS_MAPPING;
21+
/** @return Primary environment variable for a queried alias */
22+
public String primaryEnvFromAlias(String alias) {
23+
return GeneratedSupportedConfigurations.ALIAS_MAPPING.getOrDefault(alias, null);
2624
}
2725

2826
/** @return Map of deprecated configurations */
29-
public Map<String, String> getDeprecatedConfigurations() {
30-
return GeneratedSupportedConfigurations.DEPRECATED;
27+
public String primaryEnvFromDeprecated(String deprecated) {
28+
return GeneratedSupportedConfigurations.DEPRECATED.getOrDefault(deprecated, null);
3129
}
3230
}

utils/config-utils/src/test/java/datadog/trace/config/inversion/TestSupportedConfigurationSource.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,22 +23,22 @@ public TestSupportedConfigurationSource(
2323
}
2424

2525
@Override
26-
public Set<String> getSupportedConfigurations() {
27-
return supported;
26+
public boolean supported(String env) {
27+
return supported.contains(env);
2828
}
2929

3030
@Override
31-
public Map<String, List<String>> getAliases() {
32-
return aliases;
31+
public List<String> getAliases(String env) {
32+
return aliases.getOrDefault(env, null);
3333
}
3434

3535
@Override
36-
public Map<String, String> getAliasMapping() {
37-
return aliasMapping;
36+
public String primaryEnvFromAlias(String alias) {
37+
return aliasMapping.getOrDefault(alias, null);
3838
}
3939

4040
@Override
41-
public Map<String, String> getDeprecatedConfigurations() {
42-
return deprecated;
41+
public String primaryEnvFromDeprecated(String deprecated) {
42+
return this.deprecated.getOrDefault(deprecated, null);
4343
}
4444
}

0 commit comments

Comments
 (0)