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 1d295e5  fix: resolve 22 Qodana warnings from CI analysis (#52)
1d295e5 is described below

commit 1d295e533e1f397d5d891184f470b371f501e601
Author: Lukasz Lenart <[email protected]>
AuthorDate: Wed Feb 25 06:47:46 2026 +0100

    fix: resolve 22 Qodana warnings from CI analysis (#52)
    
    - Exclude src/main/gen from Qodana scanning (9 generated code warnings)
    - Replace redundant Collection.addAll() with constructor initialization
    - Fix 7 incorrect string capitalization warnings in bundle and source
    - Remove unnecessary null check before equals() in StrutsFileSet
    - Replace string concatenation in loop with StringBuilder
    - Suppress unstable API warnings with no public replacements
    - Migrate Struts2GraphComponent from DataProvider to UiDataProvider
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    Co-authored-by: Claude <[email protected]>
---
 qodana.yml                                         |   1 +
 .../java/com/intellij/lang/ognl/OgnlFileType.java  |   2 +-
 .../ExceptionMappingResultResolveConverter.java    |  67 +++---
 .../intellij/struts2/facet/ui/StrutsFileSet.java   | 240 ++++++++++-----------
 .../graph/fileEditor/Struts2GraphComponent.java    |  18 +-
 .../code/CreateValidationXmlIntention.java         |   2 +-
 .../inspection/HardcodedActionUrlInspection.java   |   9 +-
 .../resources/messages/Struts2Bundle.properties    |  10 +-
 8 files changed, 170 insertions(+), 179 deletions(-)

diff --git a/qodana.yml b/qodana.yml
index 9e39f71..91b1265 100644
--- a/qodana.yml
+++ b/qodana.yml
@@ -30,6 +30,7 @@ exclude:
       - gradle
       - gradlew
       - gradlew.bat
+      - src/main/gen
       - src/test/testData
 
 include:
diff --git a/src/main/java/com/intellij/lang/ognl/OgnlFileType.java 
b/src/main/java/com/intellij/lang/ognl/OgnlFileType.java
index 588cd00..f16ff2e 100644
--- a/src/main/java/com/intellij/lang/ognl/OgnlFileType.java
+++ b/src/main/java/com/intellij/lang/ognl/OgnlFileType.java
@@ -49,7 +49,7 @@ public final class OgnlFileType extends LanguageFileType {
   @NotNull
   @Override
   public String getDescription() {
-    return "Object Graph Navigation Language script";
+    return "Object graph navigation language script";
   }
 
   @NotNull
diff --git 
a/src/main/java/com/intellij/struts2/dom/struts/action/ExceptionMappingResultResolveConverter.java
 
b/src/main/java/com/intellij/struts2/dom/struts/action/ExceptionMappingResultResolveConverter.java
index 1151f9b..6308ea3 100644
--- 
a/src/main/java/com/intellij/struts2/dom/struts/action/ExceptionMappingResultResolveConverter.java
+++ 
b/src/main/java/com/intellij/struts2/dom/struts/action/ExceptionMappingResultResolveConverter.java
@@ -23,11 +23,13 @@ import com.intellij.util.containers.ContainerUtil;
 import com.intellij.util.xml.ConvertContext;
 import com.intellij.util.xml.DomElement;
 import com.intellij.util.xml.ResolvingConverter;
+
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
+
 import org.jetbrains.annotations.NonNls;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
@@ -37,47 +39,46 @@ import org.jetbrains.annotations.Nullable;
  */
 public class ExceptionMappingResultResolveConverter extends 
ResolvingConverter<HasResultType> {
 
-  @Override
-  @NotNull
-  public Collection<? extends HasResultType> getVariants(final ConvertContext 
context) {
-    final DomElement invocationElement = context.getInvocationElement();
-    final Action action = invocationElement.getParentOfType(Action.class, 
true);
-    if (action == null) {
-      return Collections.emptySet();
-    }
-
-    final List<HasResultType> variants = new ArrayList<>();
-    variants.addAll(action.getResults()); // Action-local first
+    @Override
+    @NotNull
+    public Collection<? extends HasResultType> getVariants(final 
ConvertContext context) {
+        final DomElement invocationElement = context.getInvocationElement();
+        final Action action = invocationElement.getParentOfType(Action.class, 
true);
+        if (action == null) {
+            return Collections.emptySet();
+        }
 
-    final StrutsPackage strutsPackage = action.getStrutsPackage();
-    final GlobalResults globalResults = strutsPackage.getGlobalResults();
-    variants.addAll(globalResults.getResults());
+        final List<HasResultType> variants = new 
ArrayList<>(action.getResults()); // Action-local first
 
-    return variants;
-  }
+        final StrutsPackage strutsPackage = action.getStrutsPackage();
+        final GlobalResults globalResults = strutsPackage.getGlobalResults();
+        variants.addAll(globalResults.getResults());
 
-  @Override
-  public HasResultType fromString(@Nullable @NonNls final String value, final 
ConvertContext context) {
-    if (value == null) {
-      return null;
+        return variants;
     }
 
-    return ContainerUtil.find(getVariants(context),
-                              (Condition<HasResultType>)result -> 
Objects.equals(result.getName().getStringValue(), value));
-  }
+    @Override
+    public HasResultType fromString(@Nullable @NonNls final String value, 
final ConvertContext context) {
+        if (value == null) {
+            return null;
+        }
 
-  @Override
-  public String toString(@Nullable final HasResultType result, final 
ConvertContext context) {
-    if (result == null) {
-      return null;
+        return ContainerUtil.find(getVariants(context),
+                (Condition<HasResultType>) result -> 
Objects.equals(result.getName().getStringValue(), value));
     }
 
-    return result.getName().getStringValue();
-  }
+    @Override
+    public String toString(@Nullable final HasResultType result, final 
ConvertContext context) {
+        if (result == null) {
+            return null;
+        }
 
-  @Override
-  public String getErrorMessage(@Nullable final String value, final 
ConvertContext context) {
-    return "Cannot resolve action-result '" + value + "'";
-  }
+        return result.getName().getStringValue();
+    }
+
+    @Override
+    public String getErrorMessage(@Nullable final String value, final 
ConvertContext context) {
+        return "Cannot resolve action-result '" + value + "'";
+    }
 
 }
\ No newline at end of file
diff --git a/src/main/java/com/intellij/struts2/facet/ui/StrutsFileSet.java 
b/src/main/java/com/intellij/struts2/facet/ui/StrutsFileSet.java
index 918d0bc..45789c2 100644
--- a/src/main/java/com/intellij/struts2/facet/ui/StrutsFileSet.java
+++ b/src/main/java/com/intellij/struts2/facet/ui/StrutsFileSet.java
@@ -41,136 +41,136 @@ import java.util.Set;
  */
 public class StrutsFileSet implements Disposable {
 
-  private final String id;
-  private String name;
-
-  private boolean autodetected;
-  private boolean removed;
-
-  private final List<VirtualFilePointer> files = new SmartList<>();
-
-  @NonNls
-  private static final String ID_PREFIX = "s2fileset";
-
-  private static final Function<StrutsFileSet, String> FILESET_NAME_FUNCTION = 
strutsFileSet -> strutsFileSet.getName();
-
-  private static final Function<StrutsFileSet, String> FILESET_ID_FUNCTION = 
strutsFileSet -> strutsFileSet.getId();
-
-  public StrutsFileSet(@NotNull @NonNls final String id,
-                       @NotNull @NonNls final String name,
-                       @NotNull final StrutsFacetConfiguration parent) {
-    this.id = id;
-    this.name = name;
-
-    Disposer.register(parent, this);
-  }
-
-  public StrutsFileSet(@NotNull final StrutsFileSet original) {
-    id = original.id;
-    name = original.name;
-    files.addAll(original.files);
-    autodetected = original.autodetected;
-    removed = original.removed;
-  }
-
-  public static String getUniqueId(final Set<? extends StrutsFileSet> list) {
-    return UniqueNameGenerator.generateUniqueName(ID_PREFIX, 
ContainerUtil.map(list, FILESET_ID_FUNCTION));
-  }
-
-  public static String getUniqueName(final String prefix, final Set<? extends 
StrutsFileSet> list) {
-    return UniqueNameGenerator.generateUniqueName(prefix + " ", 
ContainerUtil.map(list, FILESET_NAME_FUNCTION));
-  }
-
-  public boolean isNew() {
-    return false;
-  }
-
-  @NotNull
-  public String getId() {
-    return id;
-  }
-
-  public String getName() {
-    return name;
-  }
-
-  public void setName(@NotNull final String name) {
-    this.name = name;
-  }
-
-  public boolean isAutodetected() {
-    return autodetected;
-  }
-
-  public void setAutodetected(final boolean autodetected) {
-    this.autodetected = autodetected;
-  }
-
-  public boolean isRemoved() {
-    return removed;
-  }
-
-  public void setRemoved(final boolean removed) {
-    this.removed = removed;
-  }
-
-  @NotNull
-  public List<VirtualFilePointer> getFiles() {
-    return files;
-  }
-
-  public void addFile(final VirtualFile file) {
-    addFile(file.getUrl());
-  }
-
-  public void addFile(@NonNls final String url) {
-    if (!StringUtil.isEmptyOrSpaces(url)) {
-      // Check if this URL is already in the file set to prevent duplicates
-      for (final VirtualFilePointer existing : files) {
-        if (url.equals(existing.getUrl())) {
-          return; // File already exists, don't add duplicate
-        }
-      }
-      final VirtualFilePointer filePointer = 
VirtualFilePointerManager.getInstance().create(url, this, null);
-      files.add(filePointer);
+    private final String id;
+    private String name;
+
+    private boolean autodetected;
+    private boolean removed;
+
+    private final List<VirtualFilePointer> files = new SmartList<>();
+
+    @NonNls
+    private static final String ID_PREFIX = "s2fileset";
+
+    private static final Function<StrutsFileSet, String> FILESET_NAME_FUNCTION 
= StrutsFileSet::getName;
+
+    private static final Function<StrutsFileSet, String> FILESET_ID_FUNCTION = 
StrutsFileSet::getId;
+
+    public StrutsFileSet(@NotNull @NonNls final String id,
+                         @NotNull @NonNls final String name,
+                         @NotNull final StrutsFacetConfiguration parent) {
+        this.id = id;
+        this.name = name;
+
+        Disposer.register(parent, this);
+    }
+
+    public StrutsFileSet(@NotNull final StrutsFileSet original) {
+        id = original.id;
+        name = original.name;
+        files.addAll(original.files);
+        autodetected = original.autodetected;
+        removed = original.removed;
+    }
+
+    public static String getUniqueId(final Set<? extends StrutsFileSet> list) {
+        return UniqueNameGenerator.generateUniqueName(ID_PREFIX, 
ContainerUtil.map(list, FILESET_ID_FUNCTION));
     }
-  }
 
-  public void removeFile(final VirtualFilePointer file) {
-    files.remove(file);
-  }
+    public static String getUniqueName(final String prefix, final Set<? 
extends StrutsFileSet> list) {
+        return UniqueNameGenerator.generateUniqueName(prefix + " ", 
ContainerUtil.map(list, FILESET_NAME_FUNCTION));
+    }
 
-  public boolean hasFile(@Nullable final VirtualFile file) {
-    if (file == null) {
-      return false;
+    public boolean isNew() {
+        return false;
     }
-    for (final VirtualFilePointer pointer : files) {
-      final VirtualFile virtualFile = pointer.getFile();
-      if (virtualFile != null && file.equals(virtualFile)) {
-        return true;
-      }
+
+    @NotNull
+    public String getId() {
+        return id;
     }
-    return false;
-  }
 
-  public boolean equals(final Object another) {
-    if (another instanceof StrutsFileSet obj) {
-      return Objects.equals(obj.getId(), id);
+    public String getName() {
+        return name;
     }
 
-    return false;
-  }
+    public void setName(@NotNull final String name) {
+        this.name = name;
+    }
 
-  public int hashCode() {
-    return id.hashCode();
-  }
+    public boolean isAutodetected() {
+        return autodetected;
+    }
 
-  public String toString() {
-    return name;
-  }
+    public void setAutodetected(final boolean autodetected) {
+        this.autodetected = autodetected;
+    }
 
-  @Override
-  public void dispose() {
-  }
+    public boolean isRemoved() {
+        return removed;
+    }
+
+    public void setRemoved(final boolean removed) {
+        this.removed = removed;
+    }
+
+    @NotNull
+    public List<VirtualFilePointer> getFiles() {
+        return files;
+    }
+
+    public void addFile(final VirtualFile file) {
+        addFile(file.getUrl());
+    }
+
+    public void addFile(@NonNls final String url) {
+        if (!StringUtil.isEmptyOrSpaces(url)) {
+            // Check if this URL is already in the file set to prevent 
duplicates
+            for (final VirtualFilePointer existing : files) {
+                if (url.equals(existing.getUrl())) {
+                    return; // File already exists, don't add duplicate
+                }
+            }
+            final VirtualFilePointer filePointer = 
VirtualFilePointerManager.getInstance().create(url, this, null);
+            files.add(filePointer);
+        }
+    }
+
+    public void removeFile(final VirtualFilePointer file) {
+        files.remove(file);
+    }
+
+    public boolean hasFile(@Nullable final VirtualFile file) {
+        if (file == null) {
+            return false;
+        }
+        for (final VirtualFilePointer pointer : files) {
+            final VirtualFile virtualFile = pointer.getFile();
+            if (file.equals(virtualFile)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public boolean equals(final Object another) {
+        if (another instanceof StrutsFileSet obj) {
+            return Objects.equals(obj.getId(), id);
+        }
+
+        return false;
+    }
+
+    public int hashCode() {
+        return id.hashCode();
+    }
+
+    public String toString() {
+        return name;
+    }
+
+    @Override
+    public void dispose() {
+    }
 
 }
diff --git 
a/src/main/java/com/intellij/struts2/graph/fileEditor/Struts2GraphComponent.java
 
b/src/main/java/com/intellij/struts2/graph/fileEditor/Struts2GraphComponent.java
index 85a666d..137e9c1 100644
--- 
a/src/main/java/com/intellij/struts2/graph/fileEditor/Struts2GraphComponent.java
+++ 
b/src/main/java/com/intellij/struts2/graph/fileEditor/Struts2GraphComponent.java
@@ -38,25 +38,22 @@ import com.intellij.util.xml.DomElement;
 import com.intellij.util.xml.DomEventListener;
 import com.intellij.util.xml.DomManager;
 import com.intellij.util.xml.events.DomEvent;
-import org.jetbrains.annotations.NonNls;
 import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
 
 import javax.swing.*;
 import java.awt.*;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Objects;
 
 /**
  * @author Yann C&eacute;bron
  */
-public class Struts2GraphComponent extends JPanel implements DataProvider, 
Disposable {
-    @NonNls
-    private static final String STRUTS2_DESIGNER_COMPONENT = 
"STRUTS2_DESIGNER_COMPONENT";
+public class Struts2GraphComponent extends JPanel implements UiDataProvider, 
Disposable {
+    static final DataKey<Struts2GraphComponent> DATA_KEY = 
DataKey.create("STRUTS2_DESIGNER_COMPONENT");
 
     private final GraphBuilder<BasicStrutsNode, BasicStrutsEdge> myBuilder;
 
+    @SuppressWarnings("UnstableApiUsage")
     public Struts2GraphComponent(final XmlFile xmlFile) {
         final ProgressIndicator progress = 
ProgressManager.getInstance().getProgressIndicator();
 
@@ -152,13 +149,8 @@ public class Struts2GraphComponent extends JPanel 
implements DataProvider, Dispo
     }
 
     @Override
-    @Nullable
-    public Object getData(@NotNull @NonNls final String dataId) {
-        if (Objects.equals(dataId, STRUTS2_DESIGNER_COMPONENT)) {
-            return this;
-        }
-
-        return null;
+    public void uiDataSnapshot(@NotNull DataSink sink) {
+        sink.set(DATA_KEY, this);
     }
 
 }
\ No newline at end of file
diff --git 
a/src/main/java/com/intellij/struts2/intentions/code/CreateValidationXmlIntention.java
 
b/src/main/java/com/intellij/struts2/intentions/code/CreateValidationXmlIntention.java
index fe9b023..c7f74aa 100644
--- 
a/src/main/java/com/intellij/struts2/intentions/code/CreateValidationXmlIntention.java
+++ 
b/src/main/java/com/intellij/struts2/intentions/code/CreateValidationXmlIntention.java
@@ -124,7 +124,7 @@ public class CreateValidationXmlIntention extends 
PsiElementBaseIntentionAction
         final List<Action> filteredActions = 
getActionsWithoutValidation(actionClass);
         if (filteredActions.size() > 1) {
             final ListPopupStep<Action> step =
-                    new BaseListPopupStep<>("Choose action mapping", 
filteredActions) {
+                    new BaseListPopupStep<>("Choose Action Mapping", 
filteredActions) {
 
                         @Override
                         public Icon getIconFor(final Action value) {
diff --git 
a/src/main/java/com/intellij/struts2/jsp/inspection/HardcodedActionUrlInspection.java
 
b/src/main/java/com/intellij/struts2/jsp/inspection/HardcodedActionUrlInspection.java
index 9ffed32..a2f745f 100644
--- 
a/src/main/java/com/intellij/struts2/jsp/inspection/HardcodedActionUrlInspection.java
+++ 
b/src/main/java/com/intellij/struts2/jsp/inspection/HardcodedActionUrlInspection.java
@@ -14,7 +14,6 @@
  */
 package com.intellij.struts2.jsp.inspection;
 
-import com.intellij.codeInsight.completion.ExtendedTagInsertHandler;
 import com.intellij.codeInspection.LocalQuickFix;
 import com.intellij.codeInspection.ProblemDescriptor;
 import com.intellij.codeInspection.ProblemsHolder;
@@ -35,15 +34,12 @@ import com.intellij.struts2.StrutsBundle;
 import com.intellij.struts2.StrutsConstants;
 import com.intellij.struts2.facet.StrutsFacet;
 import com.intellij.struts2.model.constant.StrutsConstantHelper;
-import com.intellij.util.IncorrectOperationException;
 import com.intellij.util.containers.ContainerUtil;
-import com.intellij.xml.XmlNamespaceHelper;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
 import java.net.URI;
 import java.net.URL;
-import java.util.Collections;
 
 /*
  * @author max
@@ -199,8 +195,9 @@ public class HardcodedActionUrlInspection extends 
XmlSuppressableInspectionTool
             String linePrefix = 
document.getCharsSequence().subSequence(lineStart, start).toString();
             linePrefix = linePrefix.substring(0, linePrefix.length() - 
linePrefix.trim().length());
 
-            String indent = linePrefix;
-            while (indent.length() < start - lineStart) indent += " ";
+            StringBuilder indentBuilder = new StringBuilder(linePrefix);
+            while (indentBuilder.length() < start - lineStart) 
indentBuilder.append(' ');
+            String indent = indentBuilder.toString();
 
             Pair<String, String> tag_var = buildTag(prefix, url, indent, 
inline, myActionExtension);
             assert tag_var != null;
diff --git a/src/main/resources/messages/Struts2Bundle.properties 
b/src/main/resources/messages/Struts2Bundle.properties
index 74dd9e3..075b419 100644
--- a/src/main/resources/messages/Struts2Bundle.properties
+++ b/src/main/resources/messages/Struts2Bundle.properties
@@ -17,8 +17,8 @@ struts2=Struts 2
 
 annotators.action.no.name=No name
 annotators.action.goto.declaration=Go To Action Declaration
-annotators.action.goto.tooltip.single=<b>Action path:</b>
-annotators.action.goto.tooltip=<b>Action paths:</b>
+annotators.action.goto.tooltip.single=<b>Action Path:</b>
+annotators.action.goto.tooltip=<b>Action Paths:</b>
 
 annotators.action.goto.result=Go To Result
 annotators.action.goto.result.tooltip=Go To Result
@@ -26,14 +26,14 @@ annotators.action.goto.result.tooltip=Go To Result
 annotators.action.goto.validation=Go To Validation
 annotators.action.goto.validation.tooltip=Go To Validation
 
-annotators.jsp.goto.action.method=Go To Action method
+annotators.jsp.goto.action.method=Go to action method
 annotators.jsp.goto.action.method.not.found=No Action method found
 
 annotators.fileset.file.not.registered=File not registered in file set
 annotators.fileset.no.file.sets=No file sets configured for Struts 2 facet
 annotators.fileset.edit.facet.settings=Edit Struts 2 facet settings
 annotators.fileset.fix.add.to.fileset=Add {0} to file set
-annotators.fileset.fix.choose.fileset=Choose file set
+annotators.fileset.fix.choose.fileset=Choose File Set
 
 dom.extendable.class.converter.type.class=class
 dom.extendable.class.converter.type.spring=Spring bean
@@ -59,7 +59,7 @@ inspections.hardcoded.action.url.display.name=Hardcoded 
action URL
 
 intentions.family.name=Struts 2
 
-structure.view.filter.params=Hide params
+structure.view.filter.params=Hide Params
 
 facet.features.title=Features
 

Reply via email to