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