Skip to content

Commit de5c5f6

Browse files
committed
pr review
1 parent de5c766 commit de5c5f6

File tree

1 file changed

+21
-10
lines changed
  • instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure

1 file changed

+21
-10
lines changed

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/EmbeddedConfigFile.java

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,10 @@
55

66
package io.opentelemetry.instrumentation.spring.autoconfigure;
77

8+
import com.fasterxml.jackson.annotation.JsonSetter;
9+
import com.fasterxml.jackson.annotation.Nulls;
810
import com.fasterxml.jackson.databind.ObjectMapper;
9-
import io.opentelemetry.api.incubator.config.DeclarativeConfigException;
10-
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfiguration;
1111
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
12-
import java.lang.reflect.Field;
1312
import java.util.ArrayList;
1413
import java.util.HashMap;
1514
import java.util.Map;
@@ -25,6 +24,24 @@ class EmbeddedConfigFile {
2524

2625
private static final Pattern ARRAY_PATTERN = Pattern.compile("(.+)\\[(\\d+)]$");
2726

27+
// the entire configuration is copied from
28+
// https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfiguration.java#L66-L79
29+
// which is not public
30+
private static final ObjectMapper MAPPER;
31+
32+
static {
33+
MAPPER =
34+
new ObjectMapper()
35+
// Create empty object instances for keys which are present but have null values
36+
.setDefaultSetterInfo(JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY));
37+
// Boxed primitives which are present but have null values should be set to null, rather than
38+
// empty instances
39+
MAPPER.configOverride(String.class).setSetterInfo(JsonSetter.Value.forValueNulls(Nulls.SET));
40+
MAPPER.configOverride(Integer.class).setSetterInfo(JsonSetter.Value.forValueNulls(Nulls.SET));
41+
MAPPER.configOverride(Double.class).setSetterInfo(JsonSetter.Value.forValueNulls(Nulls.SET));
42+
MAPPER.configOverride(Boolean.class).setSetterInfo(JsonSetter.Value.forValueNulls(Nulls.SET));
43+
}
44+
2845
private EmbeddedConfigFile() {}
2946

3047
static OpenTelemetryConfigurationModel extractModel(ConfigurableEnvironment environment) {
@@ -67,13 +84,7 @@ static OpenTelemetryConfigurationModel convertToOpenTelemetryConfigurationModel(
6784
}
6885

6986
static ObjectMapper getObjectMapper() {
70-
try {
71-
Field field = DeclarativeConfiguration.class.getDeclaredField("MAPPER");
72-
field.setAccessible(true);
73-
return (ObjectMapper) field.get(null);
74-
} catch (NoSuchFieldException | IllegalAccessException e) {
75-
throw new DeclarativeConfigException("Failed to access ObjectMapper", e);
76-
}
87+
return MAPPER;
7788
}
7889

7990
/**

0 commit comments

Comments
 (0)