No reviewers
Labels
No labels
bug
build
enhancement
headless
P1-critical
P2-high
P3-medium
P4-low
refactoring
No milestone
No project
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set.
Reference
ai-tools/jdt-mcp-server!95
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/79-move-type-cross-module"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #79
Schließt außerdem #77 (Forgejo wertet nur ein Keyword aus — #77 bitte beim Merge von Hand schließen).
Was war kaputt
jdt_move_typeriefchange.perform()nackt auf. Headless landet die Änderung nur imITextFileBufferManager-Puffer; ohne Editor speichert niemand. Im Testlauf gegenmain:AssertionFailedException, Datei am alten Ort, keine einzige Referenz aktualisiert.renameSubpackages=truestarb anNoClassDefFoundError: .../javaeditor/DocumentAdapter— und riss den ganzen Server mit, weilhandleToolsCallnurExceptionfing und derErrorin den stdio-Reader-Thread durchschlug.Was drin ist
RefactoringSupport.performChange()(Basis-Commit, aufmainrebased):applyForceSave(), Kinder einesCompositeChangeeinzeln ausführen,AssertionFailedExceptionausTextFileChange.releaseDocument()abfangen und den Edit von Hand auf die Datei anwenden, manueller Fallback fürMoveCompilationUnitChange(dessenCompilationUnit.move()aktiviertorg.eclipse.jdt.ui),refreshLocaldanach. DazuWORKSPACE_MUTATION_LOCK, das alle mutierenden Refactorings serialisiert, plus „⚠️ SEQUENTIAL ONLY" in den betroffenen Tool-Beschreibungen. Alle LTK-Rename-Pfade laufen darüber; der AST-Fallback inRenameRefactoringschreibt ohnehin direkt perICompilationUnit.save().tests/refactoring-test.sh: End-to-End über stdio gegen das gebaute Produkt. Importiertfixture-parentundfixture-externalals zwei getrennte Projekte und prüft danach die Festplatte, nicht die Tool-Antwort — genau dort log beide Bugs.DefaultWorkingCopyOwner.PRIMARYabhängen,handleToolsCallfängtThrowablestattException(einErrorbeendete sonst die Session),Verifikation (lokal, gegen das gebaute Produkt)
tests/refactoring-test.shgegenmain-ProduktAssertionFailedException, nichts auf Disk; Rename: Server stirbt anNoClassDefFoundError)tests/refactoring-test.shgegen diesen Branchtests/smoke-test.shtests/lifecycle-test.shmvn clean package(Maven 3.9.14, Tycho)Der Move-Test prüft: Datei am neuen Ort auf Disk, alte Datei weg,
package-Deklaration angepasst, Import infixture-app(cross-module) und infixture-external(cross-project) aktualisiert. Der Rename-Test zusätzlich: Subpackageinternalmitgewandert, kein.javamehr im alten Package, keineorg.fixture.core-Referenz mehr in beiden Projekten.Fremdbug-Notiz (Eclipse JDT, headless)
JavaPlugininstalliert beim Aktivieren des Bundlesorg.eclipse.jdt.uieinen editor-gebundenen Bufferprovider aufDefaultWorkingCopyOwner.PRIMARY. Headless ist das eine Zeitbombe: jedesopenBuffer()danach wirftNoClassDefFoundError. Wir hängen den Provider vor jedem Refactoring ab. Aktiviert sich das UI-Bundle später erneut und ruft ein Nicht-Refactoring-Tool danachopenBuffer()auf, kann derselbe Fehler wiederkommen — der Server stirbt daran seit diesem PR aber nicht mehr.🤖 Generated with Claude Code
https://claude.ai/code/session_018q6miiQHwQYFgZBy71aUhL