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