Apache Struts IntelliJ Plugin Changelog
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)
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 FileReferences - 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
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
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 Support for new Struts 7 packages
Temporarily Disabled Tests
OgnlLexerTest - 4 tests (test data path resolution)StrutsCompletionTest.testCompletionVariantsPackageExtends - FreezableArrayList issueStrutsHighlightingSpringTest - 5 tests (Spring integration)StrutsResultResolvingTest - 2 tests (highlighting comparison)ActionLinkReferenceProviderTest - 4 tests (JSP reference provider)ActionPropertyReferenceProviderTest - 2 tests (highlighting comparison)ActionReferenceProviderTest.testActionHighlighting - highlighting comparisonNamespaceReferenceProviderTest.testNamespaceHighlighting - highlighting comparisonUITagsAttributesReferenceProviderTest - 2 tests (highlighting comparison)ResultActionPropertyTest.testSimpleActionProperty - highlighting comparisonWebXmlConstantTest.testHighlighting - highlighting comparisonStrutsStructureViewTest - 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