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