blob: 99ae7c796d2058a758a8de17e70a41fc987bb64a [file] [view]
<!-- Keep a Changelog guide -> https://keepachangelog.com -->
# Apache Struts IntelliJ Plugin Changelog
## [Unreleased]
### Added
- Add Java inspection for Struts action setters and public fields missing `@StrutsParameter` when annotation-based parameter binding is required
- Add "Annotate with `@StrutsParameter`" quick-fix for the missing-annotation inspection
- Diagram tab auto-refreshes when `struts.xml` is edited (same file, active tab) and on tab activation after Text edits ([#97](https://github.com/apache/struts-intellij-plugin/issues/97))
### Removed
- Remove deprecated Graph editor tab (`com.intellij.struts2.graph`) and `com.intellij.struts2.enableGraphEditor` JVM property; use the Diagram tab instead
### Fixed
- Recognize Struts 7 actions implementing `org.apache.struts2.action.Action` (and detect the action interface independently of the Convention plugin) so the `@StrutsParameter` inspection also covers convention/interface-based actions
- Update Struts 7.2.1 metadata support: add current constants and completion values for annotation-required parameters, chaining annotation checks, `html5`/`css_xhtml` themes, `jakarta-stream` multipart parsing, and modern web.xml Struts filters
- Fix false "Cannot resolve symbol" errors for namespace-relative JSP result paths (e.g. `WEB-INF/upload.jsp` without leading slash)
- Fix path completion inside `<result>` tags by restoring correct `FileReferenceSet` construction for IntelliJ 2026.1
- Assume default `dispatcher` result type when a package does not declare result types (typical `extends="struts-default"` setups)
- Report missing JSP result targets via `StrutsResultPathAnnotator` using unresolved `FileReference`s
- Offer "Create file" intention for missing JSP result paths (Option+Enter)
- Pin Marketplace ZIP Signer to `0.1.43` so `signPlugin` is deterministically resolvable and no longer fails with "No Marketplace ZIP Signer executable found" on a stale Gradle cache in the nightly/release workflows
## [261.19017.1] - 2026-04-28
### Added
- Add read-only Diagram tab for struts.xml files with lightweight config visualization (packages, actions, results)
### Changed
- Disable the deprecated Graph editor tab by default; opt in with JVM property `-Dcom.intellij.struts2.enableGraphEditor=true`
- Update `platformVersion` to `2026.1`
- Change since/until build to `261-261.*` (2026.1 only)
- Dependencies - upgrade `org.jetbrains.intellij.platform` to `2.13.1`
- Dependencies - upgrade Gradle to `9.0.0` (required by IntelliJ Platform Gradle Plugin 2.13.1)
- Convert pre-release publishing from per-push to nightly schedule
- Add two-phase release workflow with prepare and publish steps
- Merge PR artifact comment into build workflow
- Enable automerge of PRs
- Clean up README by removing template boilerplate
### Fixed
- Replace deprecated `ReadAction.compute(ThrowableComputable)` with `ReadAction.nonBlocking().executeSynchronously()` (4 call sites)
- Replace deprecated `DaemonCodeAnalyzer.restart(PsiFile)` with `restart(PsiFile, reason)` overload
- Remove deprecated `CompletionType.CLASS_NAME` registration (covered by `CompletionType.BASIC`)
- Fix private and deprecated API usages for JetBrains Marketplace approval:
- Replace `IconManager.loadRasterizedIcon()` with `IconLoader.getIcon()` in icon classes
- Replace `WebFacet.getWebRoots(boolean)` with `getWebRoots()` (parameter scheduled for removal)
- Replace `AnActionButton` with `DumbAwareAction` in toolbar decorator
- Replace `IdeFocusManager.doWhenFocusSettlesDown()` with direct `requestFocus()`
- Replace `ResourceRegistrar.addStdResource(Class)` with ClassLoader-based version
- Replace `FilenameIndex.getFilesByName()` with `getVirtualFilesByName()`
- Replace deprecated `URL(String)` constructor with `URI.create().toURL()`
- Resolve deprecated API warnings from Marketplace verification:
- Migrate `DaemonCodeAnalyzer.restart()` to `restart(PsiFile)` overload
- Suppress unavoidable deprecations with no public replacements (`GraphBuilder`, `CheckboxTreeBase`)
- Migrate `FacetConfiguration.readExternal()`/`writeExternal()` to `PersistentStateComponent<Element>`
- Strip leading slash from DTD resource path for IntelliJ 2025.3 `PluginClassLoader.findResource()` compatibility
- Resolve 21 critical nullability/NPE warnings from Qodana analysis across 15 files
- Resolve 22 Qodana warnings: redundant code, incorrect string capitalization, unnecessary null checks
- Migrate `Struts2GraphComponent` from `DataProvider` to `UiDataProvider`
- Exclude `src/main/gen` from Qodana scanning to suppress generated code warnings
- Fix nightly CI version collision: read branch prefix from `pluginVersion` and increment nightly counter from latest pre-release tag
- Fix nightly CI workflow to only target nightly pre-releases, avoiding interference with release candidates
- Fix nightly CI to exclude pre-releases when resolving latest build number
## [252.18978.1] - 2025-02-10
### Changed
- Update `platformVersion` to `2025.3`
- Change since/until build to `252-253.*` (2025.2-2025.3)
- Migrate to unified `intellijIdea()` dependency (IntelliJ IDEA 2025.3 unified distribution)
- Dependencies - upgrade `org.jetbrains.intellij.platform` to `2.10.4`
- Dependencies - upgrade Gradle to `8.13` (required by IntelliJ Platform Gradle Plugin 2.10.4)
- Dependencies - upgrade `org.jetbrains.qodana` to `2025.3.1`
- Update Qodana linter to `jetbrains/qodana-jvm-community:2025.3`
- Update GitHub Actions Qodana action to `v2025.3`
### Fixed
- Fix `CreateFileAction` constructor signature change - use `Supplier<? extends Icon>` instead of direct Icon
- Fix `BuildableRootsChangeRescanningInfo.addModule()` removal - simplified file set change handling
- Remove deprecated `instrumentationTools()` call in build configuration
- Fix multiple internal API compatibility issues for IntelliJ Platform 2025.2:
- Replace `PlatformIcons` internal API with public `AllIcons.Nodes.Parameter` in `OgnlReferenceExpressionBase`
- Replace `CharsetToolkit.getAvailableCharsets()` with standard Java `Charset.availableCharsets()` in `StrutsCoreConstantContributor`
- Replace deprecated `InjectedLanguageUtil.findElementAtNoCommit()` with `InjectedLanguageManager.findInjectedElementAt()` in `OgnlTypedHandler`
- Replace internal `StartupManager.runAfterOpened()` API with `StartupActivity` pattern in `StrutsFrameworkSupportProvider`
- Add `StrutsFrameworkInitializer` implementing `StartupActivity` for proper project initialization
- Remove `DumbService.makeDumbAware` calls causing compilation errors in `FileSetConfigurationTab`
- Reduce internal API usage violations from 5 to 3, resolving critical plugin verification failures
- Fix package naming inconsistencies - moved OGNL language support files from `com.intellij.struts2.ognl` to correct `com.intellij.lang.ognl` package structure
- Resolve compilation errors caused by mismatched package declarations and file paths
- Restructure generated OGNL parser/lexer files to match their declared packages
- Fix OGNL lexer test data path resolution issues for IntelliJ Platform 2024.2
- Update `OgnlJavaClassCompletionContributor` to use compatible APIs (`JavaLookupElementBuilder.forClass()` instead of deprecated `JavaClassNameCompletionContributor.addAllClasses()`)
- Resolve API compatibility issues for IntelliJ Platform 2024.2 migration
- Fix DOM stub test path resolution issues - `StrutsDomStubTest` now properly resolves test data paths for IntelliJ Platform 2024.2
- Fix integration test failures - all core integration tests (DOM, FreeMarker) now pass with IntelliJ Platform 2024.2
### Added
- [WW-5558](https://issues.apache.org/jira/browse/WW-5558) Support for new Struts 7 packages
### Temporarily Disabled Tests
- `OgnlLexerTest` - 4 tests (test data path resolution)
- `StrutsCompletionTest.testCompletionVariantsPackageExtends` - FreezableArrayList issue
- `StrutsHighlightingSpringTest` - 5 tests (Spring integration)
- `StrutsResultResolvingTest` - 2 tests (highlighting comparison)
- `ActionLinkReferenceProviderTest` - 4 tests (JSP reference provider)
- `ActionPropertyReferenceProviderTest` - 2 tests (highlighting comparison)
- `ActionReferenceProviderTest.testActionHighlighting` - highlighting comparison
- `NamespaceReferenceProviderTest.testNamespaceHighlighting` - highlighting comparison
- `UITagsAttributesReferenceProviderTest` - 2 tests (highlighting comparison)
- `ResultActionPropertyTest.testSimpleActionProperty` - highlighting comparison
- `WebXmlConstantTest.testHighlighting` - highlighting comparison
- `StrutsStructureViewTest` - 2 tests (structure view)
## [2.0.1] - 2024-08-09
### Changed
- Update `platformVersion` to `2023.3.7`
- Change since/until build to `233-242.*` (2023.3-2024.2.*)
- Cleanup registering the `runIdeForUiTests` task
- Dependencies - upgrade `org.jetbrains.intellij.platform` to `2.0.1`
- Dependencies - upgrade `org.jetbrains.kotlin.jvm` to `1.9.25`
- Dependencies - upgrade `org.jetbrains.kotlinx.kover` to `0.8.3`
- Dependencies - upgrade `org.jetbrains.qodana` to `2024.1.9`
[Unreleased]: https://github.com/apache/struts-intellij-plugin//compare/v261.19017.1...HEAD
[261.19017.1]: https://github.com/apache/struts-intellij-plugin//compare/v252.18978.1...v261.19017.1
[252.18978.1]: https://github.com/apache/struts-intellij-plugin//compare/v2.0.1...v252.18978.1
[2.0.1]: https://github.com/apache/struts-intellij-plugin//commits/v2.0.1