[
https://issues.apache.org/jira/browse/IGNITE-28818?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Aleksandr Chesnokov resolved IGNITE-28818.
------------------------------------------
Resolution: Fixed
> Fix IDTO code generation on JDK 21
> ----------------------------------
>
> Key: IGNITE-28818
> URL: https://issues.apache.org/jira/browse/IGNITE-28818
> Project: Ignite
> Issue Type: Bug
> Reporter: Aleksandr Chesnokov
> Assignee: Aleksandr Chesnokov
> Priority: Major
> Labels: ise
>
> IDTO serializer generation fails on JDK 21 for DTO fields where JetBrains
> nullability annotations are applied to collection types, for example:
> {noformat}
> @NotNull Collection<ResolvedAddresses>
> @Nullable List<List<TransactionsHashRecord>>{noformat}
> On JDK 17, TypeMirror.toString() renders these types as:
> {noformat}
> @org.jetbrains.annotations.NotNull java.util.Collection<...>
> @org.jetbrains.annotations.Nullable java.util.List<...>{noformat}
> On JDK 21, javac renders them as:
> {noformat}
> [email protected] Collection<...>
> [email protected] List<...>{noformat}
> IDTOSerializerGenerator parsed TypeMirror.toString() to derive the class FQN.
> With the JDK 21 format, the parser returned short names such as
> Collection/List instead of java.util.Collection/java.util.List. This caused
> collection implementation lookup to return null and the processor failed with:
> {noformat}
> Cannot invoke "String.lastIndexOf(int)" because "fqn" is null{noformat}
> The failed processor run also produced invalid generated imports such as
> import String, import Exception and import IdleVerifyResult, causing
> compilation errors.
> Use the annotation processing model API for declared types instead of parsing
> TypeMirror.toString()
--
This message was sent by Atlassian Jira
(v8.20.10#820010)