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 <[email protected]>
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.