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

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

commit f0c8b9df1d08c46d9a89d88f9c032e145b781786
Author: James Netherton <[email protected]>
AuthorDate: Mon Jan 5 09:13:44 2026 +0000

    Fix docling native support
---
 extensions/docling/deployment/pom.xml              |  4 ++
 .../docling/deployment/DoclingProcessor.java       | 47 ++++++++++++++++++++++
 extensions/docling/runtime/pom.xml                 |  9 +++++
 ...ingServeClientBuilderFactorySubstitutions.java} | 20 ++++-----
 integration-tests/docling/pom.xml                  |  2 -
 .../quarkus/component/docling/it/DoclingTest.java  |  2 -
 6 files changed, 70 insertions(+), 14 deletions(-)

diff --git a/extensions/docling/deployment/pom.xml 
b/extensions/docling/deployment/pom.xml
index 6b5f6e3cd7..fc42431455 100644
--- a/extensions/docling/deployment/pom.xml
+++ b/extensions/docling/deployment/pom.xml
@@ -42,6 +42,10 @@
             <groupId>org.apache.camel.quarkus</groupId>
             
<artifactId>camel-quarkus-support-httpclient5-deployment</artifactId>
         </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-jackson-deployment</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
diff --git 
a/extensions/docling/deployment/src/main/java/org/apache/camel/quarkus/component/docling/deployment/DoclingProcessor.java
 
b/extensions/docling/deployment/src/main/java/org/apache/camel/quarkus/component/docling/deployment/DoclingProcessor.java
index 4db0474a6b..6463941454 100644
--- 
a/extensions/docling/deployment/src/main/java/org/apache/camel/quarkus/component/docling/deployment/DoclingProcessor.java
+++ 
b/extensions/docling/deployment/src/main/java/org/apache/camel/quarkus/component/docling/deployment/DoclingProcessor.java
@@ -16,8 +16,18 @@
  */
 package org.apache.camel.quarkus.component.docling.deployment;
 
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import io.quarkus.deployment.annotations.BuildProducer;
 import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
 import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.deployment.builditem.IndexDependencyBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+import io.quarkus.deployment.pkg.steps.NativeOrNativeSourcesBuild;
+import org.jboss.jandex.ClassInfo;
+import org.jboss.jandex.DotName;
 
 class DoclingProcessor {
 
@@ -27,4 +37,41 @@ class DoclingProcessor {
     FeatureBuildItem feature() {
         return new FeatureBuildItem(FEATURE);
     }
+
+    @BuildStep(onlyIf = NativeOrNativeSourcesBuild.class)
+    void indexDependencies(BuildProducer<IndexDependencyBuildItem> 
indexedDependency) {
+        indexedDependency.produce(new IndexDependencyBuildItem("ai.docling", 
"docling-core"));
+        indexedDependency.produce(new IndexDependencyBuildItem("ai.docling", 
"docling-serve-api"));
+    }
+
+    @BuildStep(onlyIf = NativeOrNativeSourcesBuild.class)
+    void registerForReflection(
+            CombinedIndexBuildItem combinedIndex,
+            BuildProducer<ReflectiveClassBuildItem> reflectiveClass) {
+
+        // Register Docling model and associated builder classes for 
reflection for Jackson serialization / deserialization
+        Set<String> doclingValidationBuilderClasses = combinedIndex.getIndex()
+                .getClassesInPackage("ai.docling.serve.api.validation")
+                .stream()
+                .map(ClassInfo::name)
+                .map(DotName::toString)
+                .filter(className -> className.endsWith("$Builder"))
+                .collect(Collectors.toUnmodifiableSet());
+
+        
reflectiveClass.produce(ReflectiveClassBuildItem.builder(doclingValidationBuilderClasses.toArray(new
 String[0]))
+                .methods(true)
+                .build());
+
+        Set<String> doclingCoreBuilderClasses = combinedIndex.getIndex()
+                .getClassesInPackage("ai.docling.core")
+                .stream()
+                .map(ClassInfo::name)
+                .map(DotName::toString)
+                .filter(className -> className.endsWith("$Builder"))
+                .collect(Collectors.toUnmodifiableSet());
+
+        
reflectiveClass.produce(ReflectiveClassBuildItem.builder(doclingCoreBuilderClasses.toArray(new
 String[0]))
+                .methods(true)
+                .build());
+    }
 }
diff --git a/extensions/docling/runtime/pom.xml 
b/extensions/docling/runtime/pom.xml
index 55d77d6511..7c6f91afa4 100644
--- a/extensions/docling/runtime/pom.xml
+++ b/extensions/docling/runtime/pom.xml
@@ -48,6 +48,15 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-support-httpclient5</artifactId>
         </dependency>
+        <dependency>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-jackson</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.graalvm.sdk</groupId>
+            <artifactId>graal-sdk</artifactId>
+            <scope>provided</scope>
+        </dependency>
     </dependencies>
 
     <build>
diff --git 
a/extensions/docling/deployment/src/main/java/org/apache/camel/quarkus/component/docling/deployment/DoclingProcessor.java
 
b/extensions/docling/runtime/src/main/java/ai/docling/serve/client/DoclingServeClientBuilderFactorySubstitutions.java
similarity index 61%
copy from 
extensions/docling/deployment/src/main/java/org/apache/camel/quarkus/component/docling/deployment/DoclingProcessor.java
copy to 
extensions/docling/runtime/src/main/java/ai/docling/serve/client/DoclingServeClientBuilderFactorySubstitutions.java
index 4db0474a6b..c3d29bafa7 100644
--- 
a/extensions/docling/deployment/src/main/java/org/apache/camel/quarkus/component/docling/deployment/DoclingProcessor.java
+++ 
b/extensions/docling/runtime/src/main/java/ai/docling/serve/client/DoclingServeClientBuilderFactorySubstitutions.java
@@ -14,17 +14,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.docling.deployment;
+package ai.docling.serve.client;
 
-import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.builditem.FeatureBuildItem;
+import com.oracle.svm.core.annotate.Substitute;
+import com.oracle.svm.core.annotate.TargetClass;
 
-class DoclingProcessor {
-
-    private static final String FEATURE = "camel-docling";
-
-    @BuildStep
-    FeatureBuildItem feature() {
-        return new FeatureBuildItem(FEATURE);
+// Remove references to Jackson 3.x
+@TargetClass(DoclingServeClientBuilderFactory.class)
+final class DoclingServeClientBuilderFactorySubstitutions {
+    @Substitute
+    public static <C extends DoclingServeClient, B extends 
DoclingServeClient.DoclingServeClientBuilder<C, B>> B newBuilder(
+            ClassLoader classLoader) {
+        return (B) DoclingServeJackson2Client.builder();
     }
 }
diff --git a/integration-tests/docling/pom.xml 
b/integration-tests/docling/pom.xml
index dc98de1ca1..856c280af5 100644
--- a/integration-tests/docling/pom.xml
+++ b/integration-tests/docling/pom.xml
@@ -74,7 +74,6 @@
     </dependencies>
 
     <profiles>
-        <!-- https://github.com/apache/camel-quarkus/issues/8085
         <profile>
             <id>native</id>
             <activation>
@@ -102,7 +101,6 @@
                 </plugins>
             </build>
         </profile>
-        -->
         <profile>
             <id>virtualDependencies</id>
             <activation>
diff --git 
a/integration-tests/docling/src/test/java/org/apache/camel/quarkus/component/docling/it/DoclingTest.java
 
b/integration-tests/docling/src/test/java/org/apache/camel/quarkus/component/docling/it/DoclingTest.java
index bd719b6ce6..f010494a09 100644
--- 
a/integration-tests/docling/src/test/java/org/apache/camel/quarkus/component/docling/it/DoclingTest.java
+++ 
b/integration-tests/docling/src/test/java/org/apache/camel/quarkus/component/docling/it/DoclingTest.java
@@ -17,7 +17,6 @@
 package org.apache.camel.quarkus.component.docling.it;
 
 import io.quarkus.test.common.QuarkusTestResource;
-import io.quarkus.test.junit.DisabledOnIntegrationTest;
 import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
 import io.restassured.http.ContentType;
@@ -28,7 +27,6 @@ import static org.hamcrest.Matchers.emptyString;
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.not;
 
-@DisabledOnIntegrationTest // 
https://github.com/apache/camel-quarkus/issues/8085
 @QuarkusTest
 @QuarkusTestResource(DoclingTestResource.class)
 class DoclingTest {

Reply via email to