This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch camel-4.10.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-4.10.x by this push:
new a7f7ac2e68e CAMEL-22007: camel-micrometer - Configuring tags is not
tooling friendly
a7f7ac2e68e is described below
commit a7f7ac2e68e44004a071f0300cb41e2fd7223cd6
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed Apr 23 09:18:02 2025 +0200
CAMEL-22007: camel-micrometer - Configuring tags is not tooling friendly
---
.../camel/catalog/components/micrometer.json | 10 ++---
.../micrometer/MicrometerEndpointConfigurer.java | 11 ++++++
.../micrometer/MicrometerEndpointUriFactory.java | 5 ++-
.../camel/component/micrometer/micrometer.json | 10 ++---
.../micrometer/AbstractMicrometerProducer.java | 11 +++++-
.../component/micrometer/MicrometerComponent.java | 45 ++++++++++++++--------
.../component/micrometer/MicrometerEndpoint.java | 34 ++++++++++++----
.../component/micrometer/CounterEndpointTest.java | 3 +-
.../component/micrometer/CounterRouteTest.java | 2 +-
.../DistributionSummaryEndpointTest.java | 3 +-
.../micrometer/MicrometerComponentTest.java | 7 ++--
.../micrometer/MicrometerEndpointTest.java | 3 +-
.../component/micrometer/TimerEndpointTest.java | 3 +-
...a => TimerRouteBackwardsCompatibleTagTest.java} | 3 +-
.../camel/component/micrometer/TimerRouteTest.java | 2 +-
.../builder/endpoint/StaticEndpointBuilders.java | 6 ---
.../dsl/MicrometerEndpointBuilderFactory.java | 43 ++++++++++++++++++---
17 files changed, 135 insertions(+), 66 deletions(-)
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/micrometer.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/micrometer.json
index 07d246e6f73..a6647fc061c 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/micrometer.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/micrometer.json
@@ -40,11 +40,11 @@
"properties": {
"metricsType": { "index": 0, "kind": "path", "displayName": "Metrics
Type", "group": "producer", "label": "", "required": true, "type": "object",
"javaType": "io.micrometer.core.instrument.Meter.Type", "enum": [ "counter",
"summary", "timer" ], "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Type of metrics" },
"metricsName": { "index": 1, "kind": "path", "displayName": "Metrics
Name", "group": "producer", "label": "", "required": true, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "Name of metrics" },
- "tags": { "index": 2, "kind": "path", "displayName": "Tags", "group":
"producer", "label": "", "required": false, "type": "object", "javaType":
"java.lang.Iterable<io.micrometer.core.instrument.Tag>", "deprecated": false,
"autowired": false, "secret": false, "description": "Tags of metrics" },
- "action": { "index": 3, "kind": "parameter", "displayName": "Action",
"group": "producer", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "enum": [ "start", "stop" ], "deprecated":
false, "autowired": false, "secret": false, "description": "Action expression
when using timer type" },
- "decrement": { "index": 4, "kind": "parameter", "displayName":
"Decrement", "group": "producer", "label": "", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "description": "Decrement value expression when using
counter type" },
- "increment": { "index": 5, "kind": "parameter", "displayName":
"Increment", "group": "producer", "label": "", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "description": "Increment value expression when using
counter type" },
- "metricsDescription": { "index": 6, "kind": "parameter", "displayName":
"Metrics Description", "group": "producer", "label": "", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "description": "Description of metrics" },
+ "action": { "index": 2, "kind": "parameter", "displayName": "Action",
"group": "producer", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "enum": [ "start", "stop" ], "deprecated":
false, "autowired": false, "secret": false, "description": "Action expression
when using timer type" },
+ "decrement": { "index": 3, "kind": "parameter", "displayName":
"Decrement", "group": "producer", "label": "", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "description": "Decrement value expression when using
counter type" },
+ "increment": { "index": 4, "kind": "parameter", "displayName":
"Increment", "group": "producer", "label": "", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "description": "Increment value expression when using
counter type" },
+ "metricsDescription": { "index": 5, "kind": "parameter", "displayName":
"Metrics Description", "group": "producer", "label": "", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "description": "Description of metrics" },
+ "tags": { "index": 6, "kind": "parameter", "displayName": "Tags", "group":
"producer", "label": "", "required": false, "type": "object", "javaType":
"java.util.Map<java.lang.String, java.lang.String>", "prefix": "tags.",
"multiValue": true, "deprecated": false, "autowired": false, "secret": false,
"description": "Tags of metrics" },
"value": { "index": 7, "kind": "parameter", "displayName": "Value",
"group": "producer", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "description": "Value expression when using histogram type" },
"lazyStartProducer": { "index": 8, "kind": "parameter", "displayName":
"Lazy Start Producer", "group": "producer (advanced)", "label":
"producer,advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": false, "description": "Whether the producer should be started
lazy (on the first message). By starting lazy you can use this to allow
CamelContext and routes to startup in situations where a produc [...]
}
diff --git
a/components/camel-micrometer/src/generated/java/org/apache/camel/component/micrometer/MicrometerEndpointConfigurer.java
b/components/camel-micrometer/src/generated/java/org/apache/camel/component/micrometer/MicrometerEndpointConfigurer.java
index 1d2007a622b..b80fa4809a8 100644
---
a/components/camel-micrometer/src/generated/java/org/apache/camel/component/micrometer/MicrometerEndpointConfigurer.java
+++
b/components/camel-micrometer/src/generated/java/org/apache/camel/component/micrometer/MicrometerEndpointConfigurer.java
@@ -30,6 +30,7 @@ public class MicrometerEndpointConfigurer extends
PropertyConfigurerSupport impl
case "lazyStartProducer":
target.setLazyStartProducer(property(camelContext, boolean.class, value));
return true;
case "metricsdescription":
case "metricsDescription":
target.setMetricsDescription(property(camelContext, java.lang.String.class,
value)); return true;
+ case "tags": target.setTags(property(camelContext,
java.util.Map.class, value)); return true;
case "value": target.setValue(property(camelContext,
java.lang.String.class, value)); return true;
default: return false;
}
@@ -45,6 +46,7 @@ public class MicrometerEndpointConfigurer extends
PropertyConfigurerSupport impl
case "lazyStartProducer": return boolean.class;
case "metricsdescription":
case "metricsDescription": return java.lang.String.class;
+ case "tags": return java.util.Map.class;
case "value": return java.lang.String.class;
default: return null;
}
@@ -61,9 +63,18 @@ public class MicrometerEndpointConfigurer extends
PropertyConfigurerSupport impl
case "lazyStartProducer": return target.isLazyStartProducer();
case "metricsdescription":
case "metricsDescription": return target.getMetricsDescription();
+ case "tags": return target.getTags();
case "value": return target.getValue();
default: return null;
}
}
+
+ @Override
+ public Object getCollectionValueType(Object target, String name, boolean
ignoreCase) {
+ switch (ignoreCase ? name.toLowerCase() : name) {
+ case "tags": return java.lang.String.class;
+ default: return null;
+ }
+ }
}
diff --git
a/components/camel-micrometer/src/generated/java/org/apache/camel/component/micrometer/MicrometerEndpointUriFactory.java
b/components/camel-micrometer/src/generated/java/org/apache/camel/component/micrometer/MicrometerEndpointUriFactory.java
index 8f923e55997..9e3a8a2773a 100644
---
a/components/camel-micrometer/src/generated/java/org/apache/camel/component/micrometer/MicrometerEndpointUriFactory.java
+++
b/components/camel-micrometer/src/generated/java/org/apache/camel/component/micrometer/MicrometerEndpointUriFactory.java
@@ -35,7 +35,9 @@ public class MicrometerEndpointUriFactory extends
org.apache.camel.support.compo
props.add("value");
PROPERTY_NAMES = Collections.unmodifiableSet(props);
SECRET_PROPERTY_NAMES = Collections.emptySet();
- MULTI_VALUE_PREFIXES = Collections.emptySet();
+ Set<String> prefixes = new HashSet<>(1);
+ prefixes.add("tags.");
+ MULTI_VALUE_PREFIXES = Collections.unmodifiableSet(prefixes);
}
@Override
@@ -52,7 +54,6 @@ public class MicrometerEndpointUriFactory extends
org.apache.camel.support.compo
uri = buildPathParameter(syntax, uri, "metricsType", null, true, copy);
uri = buildPathParameter(syntax, uri, "metricsName", null, true, copy);
- uri = buildPathParameter(syntax, uri, "tags", null, false, copy);
uri = buildQueryParameters(uri, copy, encode);
return uri;
}
diff --git
a/components/camel-micrometer/src/generated/resources/META-INF/org/apache/camel/component/micrometer/micrometer.json
b/components/camel-micrometer/src/generated/resources/META-INF/org/apache/camel/component/micrometer/micrometer.json
index 07d246e6f73..a6647fc061c 100644
---
a/components/camel-micrometer/src/generated/resources/META-INF/org/apache/camel/component/micrometer/micrometer.json
+++
b/components/camel-micrometer/src/generated/resources/META-INF/org/apache/camel/component/micrometer/micrometer.json
@@ -40,11 +40,11 @@
"properties": {
"metricsType": { "index": 0, "kind": "path", "displayName": "Metrics
Type", "group": "producer", "label": "", "required": true, "type": "object",
"javaType": "io.micrometer.core.instrument.Meter.Type", "enum": [ "counter",
"summary", "timer" ], "deprecated": false, "deprecationNote": "", "autowired":
false, "secret": false, "description": "Type of metrics" },
"metricsName": { "index": 1, "kind": "path", "displayName": "Metrics
Name", "group": "producer", "label": "", "required": true, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "deprecationNote": "",
"autowired": false, "secret": false, "description": "Name of metrics" },
- "tags": { "index": 2, "kind": "path", "displayName": "Tags", "group":
"producer", "label": "", "required": false, "type": "object", "javaType":
"java.lang.Iterable<io.micrometer.core.instrument.Tag>", "deprecated": false,
"autowired": false, "secret": false, "description": "Tags of metrics" },
- "action": { "index": 3, "kind": "parameter", "displayName": "Action",
"group": "producer", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "enum": [ "start", "stop" ], "deprecated":
false, "autowired": false, "secret": false, "description": "Action expression
when using timer type" },
- "decrement": { "index": 4, "kind": "parameter", "displayName":
"Decrement", "group": "producer", "label": "", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "description": "Decrement value expression when using
counter type" },
- "increment": { "index": 5, "kind": "parameter", "displayName":
"Increment", "group": "producer", "label": "", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "description": "Increment value expression when using
counter type" },
- "metricsDescription": { "index": 6, "kind": "parameter", "displayName":
"Metrics Description", "group": "producer", "label": "", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "description": "Description of metrics" },
+ "action": { "index": 2, "kind": "parameter", "displayName": "Action",
"group": "producer", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "enum": [ "start", "stop" ], "deprecated":
false, "autowired": false, "secret": false, "description": "Action expression
when using timer type" },
+ "decrement": { "index": 3, "kind": "parameter", "displayName":
"Decrement", "group": "producer", "label": "", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "description": "Decrement value expression when using
counter type" },
+ "increment": { "index": 4, "kind": "parameter", "displayName":
"Increment", "group": "producer", "label": "", "required": false, "type":
"string", "javaType": "java.lang.String", "deprecated": false, "autowired":
false, "secret": false, "description": "Increment value expression when using
counter type" },
+ "metricsDescription": { "index": 5, "kind": "parameter", "displayName":
"Metrics Description", "group": "producer", "label": "", "required": false,
"type": "string", "javaType": "java.lang.String", "deprecated": false,
"autowired": false, "secret": false, "description": "Description of metrics" },
+ "tags": { "index": 6, "kind": "parameter", "displayName": "Tags", "group":
"producer", "label": "", "required": false, "type": "object", "javaType":
"java.util.Map<java.lang.String, java.lang.String>", "prefix": "tags.",
"multiValue": true, "deprecated": false, "autowired": false, "secret": false,
"description": "Tags of metrics" },
"value": { "index": 7, "kind": "parameter", "displayName": "Value",
"group": "producer", "label": "", "required": false, "type": "string",
"javaType": "java.lang.String", "deprecated": false, "autowired": false,
"secret": false, "description": "Value expression when using histogram type" },
"lazyStartProducer": { "index": 8, "kind": "parameter", "displayName":
"Lazy Start Producer", "group": "producer (advanced)", "label":
"producer,advanced", "required": false, "type": "boolean", "javaType":
"boolean", "deprecated": false, "autowired": false, "secret": false,
"defaultValue": false, "description": "Whether the producer should be started
lazy (on the first message). By starting lazy you can use this to allow
CamelContext and routes to startup in situations where a produc [...]
}
diff --git
a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/AbstractMicrometerProducer.java
b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/AbstractMicrometerProducer.java
index 60b79df4a39..c89b6b7234d 100644
---
a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/AbstractMicrometerProducer.java
+++
b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/AbstractMicrometerProducer.java
@@ -39,10 +39,18 @@ public abstract class AbstractMicrometerProducer<T extends
Meter> extends Defaul
private static final String HEADER_PATTERN = HEADER_PREFIX + "*";
+ private Iterable<Tag> tags;
+
protected AbstractMicrometerProducer(MicrometerEndpoint endpoint) {
super(endpoint);
}
+ @Override
+ protected void doBuild() throws Exception {
+ super.doBuild();
+ this.tags = getEndpoint().createTags();
+ }
+
@Override
public MicrometerEndpoint getEndpoint() {
return (MicrometerEndpoint) super.getEndpoint();
@@ -55,9 +63,8 @@ public abstract class AbstractMicrometerProducer<T extends
Meter> extends Defaul
String finalMetricsName = getStringHeader(in, HEADER_METRIC_NAME,
defaultMetricsName);
String defaultMetricsDescription = simple(exchange,
getEndpoint().getMetricsDescription(), String.class);
String finalMetricsDescription = getStringHeader(in,
HEADER_METRIC_DESCRIPTION, defaultMetricsDescription);
- Iterable<Tag> defaultTags = getEndpoint().getTags();
Iterable<Tag> headerTags = getTagHeader(in, HEADER_METRIC_TAGS,
Tags.empty());
- Iterable<Tag> finalTags = Tags.concat(defaultTags, headerTags).stream()
+ Iterable<Tag> finalTags = Tags.concat(tags, headerTags).stream()
.map(tag -> Tag.of(
simple(exchange, tag.getKey(), String.class),
simple(exchange, tag.getValue(), String.class)))
diff --git
a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerComponent.java
b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerComponent.java
index a1388867b36..ff0659ae128 100644
---
a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerComponent.java
+++
b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerComponent.java
@@ -16,13 +16,11 @@
*/
package org.apache.camel.component.micrometer;
+import java.util.HashMap;
import java.util.Map;
-import java.util.stream.Stream;
import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.MeterRegistry;
-import io.micrometer.core.instrument.Tag;
-import io.micrometer.core.instrument.Tags;
import org.apache.camel.Endpoint;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.Registry;
@@ -62,14 +60,38 @@ public class MicrometerComponent extends DefaultComponent {
protected Endpoint createEndpoint(String uri, String remaining,
Map<String, Object> parameters) throws Exception {
String metricsName = getMetricsName(remaining);
Meter.Type metricsType = getMetricsType(remaining);
- Iterable<Tag> tags = getMetricsTag(parameters);
- LOG.debug("Metrics type: {}; name: {}; tags: {}", metricsType,
metricsName, tags);
- Endpoint endpoint = new MicrometerEndpoint(uri, this, metricsRegistry,
metricsType, metricsName, tags);
+ // backwards compatible
+ Map<String, String> map = getTags(parameters);
+ if (map != null && !map.isEmpty()) {
+ LOG.warn(
+ "Deprecated tags=key1=value&key2=value2 parameter in use.
Migrate to use multi-valued tags.key1=value1&tags.key2=value2 syntax");
+ }
+
+ LOG.debug("Metrics type: {}; name: {}", metricsType, metricsName);
+ MicrometerEndpoint endpoint = new MicrometerEndpoint(uri, this,
metricsRegistry, metricsType, metricsName);
+ if (map != null) {
+ endpoint.setTags(map);
+ }
setProperties(endpoint, parameters);
return endpoint;
}
+ Map<String, String> getTags(Map<String, Object> parameters) {
+ String tagsString = getAndRemoveParameter(parameters, "tags",
String.class, "");
+ if (tagsString != null && !tagsString.isEmpty()) {
+ Map<String, String> answer = new HashMap<>();
+ for (String tag : tagsString.split("\\s*,\\s*")) {
+ String[] e = tag.split("\\s*=\\s*");
+ if (e.length == 2) {
+ answer.put(e[0], e[1]);
+ }
+ }
+ return answer;
+ }
+ return null;
+ }
+
String getMetricsName(String remaining) {
String name = StringHelper.after(remaining, ":");
return name == null ? remaining : name;
@@ -82,17 +104,6 @@ public class MicrometerComponent extends DefaultComponent {
: MicrometerUtils.getByName(type);
}
- Iterable<Tag> getMetricsTag(Map<String, Object> parameters) {
- String tagsString = getAndRemoveParameter(parameters, "tags",
String.class, "");
- if (tagsString != null && !tagsString.isEmpty()) {
- String[] tagStrings = tagsString.split("\\s*,\\s*");
- return Stream.of(tagStrings)
- .map(s -> Tags.of(s.split("\\s*=\\s*")))
- .reduce(Tags.empty(), Tags::and);
- }
- return Tags.empty();
- }
-
public MeterRegistry getMetricsRegistry() {
return metricsRegistry;
}
diff --git
a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerEndpoint.java
b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerEndpoint.java
index 59bffdde62d..fa6011805ec 100644
---
a/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerEndpoint.java
+++
b/components/camel-micrometer/src/main/java/org/apache/camel/component/micrometer/MicrometerEndpoint.java
@@ -16,6 +16,10 @@
*/
package org.apache.camel.component.micrometer;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.Tag;
@@ -49,8 +53,8 @@ public class MicrometerEndpoint extends DefaultEndpoint {
protected final String metricsName;
@UriParam(description = "Description of metrics")
protected String metricsDescription;
- @UriPath(description = "Tags of metrics")
- protected final Iterable<Tag> tags;
+ @UriParam(description = "Tags of metrics", multiValue = true, prefix =
"tags.")
+ protected Map<String, String> tags;
@UriParam(description = "Action expression when using timer type", enums =
"start,stop")
private String action;
@UriParam(description = "Value expression when using histogram type")
@@ -61,12 +65,11 @@ public class MicrometerEndpoint extends DefaultEndpoint {
private String decrement;
public MicrometerEndpoint(String uri, Component component, MeterRegistry
registry, Meter.Type metricsType,
- String metricsName, Iterable<Tag> tags) {
+ String metricsName) {
super(uri, component);
this.registry = registry;
this.metricsType = metricsType;
this.metricsName = metricsName;
- this.tags = tags;
}
@Override
@@ -92,6 +95,17 @@ public class MicrometerEndpoint extends DefaultEndpoint {
}
}
+ Iterable<Tag> createTags() {
+ if (tags != null && !tags.isEmpty()) {
+ List<Tag> answer = new ArrayList<>();
+ tags.forEach((k, v) -> {
+ answer.add(Tag.of(k, v));
+ });
+ return answer;
+ }
+ return null;
+ }
+
public MeterRegistry getRegistry() {
return registry;
}
@@ -100,10 +114,6 @@ public class MicrometerEndpoint extends DefaultEndpoint {
return metricsName;
}
- public Iterable<Tag> getTags() {
- return tags;
- }
-
public Meter.Type getMetricsType() {
return metricsType;
}
@@ -116,6 +126,14 @@ public class MicrometerEndpoint extends DefaultEndpoint {
this.metricsDescription = metricsDescription;
}
+ public Map<String, String> getTags() {
+ return tags;
+ }
+
+ public void setTags(Map<String, String> tags) {
+ this.tags = tags;
+ }
+
public String getAction() {
return action;
}
diff --git
a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/CounterEndpointTest.java
b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/CounterEndpointTest.java
index 89689f6ad90..a8529730f19 100644
---
a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/CounterEndpointTest.java
+++
b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/CounterEndpointTest.java
@@ -18,7 +18,6 @@ package org.apache.camel.component.micrometer;
import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.MeterRegistry;
-import io.micrometer.core.instrument.Tags;
import org.apache.camel.Producer;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
@@ -50,7 +49,7 @@ public class CounterEndpointTest {
@BeforeEach
public void setUp() {
- endpoint = new MicrometerEndpoint(null, null, registry,
Meter.Type.COUNTER, METRICS_NAME, Tags.empty());
+ endpoint = new MicrometerEndpoint(null, null, registry,
Meter.Type.COUNTER, METRICS_NAME);
inOrder = Mockito.inOrder(registry);
}
diff --git
a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/CounterRouteTest.java
b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/CounterRouteTest.java
index 578a9f9aefb..2e332a3721d 100644
---
a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/CounterRouteTest.java
+++
b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/CounterRouteTest.java
@@ -83,7 +83,7 @@ public class CounterRouteTest extends CamelSpringTestSupport {
.to("mock:out");
from("direct:in-4")
-
.to("micrometer:counter:D?increment=${body.length}&tags=a=${body.length}")
+
.to("micrometer:counter:D?increment=${body.length}&tags.a=${body.length}")
.to("mock:out");
}
};
diff --git
a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/DistributionSummaryEndpointTest.java
b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/DistributionSummaryEndpointTest.java
index 184bd978479..b6669cb024c 100644
---
a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/DistributionSummaryEndpointTest.java
+++
b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/DistributionSummaryEndpointTest.java
@@ -18,7 +18,6 @@ package org.apache.camel.component.micrometer;
import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.MeterRegistry;
-import io.micrometer.core.instrument.Tags;
import org.apache.camel.Producer;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
@@ -50,7 +49,7 @@ public class DistributionSummaryEndpointTest {
@BeforeEach
public void setUp() {
- endpoint = new MicrometerEndpoint(null, null, registry,
Meter.Type.DISTRIBUTION_SUMMARY, METRICS_NAME, Tags.empty());
+ endpoint = new MicrometerEndpoint(null, null, registry,
Meter.Type.DISTRIBUTION_SUMMARY, METRICS_NAME);
inOrder = Mockito.inOrder(registry);
}
diff --git
a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/MicrometerComponentTest.java
b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/MicrometerComponentTest.java
index e26f78d0621..244d321034e 100644
---
a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/MicrometerComponentTest.java
+++
b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/MicrometerComponentTest.java
@@ -20,7 +20,6 @@ import java.util.Collections;
import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.MeterRegistry;
-import io.micrometer.core.instrument.Tags;
import io.micrometer.core.instrument.composite.CompositeMeterRegistry;
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
import org.apache.camel.CamelContext;
@@ -75,7 +74,7 @@ public class MicrometerComponentTest {
@Test
public void testCreateNewEndpointForCounter() {
- Endpoint endpoint = new MicrometerEndpoint(null, null, metricRegistry,
Meter.Type.COUNTER, "a name", Tags.empty());
+ Endpoint endpoint = new MicrometerEndpoint(null, null, metricRegistry,
Meter.Type.COUNTER, "a name");
assertThat(endpoint, is(notNullValue()));
assertThat(endpoint, is(instanceOf(MicrometerEndpoint.class)));
}
@@ -83,14 +82,14 @@ public class MicrometerComponentTest {
@Test
public void testCreateNewEndpointForHistogram() {
Endpoint endpoint
- = new MicrometerEndpoint(null, null, metricRegistry,
Meter.Type.DISTRIBUTION_SUMMARY, "a name", Tags.empty());
+ = new MicrometerEndpoint(null, null, metricRegistry,
Meter.Type.DISTRIBUTION_SUMMARY, "a name");
assertThat(endpoint, is(notNullValue()));
assertThat(endpoint, is(instanceOf(MicrometerEndpoint.class)));
}
@Test
public void testCreateNewEndpointForTimer() {
- Endpoint endpoint = new MicrometerEndpoint(null, null, metricRegistry,
Meter.Type.TIMER, "a name", Tags.empty());
+ Endpoint endpoint = new MicrometerEndpoint(null, null, metricRegistry,
Meter.Type.TIMER, "a name");
assertThat(endpoint, is(notNullValue()));
assertThat(endpoint, is(instanceOf(MicrometerEndpoint.class)));
}
diff --git
a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/MicrometerEndpointTest.java
b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/MicrometerEndpointTest.java
index 06ef6e8ec72..c1fec5beac4 100644
---
a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/MicrometerEndpointTest.java
+++
b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/MicrometerEndpointTest.java
@@ -18,7 +18,6 @@ package org.apache.camel.component.micrometer;
import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.MeterRegistry;
-import io.micrometer.core.instrument.Tags;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.Processor;
@@ -58,7 +57,7 @@ public class MicrometerEndpointTest {
@BeforeEach
public void setUp() {
- endpoint = new MicrometerEndpoint(null, null, registry,
Meter.Type.COUNTER, METRICS_NAME, Tags.empty()) {
+ endpoint = new MicrometerEndpoint(null, null, registry,
Meter.Type.COUNTER, METRICS_NAME) {
@Override
public Producer createProducer() {
return null;
diff --git
a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/TimerEndpointTest.java
b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/TimerEndpointTest.java
index 5b87c9877cc..268ad7aa327 100644
---
a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/TimerEndpointTest.java
+++
b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/TimerEndpointTest.java
@@ -18,7 +18,6 @@ package org.apache.camel.component.micrometer;
import io.micrometer.core.instrument.Meter;
import io.micrometer.core.instrument.MeterRegistry;
-import io.micrometer.core.instrument.Tags;
import org.apache.camel.Producer;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
@@ -49,7 +48,7 @@ public class TimerEndpointTest {
@BeforeEach
public void setUp() {
- endpoint = new MicrometerEndpoint(null, null, registry,
Meter.Type.TIMER, METRICS_NAME, Tags.empty());
+ endpoint = new MicrometerEndpoint(null, null, registry,
Meter.Type.TIMER, METRICS_NAME);
inOrder = Mockito.inOrder(registry);
}
diff --git
a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/TimerRouteTest.java
b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/TimerRouteBackwardsCompatibleTagTest.java
similarity index 97%
copy from
components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/TimerRouteTest.java
copy to
components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/TimerRouteBackwardsCompatibleTagTest.java
index e4e1b8d6bf8..91a2b4445b2 100644
---
a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/TimerRouteTest.java
+++
b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/TimerRouteBackwardsCompatibleTagTest.java
@@ -41,7 +41,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
@CamelSpringTest
-public class TimerRouteTest extends CamelSpringTestSupport {
+public class TimerRouteBackwardsCompatibleTagTest extends
CamelSpringTestSupport {
private static final long DELAY = 20L;
@@ -84,6 +84,7 @@ public class TimerRouteTest extends CamelSpringTestSupport {
from("direct:in-3")
.to("micrometer:timer:C?action=start")
.delay(DELAY)
+ // backwards compatible tags= parameter
.to("micrometer:timer:C?action=stop&tags=a=${body}")
.to("mock:out");
}
diff --git
a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/TimerRouteTest.java
b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/TimerRouteTest.java
index e4e1b8d6bf8..5450d7afab9 100644
---
a/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/TimerRouteTest.java
+++
b/components/camel-micrometer/src/test/java/org/apache/camel/component/micrometer/TimerRouteTest.java
@@ -84,7 +84,7 @@ public class TimerRouteTest extends CamelSpringTestSupport {
from("direct:in-3")
.to("micrometer:timer:C?action=start")
.delay(DELAY)
- .to("micrometer:timer:C?action=stop&tags=a=${body}")
+ .to("micrometer:timer:C?action=stop&tags.a=${body}")
.to("mock:out");
}
};
diff --git
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
index cf2614e5f3a..914b1c5ab34 100644
---
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
+++
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java
@@ -10102,9 +10102,6 @@ public class StaticEndpointBuilders {
* Path parameter: metricsName (required)
* Name of metrics
*
- * Path parameter: tags
- * Tags of metrics
- *
* @param path metricsType:metricsName
* @return the dsl builder
*/
@@ -10129,9 +10126,6 @@ public class StaticEndpointBuilders {
* Path parameter: metricsName (required)
* Name of metrics
*
- * Path parameter: tags
- * Tags of metrics
- *
* @param componentName to use a custom component name for the endpoint
* instead of the default name
* @param path metricsType:metricsName
diff --git
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/MicrometerEndpointBuilderFactory.java
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/MicrometerEndpointBuilderFactory.java
index 49c72f43d9d..44725d4302e 100644
---
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/MicrometerEndpointBuilderFactory.java
+++
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/MicrometerEndpointBuilderFactory.java
@@ -101,6 +101,43 @@ public interface MicrometerEndpointBuilderFactory {
doSetProperty("metricsDescription", metricsDescription);
return this;
}
+ /**
+ * Tags of metrics.
+ *
+ * The option is a: <code>java.util.Map<java.lang.String,
+ * java.lang.String></code> type.
+ * The option is multivalued, and you can use the tags(String, Object)
+ * method to add a value (call the method multiple times to set more
+ * values).
+ *
+ * Group: producer
+ *
+ * @param key the option key
+ * @param value the option value
+ * @return the dsl builder
+ */
+ default MicrometerEndpointBuilder tags(String key, Object value) {
+ doSetMultiValueProperty("tags", "tags." + key, value);
+ return this;
+ }
+ /**
+ * Tags of metrics.
+ *
+ * The option is a: <code>java.util.Map<java.lang.String,
+ * java.lang.String></code> type.
+ * The option is multivalued, and you can use the tags(String, Object)
+ * method to add a value (call the method multiple times to set more
+ * values).
+ *
+ * Group: producer
+ *
+ * @param values the values
+ * @return the dsl builder
+ */
+ default MicrometerEndpointBuilder tags(Map values) {
+ doSetMultiValueProperties("tags", "tags.", values);
+ return this;
+ }
/**
* Value expression when using histogram type.
*
@@ -209,9 +246,6 @@ public interface MicrometerEndpointBuilderFactory {
* Path parameter: metricsName (required)
* Name of metrics
*
- * Path parameter: tags
- * Tags of metrics
- *
* @param path metricsType:metricsName
* @return the dsl builder
*/
@@ -237,9 +271,6 @@ public interface MicrometerEndpointBuilderFactory {
* Path parameter: metricsName (required)
* Name of metrics
*
- * Path parameter: tags
- * Tags of metrics
- *
* @param componentName to use a custom component name for the endpoint
* instead of the default name
* @param path metricsType:metricsName