matrei commented on PR #415:
URL: 
https://github.com/apache/grails-intellij-plugin/pull/415#issuecomment-5632726072

   ## AI Review
   
   Reviewed both commits against `origin/main`, checked every replaced API 
against the 2026.2.2 jars, and built the plugin and ran the five new test 
classes locally (all 25 pass, see bottom).
   
   The deprecation work is sound: every API retired here is deprecated or 
`@ApiStatus.Internal` in 2026.2.2, and every replacement exists with the 
signature used. Two things need to change before merge; the rest are follow-ups.
   
   ### Should fix before merge
   
   **1. `.asf.yaml` drops `features: issues: true`**
   
   `main` added this flag deliberately on 2026-07-20 (529d03f "Enable GitHub 
issues"), and the repo now has ~370 open issues. The "Project clean-up" commit 
removes it with no explanation, and the ASF `.asf.yaml` docs don't say what 
happens when the key is omitted. This looks like an accidental revert; please 
restore it unless turning Issues off is intended.
   
   **2. `GradleSettingsFile` "already included" check is a substring test**
   
   
`plugin/src/main/java/org/apache/grails/intellij/plugin/config/GradleSettingsFile.java:247`
   
   ```java
   if (existing.contains("'" + moduleName + "'") || existing.contains("\"" + 
moduleName + "\"")) return;
   ```
   
   Any quoted occurrence of the module name (a comment, an `includeBuild`, an 
unrelated literal) suppresses the include. Agree with the earlier comment on 
this thread: detect an actual `include` statement for the module, and check the 
`projectDir` mapping separately when the directory differs from the name.
   
   Also note the behaviour change versus the platform call it replaces: for a 
fresh project with an existing `settings.gradle`, the old code re-rendered the 
file, the new code leaves it alone and only appends the include. The javadoc 
documents this so I assume it is intentional; just flagging it.
   
   ### Follow-ups (non-blocking)
   
   - **JSP is now a Marketplace dependency.** The 2026.2.2 distribution ships 
no JSP plugin, so users must install it. Neither `README.md` nor the plugin 
description mentions this. Marketplace normally prompts for required plugins, 
but a line in the README "To run" section would avoid confusion.
   - **`GrailsBackgroundService` can wedge.** If `ProgressManager.run` throws 
synchronously inside `startNext()` (e.g. after project disposal), `myRunning` 
stays `true` and nothing queued afterwards ever starts. Low impact since the 
service is per project. A `catch` that resets the flag and rethrows would cover 
it; agree with the earlier note that a `finally` would be wrong for the async 
case.
   - **`GrailsAttachSourcesProvider` no longer refreshes `$GRAILS_HOME/src`.** 
Necessary now that discovery runs in a background read action, but a sources 
jar downloaded outside the IDE will not be seen until a VFS refresh. 
Acceptable; a comment would help the next reader.
   - **New-file menu weighting is gone.** `WeighingNewActionGroup` is internal 
so removing it is right, but the Grails "New" actions will no longer float to 
the top of the menu. User-visible, worth a changelog line.
   - **`GrailsApplicationManager.findApplication`** now calls 
`LocalFileSystem.findFileByPath` on every invocation to find the project 
directory. Fine, but `ProjectUtil.guessProjectDir(project)` is the idiomatic 
replacement for `getBaseDir()`.
   
   ### Verified
   
   - Deprecated in 2026.2.2: `ReadAction.compute`, 
`PositionManager.getAcceptedFileTypes`, 
`LanguageFileType.isJVMDebuggingSupported`, `BackgroundTaskQueue`, 
`Project.getBaseDir`, `DumbService.runReadActionInSmartMode`, 
`AttachSourcesProvider.getActions`.
   - `@ApiStatus.Internal`: `StartupManager.runAfterOpened`, 
`WeighingNewActionGroup`, `MavenExternalParameters.createJavaParameters`, 
`AbstractGradleModuleBuilder.setupGradleSettingsFile`.
   - `DumbService.runWhenSmart` delegates to `SmartModeScheduler`, which waits 
for project startup, so the `MvcModuleStructureSynchronizer` and 
`GrailsModuleBuilder` changes keep their pre-open semantics.
   - The comment in `GrailsSpringStereotypeAliasingPsiTargetMapper` is 
accurate: the old code nested `runReadActionInSmartMode` inside a read action, 
so it already threw in dumb mode rather than waiting.
   - The `setupEnvs` replacement in `GrailsInstallationCommandExecutor` 
reproduces the platform method exactly.
   - `pluginSinceBuild=262.10315.125` is required by the JSP unbundling; 
`README.md`, `AGENTS.md`, `INSTALL` and `RELEASE.md` were updated consistently.
   - `MavenRunConfiguration.createJavaParameters(Project)` is public and not 
deprecated.
   
   ### Local test run
   
   `./gradlew :plugin:test` restricted to the new classes, JDK 25 / Gradle 
9.7.1 per `.sdkmanrc`:
   
   | Test class | Tests | Result |
   | --- | --- | --- |
   | `MavenCommandExecutorTest` | 5 | pass |
   | `GradleSettingsFileTest` | 6 | pass |
   | `GrailsAttachSourcesProviderTest` | 10 | pass |
   | `GspJavaDebugAwareTest` | 2 | pass |
   | `GrailsBackgroundServiceTest` | 2 | pass |
   


-- 
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