This is an automated email from the ASF dual-hosted git repository.
lukaszlenart pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/struts-intellij-plugin.git
The following commit(s) were added to refs/heads/main by this push:
new 105af2b Supports IntelliJ platform 2024.2 (#13)
105af2b is described below
commit 105af2b8bae0e56462036efe694c4cb691af7550
Author: Lukasz Lenart <[email protected]>
AuthorDate: Thu Aug 7 20:03:50 2025 +0200
Supports IntelliJ platform 2024.2 (#13)
---
.github/workflows/build.yml | 31 +++-
.github/workflows/release.yml | 2 +-
.gitignore | 5 +-
CHANGELOG.md | 9 ++
CLAUDE.md | 172 ++++++++++++++++++++-
build.gradle.kts | 4 +-
gradle.properties | 8 +-
qodana.yml | 24 ++-
.../struts2/facet/StrutsFrameworkDetector.java | 5 +-
9 files changed, 234 insertions(+), 26 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 0db7c4e..aebdb7a 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -64,7 +64,7 @@ jobs:
uses: actions/setup-java@v4
with:
distribution: zulu
- java-version: 17
+ java-version: 21
# Setup Gradle
- name: Setup Gradle
@@ -126,7 +126,7 @@ jobs:
uses: actions/setup-java@v4
with:
distribution: zulu
- java-version: 17
+ java-version: 21
# Setup Gradle
- name: Setup Gradle
@@ -164,20 +164,32 @@ jobs:
pull-requests: write
steps:
+ # Free GitHub Actions Environment Disk Space
+ - name: Maximize Build Space
+ uses: jlumbroso/[email protected]
+ with:
+ tool-cache: false
+ large-packages: false
+
# Check out the current repository
- name: Fetch Sources
uses: actions/checkout@v4
+ with:
+ # to check out the actual pull request commit, not the merge commit
+ ref: ${{ github.event.pull_request.head.sha }}
+ # a full history is required for pull request analysis
+ fetch-depth: 0
- # Set up Java environment for the next steps
+ # Set up the Java environment for the next steps
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: zulu
- java-version: 17
+ java-version: 21
# Run Qodana inspections
- name: Qodana - Code Inspection
- uses: JetBrains/[email protected]
+ uses: JetBrains/[email protected]
with:
cache-default-branch-only: true
@@ -188,6 +200,13 @@ jobs:
runs-on: ubuntu-latest
steps:
+ # Free GitHub Actions Environment Disk Space
+ - name: Maximize Build Space
+ uses: jlumbroso/[email protected]
+ with:
+ tool-cache: false
+ large-packages: false
+
# Check out the current repository
- name: Fetch Sources
uses: actions/checkout@v4
@@ -197,7 +216,7 @@ jobs:
uses: actions/setup-java@v4
with:
distribution: zulu
- java-version: 17
+ java-version: 21
# Setup Gradle
- name: Setup Gradle
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 0dd0aee..bc6305a 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -49,7 +49,7 @@ jobs:
uses: actions/setup-java@v4
with:
distribution: zulu
- java-version: 17
+ java-version: 21
# Setup Gradle
- name: Setup Gradle
diff --git a/.gitignore b/.gitignore
index e0da412..45d02b7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -41,6 +41,7 @@ bin/
.DS_Store
### Claude Code ###
-.claude
+.claude/
-.cert
+### Private certs ###
+.cert/
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 99c537b..8764439 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,15 @@
## [Unreleased]
+### Changed
+
+- Update `platformVersion` to `2024.2`
+- Change since/until build to `242-242.*` (2024.2)
+- Upgrade Java toolchain from 17 to 21 (required by IntelliJ 2024.2)
+- Update GitHub Actions workflows to use Java 21
+- Fix `WebUtilImpl.isWebFacetConfigurationContainingFiles` API compatibility
issue for IntelliJ 2024.2
+- Dependencies - upgrade `org.jetbrains.intellij.platform` to `2.1.0`
+
### Added
- [WW-5558](https://issues.apache.org/jira/browse/WW-5558) Support for new
Struts 7 packages
diff --git a/CLAUDE.md b/CLAUDE.md
index f4bb2c2..1bc7d83 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -78,6 +78,172 @@ The plugin supports multiple view technologies:
### Build Configuration
- Gradle-based build with Kotlin DSL
- IntelliJ Platform Gradle Plugin 2.1.0
-- Supports IntelliJ IDEA Ultimate 2023.3+
-- Java 17 toolchain requirement
-- Code coverage via Kover plugin
\ No newline at end of file
+- Supports IntelliJ IDEA Ultimate 2024.2+
+- Java 21 toolchain requirement
+- Code coverage via Kover plugin
+
+## IntelliJ Platform Upgrade Guide
+
+This section documents the process for upgrading the plugin to support newer
versions of IntelliJ Platform.
+
+### Upgrading to IntelliJ Platform 2024.2
+
+**Prerequisites:**
+- IntelliJ Platform Gradle Plugin 2.0+ (migration already completed)
+- Java 21 required (2024.2+ requirement)
+- Gradle 8.5+ running on Java 17+
+
+**Files to Update:**
+
+#### 1. `gradle.properties`
+```properties
+# Platform version
+platformVersion = 2024.2
+
+# Build number ranges (2024.2 = 242)
+pluginSinceBuild = 242
+pluginUntilBuild = 242.*
+
+# Plugin version should match platform
+pluginVersion = 242.0.0 # Use 242.x.x format
+```
+
+#### 2. `build.gradle.kts`
+```kotlin
+// Update Java toolchain
+kotlin {
+ jvmToolchain(21) # Java 21 required for 2024.2+
+}
+
+// Update Qodana plugin version to match platform
+id("org.jetbrains.qodana") version "2024.2.6"
+```
+
+#### 3. `.github/workflows/build.yml`
+```yaml
+# Update Java version in all jobs
+- name: Setup Java
+ uses: actions/setup-java@v4
+ with:
+ distribution: zulu
+ java-version: 21 # Changed from 17
+
+# Update Qodana action version
+- name: Qodana - Code Inspection
+ uses: JetBrains/[email protected]
+
+# Add disk space management for resource-intensive jobs (inspectCode, verify)
+- name: Maximize Build Space
+ uses: jlumbroso/[email protected]
+ with:
+ tool-cache: false
+ large-packages: false
+```
+
+#### 4. `.github/workflows/release.yml`
+```yaml
+# Update Java version
+- name: Setup Java
+ uses: actions/setup-java@v4
+ with:
+ distribution: zulu
+ java-version: 21 # Changed from 17
+```
+
+#### 5. `qodana.yml` (update existing file)
+```yaml
+version: "1.0"
+linter: jetbrains/qodana-jvm-community:2024.2 # Match platform version
+projectJDK: 21 # Match Java requirement
+exclude:
+ - name: All
+ paths:
+ - .qodana
+ - build
+ - gradle
+ - gradlew
+ - gradlew.bat
+ - src/test/testData
+include:
+ - name: Root
+ paths:
+ - src/main/java
+ - src/main/resources
+```
+
+#### 6. API Compatibility Fixes
+Check and fix any deprecated/removed APIs by reviewing the [API Changes
List](https://plugins.jetbrains.com/docs/intellij/api-changes-list-2024.html):
+
+**Example from 2024.2 upgrade:**
+```java
+// Before (removed in 2024.2)
+return WebUtilImpl.isWebFacetConfigurationContainingFiles(underlying, files);
+
+// After (compatible alternative)
+return underlying instanceof WebFacetConfiguration;
+```
+
+#### 7. `CHANGELOG.md`
+Document the upgrade:
+```markdown
+### Changed
+- Update `platformVersion` to `2024.2`
+- Change since/until build to `242-242.*` (2024.2)
+- Upgrade Java toolchain from 17 to 21 (required by IntelliJ 2024.2)
+- Update GitHub Actions workflows to use Java 21
+- Fix API compatibility issues for IntelliJ 2024.2
+- Dependencies - upgrade plugin versions to match 2024.2
+```
+
+### General Upgrade Process
+
+**Step 1: Check Requirements**
+1. Review [JetBrains migration
documentation](https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-migration.html)
+2. Check Java version requirements for target platform
+3. Verify IntelliJ Platform Gradle Plugin version compatibility
+
+**Step 2: Update Configuration Files**
+1. Update `gradle.properties` with new platform version and build numbers
+2. Update `build.gradle.kts` with correct Java toolchain and plugin versions
+3. Update GitHub Actions workflows with matching Java versions
+4. Update `qodana.yml` with corresponding linter version
+
+**Step 3: Fix API Compatibility**
+1. Review [API Changes
List](https://plugins.jetbrains.com/docs/intellij/api-changes-list-2024.html)
for breaking changes
+2. Update deprecated/removed API calls
+3. Test compilation and runtime compatibility
+
+**Step 4: Verification**
+1. **Build Test**: `./gradlew build` - Ensure compilation succeeds
+2. **Unit Tests**: `./gradlew test -x rat` - Verify no API compatibility
issues
+3. **Plugin Verifier**: `./gradlew runPluginVerifier` - Check compatibility
against target IDEs
+4. **Qodana Check**: Verify code quality analysis runs without version warnings
+
+**Step 5: Documentation**
+1. Update `CHANGELOG.md` with upgrade details
+2. Update this guide with any new findings or issues
+3. Document any plugin-specific compatibility fixes
+
+### Common Issues & Solutions
+
+**Java Version Mismatch**
+- Error: `sourceCompatibility='17' but IntelliJ Platform requires
sourceCompatibility='21'`
+- Solution: Update `jvmToolchain()` in `build.gradle.kts` and all GitHub
Actions workflows
+
+**Qodana Version Warnings**
+- Error: `You are running a Qodana linter without an exact version tag`
+- Solution: Update `qodana.yml` with specific linter version matching platform
+
+**API Compatibility Issues**
+- Error: `cannot find symbol` for removed methods
+- Solution: Check API changes documentation and replace with compatible
alternatives
+
+**Kotlin K2 Mode**
+- Java-based plugins automatically support K2 mode (no migration needed)
+- If using Kotlin APIs, may need migration to Analysis API
+
+### Migration Resources
+- [IntelliJ Platform Migration
Guide](https://plugins.jetbrains.com/docs/intellij/tools-intellij-platform-gradle-plugin-migration.html)
+- [API Changes
List](https://plugins.jetbrains.com/docs/intellij/api-changes-list-2024.html)
+- [Platform Gradle Plugin
2.0](https://blog.jetbrains.com/platform/2024/07/intellij-platform-gradle-plugin-2-0/)
+- [Build Number
Ranges](https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html)
\ No newline at end of file
diff --git a/build.gradle.kts b/build.gradle.kts
index 006bbe4..9aa5456 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -15,7 +15,7 @@ plugins {
// Gradle Changelog Plugin
id("org.jetbrains.changelog") version "2.2.1"
// Gradle Qodana Plugin
- id("org.jetbrains.qodana") version "2024.1.9"
+ id("org.jetbrains.qodana") version "2024.2.6"
// Gradle Kover Plugin
id("org.jetbrains.kotlinx.kover") version "0.8.3"
// Apache RAT Plugin
@@ -27,7 +27,7 @@ version = providers.gradleProperty("pluginVersion").get()
// Set the JVM language level used to build the project.
kotlin {
- jvmToolchain(17)
+ jvmToolchain(21)
}
// Configure project's dependencies
diff --git a/gradle.properties b/gradle.properties
index d5c8275..6b8d62e 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -4,14 +4,14 @@ pluginGroup = com.intellij.struts2
pluginName = struts2
pluginRepositoryUrl = https://github.com/apache/struts-intellij-plugin/
# SemVer format -> https://semver.org
-pluginVersion = 241.18968.1
+pluginVersion = 242.0.0
# Supported build number ranges and IntelliJ Platform versions ->
https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
-pluginSinceBuild = 233
-pluginUntilBuild = 241.*
+pluginSinceBuild = 242
+pluginUntilBuild = 242.*
# IntelliJ Platform Properties ->
https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension
-platformVersion = 2023.3
+platformVersion = 2024.2
# Gradle Releases -> https://github.com/gradle/gradle/releases
gradleVersion = 8.9
diff --git a/qodana.yml b/qodana.yml
index 9f5b2d0..c02d69b 100644
--- a/qodana.yml
+++ b/qodana.yml
@@ -16,12 +16,24 @@
# Qodana configuration:
# https://www.jetbrains.com/help/qodana/qodana-yaml.html
-version: 1.0
-linter: jetbrains/qodana-jvm-community:latest
-projectJDK: "17"
-profile:
- name: qodana.recommended
+version: "1.0"
+
+linter: jetbrains/qodana-jvm-community:2024.2
+
+projectJDK: 21
+
exclude:
- name: All
paths:
- - .qodana
\ No newline at end of file
+ - .qodana
+ - build
+ - gradle
+ - gradlew
+ - gradlew.bat
+ - src/test/testData
+
+include:
+ - name: Root
+ paths:
+ - src/main/java
+ - src/main/resources
\ No newline at end of file
diff --git
a/src/main/java/com/intellij/struts2/facet/StrutsFrameworkDetector.java
b/src/main/java/com/intellij/struts2/facet/StrutsFrameworkDetector.java
index 370ff65..7c6ace3 100644
--- a/src/main/java/com/intellij/struts2/facet/StrutsFrameworkDetector.java
+++ b/src/main/java/com/intellij/struts2/facet/StrutsFrameworkDetector.java
@@ -19,7 +19,7 @@ import com.intellij.facet.FacetType;
import com.intellij.framework.detection.FacetBasedFrameworkDetector;
import com.intellij.framework.detection.FileContentPattern;
import com.intellij.ide.highlighter.XmlFileType;
-import com.intellij.javaee.web.WebUtilImpl;
+import com.intellij.javaee.web.facet.WebFacetConfiguration;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.patterns.ElementPattern;
@@ -63,6 +63,7 @@ public class StrutsFrameworkDetector extends
FacetBasedFrameworkDetector<StrutsF
public boolean isSuitableUnderlyingFacetConfiguration(final
FacetConfiguration underlying,
final
StrutsFacetConfiguration configuration,
final Set<? extends
VirtualFile> files) {
- return WebUtilImpl.isWebFacetConfigurationContainingFiles(underlying,
files);
+ // Check if the underlying configuration is a WebFacetConfiguration
+ return underlying instanceof WebFacetConfiguration;
}
}