This is an automated email from the ASF dual-hosted git repository.

lukaszlenart pushed a commit to branch feature/WW-5445-struts6
in repository https://gitbox.apache.org/repos/asf/struts-intellij-plugin.git

commit 45d0f28e07f15206105fa4c7968a1deadfb3e4d5
Author: Lukasz Lenart <lukaszlen...@apache.org>
AuthorDate: Mon Jul 15 08:26:17 2024 +0200

    WW-5445 Adds support for Struts 6
---
 build.gradle.kts                                   |  6 ++---
 .../java/com/intellij/struts2/StrutsConstants.java | 14 +++++++---
 .../StrutsFileTemplateGroupDescriptorFactory.java  |  7 +++++
 .../struts2/StrutsFileTemplateProvider.java        | 16 ++++++++----
 .../intellij/struts2/facet/Struts2LibraryType.java |  2 +-
 .../facet/StrutsFrameworkSupportProvider.java      |  8 +++---
 .../java/com/intellij/struts2/facet/struts2.xml    | 30 +++++++++++-----------
 .../resources/fileTemplates/j2ee/struts_6_0.xml.ft |  8 ++++++
 .../fileTemplates/j2ee/struts_6_0.xml.html         |  7 +++++
 9 files changed, 68 insertions(+), 30 deletions(-)

diff --git a/build.gradle.kts b/build.gradle.kts
index 0345203..6a5fb7b 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -1,11 +1,11 @@
 plugins {
     id("java")
     id("org.jetbrains.kotlin.jvm") version "1.8.21"
-    id("org.jetbrains.intellij") version "1.13.3"
+    id("org.jetbrains.intellij") version "1.17.2"
 }
 
 group = "com.intellij"
-version = "2023.2"
+version = "2024.4"
 
 repositories {
     mavenCentral()
@@ -43,7 +43,7 @@ tasks {
 
     patchPluginXml {
         sinceBuild.set("231")
-        untilBuild.set("232.*")
+        untilBuild.set("241.*")
     }
 
     signPlugin {
diff --git a/src/main/java/com/intellij/struts2/StrutsConstants.java 
b/src/main/java/com/intellij/struts2/StrutsConstants.java
index 265e901..773aa03 100644
--- a/src/main/java/com/intellij/struts2/StrutsConstants.java
+++ b/src/main/java/com/intellij/struts2/StrutsConstants.java
@@ -34,6 +34,9 @@ public final class StrutsConstants {
   @NonNls
   public static final String STRUTS_2_1_FILTER_CLASS = 
"org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter";
 
+  @NonNls
+  public static final String STRUTS_2_5_FILTER_CLASS = 
"org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter";
+
   @NonNls
   public static final String XWORK_ACTION_CLASS = 
"com.opensymphony.xwork2.Action";
 
@@ -97,12 +100,16 @@ public final class StrutsConstants {
   @NonNls
   public static final String STRUTS_2_3_DTD_ID = "-//Apache Software 
Foundation//DTD Struts Configuration 2.3//EN";
 
-
   @NonNls
-  public static final String STRUTS_2_5_DTD_URI = 
"http://struts.apache.org/dtds/struts-2.5.dtd";;
+  public static final String STRUTS_2_5_DTD_URI = 
"https://struts.apache.org/dtds/struts-2.5.dtd";;
   @NonNls
   public static final String STRUTS_2_5_DTD_ID = "-//Apache Software 
Foundation//DTD Struts Configuration 2.5//EN";
 
+  @NonNls
+  public static final String STRUTS_6_0_DTD_URI = 
"https://struts.apache.org/dtds/struts-6.0.dtd";;
+  @NonNls
+  public static final String STRUTS_6_0_DTD_ID = "-//Apache Software 
Foundation//DTD Struts Configuration 6.0//EN";
+
   /**
    * All struts.xml DTD-IDs/URIs.
    */
@@ -112,7 +119,8 @@ public final class StrutsConstants {
     STRUTS_2_1_DTD_URI, STRUTS_2_1_DTD_ID,
     STRUTS_2_1_7_DTD_URI, STRUTS_2_1_7_DTD_ID,
     STRUTS_2_3_DTD_URI, STRUTS_2_3_DTD_ID,
-    STRUTS_2_5_DTD_URI, STRUTS_2_5_DTD_ID
+    STRUTS_2_5_DTD_URI, STRUTS_2_5_DTD_ID,
+    STRUTS_6_0_DTD_URI, STRUTS_6_0_DTD_ID
   };
 
   @NonNls
diff --git 
a/src/main/java/com/intellij/struts2/StrutsFileTemplateGroupDescriptorFactory.java
 
b/src/main/java/com/intellij/struts2/StrutsFileTemplateGroupDescriptorFactory.java
index e8cbe92..a7a4f6a 100644
--- 
a/src/main/java/com/intellij/struts2/StrutsFileTemplateGroupDescriptorFactory.java
+++ 
b/src/main/java/com/intellij/struts2/StrutsFileTemplateGroupDescriptorFactory.java
@@ -55,6 +55,11 @@ public class StrutsFileTemplateGroupDescriptorFactory 
implements FileTemplateGro
    */
   public static final String STRUTS_2_5_XML = "struts_2_5.xml";
 
+  /**
+   * Template for {@code >=6.0}.
+   */
+  public static final String STRUTS_6_0_XML = "struts_6_0.xml";
+
   /**
    * Template for {@code validation.xml}.  TODO cannot name "validation.xml" 
due to SA using this template name.
    */
@@ -74,6 +79,8 @@ public class StrutsFileTemplateGroupDescriptorFactory 
implements FileTemplateGro
                                                  
StrutsIcons.STRUTS_CONFIG_FILE));
     group.addTemplate(new FileTemplateDescriptor(STRUTS_2_5_XML,
                                                  
StrutsIcons.STRUTS_CONFIG_FILE));
+    group.addTemplate(new FileTemplateDescriptor(STRUTS_6_0_XML,
+                                                 
StrutsIcons.STRUTS_CONFIG_FILE));
 
     group.addTemplate(new FileTemplateDescriptor(VALIDATION_XML,
                                                  
StrutsIcons.VALIDATION_CONFIG_FILE));
diff --git a/src/main/java/com/intellij/struts2/StrutsFileTemplateProvider.java 
b/src/main/java/com/intellij/struts2/StrutsFileTemplateProvider.java
index b641863..60e0d1b 100644
--- a/src/main/java/com/intellij/struts2/StrutsFileTemplateProvider.java
+++ b/src/main/java/com/intellij/struts2/StrutsFileTemplateProvider.java
@@ -29,22 +29,24 @@ public class StrutsFileTemplateProvider {
 
   private final String myVersionName;
   private final boolean my21orNewer;
+  private final boolean my25orNewer;
 
   public StrutsFileTemplateProvider(Module module) {
     myVersionName = StrutsVersionDetector.detectStrutsVersion(module);
     my21orNewer = isNewerThan("2.1");
+    my25orNewer = isNewerThan("2.5");
   }
 
   @NotNull
   public FileTemplate determineFileTemplate(Project project) {
     String template;
-    if (isNewerThan("2.5")) {
+    if (isNewerThan("6.0")) {
+      template = StrutsFileTemplateGroupDescriptorFactory.STRUTS_6_0_XML;
+    } else if (isNewerThan("2.5")) {
       template = StrutsFileTemplateGroupDescriptorFactory.STRUTS_2_5_XML;
-    }
-    else if (isNewerThan("2.3")) {
+    } else if (isNewerThan("2.3")) {
       template = StrutsFileTemplateGroupDescriptorFactory.STRUTS_2_3_XML;
-    }
-    else if (my21orNewer) {
+    } else if (my21orNewer) {
       template = isNewerThan("2.1.7") ?
                  StrutsFileTemplateGroupDescriptorFactory.STRUTS_2_1_7_XML :
                  StrutsFileTemplateGroupDescriptorFactory.STRUTS_2_1_XML;
@@ -61,6 +63,10 @@ public class StrutsFileTemplateProvider {
     return my21orNewer;
   }
 
+  public boolean is25orNewer() {
+    return my25orNewer;
+  }
+
   private boolean isNewerThan(String versionName) {
     return VersionComparatorUtil.compare(myVersionName, versionName) > 0;
   }
diff --git a/src/main/java/com/intellij/struts2/facet/Struts2LibraryType.java 
b/src/main/java/com/intellij/struts2/facet/Struts2LibraryType.java
index a543c9f..ca7be0f 100644
--- a/src/main/java/com/intellij/struts2/facet/Struts2LibraryType.java
+++ b/src/main/java/com/intellij/struts2/facet/Struts2LibraryType.java
@@ -33,7 +33,7 @@ public class Struts2LibraryType extends 
DownloadableLibraryType {
   private static final String GROUP_ID = "struts2";
 
   public Struts2LibraryType() {
-    super("Struts 2", "struts2", GROUP_ID, 
Struts2LibraryType.class.getResource("struts2.xml"));
+    super("Struts 2", "struts2", GROUP_ID, 
Struts2LibraryType.class.getResource("struts.xml"));
   }
 
   @NotNull
diff --git 
a/src/main/java/com/intellij/struts2/facet/StrutsFrameworkSupportProvider.java 
b/src/main/java/com/intellij/struts2/facet/StrutsFrameworkSupportProvider.java
index 612ced5..622f262 100644
--- 
a/src/main/java/com/intellij/struts2/facet/StrutsFrameworkSupportProvider.java
+++ 
b/src/main/java/com/intellij/struts2/facet/StrutsFrameworkSupportProvider.java
@@ -164,9 +164,11 @@ public class StrutsFrameworkSupportProvider extends 
FacetBasedFrameworkSupportPr
               final Filter strutsFilter = webApp.addFilter();
               strutsFilter.getFilterName().setStringValue("struts2");
 
-              @NonNls final String filterClass = 
templateProvider.is21orNewer() ?
-                                                 
StrutsConstants.STRUTS_2_1_FILTER_CLASS :
-                                                 
StrutsConstants.STRUTS_2_0_FILTER_CLASS;
+              @NonNls final String filterClass = templateProvider.is21orNewer()
+                      ? templateProvider.is25orNewer()
+                      ? StrutsConstants.STRUTS_2_5_FILTER_CLASS
+                      : StrutsConstants.STRUTS_2_1_FILTER_CLASS
+                      : StrutsConstants.STRUTS_2_0_FILTER_CLASS;
               strutsFilter.getFilterClass().setStringValue(filterClass);
 
               final FilterMapping filterMapping = webApp.addFilterMapping();
diff --git a/src/main/java/com/intellij/struts2/facet/struts2.xml 
b/src/main/java/com/intellij/struts2/facet/struts2.xml
index adb8111..8d6c9fd 100644
--- a/src/main/java/com/intellij/struts2/facet/struts2.xml
+++ b/src/main/java/com/intellij/struts2/facet/struts2.xml
@@ -1,31 +1,31 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <artifacts>
-  <artifact name="Struts 2" version="2.5.14.1">
-    <item name="struts2-core.jar" version="2.5.14.1"
-          
url="http://central.maven.org/maven2/org/apache/struts/struts2-core/2.5.14.1/struts2-core-2.5.14.1.jar";>
+  <artifact name="Struts 2" version="6.4.0">
+    <item name="struts2-core.jar" version="6.4.0"
+          
url="https://repo1.maven.org/maven2/org/apache/struts/struts2-core/6.4.0/struts2-core-6.4.0.jar";>
       <required-class fqn="org.apache.struts2.StrutsConstants"/>
     </item>
-    <item name="freemarker.jar" version="2.3.26-incubating"
-          
url="http://central.maven.org/maven2/org/freemarker/freemarker/2.3.26-incubating/freemarker-2.3.26-incubating.jar";>
+    <item name="freemarker.jar" version="2.3.32"
+          
url="https://repo1.maven.org/maven2/org/freemarker/freemarker/2.3.32/freemarker-2.3.32.jar";>
       <required-class fqn="freemarker.core.TemplateElement"/>
     </item>
-    <item name="ognl.jar" version="3.1.15"
-          
url="http://central.maven.org/maven2/ognl/ognl/3.1.15/ognl-3.1.15.jar";>
+    <item name="ognl.jar" version="3.3.5"
+          url="https://repo1.maven.org/maven2/ognl/ognl/3.3.5/ognl-3.3.5.jar";>
       <required-class fqn="ognl.Ognl"/>
     </item>
-    <item name="commons-fileupload.jar" version="1.3.3"
-          
url="http://central.maven.org/maven2/commons-fileupload/commons-fileupload/1.3.3/commons-fileupload-1.3.3.jar";>
+    <item name="commons-fileupload.jar" version="1.5"
+          
url="https://repo1.maven.org/maven2/commons-fileupload/commons-fileupload/1.5/commons-fileupload-1.5.jar";>
       <required-class fqn="org.apache.commons.fileupload.FileUpload"/>
     </item>
-    <item name="commons-lang.jar" version="3.6"
-          
url="http://central.maven.org/maven2/org/apache/commons/commons-lang3/3.6/commons-lang3-3.6.jar";>
+    <item name="commons-lang.jar" version="3.14.0"
+          
url="https://repo1.maven.org/maven2/org/apache/commons/commons-lang3/3.14.0/commons-lang3-3.14.0.jar";>
       <required-class fqn="org.apache.commons.lang3.ArrayUtils"/>
     </item>
-    <item name="commons-io.jar" version="2.5"
-          
url="http://central.maven.org/maven2/commons-io/commons-io/2.5/commons-io-2.5.jar";>
+    <item name="commons-io.jar" version="2.15.1"
+          
url="https://repo1.maven.org/maven2/commons-io/commons-io/2.15.1/commons-io-2.15.1.jar";>
       <required-class fqn="org.apache.commons.io.FileUtils"/>
     </item>
-    <item name="log4j.jar" version="2.9.1"
-          
url="http://central.maven.org/maven2/org/apache/logging/log4j/log4j-api/2.9.1/log4j-api-2.9.1.jar"/>
+    <item name="log4j.jar" version="2.23.1"
+          
url="https://repo1.maven.org/maven2/org/apache/logging/log4j/log4j-api/2.23.1/log4j-api-2.23.1.jar"/>
   </artifact>
 </artifacts>
\ No newline at end of file
diff --git a/src/main/resources/fileTemplates/j2ee/struts_6_0.xml.ft 
b/src/main/resources/fileTemplates/j2ee/struts_6_0.xml.ft
new file mode 100644
index 0000000..68dcfc1
--- /dev/null
+++ b/src/main/resources/fileTemplates/j2ee/struts_6_0.xml.ft
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE struts PUBLIC
+  "-//Apache Software Foundation//DTD Struts Configuration 6.0//EN"
+  "https://struts.apache.org/dtds/struts-6.0.dtd";>
+
+<struts>
+</struts>
\ No newline at end of file
diff --git a/src/main/resources/fileTemplates/j2ee/struts_6_0.xml.html 
b/src/main/resources/fileTemplates/j2ee/struts_6_0.xml.html
new file mode 100644
index 0000000..3dc6cb4
--- /dev/null
+++ b/src/main/resources/fileTemplates/j2ee/struts_6_0.xml.html
@@ -0,0 +1,7 @@
+<html>
+<body style="padding: 2px;">
+<span style="font-family: verdana,sans-serif; font-size: smaller;">
+This is a built-in template used each time you create a new struts.xml for 
Struts 6.x
+</span>
+</body>
+</html>
\ No newline at end of file

Reply via email to