jdt_encapsulate_field wirft headless bei jedem Aufruf NPE (ProjectTemplateStore nicht initialisiert) #98

Closed
opened 2026-09-07 20:25:25 +00:00 by hauschel.fred · 0 comments
Collaborator

Befund

jdt_encapsulate_field wirft im Headless-Mode bei jedem Aufruf eine NullPointerException, unabhängig vom Parameter generateJavadoc.

Ursache: ProjectTemplateStore.fInstanceStore ist null, wenn SelfEncapsulateFieldRefactoring.checkFinalConditions() den Getter/Setter-Body aus dem Code-Template-Store rendert. Der Template-Store von org.eclipse.jdt.ui wird headless nicht initialisiert.

Die NPE fliegt vor der Status-Prüfung (getRealErrors()), das Tool ist damit headless unbrauchbar.

Gefunden bei

PR #96 (#61/#51): der geforderte End-to-End-Rot/Grün-Test für #51 war dadurch nicht möglich, der Fix wurde nur per Diff-Argument verifiziert. Details im PR-Body von #96.

Erwartung

  • Template-Store headless bootstrappen (oder Getter/Setter-Body ohne jdt.ui-Template-Store erzeugen), sodass jdt_encapsulate_field auf tests/fixtures/fixture-parent durchläuft.
  • Fehlerfall im Tool selbsterklärend melden, nie NPE.
  • E2E-Fall in tests/refactoring-test.sh ergänzen.

Bezug

Milestone v1.1.0, gleiche Bug-Klasse wie #77 (jdt.ui-Bundle-Zustand headless). Refs #51, #96.

## Befund `jdt_encapsulate_field` wirft im Headless-Mode bei **jedem** Aufruf eine `NullPointerException`, unabhängig vom Parameter `generateJavadoc`. Ursache: `ProjectTemplateStore.fInstanceStore` ist null, wenn `SelfEncapsulateFieldRefactoring.checkFinalConditions()` den Getter/Setter-Body aus dem Code-Template-Store rendert. Der Template-Store von `org.eclipse.jdt.ui` wird headless nicht initialisiert. Die NPE fliegt **vor** der Status-Prüfung (`getRealErrors()`), das Tool ist damit headless unbrauchbar. ## Gefunden bei PR #96 (#61/#51): der geforderte End-to-End-Rot/Grün-Test für #51 war dadurch nicht möglich, der Fix wurde nur per Diff-Argument verifiziert. Details im PR-Body von #96. ## Erwartung - Template-Store headless bootstrappen (oder Getter/Setter-Body ohne jdt.ui-Template-Store erzeugen), sodass `jdt_encapsulate_field` auf `tests/fixtures/fixture-parent` durchläuft. - Fehlerfall im Tool selbsterklärend melden, nie NPE. - E2E-Fall in `tests/refactoring-test.sh` ergänzen. ## Bezug Milestone v1.1.0, gleiche Bug-Klasse wie #77 (jdt.ui-Bundle-Zustand headless). Refs #51, #96.
Commenting is not possible because the repository is archived.
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ai-tools/jdt-mcp-server#98
No description provided.