This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/main by this push: new 13c829eb8f Refactor - remove remaining uses of Vector 13c829eb8f is described below commit 13c829eb8fe1a9385fa0192a5dfddefc3172e020 Author: Mark Thomas <ma...@apache.org> AuthorDate: Fri Sep 9 16:42:28 2022 +0100 Refactor - remove remaining uses of Vector --- .../servlet/jsp/el/ImplicitObjectELResolver.java | 8 +++--- java/org/apache/catalina/servlets/CGIServlet.java | 9 ++---- java/org/apache/jasper/JspC.java | 5 ++-- java/org/apache/jasper/compiler/Generator.java | 20 ++++++-------- .../jasper/compiler/ImplicitTagLibraryInfo.java | 26 ++++++++---------- java/org/apache/jasper/compiler/JspConfig.java | 8 +++--- java/org/apache/jasper/compiler/Node.java | 13 ++++----- java/org/apache/jasper/compiler/PageInfo.java | 14 +++++----- .../apache/jasper/compiler/TagFileProcessor.java | 32 +++++++++------------- java/org/apache/naming/ServiceRef.java | 7 +++-- .../WEB-INF/classes/sessions/DummyCart.java | 14 +++++----- 11 files changed, 71 insertions(+), 85 deletions(-) diff --git a/java/jakarta/servlet/jsp/el/ImplicitObjectELResolver.java b/java/jakarta/servlet/jsp/el/ImplicitObjectELResolver.java index 6d0d35ba92..4d35df9dfb 100644 --- a/java/jakarta/servlet/jsp/el/ImplicitObjectELResolver.java +++ b/java/jakarta/servlet/jsp/el/ImplicitObjectELResolver.java @@ -20,6 +20,7 @@ import java.beans.FeatureDescriptor; import java.util.AbstractMap; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.Enumeration; import java.util.HashSet; import java.util.Iterator; @@ -27,7 +28,6 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; -import java.util.Vector; import jakarta.el.ELContext; import jakarta.el.ELResolver; @@ -259,11 +259,11 @@ public class ImplicitObjectELResolver extends ELResolver { protected Enumeration<String> getAttributeNames() { Cookie[] cookies = ((HttpServletRequest) page.getRequest()).getCookies(); if (cookies != null) { - Vector<String> v = new Vector<>(); + List<String> list = new ArrayList<>(cookies.length); for (Cookie cookie : cookies) { - v.add(cookie.getName()); + list.add(cookie.getName()); } - return v.elements(); + return Collections.enumeration(list); } return null; } diff --git a/java/org/apache/catalina/servlets/CGIServlet.java b/java/org/apache/catalina/servlets/CGIServlet.java index eb44e1885a..2f26337a41 100644 --- a/java/org/apache/catalina/servlets/CGIServlet.java +++ b/java/org/apache/catalina/servlets/CGIServlet.java @@ -36,7 +36,6 @@ import java.util.Locale; import java.util.Map.Entry; import java.util.Set; import java.util.StringTokenizer; -import java.util.Vector; import java.util.regex.Pattern; import jakarta.servlet.RequestDispatcher; @@ -1521,15 +1520,13 @@ public final class CGIServlet extends HttpServlet { */ protected String[] hashToStringArray(Hashtable<String,?> h) throws NullPointerException { - Vector<String> v = new Vector<>(); + List<String> list = new ArrayList<>(h.size()); Enumeration<String> e = h.keys(); while (e.hasMoreElements()) { String k = e.nextElement(); - v.add(k + "=" + h.get(k).toString()); + list.add(k + "=" + h.get(k).toString()); } - String[] strArr = new String[v.size()]; - v.copyInto(strArr); - return strArr; + return list.toArray(new String[0]); } diff --git a/java/org/apache/jasper/JspC.java b/java/org/apache/jasper/JspC.java index 1458e493cf..d717805ff2 100644 --- a/java/org/apache/jasper/JspC.java +++ b/java/org/apache/jasper/JspC.java @@ -38,7 +38,6 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.StringTokenizer; -import java.util.Vector; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorCompletionService; @@ -223,7 +222,7 @@ public class JspC extends Task implements Options { /** * The pages. */ - protected final List<String> pages = new Vector<>(); + protected final List<String> pages = new ArrayList<>(); /** * Needs better documentation, this data member does. @@ -848,7 +847,7 @@ public class JspC extends Task implements Options { protected void addExtension(final String extension) { if(extension != null) { if(extensions == null) { - extensions = new Vector<>(); + extensions = new ArrayList<>(); } extensions.add(extension); diff --git a/java/org/apache/jasper/compiler/Generator.java b/java/org/apache/jasper/compiler/Generator.java index ec0f0d455c..4a85866903 100644 --- a/java/org/apache/jasper/compiler/Generator.java +++ b/java/org/apache/jasper/compiler/Generator.java @@ -38,7 +38,6 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.TimeZone; -import java.util.Vector; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -114,7 +113,7 @@ class Generator { private final PageInfo pageInfo; - private final Vector<String> tagHandlerPoolNames; + private final List<String> tagHandlerPoolNames; private GenBuffer charArrayBuffer; @@ -274,14 +273,14 @@ class Generator { class TagHandlerPoolVisitor extends Node.Visitor { - private final Vector<String> names; + private final List<String> names; /* * Constructor * * @param v Vector of tag handler pool names to populate */ - TagHandlerPoolVisitor(Vector<String> v) { + TagHandlerPoolVisitor(List<String> v) { names = v; } @@ -352,10 +351,10 @@ class Generator { class ScriptingVarVisitor extends Node.Visitor { - private final Vector<String> vars; + private final List<String> vars; ScriptingVarVisitor() { - vars = new Vector<>(); + vars = new ArrayList<>(); } @Override @@ -505,7 +504,7 @@ class Generator { out.pushIndent(); if (isPoolingEnabled) { for (int i = 0; i < tagHandlerPoolNames.size(); i++) { - out.printin(tagHandlerPoolNames.elementAt(i)); + out.printin(tagHandlerPoolNames.get(i)); out.print(" = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool("); if (ctxt.isTagFile()) { out.print("config"); @@ -541,7 +540,7 @@ class Generator { if (isPoolingEnabled) { for (int i = 0; i < tagHandlerPoolNames.size(); i++) { - out.printin(tagHandlerPoolNames.elementAt(i)); + out.printin(tagHandlerPoolNames.get(i)); out.println(".release();"); } } @@ -662,8 +661,7 @@ class Generator { private void genPreambleClassVariableDeclarations() { if (isPoolingEnabled && !tagHandlerPoolNames.isEmpty()) { for (int i = 0; i < tagHandlerPoolNames.size(); i++) { - out.printil("private org.apache.jasper.runtime.TagHandlerPool " - + tagHandlerPoolNames.elementAt(i) + ";"); + out.printil("private org.apache.jasper.runtime.TagHandlerPool " + tagHandlerPoolNames.get(i) + ";"); } out.println(); } @@ -3336,7 +3334,7 @@ class Generator { varInfoNames = pageInfo.getVarInfoNames(); breakAtLF = ctxt.getOptions().getMappedFile(); if (isPoolingEnabled) { - tagHandlerPoolNames = new Vector<>(); + tagHandlerPoolNames = new ArrayList<>(); } else { tagHandlerPoolNames = null; } diff --git a/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java b/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java index 1fbdb691dd..d934407b71 100644 --- a/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java +++ b/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java @@ -18,10 +18,13 @@ package org.apache.jasper.compiler; import java.io.IOException; import java.net.URL; +import java.util.ArrayList; import java.util.Collection; -import java.util.Hashtable; +import java.util.Collections; +import java.util.List; +import java.util.Map; import java.util.Set; -import java.util.Vector; +import java.util.concurrent.ConcurrentHashMap; import jakarta.servlet.ServletContext; import jakarta.servlet.jsp.tagext.FunctionInfo; @@ -56,11 +59,11 @@ class ImplicitTagLibraryInfo extends TagLibraryInfo { private static final String IMPLICIT_TLD = "implicit.tld"; // Maps tag names to tag file paths - private final Hashtable<String,String> tagFileMap; + private final Map<String,String> tagFileMap; private final ParserController pc; private final PageInfo pi; - private final Vector<TagFileInfo> vec; + private final List<TagFileInfo> list; public ImplicitTagLibraryInfo(JspCompilationContext ctxt, @@ -72,8 +75,8 @@ class ImplicitTagLibraryInfo extends TagLibraryInfo { super(prefix, null); this.pc = pc; this.pi = pi; - this.tagFileMap = new Hashtable<>(); - this.vec = new Vector<>(); + this.tagFileMap = new ConcurrentHashMap<>(); + this.list = Collections.synchronizedList(new ArrayList<>()); // Implicit tag libraries have no functions: this.functions = new FunctionInfo[0]; @@ -177,20 +180,15 @@ class ImplicitTagLibraryInfo extends TagLibraryInfo { TagInfo tagInfo = null; try { - tagInfo = TagFileProcessor.parseTagFileDirectives(pc, - shortName, - path, - null, - this); + tagInfo = TagFileProcessor.parseTagFileDirectives(pc, shortName, path, null, this); } catch (JasperException je) { throw new RuntimeException(je.toString(), je); } tagFile = new TagFileInfo(shortName, path, tagInfo); - vec.addElement(tagFile); + list.add(tagFile); - this.tagFiles = new TagFileInfo[vec.size()]; - vec.copyInto(this.tagFiles); + this.tagFiles = list.toArray(new TagFileInfo[0]); } return tagFile; diff --git a/java/org/apache/jasper/compiler/JspConfig.java b/java/org/apache/jasper/compiler/JspConfig.java index 7cb3b644e6..2eb20cba1b 100644 --- a/java/org/apache/jasper/compiler/JspConfig.java +++ b/java/org/apache/jasper/compiler/JspConfig.java @@ -18,7 +18,7 @@ package org.apache.jasper.compiler; import java.util.ArrayList; import java.util.Collection; -import java.util.Vector; +import java.util.List; import jakarta.servlet.ServletContext; import jakarta.servlet.descriptor.JspConfigDescriptor; @@ -40,7 +40,7 @@ public class JspConfig { // Logger private final Log log = LogFactory.getLog(JspConfig.class); // must not be static - private Vector<JspPropertyGroup> jspProperties = null; + private List<JspPropertyGroup> jspProperties = null; private final ServletContext ctxt; private volatile boolean initialized = false; @@ -83,7 +83,7 @@ public class JspConfig { return; } - jspProperties = new Vector<>(); + jspProperties = new ArrayList<>(); Collection<JspPropertyGroupDescriptor> jspPropertyGroups = jspConfig.getJspPropertyGroups(); @@ -153,7 +153,7 @@ public class JspConfig { JspPropertyGroup propertyGroup = new JspPropertyGroup(path, extension, property); - jspProperties.addElement(propertyGroup); + jspProperties.add(propertyGroup); } } } diff --git a/java/org/apache/jasper/compiler/Node.java b/java/org/apache/jasper/compiler/Node.java index 8ae43798b4..bfa9b60260 100644 --- a/java/org/apache/jasper/compiler/Node.java +++ b/java/org/apache/jasper/compiler/Node.java @@ -18,7 +18,6 @@ package org.apache.jasper.compiler; import java.util.ArrayList; import java.util.List; -import java.util.Vector; import jakarta.el.ELContext; import jakarta.el.ELException; @@ -563,7 +562,7 @@ abstract class Node implements TagConstants { */ public static class PageDirective extends Node { - private final Vector<String> imports; + private final List<String> imports; public PageDirective(Attributes attrs, Mark start, Node parent) { this(JSP_PAGE_DIRECTIVE_ACTION, attrs, null, null, start, parent); @@ -574,7 +573,7 @@ abstract class Node implements TagConstants { Mark start, Node parent) { super(qName, PAGE_DIRECTIVE_ACTION, attrs, nonTaglibXmlnsAttrs, taglibAttrs, start, parent); - imports = new Vector<>(); + imports = new ArrayList<>(); } @Override @@ -667,7 +666,7 @@ abstract class Node implements TagConstants { * Represents a tag directive */ public static class TagDirective extends Node { - private final Vector<String> imports; + private final List<String> imports; public TagDirective(Attributes attrs, Mark start, Node parent) { this(JSP_TAG_DIRECTIVE_ACTION, attrs, null, null, start, parent); @@ -678,7 +677,7 @@ abstract class Node implements TagConstants { Mark start, Node parent) { super(qName, TAG_DIRECTIVE_ACTION, attrs, nonTaglibXmlnsAttrs, taglibAttrs, start, parent); - imports = new Vector<>(); + imports = new ArrayList<>(); } @Override @@ -2344,12 +2343,12 @@ abstract class Node implements TagConstants { private boolean generatedInBuffer; public Nodes() { - list = new Vector<>(); + list = new ArrayList<>(); } public Nodes(Node.Root root) { this.root = root; - list = new Vector<>(); + list = new ArrayList<>(); list.add(root); } diff --git a/java/org/apache/jasper/compiler/PageInfo.java b/java/org/apache/jasper/compiler/PageInfo.java index 5c0a2c0f68..f4d7383a23 100644 --- a/java/org/apache/jasper/compiler/PageInfo.java +++ b/java/org/apache/jasper/compiler/PageInfo.java @@ -16,6 +16,7 @@ */ package org.apache.jasper.compiler; +import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; @@ -23,7 +24,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.Vector; import jakarta.el.ExpressionFactory; import jakarta.servlet.jsp.tagext.TagLibraryInfo; @@ -40,7 +40,7 @@ import org.apache.jasper.JspCompilationContext; class PageInfo { - private final Vector<String> imports; + private final List<String> imports; private final Map<String,Long> dependants; private final BeanRepository beanRepository; @@ -95,7 +95,7 @@ class PageInfo { private boolean hasJspRoot = false; private Collection<String> includePrelude; private Collection<String> includeCoda; - private final Vector<String> pluginDcls; // Id's for tagplugin declarations + private final List<String> pluginDcls; // Id's for tagplugin declarations // JSP 2.2 private boolean errorOnUndeclaredNamespace = false; @@ -117,13 +117,13 @@ class PageInfo { this.xmlPrefixMapper = new HashMap<>(); this.nonCustomTagPrefixMap = new HashMap<>(); this.dependants = new HashMap<>(); - this.includePrelude = new Vector<>(); - this.includeCoda = new Vector<>(); - this.pluginDcls = new Vector<>(); + this.includePrelude = new ArrayList<>(); + this.includeCoda = new ArrayList<>(); + this.pluginDcls = new ArrayList<>(); this.prefixes = new HashSet<>(); // Enter standard imports - this.imports = new Vector<>(Constants.STANDARD_IMPORTS); + this.imports = new ArrayList<>(Constants.STANDARD_IMPORTS); } public boolean isTagFile() { diff --git a/java/org/apache/jasper/compiler/TagFileProcessor.java b/java/org/apache/jasper/compiler/TagFileProcessor.java index e1ed7c13f7..80935cbb13 100644 --- a/java/org/apache/jasper/compiler/TagFileProcessor.java +++ b/java/org/apache/jasper/compiler/TagFileProcessor.java @@ -17,10 +17,11 @@ package org.apache.jasper.compiler; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Map.Entry; -import java.util.Vector; import jakarta.el.MethodExpression; import jakarta.el.ValueExpression; @@ -48,7 +49,7 @@ import org.apache.tomcat.util.descriptor.tld.TldResourcePath; class TagFileProcessor { - private Vector<Compiler> tempVector; + private List<Compiler> tempVector; /** * A visitor the tag file @@ -114,9 +115,9 @@ class TagFileProcessor { private String example = null; - private Vector<TagAttributeInfo> attributeVector; + private List<TagAttributeInfo> attributeList; - private Vector<TagVariableInfo> variableVector; + private List<TagVariableInfo> variableList; private static final String ATTR_NAME = "the name attribute of the attribute directive"; @@ -138,8 +139,8 @@ class TagFileProcessor { this.tagLibInfo = tagLibInfo; this.name = name; this.path = path; - attributeVector = new Vector<>(); - variableVector = new Vector<>(); + attributeList = new ArrayList<>(); + variableList = new ArrayList<>(); } @Override @@ -282,7 +283,7 @@ class TagFileProcessor { TagAttributeInfo tagAttributeInfo = new TagAttributeInfo(attrName, required, type, rtexprvalue, fragment, null, deferredValue, deferredMethod, deferredValueType, deferredMethodSignature); - attributeVector.addElement(tagAttributeInfo); + attributeList.add(tagAttributeInfo); checkUniqueName(attrName, ATTR_NAME, n, tagAttributeInfo); } @@ -347,8 +348,7 @@ class TagFileProcessor { checkUniqueName(nameGiven, VAR_NAME_GIVEN, n); } - variableVector.addElement(new TagVariableInfo(nameGiven, - nameFromAttribute, className, declare, scope)); + variableList.add(new TagVariableInfo(nameGiven, nameFromAttribute, className, declare, scope)); } public TagInfo getTagInfo(String packageName) throws JasperException { @@ -364,13 +364,8 @@ class TagFileProcessor { String tagClassName = JspUtil.getTagHandlerClassName( path, packageName, tagLibInfo.getReliableURN(), err); - TagVariableInfo[] tagVariableInfos = new TagVariableInfo[variableVector - .size()]; - variableVector.copyInto(tagVariableInfos); - - TagAttributeInfo[] tagAttributeInfo = new TagAttributeInfo[attributeVector - .size()]; - attributeVector.copyInto(tagAttributeInfo); + TagVariableInfo[] tagVariableInfos = variableList.toArray(new TagVariableInfo[0]); + TagAttributeInfo[] tagAttributeInfo = attributeList.toArray(new TagAttributeInfo[0]); return new JasperTagInfo(name, tagClassName, bodycontent, description, tagLibInfo, null, tagAttributeInfo, @@ -691,7 +686,7 @@ class TagFileProcessor { public void loadTagFiles(Compiler compiler, Node.Nodes page) throws JasperException { - tempVector = new Vector<>(); + tempVector = new ArrayList<>(); page.visit(new TagFileLoaderVisitor(compiler)); } @@ -706,8 +701,7 @@ class TagFileProcessor { for (Compiler c : tempVector) { if (classFileName == null) { c.removeGeneratedClassFiles(); - } else if (classFileName.equals(c.getCompilationContext() - .getClassFileName())) { + } else if (classFileName.equals(c.getCompilationContext().getClassFileName())) { c.removeGeneratedClassFiles(); tempVector.remove(c); return; diff --git a/java/org/apache/naming/ServiceRef.java b/java/org/apache/naming/ServiceRef.java index 4b976e8628..d00353884e 100644 --- a/java/org/apache/naming/ServiceRef.java +++ b/java/org/apache/naming/ServiceRef.java @@ -16,7 +16,8 @@ */ package org.apache.naming; -import java.util.Vector; +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; import javax.naming.StringRefAddr; @@ -75,10 +76,10 @@ public class ServiceRef extends AbstractRef { /** - * The vector to save the handler Reference objects, because they can't be + * The list to save the handler Reference objects, because they can't be * saved in the addrs vector. */ - private final Vector<HandlerRef> handlers = new Vector<>(); + private final List<HandlerRef> handlers = new CopyOnWriteArrayList<>(); public ServiceRef(String refname, String serviceInterface, String[] serviceQname, diff --git a/webapps/examples/WEB-INF/classes/sessions/DummyCart.java b/webapps/examples/WEB-INF/classes/sessions/DummyCart.java index 28846bdbdf..6c413efcea 100644 --- a/webapps/examples/WEB-INF/classes/sessions/DummyCart.java +++ b/webapps/examples/WEB-INF/classes/sessions/DummyCart.java @@ -16,19 +16,21 @@ */ package sessions; -import java.util.Vector; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; public class DummyCart { - final Vector<String> v = new Vector<>(); + final List<String> items = Collections.synchronizedList(new ArrayList<>()); String submit = null; String item = null; private void addItem(String name) { - v.addElement(name); + items.add(name); } private void removeItem(String name) { - v.removeElement(name); + items.remove(name); } public void setItem(String name) { @@ -40,9 +42,7 @@ public class DummyCart { } public String[] getItems() { - String[] s = new String[v.size()]; - v.copyInto(s); - return s; + return items.toArray(new String[0]); } public void processRequest() { --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org