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)

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

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