Skip to content

fix(#713): add missing transitive dependencies to camel-tika feature - #716

Open
jbonofre wants to merge 2 commits into
apache:mainfrom
jbonofre:fix-713-camel-tika-deps
Open

fix(#713): add missing transitive dependencies to camel-tika feature#716
jbonofre wants to merge 2 commits into
apache:mainfrom
jbonofre:fix-713-camel-tika-deps

Conversation

@jbonofre

@jbonofre jbonofre commented Jul 28, 2026

Copy link
Copy Markdown
Member

Summary

Fixes #713. The camel-tika feature was missing several transitive runtime dependencies of the Tika parser modules it installs, so the tika-parser-* bundles could not wire in OSGi (e.g. org.apache.tika.parser.txt.UniversalEncodingListener needs org.mozilla.universalchardet.* from juniversalchardet), leaving the feature effectively broken at runtime.

Dependency tree of camel-tika (Tika 3.2.3):

Module Transitive dep Was in feature? OSGi bundle? Fix
tika-parser-html-module org.jsoup:jsoup plain mvn:
tika-parser-html-module commons-codec:commons-codec plain mvn:
tika-parser-text-module org.apache.commons:commons-csv plain mvn:
tika-parser-text-module com.github.albfernandez:juniversalchardet ❌ (no manifest) wrap:

Changes

  • features/src/main/feature/camel-features.xml — add jsoup, commons-codec, commons-csv (plain bundles) and juniversalchardet (via wrap:, as it ships no OSGi metadata) to the camel-tika feature.
  • pom.xml — bump the stale, previously-unused juniversalchardet-version from 1.0.3 (the old com.googlecode.juniversalchardet groupId) to 2.5.0, matching what Tika 3.2.3 pulls in (com.github.albfernandez).
  • tests/features/camel-tika — new Pax Exam integration test (direct → tika:parse → mock) plus the <module> entry. The test verifies the feature installs and the route runs end-to-end: before this fix the tika-parser-text-module bundle could not wire (missing org.mozilla.universalchardet), so the route never started and no message reached the mock.

Note on tika:parse in OSGi

The itest intentionally does not assert on the extracted text. In Karaf, tika:parse currently returns empty content regardless of input: Tika's AutoDetectParser discovers parsers through the JDK ServiceLoader, which does not cross OSGi bundle boundaries (adding the spifly feature alone is not sufficient — the parser modules also need SPI-Provider wiring). Making Tika fully functional in OSGi is a separate concern beyond the scope of #713 and is tracked in #727.

Verification

mvn -pl features process-resources (karaf verify goal) resolves the feature cleanly:

[INFO] Verification of feature camel-tika/4.18.2.SNAPSHOT succeeded

The new integration test passes in a real Karaf/Pax Exam container:

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 -- in org.apache.karaf.camel.itest.CamelTikaITest

(The unrelated camel-chatscript / camel-docling / camel-jacksonxml / camel-langchain4j-chat / camel-torchserve failures in a full local run are a pre-existing jackson-annotation 2.21 vs 2.20.1 mismatch in the local repo, not affected by this change.)

…ature

The camel-tika feature was missing the transitive runtime dependencies of
tika-parser-html-module (jsoup, commons-codec) and tika-parser-text-module
(commons-csv, juniversalchardet). Without them, tika operations such as
tika:detect/tika:parse fail at runtime with NoClassDefFoundError (e.g.
org.apache.tika.parser.txt.UniversalEncodingListener needs
org.mozilla.universalchardet.*).

jsoup, commons-codec and commons-csv are already proper OSGi bundles and are
added as plain mvn: bundles. com.github.albfernandez:juniversalchardet 2.5.0
ships without OSGi metadata, so it is installed via wrap:.

The stale, unused juniversalchardet-version property (1.0.3, the old
com.googlecode groupId) is bumped to 2.5.0 to match the version Tika 3.2.3
pulls in.

Adds a Pax Exam integration test (tests/features/camel-tika) that parses a
plain-text body through tika:parse, exercising the text parser and its
juniversalchardet dependency at runtime.
The camel-tika itest asserted that tika:parse extracts text, but in Karaf
tika:parse returns empty content: Tika's AutoDetectParser discovers parsers
through the JDK ServiceLoader, which does not cross OSGi bundle boundaries.
Wiring Tika's parser SPI for OSGi is out of scope for issue apache#713, whose fix is
the missing juniversalchardet bundle so tika-parser-text-module resolves.

Scope the test to what apache#713 fixes: the feature installs and the tika:parse
route processes one exchange end-to-end (expectedMessageCount(1)). Before the
fix the tika-parser-text-module bundle could not wire (missing
org.mozilla.universalchardet), so the route never started and no message
reached the mock.
@ivan-ra

ivan-ra commented Jul 29, 2026

Copy link
Copy Markdown

commons-codec dependency is included in camel-core feature

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feature camel-tika: missing dependency?

2 participants