anton-vinogradov opened a new pull request, #13292:
URL: https://github.com/apache/ignite/pull/13292

   ## Description
   
   [IGNITE-28831](https://issues.apache.org/jira/browse/IGNITE-28831)
   
   `IgniteDataTransferObjectProcessor` throws a `NullPointerException` during 
annotation processing, which breaks compilation of `modules/core` from source:
   
   ```
   mvn -o -q -pl modules/core -am test-compile -DskipTests 
-Dcheckstyle.skip=true
   ```
   
   ### Root cause
   
   `IDTOSerializerGenerator.className(TypeMirror)` stripped everything before 
the first space to drop a *leading* type-use annotation (e.g. `@NotNull 
java.util.Collection`). But the compiler renders a type-use annotation 
(`@Nullable`/`@NotNull`) **inline, right before the simple name** of a 
qualified type:
   
   ```
   [email protected] Collection<...>
   ```
   
   The first-space heuristic discarded the `java.util.` qualifier and returned 
only `Collection`, which caused:
   
   1. `COLL_IMPL.get("Collection")` → `null` → NPE in `simpleName()` for fields 
such as `BaselineNode.addrs` (`@NotNull Collection<ResolvedAddresses>`) and 
`IdleVerifyResult.txHashConflicts` (`@Nullable 
List<List<TransactionsHashRecord>>`).
   2. Malformed `import String;` / `import Exception;` / `import 
IdleVerifyResult;` in the generated serializers for 
`DurableBackgroundCleanupIndexTreeTaskV2`, `SnapshotPartitionsVerifyResult`, 
`VisorTaskResult` (the `'.' expected` compile errors) for `@Nullable`-annotated 
fields.
   
   The subsequent cascade of `cannot find symbol: class *ViewWalker` errors is 
a side effect: the processor's exception aborts the annotation-processing 
round, so the separate `SystemViewRowAttributeWalkerProcessor` output never 
gets compiled.
   
   ### Fix
   
   Strip type-use annotations wherever they occur (preserving the package 
qualifier) instead of the first-space heuristic. The change is confined to the 
codegen module; DTO classes are not touched.
   
   ### Verification
   
   `mvn -o -q -pl modules/core -am test-compile -DskipTests 
-Dcheckstyle.skip=true` completes with `BUILD SUCCESS`, and the serializers for 
`BaselineNode`, `IdleVerifyResult`, `DurableBackgroundCleanupIndexTreeTaskV2`, 
`SnapshotPartitionsVerifyResult`, `VisorTaskResult` are generated and compile.
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to