From aec78dd1619586171b5c71278fa59949441521b1 Mon Sep 17 00:00:00 2001 From: Kusal Kithul-Godage Date: Thu, 25 Jul 2024 21:16:56 +1000 Subject: [PATCH] WW-5411 Misc code cleanup --- .../application/TestDataProvider.java | 23 ++++++++------ .../struts2/showcase/hangman/Hangman.java | 29 ++++++----------- .../struts2/showcase/hangman/Vocab.java | 31 +++++++------------ .../opensymphony/xwork2/ActionSupport.java | 8 +++-- .../xwork2/DefaultTextProvider.java | 4 +-- .../xwork2/inject/ContainerImpl.java | 2 +- .../xwork2/ognl/OgnlValueStack.java | 2 ++ .../xwork2/ognl/SecurityMemberAccess.java | 29 +++++++---------- .../xwork2/util/fs/DefaultFileManager.java | 9 ++++-- .../PrefixBasedActionProxyFactory.java | 12 ++----- .../debugging/DebuggingInterceptor.java | 11 ++++--- .../result/ServletActionRedirectResult.java | 3 +- .../struts2/result/ServletRedirectResult.java | 7 ++--- .../struts2/url/StrutsQueryStringParser.java | 3 +- .../org/apache/struts2/util/MakeIterator.java | 4 +-- .../convention/DefaultResultMapBuilder.java | 13 ++++---- 16 files changed, 84 insertions(+), 106 deletions(-) diff --git a/apps/showcase/src/main/java/org/apache/struts2/showcase/application/TestDataProvider.java b/apps/showcase/src/main/java/org/apache/struts2/showcase/application/TestDataProvider.java index 6e60ebfdd..25cfa3298 100644 --- a/apps/showcase/src/main/java/org/apache/struts2/showcase/application/TestDataProvider.java +++ b/apps/showcase/src/main/java/org/apache/struts2/showcase/application/TestDataProvider.java @@ -31,6 +31,7 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.io.Serial; import java.io.Serializable; import java.util.Arrays; import java.util.Date; @@ -41,6 +42,7 @@ import java.util.Date; @Service public class TestDataProvider implements Serializable, InitializingBean { + @Serial private static final long serialVersionUID = 1L; private static final Logger log = LogManager.getLogger(TestDataProvider.class); @@ -64,9 +66,9 @@ public class TestDataProvider implements Serializable, InitializingBean { }; public static final Employee[] TEST_EMPLOYEES = { - new Employee(new Long(1), "Alan", "Smithee", new Date(), new Float(2000f), true, POSITIONS[0], + new Employee(1L, "Alan", "Smithee", new Date(), 2000f, true, POSITIONS[0], TEST_SKILLS[0], null, "alan", LEVELS[0], "Nice guy"), - new Employee(new Long(2), "Robert", "Robson", new Date(), new Float(10000f), false, POSITIONS[1], + new Employee(2L, "Robert", "Robson", new Date(), 10000f, false, POSITIONS[1], TEST_SKILLS[1], Arrays.asList(TEST_SKILLS).subList(1, TEST_SKILLS.length), "rob", LEVELS[1], "Smart guy") }; @@ -78,27 +80,27 @@ public class TestDataProvider implements Serializable, InitializingBean { protected void addTestSkills() { try { - for (int i = 0, j = TEST_SKILLS.length; i < j; i++) { - skillDao.merge(TEST_SKILLS[i]); - } + for (Skill testSkill : TEST_SKILLS) { + skillDao.merge(testSkill); + } if (log.isInfoEnabled()) { log.info("TestDataProvider - [addTestSkills]: Added test skill data."); } } catch (StorageException e) { - log.error("TestDataProvider - [addTestSkills]: Exception catched: " + e.getMessage()); + log.error("TestDataProvider - [addTestSkills]: Exception caught: {}", e.getMessage()); } } protected void addTestEmployees() { try { - for (int i = 0, j = TEST_EMPLOYEES.length; i < j; i++) { - employeeDao.merge(TEST_EMPLOYEES[i]); - } + for (Employee testEmployee : TEST_EMPLOYEES) { + employeeDao.merge(testEmployee); + } if (log.isInfoEnabled()) { log.info("TestDataProvider - [addTestEmployees]: Added test employee data."); } } catch (StorageException e) { - log.error("TestDataProvider - [addTestEmployees]: Exception catched: " + e.getMessage()); + log.error("TestDataProvider - [addTestEmployees]: Exception caught: {}", e.getMessage()); } } @@ -107,6 +109,7 @@ public class TestDataProvider implements Serializable, InitializingBean { addTestEmployees(); } + @Override public void afterPropertiesSet() throws Exception { addTestData(); } diff --git a/apps/showcase/src/main/java/org/apache/struts2/showcase/hangman/Hangman.java b/apps/showcase/src/main/java/org/apache/struts2/showcase/hangman/Hangman.java index 4dce5521c..99696ce3a 100644 --- a/apps/showcase/src/main/java/org/apache/struts2/showcase/hangman/Hangman.java +++ b/apps/showcase/src/main/java/org/apache/struts2/showcase/hangman/Hangman.java @@ -20,40 +20,29 @@ */ package org.apache.struts2.showcase.hangman; +import java.io.Serial; import java.io.Serializable; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; public class Hangman implements Serializable { + @Serial private static final long serialVersionUID = 8566954355839652509L; - private Vocab vocab; + private final Vocab vocab; private Boolean win = false; private int guessLeft = 5; - public List charactersAvailable; + public final List charactersAvailable; public List charactersGuessed; public Hangman(Vocab vocab) { - // Arrays.asList(...) returns List that doesn't support remove(), hence - // we wrap it with an ArrayList to avoid UnsupportedOperationException - // when doing a remove() - charactersAvailable = new ArrayList(Arrays.asList( - new Character[]{ - Character.valueOf('A'), Character.valueOf('B'), Character.valueOf('C'), - Character.valueOf('D'), Character.valueOf('E'), Character.valueOf('F'), - Character.valueOf('G'), Character.valueOf('H'), Character.valueOf('I'), - Character.valueOf('J'), Character.valueOf('K'), Character.valueOf('L'), - Character.valueOf('M'), Character.valueOf('N'), Character.valueOf('O'), - Character.valueOf('P'), Character.valueOf('Q'), Character.valueOf('R'), - Character.valueOf('S'), Character.valueOf('T'), Character.valueOf('U'), - Character.valueOf('V'), Character.valueOf('W'), Character.valueOf('X'), - Character.valueOf('Y'), Character.valueOf('Z') - })); - charactersGuessed = new ArrayList(); + charactersAvailable = new ArrayList<>(List.of( + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', + 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z')); + charactersGuessed = new ArrayList<>(); this.vocab = vocab; } @@ -98,7 +87,7 @@ public class Hangman implements Serializable { public List getCharactersAvailable() { synchronized (charactersAvailable) { - return new ArrayList(charactersAvailable); + return new ArrayList<>(charactersAvailable); //return charactersAvailable; } } diff --git a/apps/showcase/src/main/java/org/apache/struts2/showcase/hangman/Vocab.java b/apps/showcase/src/main/java/org/apache/struts2/showcase/hangman/Vocab.java index 80f8b470d..3be7bc72c 100644 --- a/apps/showcase/src/main/java/org/apache/struts2/showcase/hangman/Vocab.java +++ b/apps/showcase/src/main/java/org/apache/struts2/showcase/hangman/Vocab.java @@ -20,17 +20,19 @@ */ package org.apache.struts2.showcase.hangman; +import java.io.Serial; import java.io.Serializable; -import java.util.ArrayList; import java.util.Arrays; +import java.util.HashSet; import java.util.List; public class Vocab implements Serializable { + @Serial private static final long serialVersionUID = 1L; - private String vocab; - private String hint; + private final String vocab; + private final String hint; private Character[] characters; // character this vocab is made up of public Vocab(String vocab, String hint) { @@ -52,7 +54,7 @@ public class Vocab implements Serializable { public Boolean containCharacter(Character character) { assert (character != null); - return (vocab.contains(character.toString())) ? true : false; + return vocab.contains(character.toString()); } public Character[] inCharacters() { @@ -60,32 +62,21 @@ public class Vocab implements Serializable { char[] c = vocab.toCharArray(); characters = new Character[c.length]; for (int a = 0; a < c.length; a++) { - characters[a] = Character.valueOf(c[a]); + characters[a] = c[a]; } } return characters; } public boolean containsAllCharacter(List charactersGuessed) { - Character[] chars = inCharacters(); - List tmpChars = Arrays.asList(chars); - return charactersGuessed.containsAll(tmpChars); + return new HashSet<>(charactersGuessed).containsAll(Arrays.asList(inCharacters())); } - public static void main(String args[]) throws Exception { + public static void main(String[] args) throws Exception { Vocab v = new Vocab("JAVA", "a java word"); - List list1 = new ArrayList(); - list1.add(new Character('J')); - list1.add(new Character('V')); - - List list2 = new ArrayList(); - list2.add(new Character('J')); - list2.add(new Character('V')); - list2.add(new Character('A')); - - System.out.println(v.containsAllCharacter(list1)); - System.out.println(v.containsAllCharacter(list2)); + System.out.println(v.containsAllCharacter(List.of('J', 'V'))); + System.out.println(v.containsAllCharacter(List.of('J', 'V', 'A'))); } } diff --git a/core/src/main/java/com/opensymphony/xwork2/ActionSupport.java b/core/src/main/java/com/opensymphony/xwork2/ActionSupport.java index ab1a18099..33a88be36 100644 --- a/core/src/main/java/com/opensymphony/xwork2/ActionSupport.java +++ b/core/src/main/java/com/opensymphony/xwork2/ActionSupport.java @@ -28,7 +28,11 @@ import org.apache.logging.log4j.Logger; import org.apache.struts2.StrutsConstants; import java.io.Serializable; -import java.util.*; +import java.util.Collection; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.ResourceBundle; /** * Provides a default implementation for the most common actions. @@ -160,7 +164,7 @@ public class ActionSupport implements Action, Validateable, ValidationAware, Tex } else { final ValueStack valueStack = ActionContext.getContext().getValueStack(); final Object val = valueStack.findValue(expr); - return getText(key, Arrays.asList(val)); + return getText(key, List.of(val)); } } diff --git a/core/src/main/java/com/opensymphony/xwork2/DefaultTextProvider.java b/core/src/main/java/com/opensymphony/xwork2/DefaultTextProvider.java index 5fe207ecd..a4b514c7d 100644 --- a/core/src/main/java/com/opensymphony/xwork2/DefaultTextProvider.java +++ b/core/src/main/java/com/opensymphony/xwork2/DefaultTextProvider.java @@ -103,7 +103,7 @@ public class DefaultTextProvider implements TextProvider, Serializable, Unchaina return format.format(params); } - return text; + return text; } public String getText(String key, String defaultValue, String[] args) { @@ -136,7 +136,7 @@ public class DefaultTextProvider implements TextProvider, Serializable, Unchaina public String getText(String key, String defaultValue, String[] args, ValueStack stack) { //we're not using the value stack here - List values = new ArrayList(Arrays.asList(args)); + List values = new ArrayList<>(Arrays.asList(args)); return getText(key, defaultValue, values); } diff --git a/core/src/main/java/com/opensymphony/xwork2/inject/ContainerImpl.java b/core/src/main/java/com/opensymphony/xwork2/inject/ContainerImpl.java index 455f8a449..b11bb4e3a 100644 --- a/core/src/main/java/com/opensymphony/xwork2/inject/ContainerImpl.java +++ b/core/src/main/java/com/opensymphony/xwork2/inject/ContainerImpl.java @@ -118,7 +118,7 @@ class ContainerImpl implements Container { } void addInjectorsForMethods(Method[] methods, boolean statics, List injectors) { - addInjectorsForMembers(Arrays.asList(methods), statics, injectors, MethodInjector::new); + addInjectorsForMembers(List.of(methods), statics, injectors, MethodInjector::new); } void addInjectorsForFields(Field[] fields, boolean statics, List injectors) { diff --git a/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java b/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java index 0da14020d..a052305d0 100644 --- a/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java +++ b/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java @@ -40,6 +40,7 @@ import org.apache.logging.log4j.Logger; import org.apache.struts2.StrutsConstants; import org.apache.struts2.StrutsException; +import java.io.Serial; import java.io.Serializable; import java.util.HashMap; import java.util.Map; @@ -61,6 +62,7 @@ public class OgnlValueStack implements Serializable, ValueStack, ClearableValueS private static final Logger LOG = LogManager.getLogger(OgnlValueStack.class); + @Serial private static final long serialVersionUID = 370737852934925530L; private static final String MAP_IDENTIFIER_KEY = "com.opensymphony.xwork2.util.OgnlValueStack.MAP_IDENTIFIER_KEY"; diff --git a/core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java b/core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java index 29faaf3da..8223d86ad 100644 --- a/core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java +++ b/core/src/main/java/com/opensymphony/xwork2/ognl/SecurityMemberAccess.java @@ -33,13 +33,12 @@ import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Member; import java.lang.reflect.Modifier; -import java.util.Arrays; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.util.stream.IntStream; import static com.opensymphony.xwork2.util.ConfigParseUtil.toClassObjectsSet; import static com.opensymphony.xwork2.util.ConfigParseUtil.toClassesSet; @@ -49,8 +48,6 @@ import static com.opensymphony.xwork2.util.ConfigParseUtil.toNewPatternsSet; import static com.opensymphony.xwork2.util.ConfigParseUtil.toPackageNamesSet; import static java.text.MessageFormat.format; import static java.util.Collections.emptySet; -import static java.util.Collections.singletonList; -import static java.util.Collections.unmodifiableSet; import static org.apache.struts2.StrutsConstants.STRUTS_ALLOWLIST_CLASSES; import static org.apache.struts2.StrutsConstants.STRUTS_ALLOWLIST_PACKAGE_NAMES; @@ -62,20 +59,20 @@ public class SecurityMemberAccess implements MemberAccess { private static final Logger LOG = LogManager.getLogger(SecurityMemberAccess.class); - private static final Set ALLOWLIST_REQUIRED_PACKAGES = unmodifiableSet(new HashSet<>(Arrays.asList( + private static final Set ALLOWLIST_REQUIRED_PACKAGES = Set.of( "com.opensymphony.xwork2.validator.validators", "org.apache.struts2.components", "org.apache.struts2.views.jsp" - ))); + ); - private static final Set> ALLOWLIST_REQUIRED_CLASSES = unmodifiableSet(new HashSet<>(Arrays.asList( + private static final Set> ALLOWLIST_REQUIRED_CLASSES = Set.of( java.lang.Enum.class, java.lang.String.class, java.util.Date.class, java.util.HashMap.class, java.util.Map.class, java.util.Map.Entry.class - ))); + ); private final ProviderAllowlist providerAllowlist; private final ThreadAllowlist threadAllowlist; @@ -85,7 +82,7 @@ public class SecurityMemberAccess implements MemberAccess { private Set excludeProperties = emptySet(); private Set acceptProperties = emptySet(); - private Set excludedClasses = unmodifiableSet(new HashSet<>(singletonList(Object.class.getName()))); + private Set excludedClasses = Set.of(Object.class.getName()); private Set excludedPackageNamePatterns = emptySet(); private Set excludedPackageNames = emptySet(); private Set excludedPackageExemptClasses = emptySet(); @@ -93,7 +90,7 @@ public class SecurityMemberAccess implements MemberAccess { private static volatile boolean isDevModeLogged = false; private volatile boolean isDevModeInit; private boolean isDevMode; - private Set devModeExcludedClasses = unmodifiableSet(new HashSet<>(singletonList(Object.class.getName()))); + private Set devModeExcludedClasses = Set.of(Object.class.getName()); private Set devModeExcludedPackageNamePatterns = emptySet(); private Set devModeExcludedPackageNames = emptySet(); private Set devModeExcludedPackageExemptClasses = emptySet(); @@ -395,14 +392,10 @@ public class SecurityMemberAccess implements MemberAccess { } public static boolean isClassBelongsToPackages(Class clazz, Set matchingPackages) { - List packageParts = Arrays.asList(toPackageName(clazz).split("\\.")); - for (int i = 0; i < packageParts.size(); i++) { - String parentPackage = String.join(".", packageParts.subList(0, i + 1)); - if (matchingPackages.contains(parentPackage)) { - return true; - } - } - return false; + List packageParts = List.of(toPackageName(clazz).split("\\.")); + return IntStream.range(0, packageParts.size()) + .mapToObj(i -> String.join(".", packageParts.subList(0, i + 1))) + .anyMatch(matchingPackages::contains); } protected boolean isClassExcluded(Class clazz) { diff --git a/core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManager.java b/core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManager.java index 5708bd5f2..15b882fd4 100644 --- a/core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManager.java +++ b/core/src/main/java/com/opensymphony/xwork2/util/fs/DefaultFileManager.java @@ -26,7 +26,12 @@ import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -158,7 +163,7 @@ public class DefaultFileManager implements FileManager { } public Collection getAllPhysicalUrls(URL url) throws IOException { - return Arrays.asList(url); + return List.of(url); } } diff --git a/core/src/main/java/org/apache/struts2/factory/PrefixBasedActionProxyFactory.java b/core/src/main/java/org/apache/struts2/factory/PrefixBasedActionProxyFactory.java index 03052ec6a..7b6133a5f 100644 --- a/core/src/main/java/org/apache/struts2/factory/PrefixBasedActionProxyFactory.java +++ b/core/src/main/java/org/apache/struts2/factory/PrefixBasedActionProxyFactory.java @@ -20,15 +20,12 @@ package org.apache.struts2.factory; import com.opensymphony.xwork2.ActionProxy; import com.opensymphony.xwork2.ActionProxyFactory; -import com.opensymphony.xwork2.DefaultActionProxyFactory; -import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.inject.Initializable; import com.opensymphony.xwork2.inject.Inject; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.struts2.StrutsConstants; -import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -63,18 +60,13 @@ public class PrefixBasedActionProxyFactory extends StrutsActionProxyFactory impl private static final Logger LOG = LogManager.getLogger(PrefixBasedActionProxyFactory.class); - private Map actionProxyFactories = new HashMap<>(); + private final Map actionProxyFactories = new HashMap<>(); private Set prefixes = new HashSet<>(); - @Inject - public void setContainer(Container container) { - this.container = container; - } - @Inject(StrutsConstants.PREFIX_BASED_MAPPER_CONFIGURATION) public void setPrefixBasedActionProxyFactories(String list) { if (list != null) { - prefixes = new HashSet<>(Arrays.asList(list.split(","))); + prefixes = Set.of(list.split(",")); } } diff --git a/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java b/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java index 4daec590b..869f382c3 100644 --- a/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java +++ b/core/src/main/java/org/apache/struts2/interceptor/debugging/DebuggingInterceptor.java @@ -25,6 +25,7 @@ import com.opensymphony.xwork2.interceptor.AbstractInterceptor; import com.opensymphony.xwork2.interceptor.PreResultListener; import com.opensymphony.xwork2.util.ValueStack; import com.opensymphony.xwork2.util.reflection.ReflectionProvider; +import jakarta.servlet.http.HttpServletResponse; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.struts2.ServletActionContext; @@ -36,21 +37,20 @@ import org.apache.struts2.dispatcher.RequestMap; import org.apache.struts2.views.freemarker.FreemarkerManager; import org.apache.struts2.views.freemarker.FreemarkerResult; -import jakarta.servlet.http.HttpServletResponse; import java.beans.BeanInfo; import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.io.IOException; import java.io.PrintWriter; +import java.io.Serial; import java.io.StringWriter; import java.lang.reflect.Array; import java.lang.reflect.Method; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; -import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * @@ -95,17 +95,18 @@ import java.util.Map; */ public class DebuggingInterceptor extends AbstractInterceptor { + @Serial private static final long serialVersionUID = -3097324155953078783L; private final static Logger LOG = LogManager.getLogger(DebuggingInterceptor.class); private final String[] ignorePrefixes = new String[]{"org.apache.struts.", "com.opensymphony.xwork2.", "xwork."}; - private final HashSet ignoreKeys = new HashSet<>(Arrays.asList( + private final Set ignoreKeys = Set.of( DispatcherConstants.APPLICATION, DispatcherConstants.SESSION, DispatcherConstants.PARAMETERS, DispatcherConstants.REQUEST - )); + ); private final static String XML_MODE = "xml"; private final static String CONSOLE_MODE = "console"; diff --git a/core/src/main/java/org/apache/struts2/result/ServletActionRedirectResult.java b/core/src/main/java/org/apache/struts2/result/ServletActionRedirectResult.java index dc6ac2191..f5fce489e 100644 --- a/core/src/main/java/org/apache/struts2/result/ServletActionRedirectResult.java +++ b/core/src/main/java/org/apache/struts2/result/ServletActionRedirectResult.java @@ -23,7 +23,6 @@ import com.opensymphony.xwork2.util.reflection.ReflectionExceptionHandler; import org.apache.struts2.dispatcher.mapper.ActionMapper; import org.apache.struts2.dispatcher.mapper.ActionMapping; -import java.util.Arrays; import java.util.List; /** @@ -210,7 +209,7 @@ public class ServletActionRedirectResult extends ServletRedirectResult implement } protected List getProhibitedResultParams() { - return Arrays.asList( + return List.of( DEFAULT_PARAM, "namespace", "method", diff --git a/core/src/main/java/org/apache/struts2/result/ServletRedirectResult.java b/core/src/main/java/org/apache/struts2/result/ServletRedirectResult.java index c0e7390bd..c9f12f584 100644 --- a/core/src/main/java/org/apache/struts2/result/ServletRedirectResult.java +++ b/core/src/main/java/org/apache/struts2/result/ServletRedirectResult.java @@ -24,6 +24,8 @@ import com.opensymphony.xwork2.config.entities.ResultConfig; import com.opensymphony.xwork2.inject.Inject; import com.opensymphony.xwork2.util.reflection.ReflectionException; import com.opensymphony.xwork2.util.reflection.ReflectionExceptionHandler; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.struts2.dispatcher.Dispatcher; @@ -31,13 +33,10 @@ import org.apache.struts2.dispatcher.mapper.ActionMapper; import org.apache.struts2.dispatcher.mapper.ActionMapping; import org.apache.struts2.url.QueryStringBuilder; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.MalformedURLException; import java.net.URI; import java.net.URL; -import java.util.Arrays; import java.util.Collection; import java.util.LinkedHashMap; import java.util.List; @@ -217,7 +216,7 @@ public class ServletRedirectResult extends StrutsResultSupport implements Reflec } protected List getProhibitedResultParams() { - return Arrays.asList( + return List.of( DEFAULT_PARAM, "namespace", "method", diff --git a/core/src/main/java/org/apache/struts2/url/StrutsQueryStringParser.java b/core/src/main/java/org/apache/struts2/url/StrutsQueryStringParser.java index 58944f1ea..792ddb0d5 100644 --- a/core/src/main/java/org/apache/struts2/url/StrutsQueryStringParser.java +++ b/core/src/main/java/org/apache/struts2/url/StrutsQueryStringParser.java @@ -24,7 +24,6 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.LinkedHashMap; import java.util.List; @@ -123,7 +122,7 @@ public class StrutsQueryStringParser implements QueryStringParser { } else { String[] currentParamValues = (String[]) currentParam; if (currentParamValues != null) { - List paramList = new ArrayList<>(Arrays.asList(currentParamValues)); + List paramList = new ArrayList<>(List.of(currentParamValues)); paramList.add(value); queryParams.put(name, paramList.toArray(new String[0])); } else { diff --git a/core/src/main/java/org/apache/struts2/util/MakeIterator.java b/core/src/main/java/org/apache/struts2/util/MakeIterator.java index 131d2f8b4..8411c23ca 100644 --- a/core/src/main/java/org/apache/struts2/util/MakeIterator.java +++ b/core/src/main/java/org/apache/struts2/util/MakeIterator.java @@ -22,9 +22,9 @@ import org.apache.struts2.util.IteratorFilterSupport.EnumerationIterator; import java.lang.reflect.Array; import java.util.ArrayList; -import java.util.Arrays; import java.util.Enumeration; import java.util.Iterator; +import java.util.List; import java.util.Map; /** @@ -89,7 +89,7 @@ public class MakeIterator { } else if (value instanceof Enumeration) { iterator = new EnumerationIterator((Enumeration) value); } else { - iterator = Arrays.asList(value).iterator(); + iterator = List.of(value).iterator(); } return iterator; diff --git a/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java b/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java index 51dd24ff6..0bc877a41 100644 --- a/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java +++ b/plugins/convention/src/main/java/org/apache/struts2/convention/DefaultResultMapBuilder.java @@ -26,11 +26,11 @@ import com.opensymphony.xwork2.config.entities.ResultConfig; import com.opensymphony.xwork2.config.entities.ResultTypeConfig; import com.opensymphony.xwork2.inject.Container; import com.opensymphony.xwork2.inject.Inject; -import com.opensymphony.xwork2.util.TextParseUtil; import com.opensymphony.xwork2.util.finder.ClassLoaderInterface; import com.opensymphony.xwork2.util.finder.ClassLoaderInterfaceDelegate; import com.opensymphony.xwork2.util.finder.ResourceFinder; import com.opensymphony.xwork2.util.finder.Test; +import jakarta.servlet.ServletContext; import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; @@ -39,10 +39,11 @@ import org.apache.logging.log4j.Logger; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; -import jakarta.servlet.ServletContext; import java.io.IOException; import java.net.URL; -import java.util.*; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; /** *

@@ -115,8 +116,8 @@ import java.util.*; public class DefaultResultMapBuilder implements ResultMapBuilder { private static final Logger LOG = LogManager.getLogger(DefaultResultMapBuilder.class); private final ServletContext servletContext; - private Set relativeResultTypes; - private ConventionsService conventionsService; + private final Set relativeResultTypes; + private final ConventionsService conventionsService; private boolean flatResultLayout = true; /** @@ -131,7 +132,7 @@ public class DefaultResultMapBuilder implements ResultMapBuilder { public DefaultResultMapBuilder(ServletContext servletContext, Container container, @Inject(ConventionConstants.CONVENTION_RELATIVE_RESULT_TYPES) String relativeResultTypes) { this.servletContext = servletContext; - this.relativeResultTypes = new HashSet<>(Arrays.asList(relativeResultTypes.split("\\s*[,]\\s*"))); + this.relativeResultTypes = Set.of(relativeResultTypes.split("\\s*[,]\\s*")); this.conventionsService = container.getInstance(ConventionsService.class, container.getInstance(String.class, ConventionConstants.CONVENTION_CONVENTIONS_SERVICE)); }