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 1061b7bcc641 camel-docling: declare the headers 
CHECK_CONVERSION_STATUS sets (#29543)
1061b7bcc641 is described below

commit 1061b7bcc64108d261fec67a3e0eacc78378e0af
Author: dhairya05 <[email protected]>
AuthorDate: Tue Nov 10 18:40:22 2026 +0530

    camel-docling: declare the headers CHECK_CONVERSION_STATUS sets (#29543)
    
    checkConversionStatus set CamelDoclingTaskStatus, CamelDoclingTaskProgress,
    CamelDoclingResult and CamelDoclingErrorMessage as string literals, so they
    were missing from the catalog and the component page. Declare them in
    DoclingHeaders with the same names, use the constants in the producer, and
    assert them in DoclingAsyncConversionTest.
---
 .../apache/camel/catalog/components/docling.json   |  6 ++-
 .../apache/camel/component/docling/docling.json    |  6 ++-
 .../camel/component/docling/DoclingHeaders.java    | 14 ++++++
 .../camel/component/docling/DoclingProducer.java   |  8 ++--
 .../docling/DoclingAsyncConversionTest.java        | 12 ++++++
 .../dsl/DoclingEndpointBuilderFactory.java         | 50 ++++++++++++++++++++++
 6 files changed, 90 insertions(+), 6 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/docling.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/docling.json
index 888016d0e876..94cf7371543e 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/docling.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/docling.json
@@ -115,7 +115,11 @@
     "CamelDoclingMetadataRaw": { "index": 28, "kind": "header", "displayName": 
"", "group": "common", "label": "", "required": false, "javaType": "Map<String, 
Object>", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "description": "Raw metadata fields as a Map", "constantName": 
"org.apache.camel.component.docling.DoclingHeaders#METADATA_RAW" },
     "CamelDoclingChunkingTokenizer": { "index": 29, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Tokenizer for hybrid chunking (e.g. 
sentence-transformers\/all-MiniLM-L6-v2)", "constantName": 
"org.apache.camel.component.docling.DoclingHeaders#CHUNKING_TOKENIZER" },
     "CamelDoclingChunkingMaxTokens": { "index": 30, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Maximum tokens per chunk for hybrid 
chunking", "constantName": 
"org.apache.camel.component.docling.DoclingHeaders#CHUNKING_MAX_TOKENS" },
-    "CamelDoclingChunkingMergePeers": { "index": 31, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Whether to merge peer chunks in hybrid 
chunking", "constantName": 
"org.apache.camel.component.docling.DoclingHeaders#CHUNKING_MERGE_PEERS" }
+    "CamelDoclingChunkingMergePeers": { "index": 31, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Whether to merge peer chunks in hybrid 
chunking", "constantName": 
"org.apache.camel.component.docling.DoclingHeaders#CHUNKING_MERGE_PEERS" },
+    "CamelDoclingTaskStatus": { "index": 32, "kind": "header", "displayName": 
"", "group": "common", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "Status of the async conversion task checked by 
CHECK_CONVERSION_STATUS: PENDING, IN_PROGRESS, COMPLETED, FAILED or UNKNOWN", 
"constantName": "org.apache.camel.component.docling.DoclingHeaders#TASK_STATUS" 
},
+    "CamelDoclingTaskProgress": { "index": 33, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Progress of the async conversion task, 
when the server reports one", "constantName": 
"org.apache.camel.component.docling.DoclingHeaders#TASK_PROGRESS" },
+    "CamelDoclingResult": { "index": 34, "kind": "header", "displayName": "", 
"group": "common", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The converted document of a completed async conversion 
task", "constantName": 
"org.apache.camel.component.docling.DoclingHeaders#TASK_RESULT" },
+    "CamelDoclingErrorMessage": { "index": 35, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The error message of a failed async 
conversion task", "constantName": 
"org.apache.camel.component.docling.DoclingHeaders#TASK_ERROR_MESSAGE" }
   },
   "bodyTypes": {
     "consumerOut": { "carriers": [ "text" ], "description": "The document of 
an async conversion that completed (SUBMIT_ASYNC_CONVERSION on the same 
component), as text in the outputFormat it was submitted with: markdown by 
default, JSON text for json. The task id is in the CamelDoclingTaskId header, 
and a failed conversion goes to the error handler" },
diff --git 
a/components/camel-ai/camel-docling/src/generated/resources/META-INF/org/apache/camel/component/docling/docling.json
 
b/components/camel-ai/camel-docling/src/generated/resources/META-INF/org/apache/camel/component/docling/docling.json
index 888016d0e876..94cf7371543e 100644
--- 
a/components/camel-ai/camel-docling/src/generated/resources/META-INF/org/apache/camel/component/docling/docling.json
+++ 
b/components/camel-ai/camel-docling/src/generated/resources/META-INF/org/apache/camel/component/docling/docling.json
@@ -115,7 +115,11 @@
     "CamelDoclingMetadataRaw": { "index": 28, "kind": "header", "displayName": 
"", "group": "common", "label": "", "required": false, "javaType": "Map<String, 
Object>", "deprecated": false, "deprecationNote": "", "autowired": false, 
"secret": false, "description": "Raw metadata fields as a Map", "constantName": 
"org.apache.camel.component.docling.DoclingHeaders#METADATA_RAW" },
     "CamelDoclingChunkingTokenizer": { "index": 29, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Tokenizer for hybrid chunking (e.g. 
sentence-transformers\/all-MiniLM-L6-v2)", "constantName": 
"org.apache.camel.component.docling.DoclingHeaders#CHUNKING_TOKENIZER" },
     "CamelDoclingChunkingMaxTokens": { "index": 30, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Maximum tokens per chunk for hybrid 
chunking", "constantName": 
"org.apache.camel.component.docling.DoclingHeaders#CHUNKING_MAX_TOKENS" },
-    "CamelDoclingChunkingMergePeers": { "index": 31, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Whether to merge peer chunks in hybrid 
chunking", "constantName": 
"org.apache.camel.component.docling.DoclingHeaders#CHUNKING_MERGE_PEERS" }
+    "CamelDoclingChunkingMergePeers": { "index": 31, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "Boolean", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Whether to merge peer chunks in hybrid 
chunking", "constantName": 
"org.apache.camel.component.docling.DoclingHeaders#CHUNKING_MERGE_PEERS" },
+    "CamelDoclingTaskStatus": { "index": 32, "kind": "header", "displayName": 
"", "group": "common", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "Status of the async conversion task checked by 
CHECK_CONVERSION_STATUS: PENDING, IN_PROGRESS, COMPLETED, FAILED or UNKNOWN", 
"constantName": "org.apache.camel.component.docling.DoclingHeaders#TASK_STATUS" 
},
+    "CamelDoclingTaskProgress": { "index": 33, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "Integer", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "Progress of the async conversion task, 
when the server reports one", "constantName": 
"org.apache.camel.component.docling.DoclingHeaders#TASK_PROGRESS" },
+    "CamelDoclingResult": { "index": 34, "kind": "header", "displayName": "", 
"group": "common", "label": "", "required": false, "javaType": "String", 
"deprecated": false, "deprecationNote": "", "autowired": false, "secret": 
false, "description": "The converted document of a completed async conversion 
task", "constantName": 
"org.apache.camel.component.docling.DoclingHeaders#TASK_RESULT" },
+    "CamelDoclingErrorMessage": { "index": 35, "kind": "header", 
"displayName": "", "group": "common", "label": "", "required": false, 
"javaType": "String", "deprecated": false, "deprecationNote": "", "autowired": 
false, "secret": false, "description": "The error message of a failed async 
conversion task", "constantName": 
"org.apache.camel.component.docling.DoclingHeaders#TASK_ERROR_MESSAGE" }
   },
   "bodyTypes": {
     "consumerOut": { "carriers": [ "text" ], "description": "The document of 
an async conversion that completed (SUBMIT_ASYNC_CONVERSION on the same 
component), as text in the outputFormat it was submitted with: markdown by 
default, JSON text for json. The task id is in the CamelDoclingTaskId header, 
and a failed conversion goes to the error handler" },
diff --git 
a/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingHeaders.java
 
b/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingHeaders.java
index 8c4aac66e4cd..ee529b2118c0 100644
--- 
a/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingHeaders.java
+++ 
b/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingHeaders.java
@@ -117,6 +117,20 @@ public final class DoclingHeaders {
     @Metadata(description = "Whether to merge peer chunks in hybrid chunking", 
javaType = "Boolean")
     public static final String CHUNKING_MERGE_PEERS = 
"CamelDoclingChunkingMergePeers";
 
+    @Metadata(description = "Status of the async conversion task checked by 
CHECK_CONVERSION_STATUS: PENDING,"
+                            + " IN_PROGRESS, COMPLETED, FAILED or UNKNOWN",
+              javaType = "String")
+    public static final String TASK_STATUS = "CamelDoclingTaskStatus";
+
+    @Metadata(description = "Progress of the async conversion task, when the 
server reports one", javaType = "Integer")
+    public static final String TASK_PROGRESS = "CamelDoclingTaskProgress";
+
+    @Metadata(description = "The converted document of a completed async 
conversion task", javaType = "String")
+    public static final String TASK_RESULT = "CamelDoclingResult";
+
+    @Metadata(description = "The error message of a failed async conversion 
task", javaType = "String")
+    public static final String TASK_ERROR_MESSAGE = "CamelDoclingErrorMessage";
+
     private DoclingHeaders() {
     }
 
diff --git 
a/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingProducer.java
 
b/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingProducer.java
index 2a234f11a013..6d0be017149f 100644
--- 
a/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingProducer.java
+++ 
b/components/camel-ai/camel-docling/src/main/java/org/apache/camel/component/docling/DoclingProducer.java
@@ -416,18 +416,18 @@ public class DoclingProducer extends DefaultProducer {
 
         // Set individual status fields as headers for easy access
         exchange.getIn().setHeader(DoclingHeaders.TASK_ID, status.getTaskId());
-        exchange.getIn().setHeader("CamelDoclingTaskStatus", 
status.getStatus().toString());
+        exchange.getIn().setHeader(DoclingHeaders.TASK_STATUS, 
status.getStatus().toString());
 
         if (status.getProgress() != null) {
-            exchange.getIn().setHeader("CamelDoclingTaskProgress", 
status.getProgress());
+            exchange.getIn().setHeader(DoclingHeaders.TASK_PROGRESS, 
status.getProgress());
         }
 
         if (status.isCompleted() && status.getResult() != null) {
-            exchange.getIn().setHeader("CamelDoclingResult", 
status.getResult());
+            exchange.getIn().setHeader(DoclingHeaders.TASK_RESULT, 
status.getResult());
         }
 
         if (status.isFailed() && status.getErrorMessage() != null) {
-            exchange.getIn().setHeader("CamelDoclingErrorMessage", 
status.getErrorMessage());
+            exchange.getIn().setHeader(DoclingHeaders.TASK_ERROR_MESSAGE, 
status.getErrorMessage());
         }
     }
 
diff --git 
a/components/camel-ai/camel-docling/src/test/java/org/apache/camel/component/docling/DoclingAsyncConversionTest.java
 
b/components/camel-ai/camel-docling/src/test/java/org/apache/camel/component/docling/DoclingAsyncConversionTest.java
index b989129f092f..7845ed018a26 100644
--- 
a/components/camel-ai/camel-docling/src/test/java/org/apache/camel/component/docling/DoclingAsyncConversionTest.java
+++ 
b/components/camel-ai/camel-docling/src/test/java/org/apache/camel/component/docling/DoclingAsyncConversionTest.java
@@ -115,6 +115,14 @@ class DoclingAsyncConversionTest extends CamelTestSupport {
         assertEquals(ConversionStatus.Status.COMPLETED, status.getStatus());
         assertNotNull(status.getResult(), "Result should contain the converted 
content");
 
+        // the status fields are also exposed as headers, under the names 
DoclingHeaders declares
+        assertEquals("test-task-1", 
exchange.getIn().getHeader(DoclingHeaders.TASK_ID));
+        assertEquals("COMPLETED", 
exchange.getIn().getHeader(DoclingHeaders.TASK_STATUS));
+        assertEquals(status.getResult(), 
exchange.getIn().getHeader(DoclingHeaders.TASK_RESULT));
+        
assertNull(exchange.getIn().getHeader(DoclingHeaders.TASK_ERROR_MESSAGE));
+        // progress is only set when the status reports one, and a locally 
tracked task does not
+        assertNull(exchange.getIn().getHeader(DoclingHeaders.TASK_PROGRESS));
+
         // Future should be removed from map after completion
         assertFalse(pendingTasks.containsKey("test-task-1"),
                 "Completed task should be removed from pending map");
@@ -141,6 +149,10 @@ class DoclingAsyncConversionTest extends CamelTestSupport {
         assertInstanceOf(ConversionStatus.class, body);
         ConversionStatus status = (ConversionStatus) body;
         assertEquals(ConversionStatus.Status.IN_PROGRESS, status.getStatus());
+        assertEquals("IN_PROGRESS", 
exchange.getIn().getHeader(DoclingHeaders.TASK_STATUS));
+        assertNull(exchange.getIn().getHeader(DoclingHeaders.TASK_RESULT));
+        
assertNull(exchange.getIn().getHeader(DoclingHeaders.TASK_ERROR_MESSAGE));
+        assertNull(exchange.getIn().getHeader(DoclingHeaders.TASK_PROGRESS));
 
         // Future should remain in map since it's not done yet
         assertTrue(pendingTasks.containsKey("test-task-2"),
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/DoclingEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/DoclingEndpointBuilderFactory.java
index b41645d3c91d..731d2362de6a 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/DoclingEndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/DoclingEndpointBuilderFactory.java
@@ -5492,6 +5492,56 @@ public interface DoclingEndpointBuilderFactory {
         public String doclingChunkingMergePeers() {
             return "CamelDoclingChunkingMergePeers";
         }
+        /**
+         * Status of the async conversion task checked by
+         * CHECK_CONVERSION_STATUS: PENDING, IN_PROGRESS, COMPLETED, FAILED or
+         * UNKNOWN.
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: common
+         * 
+         * @return the name of the header {@code DoclingTaskStatus}.
+         */
+        public String doclingTaskStatus() {
+            return "CamelDoclingTaskStatus";
+        }
+        /**
+         * Progress of the async conversion task, when the server reports one.
+         * 
+         * The option is a: {@code Integer} type.
+         * 
+         * Group: common
+         * 
+         * @return the name of the header {@code DoclingTaskProgress}.
+         */
+        public String doclingTaskProgress() {
+            return "CamelDoclingTaskProgress";
+        }
+        /**
+         * The converted document of a completed async conversion task.
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: common
+         * 
+         * @return the name of the header {@code DoclingResult}.
+         */
+        public String doclingResult() {
+            return "CamelDoclingResult";
+        }
+        /**
+         * The error message of a failed async conversion task.
+         * 
+         * The option is a: {@code String} type.
+         * 
+         * Group: common
+         * 
+         * @return the name of the header {@code DoclingErrorMessage}.
+         */
+        public String doclingErrorMessage() {
+            return "CamelDoclingErrorMessage";
+        }
     }
     static DoclingEndpointBuilder endpointBuilder(String componentName, String 
path) {
         class DoclingEndpointBuilderImpl extends AbstractEndpointBuilder 
implements DoclingEndpointBuilder, AdvancedDoclingEndpointBuilder {

Reply via email to