diff --git a/observability-kit-agent/pom.xml b/observability-kit-agent/pom.xml
index 1879dced..16514e1b 100644
--- a/observability-kit-agent/pom.xml
+++ b/observability-kit-agent/pom.xml
@@ -15,7 +15,7 @@
opentelemetry-vaadin-observability-instrumentation-extension
1.1.1
- 1.17.7
+ 1.18.7
diff --git a/observability-kit-agent/src/main/java/com/vaadin/extension/VaadinObservabilityInstrumentationModule.java b/observability-kit-agent/src/main/java/com/vaadin/extension/VaadinObservabilityInstrumentationModule.java
index aa09bec8..826f07da 100644
--- a/observability-kit-agent/src/main/java/com/vaadin/extension/VaadinObservabilityInstrumentationModule.java
+++ b/observability-kit-agent/src/main/java/com/vaadin/extension/VaadinObservabilityInstrumentationModule.java
@@ -69,9 +69,9 @@ public ElementMatcher.Junction classLoaderMatcher() {
@Override
public boolean isHelperClass(String className) {
- // TODO: check if helper classes can be included by convention
return className != null
- && className.startsWith("com.vaadin.extension");
+ && className.startsWith("com.vaadin.extension")
+ && !className.startsWith("com.vaadin.extension.conf.ConfigurationDefaults");
}
private boolean classExists(String className) {
diff --git a/observability-kit-agent/src/main/java/com/vaadin/extension/conf/Configuration.java b/observability-kit-agent/src/main/java/com/vaadin/extension/conf/Configuration.java
index 5b680349..bb8d1986 100644
--- a/observability-kit-agent/src/main/java/com/vaadin/extension/conf/Configuration.java
+++ b/observability-kit-agent/src/main/java/com/vaadin/extension/conf/Configuration.java
@@ -1,23 +1,30 @@
package com.vaadin.extension.conf;
-import com.vaadin.extension.Constants;
-
-import io.opentelemetry.javaagent.bootstrap.internal.AgentInstrumentationConfig;
+import java.util.function.Function;
/**
* Provides the effective configuration for the Vaadin observability extension.
+ * Initialized by {@code ConfigurationDefaults} from the agent classloader
+ * during auto-configuration, before any instrumentation is applied.
*/
public class Configuration {
- public static final TraceLevel TRACE_LEVEL = determineTraceLevel();
- private static TraceLevel determineTraceLevel() {
- String traceLevelString = AgentInstrumentationConfig.get().getString(
- Constants.CONFIG_TRACE_LEVEL, TraceLevel.DEFAULT.name());
+ private static TraceLevel traceLevel = TraceLevel.DEFAULT;
+ private static Function propertyLookup = key -> null;
+
+ /**
+ * Called by {@code ConfigurationDefaults} during agent initialization to
+ * provide resolved configuration values. Uses only standard Java types to
+ * avoid references to OTel SDK classes in this helper class.
+ */
+ static void initialize(String traceLevelValue,
+ Function lookup) {
try {
- return TraceLevel.valueOf(traceLevelString.toUpperCase());
+ traceLevel = TraceLevel.valueOf(traceLevelValue.toUpperCase());
} catch (IllegalArgumentException ignored) {
- return TraceLevel.DEFAULT;
+ traceLevel = TraceLevel.DEFAULT;
}
+ propertyLookup = lookup;
}
/**
@@ -29,6 +36,17 @@ private static TraceLevel determineTraceLevel() {
* @return true if the trace level is enabled, false if not
*/
public static boolean isEnabled(TraceLevel traceLevel) {
- return TRACE_LEVEL.includes(traceLevel);
+ return Configuration.traceLevel.includes(traceLevel);
+ }
+
+ /**
+ * Looks up a configuration property by key.
+ *
+ * @param key
+ * the property key
+ * @return the property value, or null if not set
+ */
+ public static String getProperty(String key) {
+ return propertyLookup.apply(key);
}
}
diff --git a/observability-kit-agent/src/main/java/com/vaadin/extension/conf/ConfigurationDefaults.java b/observability-kit-agent/src/main/java/com/vaadin/extension/conf/ConfigurationDefaults.java
index 2912eaf3..819e05aa 100644
--- a/observability-kit-agent/src/main/java/com/vaadin/extension/conf/ConfigurationDefaults.java
+++ b/observability-kit-agent/src/main/java/com/vaadin/extension/conf/ConfigurationDefaults.java
@@ -58,7 +58,7 @@ public class ConfigurationDefaults
static final String CONFIGURATION_FILE_PROPERTY = "otel.javaagent.configuration-file";
- public static ConfigProperties configProperties;
+ static ConfigProperties configProperties;
public static SpanExporter spanExporter;
@Override
@@ -77,6 +77,10 @@ private SpanExporter setSpanExporter(SpanExporter spanExporter,
ConfigProperties configProperties) {
ConfigurationDefaults.configProperties = configProperties;
ConfigurationDefaults.spanExporter = spanExporter;
+ Configuration.initialize(
+ configProperties.getString(Constants.CONFIG_TRACE_LEVEL,
+ TraceLevel.DEFAULT.name()),
+ configProperties::getString);
return spanExporter;
}
diff --git a/observability-kit-agent/src/main/java/com/vaadin/extension/instrumentation/client/ClientInstrumentation.java b/observability-kit-agent/src/main/java/com/vaadin/extension/instrumentation/client/ClientInstrumentation.java
index d18abfc9..fc94839c 100644
--- a/observability-kit-agent/src/main/java/com/vaadin/extension/instrumentation/client/ClientInstrumentation.java
+++ b/observability-kit-agent/src/main/java/com/vaadin/extension/instrumentation/client/ClientInstrumentation.java
@@ -22,7 +22,7 @@
import net.bytebuddy.description.type.TypeDescription;
import net.bytebuddy.matcher.ElementMatcher;
-import com.vaadin.extension.conf.ConfigurationDefaults;
+import com.vaadin.extension.conf.Configuration;
import static io.opentelemetry.javaagent.extension.matcher.AgentElementMatchers.hasClassesNamed;
import static net.bytebuddy.matcher.ElementMatchers.isConstructor;
@@ -80,8 +80,7 @@ public void transform(TypeTransformer transformer) {
Field functionField = helperClazz.getField("configHolder");
AtomicReference> functionHolder =
(AtomicReference>) functionField.get(null);
- functionHolder.set((key) ->
- ConfigurationDefaults.configProperties.getString(key));
+ functionHolder.set(Configuration::getProperty);
Field consumerField = helperClazz.getField("exportHolder");
AtomicReference
+ http://127.0.0.1:4318
http/protobuf
5000
${otel.exporter}
diff --git a/pom.xml b/pom.xml
index c1b50b46..f3f49e04 100644
--- a/pom.xml
+++ b/pom.xml
@@ -65,8 +65,8 @@
UTF-8
6.0.0
2.1.1
- 1.54.1
- 2.20.1
+ 1.60.1
+ 2.26.1
11.0.26
5.9.2
5.20.0