Skip to content

use . instead # for FQN link in Markdown javadoc - #1134

Merged
timtebeek merged 1 commit into
openrewrite:mainfrom
barbulescu:fqn-link
Jun 20, 2026
Merged

use . instead # for FQN link in Markdown javadoc#1134
timtebeek merged 1 commit into
openrewrite:mainfrom
barbulescu:fqn-link

Conversation

@barbulescu

Copy link
Copy Markdown
Contributor

What's changed?

JavadocToMarkdownDocComment now correctly uses . as the package separator in fully-qualified Javadoc links. Previously, J.FieldAccess nodes in printJRef used # for every level of the reference chain, so {@link java.util.List} became [java#util#List] and {@link java.util.List#get(int)} became [java#util#List#get(int)].

The fix is a one-character change in printJRef: when a J.FieldAccess has a non-empty target, join with . rather than #. The # separator between a class and its member is already emitted by the J.MethodInvocation and J.MemberReference branches, so no other change is needed.

What's your motivation?

The recipe produced broken Markdown links for any {@link} or @see tag that used a fully-qualified class name. The pattern [org#assertj#core#...#ClassName#method()] is invalid Markdown Javadoc syntax; the correct form is [org.assertj.core...ClassName#method()]. This affected at least 30 files in practice.

Anyone you would like to review specifically?

@timtebeek

Checklist

  • I've added unit tests to cover both positive and negative cases
  • I've read and applied the recipe conventions and best practices
  • I've used the IntelliJ IDEA auto-formatter on affected files

@timtebeek timtebeek left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Oh wow, thanks so much for flagging and fixing; I need to step up my OSS contributions as well again to discover these kind of issues. 🙏🏻

@github-project-automation github-project-automation Bot moved this from In Progress to Ready to Review in OpenRewrite Jun 20, 2026
@timtebeek
timtebeek merged commit a58ef3a into openrewrite:main Jun 20, 2026
1 check passed
@github-project-automation github-project-automation Bot moved this from Ready to Review to Done in OpenRewrite Jun 20, 2026
mergify Bot added a commit to robfrank/linklift that referenced this pull request Jul 17, 2026
…37.0 to 3.40.0 [skip ci]

Bumps [org.openrewrite.recipe:rewrite-migrate-java](https://github.com/openrewrite/rewrite-migrate-java) from 3.37.0 to 3.40.0.
Release notes

*Sourced from [org.openrewrite.recipe:rewrite-migrate-java's releases](https://github.com/openrewrite/rewrite-migrate-java/releases).*

> 3.40.0
> ------
>
> What's Changed
> --------------
>
> * Keep `\t` and `\f` escapes in UseTextBlocks to avoid incidental whitespace stripping by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-migrate-java#1160](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1160)
> * Skip UseEnumSetOf empty conversion for static fields to avoid circular class-init ([#1157](https://redirect.github.com/openrewrite/rewrite-migrate-java/issues/1157)) by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-migrate-java#1161](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1161)
> * Skip `UseMapOf` for `LinkedHashMap`/`TreeMap` in the prose `put()` form ([#1163](https://redirect.github.com/openrewrite/rewrite-migrate-java/issues/1163)) by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-migrate-java#1165](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1165)
> * Skip AddMockitoJavaAgentToMavenSurefirePlugin when agent already configured in build/plugins by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-migrate-java#1166](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1166)
> * Add RedundantUtf8Charset recipe to drop redundant UTF-8 from Files calls by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-migrate-java#1167](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1167)
> * Fix Jakarta EE 10 web.xml migration by [`@​sakshichitnis27`](https://github.com/sakshichitnis27) in [openrewrite/rewrite-migrate-java#1159](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1159)
>
> New Contributors
> ----------------
>
> * [`@​sakshichitnis27`](https://github.com/sakshichitnis27) made their first contribution in [openrewrite/rewrite-migrate-java#1159](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1159)
>
> **Full Changelog**: <openrewrite/rewrite-migrate-java@v3.39.0...v3.40.0>
>
> 3.39.0
> ------
>
> What's Changed
> --------------
>
> * Make ExtractExplicitConstructorInvocationArguments templates context-free by [`@​knutwannheden`](https://github.com/knutwannheden) in [openrewrite/rewrite-migrate-java#1140](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1140)
> * Convert Javadoc `<br>` tags to Markdown line breaks by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-migrate-java#1142](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1142)
> * Preserve angle brackets when converting `@param <T>` to Markdown by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-migrate-java#1141](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1141)
> * Fix JavadocToMarkdown's handling of varargs and JDKs newer than the bytecode source/target compatibility by [`@​sambsnyd`](https://github.com/sambsnyd) in [openrewrite/rewrite-migrate-java#1143](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1143)
> * Move ReplaceUnusedVariablesWithUnderscore to Java best practices by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-migrate-java#1144](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1144)
> * Extend Use{List,Set,Map}Of to recognise prose-statement chains by [`@​steve-aom-elliott`](https://github.com/steve-aom-elliott) in [openrewrite/rewrite-migrate-java#1145](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1145)
> * Skip `UseMapOf` when the anonymous `HashMap` is assigned to a concrete `HashMap` variable by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-migrate-java#1149](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1149)
> * Fix jakarta.enterprise.concurrent-api version for EE9 and EE10 by [`@​evie-lau`](https://github.com/evie-lau) in [openrewrite/rewrite-migrate-java#1152](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1152)
> * Add recipe to replace jakarta jws-api with ws-api in EE10 by [`@​evie-lau`](https://github.com/evie-lau) in [openrewrite/rewrite-migrate-java#1151](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1151)
> * Upgrade maven-ejb-plugin alongside jakarta.ejb-api by [`@​evie-lau`](https://github.com/evie-lau) in [openrewrite/rewrite-migrate-java#1155](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1155)
> * Upgrade maven-ear-plugin for ee9 and ee11 by [`@​evie-lau`](https://github.com/evie-lau) in [openrewrite/rewrite-migrate-java#1156](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1156)
>
> **Full Changelog**: <openrewrite/rewrite-migrate-java@v3.38.0...v3.39.0>
>
> v3.38.0
> -------
>
> What's Changed
> --------------
>
> * use . instead # for FQN link in Markdown javadoc by [`@​barbulescu`](https://github.com/barbulescu) in [openrewrite/rewrite-migrate-java#1134](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1134)
> * Bump maven-pmd-plugin to 3.28.x for Java 25 support by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-migrate-java#1136](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1136)
> * Explain why Kotlin modules are capped at Java 24 during Java 25 migration by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-migrate-java#1137](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1137)
> * Preserve `@{argLine}` in AddSurefireFailsafeArgLine for JaCoCo coverage by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-migrate-java#1138](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1138)
> * Add recipe to extract complex explicit constructor invocation arguments (JEP 513) by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-migrate-java#1135](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1135)
> * Bump Kotlin 2.0-2.2 to 2.3 so Kotlin modules can reach Java 25 by [`@​timtebeek`](https://github.com/timtebeek) in [openrewrite/rewrite-migrate-java#1139](https://redirect.github.com/openrewrite/rewrite-migrate-java/pull/1139)
>
> **Full Changelog**: <openrewrite/rewrite-migrate-java@v3.37.0...v3.38.0>


Commits

* [`6584812`](openrewrite/rewrite-migrate-java@6584812) Fix Jakarta EE 10 web.xml migration ([#1159](https://redirect.github.com/openrewrite/rewrite-migrate-java/issues/1159))
* [`3d0ad8f`](openrewrite/rewrite-migrate-java@3d0ad8f) OpenRewrite recipe best practices
* [`76925b9`](openrewrite/rewrite-migrate-java@76925b9) Add RedundantUtf8Charset recipe to drop redundant UTF-8 from Files calls ([#1167](https://redirect.github.com/openrewrite/rewrite-migrate-java/issues/1167))
* [`c0d0f67`](openrewrite/rewrite-migrate-java@c0d0f67) Skip AddMockitoJavaAgentToMavenSurefirePlugin when agent already configured i...
* [`12386c8`](openrewrite/rewrite-migrate-java@12386c8) Skip UseMapOf for LinkedHashMap/TreeMap in prose put-statement form ([#1163](https://redirect.github.com/openrewrite/rewrite-migrate-java/issues/1163)) (...
* [`ee2f4c4`](openrewrite/rewrite-migrate-java@ee2f4c4) OpenRewrite recipe best practices
* [`5f18964`](openrewrite/rewrite-migrate-java@5f18964) Skip UseEnumSetOf empty conversion for static fields to avoid circular class-...
* [`4cd2123`](openrewrite/rewrite-migrate-java@4cd2123) Keep \t and \f escapes in UseTextBlocks to avoid incidental whitespace stripp...
* [`16e662d`](openrewrite/rewrite-migrate-java@16e662d) Upgrade maven-ear-plugin for ee9 and ee11 ([#1156](https://redirect.github.com/openrewrite/rewrite-migrate-java/issues/1156))
* [`b9f0360`](openrewrite/rewrite-migrate-java@b9f0360) Upgrade maven-ejb-plugin alongside jakarta.ejb-api ([#1155](https://redirect.github.com/openrewrite/rewrite-migrate-java/issues/1155))
* Additional commits viewable in [compare view](openrewrite/rewrite-migrate-java@v3.37.0...v3.40.0)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

2 participants