You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2022/09/09 15:44:36 UTC
[tomcat] branch 8.5.x updated: Refactor - remove remaining uses of Vector
This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch 8.5.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/8.5.x by this push:
new 7b36923a2d Refactor - remove remaining uses of Vector
7b36923a2d is described below
commit 7b36923a2d2950379bf359a4707712c8ec77b03b
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/javax/servlet/jsp/el/ImplicitObjectELResolver.java b/java/javax/servlet/jsp/el/ImplicitObjectELResolver.java
index 36be348b57..d8bed38a23 100644
--- a/java/javax/servlet/jsp/el/ImplicitObjectELResolver.java
+++ b/java/javax/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 javax.el.ELContext;
import javax.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 f71e2e3828..89dd793fa2 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 javax.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 d4dd329d41..b7fd59a9b8 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;
@@ -226,7 +225,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.
@@ -849,7 +848,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 2ff636fe32..2561aaafc4 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 javax.el.MethodExpression;
import javax.el.ValueExpression;
@@ -121,7 +120,7 @@ class Generator {
private final PageInfo pageInfo;
- private final Vector<String> tagHandlerPoolNames;
+ private final List<String> tagHandlerPoolNames;
private GenBuffer charArrayBuffer;
@@ -281,14 +280,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;
}
@@ -359,10 +358,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
@@ -512,7 +511,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");
@@ -548,7 +547,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();");
}
}
@@ -669,8 +668,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();
}
@@ -3537,7 +3535,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 90015595f7..d5555c6e8c 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 javax.servlet.ServletContext;
import javax.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<TagFileInfo>());
// 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 66155f9255..a07595ad83 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 javax.servlet.ServletContext;
import javax.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;
@@ -82,7 +82,7 @@ public class JspConfig {
return;
}
- jspProperties = new Vector<>();
+ jspProperties = new ArrayList<>();
Collection<JspPropertyGroupDescriptor> jspPropertyGroups =
jspConfig.getJspPropertyGroups();
@@ -151,7 +151,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 094e912ae1..cf19976737 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 javax.el.ELContext;
import javax.el.ELException;
@@ -561,7 +560,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);
@@ -572,7 +571,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
@@ -665,7 +664,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);
@@ -676,7 +675,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
@@ -2342,12 +2341,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 48779d69f1..88dc6b7efe 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 javax.el.ExpressionFactory;
import javax.servlet.jsp.tagext.TagLibraryInfo;
@@ -39,7 +39,7 @@ import org.apache.jasper.JasperException;
class PageInfo {
- private final Vector<String> imports;
+ private final List<String> imports;
private final Map<String,Long> dependants;
private final BeanRepository beanRepository;
@@ -94,7 +94,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;
@@ -111,13 +111,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 3315638c44..1c36839ac4 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 javax.el.MethodExpression;
import javax.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
@@ -113,9 +114,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";
@@ -137,8 +138,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
@@ -281,7 +282,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);
}
@@ -346,8 +347,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() throws JasperException {
@@ -363,13 +363,8 @@ class TagFileProcessor {
String tagClassName = JspUtil.getTagHandlerClassName(
path, 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,
@@ -690,7 +685,7 @@ class TagFileProcessor {
public void loadTagFiles(Compiler compiler, Node.Nodes page)
throws JasperException {
- tempVector = new Vector<>();
+ tempVector = new ArrayList<>();
page.visit(new TagFileLoaderVisitor(compiler));
}
@@ -705,8 +700,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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org