This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch ih in repository https://gitbox.apache.org/repos/asf/camel.git
commit fd8bf9fdf664f23c5482734340f492a510ba01d7 Author: Claus Ibsen <[email protected]> AuthorDate: Thu Nov 20 11:53:24 2025 +0100 CAMEL-22693: Mark up EIP and endpoint headers that are of importance to make tooling, trouble shooting and development easier. --- .../apache/camel/catalog/main/important-headers.json | 1 + .../org/apache/camel/catalog/models/split.json | 2 +- .../src/main/java/org/apache/camel/Exchange.java | 3 ++- .../META-INF/org/apache/camel/model/split.json | 2 +- .../org/apache/camel/util/ImportantHeaderUtils.java | 1 + .../jbang/core/commands/action/MessageTableHelper.java | 18 +++++++++++++----- 6 files changed, 19 insertions(+), 8 deletions(-) diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/important-headers.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/important-headers.json index c5b0e2b95375..d31b507e34eb 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/important-headers.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/main/important-headers.json @@ -1,5 +1,6 @@ [ "CamelAggregatedSize", "CamelFileName", + "CamelSplitIndex", "CamelSplitSize" ] diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/split.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/split.json index 198495663989..e17f74d7b895 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/split.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/split.json @@ -33,7 +33,7 @@ "outputs": { "index": 18, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercep [...] }, "exchangeProperties": { - "CamelSplitIndex": { "index": 0, "kind": "exchangeProperty", "displayName": "Split Index", "label": "producer", "required": false, "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "A split counter that increases for each Exchange being split. The counter starts from 0." }, + "CamelSplitIndex": { "index": 0, "kind": "exchangeProperty", "displayName": "Split Index", "label": "producer", "required": false, "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "important": true, "description": "A split counter that increases for each Exchange being split. The counter starts from 0." }, "CamelSplitComplete": { "index": 1, "kind": "exchangeProperty", "displayName": "Split Complete", "label": "producer", "required": false, "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "description": "Whether this Exchange is the last." }, "CamelSplitSize": { "index": 2, "kind": "exchangeProperty", "displayName": "Split Size", "label": "producer", "required": false, "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "important": true, "description": "The total number of Exchanges that was split. This property is not applied for stream based splitting, except for the very last message because then Camel knows the total size." } } diff --git a/core/camel-api/src/main/java/org/apache/camel/Exchange.java b/core/camel-api/src/main/java/org/apache/camel/Exchange.java index 68684368c130..dc0f0e927070 100644 --- a/core/camel-api/src/main/java/org/apache/camel/Exchange.java +++ b/core/camel-api/src/main/java/org/apache/camel/Exchange.java @@ -274,7 +274,8 @@ public interface Exchange extends VariableAware { String SLIP_PRODUCER = "CamelSlipProducer"; @Metadata(label = "split", description = "A split counter that increases for each Exchange being split. The counter starts from 0.", - javaType = "int") + javaType = "int", + important = true) String SPLIT_INDEX = "CamelSplitIndex"; @Metadata(label = "split", description = "Whether this Exchange is the last.", javaType = "boolean") String SPLIT_COMPLETE = "CamelSplitComplete"; diff --git a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/split.json b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/split.json index 198495663989..e17f74d7b895 100644 --- a/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/split.json +++ b/core/camel-core-model/src/generated/resources/META-INF/org/apache/camel/model/split.json @@ -33,7 +33,7 @@ "outputs": { "index": 18, "kind": "element", "displayName": "Outputs", "group": "common", "required": true, "type": "array", "javaType": "java.util.List<org.apache.camel.model.ProcessorDefinition<java.lang.Object>>", "oneOf": [ "aggregate", "bean", "choice", "circuitBreaker", "claimCheck", "convertBodyTo", "convertHeaderTo", "convertVariableTo", "delay", "doCatch", "doFinally", "doTry", "dynamicRouter", "enrich", "filter", "idempotentConsumer", "intercept", "interceptFrom", "intercep [...] }, "exchangeProperties": { - "CamelSplitIndex": { "index": 0, "kind": "exchangeProperty", "displayName": "Split Index", "label": "producer", "required": false, "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "A split counter that increases for each Exchange being split. The counter starts from 0." }, + "CamelSplitIndex": { "index": 0, "kind": "exchangeProperty", "displayName": "Split Index", "label": "producer", "required": false, "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "important": true, "description": "A split counter that increases for each Exchange being split. The counter starts from 0." }, "CamelSplitComplete": { "index": 1, "kind": "exchangeProperty", "displayName": "Split Complete", "label": "producer", "required": false, "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "description": "Whether this Exchange is the last." }, "CamelSplitSize": { "index": 2, "kind": "exchangeProperty", "displayName": "Split Size", "label": "producer", "required": false, "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "important": true, "description": "The total number of Exchanges that was split. This property is not applied for stream based splitting, except for the very last message because then Camel knows the total size." } } diff --git a/core/camel-util/src/main/java/org/apache/camel/util/ImportantHeaderUtils.java b/core/camel-util/src/main/java/org/apache/camel/util/ImportantHeaderUtils.java index 1861151acf70..dac11bfe12e5 100644 --- a/core/camel-util/src/main/java/org/apache/camel/util/ImportantHeaderUtils.java +++ b/core/camel-util/src/main/java/org/apache/camel/util/ImportantHeaderUtils.java @@ -29,6 +29,7 @@ public final class ImportantHeaderUtils { // IMPORTANT-HEADER-KEYS: START "CamelAggregatedSize", "CamelFileName", + "CamelSplitIndex", "CamelSplitSize" // IMPORTANT-HEADER-KEYS: END ))); diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/MessageTableHelper.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/MessageTableHelper.java index be60c311127d..064af5877800 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/MessageTableHelper.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/MessageTableHelper.java @@ -166,7 +166,7 @@ public class MessageTableHelper { if (arr != null) { for (Object o : arr) { JsonObject jo = (JsonObject) o; - rows.add(new TableRow("Property", jo.getString("type"), jo.getString("key"), jo.get("value"))); + rows.add(new TableRow("Property", jo.getString("type"), jo.getString("key"), jo.get("value"), jo.getBooleanOrDefault("important", false))); } } // internal exchange properties @@ -174,7 +174,7 @@ public class MessageTableHelper { if (arr != null) { for (Object o : arr) { JsonObject jo = (JsonObject) o; - rows.add(new TableRow("Property", jo.getString("type"), jo.getString("key"), jo.get("value"))); + rows.add(new TableRow("Property", jo.getString("type"), jo.getString("key"), jo.get("value"), jo.getBooleanOrDefault("important", false))); } } if (!rows.isEmpty()) { @@ -220,7 +220,7 @@ public class MessageTableHelper { } } } - rows.add(new TableRow("Header", jo.getString("type"), key, value)); + rows.add(new TableRow("Header", jo.getString("type"), key, value, jo.getBooleanOrDefault("important", false))); } } if (!rows.isEmpty()) { @@ -322,11 +322,17 @@ public class MessageTableHelper { Object value; Long position; Long size; + Boolean important = Boolean.FALSE; TableRow(String kind, String type, String key, Object value) { this(kind, type, key, value, null, null); } + TableRow(String kind, String type, String key, Object value, Boolean important) { + this(kind, type, key, value, null, null); + this.important = important; + } + TableRow(String kind, String type, String key, Object value, Long size, Long position) { this.kind = kind; this.type = type; @@ -338,12 +344,14 @@ public class MessageTableHelper { String valueAsString() { if (value == null || "null".equals(value)) { + value = "null"; if (loggingColor) { value = Ansi.ansi().fgBrightDefault().a(Ansi.Attribute.INTENSITY_FAINT).a(value).reset().toString(); - } else { - value = "null"; } } + if (loggingColor && important) { + value = Ansi.ansi().a(Ansi.Attribute.INTENSITY_BOLD).a(value).reset().toString(); + } return value.toString(); }
