andi-huber commented on code in PR #3464:
URL: https://github.com/apache/causeway/pull/3464#discussion_r3005171755


##########
core/config/src/main/java/org/apache/causeway/core/config/observation/CausewayObservationAutoConfiguration.java:
##########
@@ -0,0 +1,64 @@
+package org.apache.causeway.core.config.observation;
+
+import java.util.Optional;
+
+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.Import;
+import org.springframework.context.annotation.Profile;
+
+import org.apache.causeway.commons.internal.observation.ObservationClosure;
+import 
org.apache.causeway.core.config.observation.CausewayObservationAutoConfiguration.DiscardedSpanExportingPredicate;
+
+import io.micrometer.observation.ObservationRegistry;
+import io.micrometer.tracing.exporter.FinishedSpan;
+import io.micrometer.tracing.exporter.SpanExportingPredicate;
+
+/**
+ * Makes observation an opt-in choice based on Spring Profile 'observation' 
being active.
+ * 
+ * <p>see Spring's 
org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration
+ */
+@AutoConfiguration
+@ConditionalOnClass(ObservationRegistry.class)
+@Import({
+       DiscardedSpanExportingPredicate.class
+})
+public class CausewayObservationAutoConfiguration {
+       
+       /**
+        * Does not allow discarded spans to be exported. Register with Spring 
(before auto configuration is running).
+        */
+       public record DiscardedSpanExportingPredicate() implements 
SpanExportingPredicate {
+               @Override
+               public boolean isExportable(final FinishedSpan span) {
+                       return 
!span.getTags().containsKey(ObservationClosure.DISCARD_KEY.getKey());
+               }
+       }
+       
+       @Profile("!observation")
+       @Bean 
+       ObservationRegistry noopObservationRegistry() {
+               return ObservationRegistry.NOOP;
+       }
+       
+       /**
+        * Same as in 
org.springframework.boot.micrometer.observation.autoconfigure.ObservationAutoConfiguration,
+        * that is, acts as a fallback. 
+        */
+       @Profile("observation")
+       @Bean
+       @ConditionalOnMissingBean
+       ObservationRegistry observationRegistry() {

Review Comment:
   why needed? if done wrong, could be registered too early for other 
configurations to have a chance



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to