This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new b91d4e8137e CAMEL-20083: camel-opentelemtry - Make it easier to 
configure for camel-main
b91d4e8137e is described below

commit b91d4e8137eb790cc074fd1c3fece8b0cee85b07
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Sun Nov 5 18:58:05 2023 +0100

    CAMEL-20083: camel-opentelemtry - Make it easier to configure for camel-main
---
 .../CamelMicrometerObservationTestSupport.java     |  6 ++---
 .../observation/TwoServiceWithExcludeTest.java     |  7 ++----
 .../OpenTelemetryTracerConfigurer.java             | 13 ++---------
 .../OpenTelemetryTracingStrategy.java              | 11 +++++----
 .../CamelOpenTelemetryTestSupport.java             |  6 ++---
 .../opentelemetry/TwoServiceWithExcludeTest.java   |  7 ++----
 .../main/java/org/apache/camel/tracing/Tracer.java | 26 ++++++++--------------
 .../ROOT/pages/camel-4x-upgrade-guide-4_2.adoc     |  9 ++++++++
 8 files changed, 35 insertions(+), 50 deletions(-)

diff --git 
a/components/camel-observation/src/test/java/org/apache/camel/observation/CamelMicrometerObservationTestSupport.java
 
b/components/camel-observation/src/test/java/org/apache/camel/observation/CamelMicrometerObservationTestSupport.java
index 4ad8fcf2e07..55d28c73f6d 100644
--- 
a/components/camel-observation/src/test/java/org/apache/camel/observation/CamelMicrometerObservationTestSupport.java
+++ 
b/components/camel-observation/src/test/java/org/apache/camel/observation/CamelMicrometerObservationTestSupport.java
@@ -21,10 +21,8 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -138,8 +136,8 @@ class CamelMicrometerObservationTestSupport extends 
CamelTestSupport {
         }, otelBaggageManager);
     }
 
-    protected Set<String> getExcludePatterns() {
-        return new HashSet<>();
+    protected String getExcludePatterns() {
+        return null;
     }
 
     protected void verify() {
diff --git 
a/components/camel-observation/src/test/java/org/apache/camel/observation/TwoServiceWithExcludeTest.java
 
b/components/camel-observation/src/test/java/org/apache/camel/observation/TwoServiceWithExcludeTest.java
index 76b3f494c18..32dfa8355d2 100644
--- 
a/components/camel-observation/src/test/java/org/apache/camel/observation/TwoServiceWithExcludeTest.java
+++ 
b/components/camel-observation/src/test/java/org/apache/camel/observation/TwoServiceWithExcludeTest.java
@@ -16,9 +16,6 @@
  */
 package org.apache.camel.observation;
 
-import java.util.Collections;
-import java.util.Set;
-
 import io.opentelemetry.api.trace.SpanKind;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.builder.RouteBuilder;
@@ -39,8 +36,8 @@ class TwoServiceWithExcludeTest extends 
CamelMicrometerObservationTestSupport {
     }
 
     @Override
-    protected Set<String> getExcludePatterns() {
-        return Collections.singleton("direct:ServiceB");
+    protected String getExcludePatterns() {
+        return "direct:ServiceB";
     }
 
     @Test
diff --git 
a/components/camel-opentelemetry/src/generated/java/org/apache/camel/opentelemetry/OpenTelemetryTracerConfigurer.java
 
b/components/camel-opentelemetry/src/generated/java/org/apache/camel/opentelemetry/OpenTelemetryTracerConfigurer.java
index 0cd14dce133..a62e2a7b1a9 100644
--- 
a/components/camel-opentelemetry/src/generated/java/org/apache/camel/opentelemetry/OpenTelemetryTracerConfigurer.java
+++ 
b/components/camel-opentelemetry/src/generated/java/org/apache/camel/opentelemetry/OpenTelemetryTracerConfigurer.java
@@ -28,7 +28,7 @@ public class OpenTelemetryTracerConfigurer extends 
org.apache.camel.support.comp
         case "encoding":
         case "Encoding": target.setEncoding(property(camelContext, 
boolean.class, value)); return true;
         case "excludepatterns":
-        case "ExcludePatterns": 
target.setExcludePatterns(property(camelContext, java.util.Set.class, value)); 
return true;
+        case "ExcludePatterns": 
target.setExcludePatterns(property(camelContext, java.lang.String.class, 
value)); return true;
         case "instrumentationname":
         case "InstrumentationName": 
target.setInstrumentationName(property(camelContext, java.lang.String.class, 
value)); return true;
         case "tracer":
@@ -49,7 +49,7 @@ public class OpenTelemetryTracerConfigurer extends 
org.apache.camel.support.comp
         case "encoding":
         case "Encoding": return boolean.class;
         case "excludepatterns":
-        case "ExcludePatterns": return java.util.Set.class;
+        case "ExcludePatterns": return java.lang.String.class;
         case "instrumentationname":
         case "InstrumentationName": return java.lang.String.class;
         case "tracer":
@@ -81,14 +81,5 @@ public class OpenTelemetryTracerConfigurer extends 
org.apache.camel.support.comp
         default: return null;
         }
     }
-
-    @Override
-    public Object getCollectionValueType(Object target, String name, boolean 
ignoreCase) {
-        switch (ignoreCase ? name.toLowerCase() : name) {
-        case "excludepatterns":
-        case "ExcludePatterns": return java.lang.String.class;
-        default: return null;
-        }
-    }
 }
 
diff --git 
a/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/OpenTelemetryTracingStrategy.java
 
b/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/OpenTelemetryTracingStrategy.java
index 9f3f3870cd1..7208d53dd8b 100644
--- 
a/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/OpenTelemetryTracingStrategy.java
+++ 
b/components/camel-opentelemetry/src/main/java/org/apache/camel/opentelemetry/OpenTelemetryTracingStrategy.java
@@ -101,10 +101,13 @@ public class OpenTelemetryTracingStrategy implements 
InterceptStrategy {
     // Adapted from org.apache.camel.impl.engine.DefaultTracer.shouldTrace
     // org.apache.camel.impl.engine.DefaultTracer.shouldTracePattern
     private boolean shouldTrace(NamedNode definition) {
-        for (String pattern : tracer.getExcludePatterns()) {
-            // use matchPattern method from endpoint helper that has a good 
matcher we use in Camel
-            if (PatternHelper.matchPattern(definition.getId(), pattern)) {
-                return false;
+        if (tracer.getExcludePatterns() != null) {
+            for (String pattern : tracer.getExcludePatterns().split(",")) {
+                pattern = pattern.trim();
+                // use matchPattern method from endpoint helper that has a 
good matcher we use in Camel
+                if (PatternHelper.matchPattern(definition.getId(), pattern)) {
+                    return false;
+                }
             }
         }
 
diff --git 
a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/CamelOpenTelemetryTestSupport.java
 
b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/CamelOpenTelemetryTestSupport.java
index 1fd59a4cb70..1bc2bfd1ea4 100644
--- 
a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/CamelOpenTelemetryTestSupport.java
+++ 
b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/CamelOpenTelemetryTestSupport.java
@@ -20,10 +20,8 @@ import java.net.URI;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Function;
 
@@ -92,8 +90,8 @@ class CamelOpenTelemetryTestSupport extends CamelTestSupport {
         return context;
     }
 
-    protected Set<String> getExcludePatterns() {
-        return new HashSet<>();
+    protected String getExcludePatterns() {
+        return null;
     }
 
     protected void verify() {
diff --git 
a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/TwoServiceWithExcludeTest.java
 
b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/TwoServiceWithExcludeTest.java
index 44665b7306d..4448365acfa 100644
--- 
a/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/TwoServiceWithExcludeTest.java
+++ 
b/components/camel-opentelemetry/src/test/java/org/apache/camel/opentelemetry/TwoServiceWithExcludeTest.java
@@ -16,9 +16,6 @@
  */
 package org.apache.camel.opentelemetry;
 
-import java.util.Collections;
-import java.util.Set;
-
 import io.opentelemetry.api.trace.SpanKind;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.builder.RouteBuilder;
@@ -38,8 +35,8 @@ class TwoServiceWithExcludeTest extends 
CamelOpenTelemetryTestSupport {
     }
 
     @Override
-    protected Set<String> getExcludePatterns() {
-        return Collections.singleton("direct:ServiceB");
+    protected String getExcludePatterns() {
+        return "direct:ServiceB";
     }
 
     @Test
diff --git 
a/components/camel-tracing/src/main/java/org/apache/camel/tracing/Tracer.java 
b/components/camel-tracing/src/main/java/org/apache/camel/tracing/Tracer.java
index 3afbeae663f..15848042f54 100644
--- 
a/components/camel-tracing/src/main/java/org/apache/camel/tracing/Tracer.java
+++ 
b/components/camel-tracing/src/main/java/org/apache/camel/tracing/Tracer.java
@@ -17,10 +17,8 @@
 package org.apache.camel.tracing;
 
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Map;
 import java.util.ServiceLoader;
-import java.util.Set;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Component;
@@ -30,6 +28,7 @@ import org.apache.camel.NamedNode;
 import org.apache.camel.Route;
 import org.apache.camel.RuntimeCamelException;
 import org.apache.camel.StaticService;
+import org.apache.camel.api.management.ManagedAttribute;
 import org.apache.camel.spi.CamelEvent;
 import org.apache.camel.spi.CamelLogger;
 import org.apache.camel.spi.CamelTracingService;
@@ -70,7 +69,7 @@ public abstract class Tracer extends ServiceSupport 
implements CamelTracingServi
     protected boolean encoding;
     private final TracingLogListener logListener = new TracingLogListener();
     private final TracingEventNotifier eventNotifier = new 
TracingEventNotifier();
-    private Set<String> excludePatterns = new HashSet<>(0);
+    private String excludePatterns;
     private InterceptStrategy tracingStrategy;
     private CamelContext camelContext;
 
@@ -120,14 +119,16 @@ public abstract class Tracer extends ServiceSupport 
implements CamelTracingServi
         this.camelContext = camelContext;
     }
 
-    public Set<String> getExcludePatterns() {
+    @ManagedAttribute
+    public String getExcludePatterns() {
         return excludePatterns;
     }
 
-    public void setExcludePatterns(Set<String> excludePatterns) {
+    public void setExcludePatterns(String excludePatterns) {
         this.excludePatterns = excludePatterns;
     }
 
+    @ManagedAttribute
     public boolean isEncoding() {
         return encoding;
     }
@@ -136,20 +137,10 @@ public abstract class Tracer extends ServiceSupport 
implements CamelTracingServi
         this.encoding = encoding;
     }
 
-    /**
-     * Adds an exclude pattern that will disable tracing for Camel messages 
that matches the pattern.
-     *
-     * @param pattern the pattern such as route id, endpoint url
-     */
-    public void addExcludePattern(String pattern) {
-        excludePatterns.add(pattern);
-    }
-
     @Override
     public RoutePolicy createRoutePolicy(CamelContext camelContext, String 
routeId, NamedNode route) {
         init(camelContext);
         return new TracingRoutePolicy();
-
     }
 
     /**
@@ -222,8 +213,9 @@ public abstract class Tracer extends ServiceSupport 
implements CamelTracingServi
 
     private boolean isExcluded(Exchange exchange, Endpoint endpoint) {
         String url = endpoint.getEndpointUri();
-        if (url != null && !excludePatterns.isEmpty()) {
-            for (String pattern : excludePatterns) {
+        if (url != null && excludePatterns != null) {
+            for (String pattern : excludePatterns.split(",")) {
+                pattern = pattern.trim();
                 if (EndpointHelper.matchEndpoint(exchange.getContext(), url, 
pattern)) {
                     return true;
                 }
diff --git 
a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_2.adoc 
b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_2.adoc
index dcf787c78a3..1c9bd3eaef2 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_2.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_2.adoc
@@ -30,6 +30,11 @@ in case of mis-configuration or invalid hostname.
 This can be disabled by setting `preValidateHostAndPort=false`, which will 
postpone validation
 to consumer is started, and will instead re-connect endlessly (5 sec delay by 
default) until success.
 
+=== camel-observation / camel-opentelemetry
+
+The `excludePatterns` option has changed from `Set<String>` to be `String` 
where multiple patterns are separated by comma.
+This is more configuration and tooling friendly and used by other components.
+
 === camel-saga, camel-lra
 
 The `org.apache.camel.service.lra.LRAClient` can now access `Exchange` to 
retrieve further context information. Therefore, there are following changes in 
interface methods
@@ -65,3 +70,7 @@ The `initialProperties` and `overrideProperties` on Camel 
`PropertiesComponent`
 take precedence over Spring Boot properties. This can be used for testing 
purpose,
 to allow overriding properties when using `CamelTestSupport` for unit testing.
 
+=== camel-opentelemetry-starter
+
+The `excludePatterns` option has changed from `Set<String>` to be `String` 
where multiple patterns are separated by comma.
+This is more configuration and tooling friendly and used by other components.

Reply via email to