Skip to content

Commit 83d9df1

Browse files
committed
add isDeclarative
1 parent f20ead5 commit 83d9df1

File tree

5 files changed

+35
-17
lines changed

5 files changed

+35
-17
lines changed

instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/config/internal/InstrumentationConfig.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,14 @@ default List<String> getList(String name) {
110110
*/
111111
Map<String, String> getMap(String name, Map<String, String> defaultValue);
112112

113+
/** Returns {@code true} if declarative configuration is used in this configuration. */
114+
boolean isDeclarative();
115+
113116
/**
114-
* Returns a {@link DeclarativeConfigProperties} for the given instrumentation name, or {@code
115-
* null} if declarative configuration is <b>not used at all</b>.
117+
* Returns a {@link DeclarativeConfigProperties} for the given node name, which is usually an
118+
* instrumentation name
119+
*
120+
* <p>Call {@link #isDeclarative()} first to check if declarative configuration is used.
116121
*
117122
* <p>Declarative configuration is used to configure instrumentation properties in a declarative
118123
* way, such as through YAML or JSON files.
@@ -121,8 +126,8 @@ default List<String> getList(String name) {
121126
* "common" for common Java settings that don't apply to other languages.
122127
* @return the declarative configuration properties for the given node name, or {@code null} if
123128
* declarative configuration is <b>not used at all</b>.
129+
* @throws IllegalStateException if {@link #isDeclarative()} returns {@code false}
124130
*/
125-
@Nullable
126131
DeclarativeConfigProperties getDeclarativeConfig(String node);
127132

128133
/**

instrumentation/methods/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/methods/MethodInstrumentationModule.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
import static java.util.Collections.singletonMap;
1111

1212
import com.google.auto.service.AutoService;
13-
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
1413
import io.opentelemetry.api.trace.SpanKind;
14+
import io.opentelemetry.instrumentation.api.incubator.config.internal.InstrumentationConfig;
1515
import io.opentelemetry.javaagent.bootstrap.internal.AgentInstrumentationConfig;
1616
import io.opentelemetry.javaagent.extension.instrumentation.InstrumentationModule;
1717
import io.opentelemetry.javaagent.extension.instrumentation.TypeInstrumentation;
@@ -34,10 +34,11 @@ public MethodInstrumentationModule() {
3434
}
3535

3636
private static List<TypeInstrumentation> createInstrumentations() {
37-
DeclarativeConfigProperties methods =
38-
AgentInstrumentationConfig.get().getDeclarativeConfig("methods");
37+
InstrumentationConfig config = AgentInstrumentationConfig.get();
3938
List<TypeInstrumentation> list =
40-
methods != null ? MethodsConfig.parseDeclarativeConfig(methods) : parseConfigProperties();
39+
config.isDeclarative()
40+
? MethodsConfig.parseDeclarativeConfig(config.getDeclarativeConfig("methods"))
41+
: parseConfigProperties();
4142
// ensure that there is at least one instrumentation so that muzzle reference collection could
4243
// work
4344
if (list.isEmpty()) {

instrumentation/spring/spring-boot-autoconfigure/src/main/java/io/opentelemetry/instrumentation/spring/autoconfigure/internal/properties/ConfigPropertiesBridge.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,17 +111,21 @@ public Map<String, String> getMap(String name, Map<String, String> defaultValue)
111111
}
112112
}
113113

114-
@Nullable
114+
@Override
115+
public boolean isDeclarative() {
116+
return false;
117+
}
118+
115119
@Override
116120
public DeclarativeConfigProperties getDeclarativeConfig(String node) {
117-
// create a spring boot bridge for DeclarativeConfigProperties
118-
return null;
121+
throw new IllegalStateException(
122+
"Declarative configuration is not supported in spring boot autoconfigure yet");
119123
}
120124

121125
@Nullable
122126
@Override
123127
public ConfigProvider getConfigProvider() {
124-
// create a spring boot bridge for ConfigProvider
128+
// declarative config support will be added in the future
125129
return null;
126130
}
127131
}

javaagent-extension-api/src/main/java/io/opentelemetry/javaagent/bootstrap/internal/EmptyInstrumentationConfig.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,15 @@ public Map<String, String> getMap(String name, Map<String, String> defaultValue)
6161
return defaultValue;
6262
}
6363

64-
@Nullable
64+
@Override
65+
public boolean isDeclarative() {
66+
return false;
67+
}
68+
6569
@Override
6670
public DeclarativeConfigProperties getDeclarativeConfig(String node) {
67-
return null;
71+
throw new IllegalStateException(
72+
"Declarative configuration is not supported in the empty instrumentation config");
6873
}
6974

7075
@Nullable

javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/config/ConfigPropertiesBridge.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,12 +111,15 @@ public Map<String, String> getMap(String name, Map<String, String> defaultValue)
111111
}
112112
}
113113

114-
@Nullable
114+
@Override
115+
public boolean isDeclarative() {
116+
return configProvider != null;
117+
}
118+
115119
@Override
116120
public DeclarativeConfigProperties getDeclarativeConfig(String node) {
117-
if (configProvider == null) {
118-
// declarative config is not used
119-
return null;
121+
if (!isDeclarative()) {
122+
throw new IllegalStateException("Declarative configuration is not supported");
120123
}
121124

122125
DeclarativeConfigProperties config =

0 commit comments

Comments
 (0)