This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch 3975-telemetry
in repository https://gitbox.apache.org/repos/asf/causeway.git
The following commit(s) were added to refs/heads/3975-telemetry by this push:
new 1cb8252a2c5 CAUSEWAY-3975: fleshes out
CausewayObservationAutoConfiguration
1cb8252a2c5 is described below
commit 1cb8252a2c5e4023624fe9122f6e58a7dba915d8
Author: andi-huber <[email protected]>
AuthorDate: Sat Mar 28 18:43:43 2026 +0100
CAUSEWAY-3975: fleshes out CausewayObservationAutoConfiguration
---
core/config/src/main/java/module-info.java | 3 +-
.../core/config/CausewayModuleCoreConfig.java | 2 ++
.../CausewayObservationAutoConfiguration.java | 33 ++++++++++++++++++++++
.../CausewayObservationDeactivated.java | 13 ---------
4 files changed, 37 insertions(+), 14 deletions(-)
diff --git a/core/config/src/main/java/module-info.java
b/core/config/src/main/java/module-info.java
index 228583991cb..aa5d5e02d26 100644
--- a/core/config/src/main/java/module-info.java
+++ b/core/config/src/main/java/module-info.java
@@ -48,12 +48,13 @@
requires transitive micrometer.commons;
requires transitive micrometer.observation;
requires transitive micrometer.tracing;
+ requires transitive spring.boot;
requires spring.aop;
requires spring.beans;
- requires transitive spring.boot;
requires spring.context;
requires spring.core;
requires spring.tx;
+ requires spring.boot.autoconfigure;
requires org.slf4j;
opens org.apache.causeway.core.config to spring.core,
org.hibernate.validator;
diff --git
a/core/config/src/main/java/org/apache/causeway/core/config/CausewayModuleCoreConfig.java
b/core/config/src/main/java/org/apache/causeway/core/config/CausewayModuleCoreConfig.java
index 0fb6bee6710..ba46e9048c5 100644
---
a/core/config/src/main/java/org/apache/causeway/core/config/CausewayModuleCoreConfig.java
+++
b/core/config/src/main/java/org/apache/causeway/core/config/CausewayModuleCoreConfig.java
@@ -34,6 +34,7 @@
import org.apache.causeway.core.config.environment.CausewayLocaleInitializer;
import org.apache.causeway.core.config.environment.CausewaySystemEnvironment;
import org.apache.causeway.core.config.environment.CausewayTimeZoneInitializer;
+import
org.apache.causeway.core.config.observation.CausewayObservationAutoConfiguration;
import
org.apache.causeway.core.config.observation.CausewayObservationIntegration;
import
org.apache.causeway.core.config.observation.CausewayObservationIntegration.DiscardedSpanExportingPredicate;
import
org.apache.causeway.core.config.validators.PatternOptionalStringConstraintValidator;
@@ -47,6 +48,7 @@
// Observation configuration
// needs to happen early, at least before auto configuration gets to run
DiscardedSpanExportingPredicate.class,
+ CausewayObservationAutoConfiguration.class,
// @Component
CausewayConfiguration.class,
diff --git
a/core/config/src/main/java/org/apache/causeway/core/config/observation/CausewayObservationAutoConfiguration.java
b/core/config/src/main/java/org/apache/causeway/core/config/observation/CausewayObservationAutoConfiguration.java
new file mode 100644
index 00000000000..f84230c8a95
--- /dev/null
+++
b/core/config/src/main/java/org/apache/causeway/core/config/observation/CausewayObservationAutoConfiguration.java
@@ -0,0 +1,33 @@
+package org.apache.causeway.core.config.observation;
+
+import org.springframework.boot.autoconfigure.AutoConfiguration;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Profile;
+
+import io.micrometer.observation.ObservationRegistry;
+
+/**
+ * Makes observation an opt-in choice based on profile 'observation' being
active.
+ *
+ * <p>see Spring's
org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration
+ */
+@AutoConfiguration
+@ConditionalOnClass(ObservationRegistry.class)
+public class CausewayObservationAutoConfiguration {
+
+ @Profile("!observation")
+ @Bean
+ ObservationRegistry noopObservationRegistry() {
+ return ObservationRegistry.NOOP;
+ }
+
+ @Profile("observation")
+ @Bean
+ @ConditionalOnMissingBean
+ ObservationRegistry observationRegistry() {
+ return ObservationRegistry.create();
+ }
+
+}
diff --git
a/core/config/src/main/java/org/apache/causeway/core/config/observation/CausewayObservationDeactivated.java
b/core/config/src/main/java/org/apache/causeway/core/config/observation/CausewayObservationDeactivated.java
deleted file mode 100644
index aae4f90ba7e..00000000000
---
a/core/config/src/main/java/org/apache/causeway/core/config/observation/CausewayObservationDeactivated.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.apache.causeway.core.config.observation;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Profile;
-
-@Configuration(proxyBeanMethods = false)
-@Profile("!observation")
-public class CausewayObservationDeactivated {
-
- //TODO disable the entire metric stack, that is, make observation an
opt-in choice based on profile 'observation' being active
- //watch out for Spring's
org.springframework.boot.micrometer.observation.autoconfigure.ObservationRegistryPostProcessor
-
-}