Skip to content

fix(java): the javadoc linked a method the binding does not have, and the v0.16.0 Java publish found it (#980) - #982

Merged
raeq merged 1 commit into
mainfrom
fix/java-javadoc-listprofiles
Sep 6, 2026
Merged

fix(java): the javadoc linked a method the binding does not have, and the v0.16.0 Java publish found it (#980)#982
raeq merged 1 commit into
mainfrom
fix/java-javadoc-listprofiles

Conversation

@raeq

@raeq raeq commented Sep 6, 2026

Copy link
Copy Markdown
Owner

Summary

The v0.16.0 Java publisher failed at the Central Portal step and uploaded nothing; the core, Node and Ruby artifacts shipped. The cause is a javadoc {@link Disarm#listProfiles} on Pipeline#purpose (#860): Python has list_profiles, the Java binding has no listing at all, javadoc rejects a broken link, and the only place the task ran was inside publishAllPublicationsToStagingRepository.

What changes

  • Pipeline.java:65 links Disarm#getPipeline(String) instead, which is what the sentence was about: a name goes in, the step list says what the pipeline does, and neither says what it is for.
  • The CI Java job runs :disarm-java:javadoc beside check, so the next broken reference fails its own PR rather than the release after it.
  • A ### Fixed entry under [Unreleased].

Verification

check result
./gradlew --offline :disarm-java:javadoc on main exit 1, Pipeline.java:65: error: reference not found
the same after this change exit 0
CI Java job on this PR now runs javadoc, so the green here is the proof

After merge

Dispatch publish-java.yml from main: the core 0.16.0 is on crates.io, so wait-for-core resolves, and build.gradle.kts on main carries 0.16.0, so the artifact version is right. Then confirm repo1.maven.org metadata for dev.disarm:disarm and disarm-kotlin, not the workflow.

Not in this PR

docs/java/api.md lists listLangs, listProfiles and reverseLangs as Java entry points and none is declared. That is a parity gap rather than a link, filed as #981 with acceptance criteria.

Refs #980, #981

🤖 Generated with Claude Code

`Pipeline#purpose`'s comment (#860) referred to `Disarm#listProfiles`. Python has
`list_profiles`; the Java binding has `getPipeline(String)` and no listing at all.
`javadoc` rejects a broken `{@link}`, and the only place the task ran was inside
`publishAllPublicationsToStagingRepository`, so the v0.16.0 Java publisher failed
at the Central Portal step with nothing uploaded, after every PR gate had passed
and after the core, Node and Ruby artifacts had shipped.

Reproduced locally with `./gradlew --offline :disarm-java:javadoc` (exit 1,
"Pipeline.java:65: error: reference not found"); green after the change.

The link now names `Disarm#getPipeline(String)`, which is what the sentence was
about: a name goes in, and the step list says what the pipeline does, and neither
says what it is for. CI's Java job runs `:disarm-java:javadoc` beside `check`, so
the next broken reference fails its own pull request.

`docs/java/api.md` lists `listLangs`, `listProfiles` and `reverseLangs` as Java
entry points and none is declared; that is a parity gap rather than a link and is
filed separately.

Assisted-by: Claude Fable 5.1
Signed-off-by: Richard Quinn <quinn.richard@gmail.com>
Copilot AI lite review requested due to automatic review settings September 6, 2026 21:05

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The changes are small, well-scoped, and directly address a verified release-blocking Javadoc link failure while adding an appropriate CI gate to prevent recurrence.

Pull request overview

This PR fixes a broken Javadoc {@link} in the Java binding that caused the v0.16.0 Java publish to fail late in the release pipeline, and adds a CI gate so Javadoc link breakage fails on the introducing PR instead of during publishing.

Changes:

  • Update Pipeline#purpose Javadoc to link to an existing API (Disarm#getPipeline(String)) instead of a non-existent listProfiles.
  • Run :disarm-java:javadoc in the CI Java job alongside check to catch future broken Javadoc links earlier.
  • Document the fix and its impact in the Unreleased changelog.
File summaries
File Description
CHANGELOG.md Adds an Unreleased “Fixed” entry describing the Javadoc-link publish failure and the CI gating change.
bindings/java/disarm-java/src/main/java/dev/disarm/Pipeline.java Replaces broken {@link Disarm#listProfiles} with {@link Disarm#getPipeline(String)} in purpose() Javadoc.
.github/workflows/ci.yml Extends the Java CI step to run ./gradlew ... :disarm-java:javadoc in addition to check.
Review details
  • Files reviewed: 3/3 changed files
  • Comments generated: 0
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

@raeq
raeq merged commit 7cb5c3e into main Sep 6, 2026
22 checks passed
@raeq
raeq deleted the fix/java-javadoc-listprofiles branch September 6, 2026 21:19
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.

2 participants