This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch camel-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/camel-main by this push:
new 68f3183fea Fix docling native support
68f3183fea is described below
commit 68f3183fea8a8d9136918a86f7d834c697c63db5
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 {