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
-
-}

Reply via email to