Skip to content

TIKA-4816 metadata key api - #3014

Merged
tballison merged 18 commits into
mainfrom
TIKA-4816-metadata-key-api
Aug 13, 2026
Merged

TIKA-4816 metadata key api#3014
tballison merged 18 commits into
mainfrom
TIKA-4816-metadata-key-api

Conversation

@tballison

Copy link
Copy Markdown
Contributor

Thanks for your contribution to Apache Tika! Your help is appreciated!

Before opening the pull request, please verify that

  • there is an open issue on the Tika issue tracker which describes the problem or the improvement. We cannot accept pull requests without an issue because the change wouldn't be listed in the release notes.
  • the issue ID (TIKA-XXXX)
    • is referenced in the title of the pull request
    • and placed in front of your commit messages surrounded by square brackets ([TIKA-XXXX] Issue or pull request title)
  • commits are squashed into a single one (or few commits for larger changes)
  • Tika is successfully built and unit tests pass by running ./mvnw clean test
  • there should be no conflicts when merging the pull request branch into the recent main branch. If there are conflicts, please try to rebase the pull request branch on top of a freshly pulled main branch
  • if you add new module that downstream users will depend upon add it to relevant group in tika-bom/pom.xml.

We will be able to faster integrate your pull request if these conditions are met. If you have any questions how to fix your problem or about using Tika in general, please sign up for the Tika mailing list. Thanks!

tballison and others added 11 commits August 11, 2026 11:21
…ygiene

Migrate every doc/tool-derived key-name call site onto KeyPrefix routes
(mp4:, hdf:, isatab:, gdal:, dif:, network:, pages:, audio:), consolidate
the duplicated DIFContentHandler, and promote remaining literal-key sites
to curated Properties across the five migrated parser modules (scientific,
audiovideo, apple, miscoffice, nlp), enforced by module-scoped forbiddenapis
bans on Metadata's String-key and trusted write routes (main sources only).

Registry scope expands to scientific/sqlite3/nlp/vlm with a module
(artifactId) attribution field in both registries. Key hygiene: every
Tika-coined key is now namespaced kebab-case (geotopic:*, grobid:tei:*,
keynote:*, idml:/mif:, midi:/mp3:/ogg:/audio:*, iso19115:* -- retiring
trailing-space/artifact spellings -- gdal:*, hdf:/netcdf:file-type-
description, numbers:sheet-names), each bridged from its character-exact
3.x spelling via LegacyKeyMigrationFilter exact-rename overlay rows or
prefix rules. Fixes surfaced en route: a systemic SIMPLE-vs-loop
cardinality bug class (ISO19115, HDF, ISATab, XMPDM#LOG_COMMENT, vorbis
catch-all -> BAG), a NetworkParser HTTP deadlock, GDAL regexes coupled to
key text, MigrationTableGenerator's reflection-fragile validation and
whitespace-stripping TSV parse, and an XML-invalid pom comment. Registries
and migration table regenerated; all gates green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
blockReservedKeyWrite becomes checkNotReserved: Metadata#set/add(String,
String) now throw IllegalArgumentException on reserved tk:/X-TIKA: names.
With document-derived writers migrated off the String route (previous
commit, including the ESReporterConfig load-time guard and test-route
conversions that keep this flip's blast radius zero in-repo), the throw
is unreachable from file input; it fires only on internal misuse (fail
fast) or crafted files hitting unmigrated third-party parsers. Guard
tests convert from drop- to throw-assertions; reconstruct/putAll/
trusted-route contracts unchanged.

Full reactor green. Gated on the regression-corpus run before merge.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@tballison
tballison marked this pull request as draft August 12, 2026 20:04
@tballison
tballison marked this pull request as ready for review August 13, 2026 18:21
@tballison
tballison merged commit 7d6fe60 into main Aug 13, 2026
6 checks passed
@tballison
tballison deleted the TIKA-4816-metadata-key-api branch August 13, 2026 20:38
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.

1 participant