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 2020/04/22 17:27:43 UTC

[tomcat] branch 8.5.x updated: Bulk operation can be used instead of iteration

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 b6b4e68  Bulk operation can be used instead of iteration
b6b4e68 is described below

commit b6b4e68c30d70b126143037ea592d74f610e3db3
Author: Lars Grefer <la...@materna.de>
AuthorDate: Tue Apr 7 18:04:47 2020 +0200

    Bulk operation can be used instead of iteration
---
 java/org/apache/catalina/core/ApplicationContext.java            | 4 +---
 java/org/apache/catalina/core/ApplicationFilterRegistration.java | 9 +++------
 java/org/apache/catalina/core/ApplicationHttpRequest.java        | 9 +++------
 java/org/apache/catalina/core/ApplicationPushBuilder.java        | 5 ++---
 java/org/apache/catalina/core/StandardContext.java               | 4 +---
 java/org/apache/catalina/ha/session/BackupManager.java           | 4 +---
 java/org/apache/catalina/session/PersistentManagerBase.java      | 5 ++---
 java/org/apache/catalina/startup/ContextConfig.java              | 4 +---
 java/org/apache/catalina/webresources/StandardRoot.java          | 5 ++---
 java/org/apache/coyote/http2/StreamStateMachine.java             | 5 ++---
 java/org/apache/jasper/servlet/JspCServletContext.java           | 4 +---
 .../apache/tomcat/util/descriptor/web/SecurityConstraint.java    | 8 ++------
 java/org/apache/tomcat/util/digester/Digester.java               | 5 ++---
 java/org/apache/tomcat/util/net/SSLHostConfigCertificate.java    | 5 ++---
 java/org/apache/tomcat/util/net/jsse/JSSESSLContext.java         | 5 ++---
 .../tomcat/util/descriptor/web/TestSecurityConstraint.java       | 5 ++---
 .../apache/tomcat/util/net/openssl/ciphers/TesterOpenSSL.java    | 9 +++------
 test/org/apache/tomcat/websocket/pojo/TestEncodingDecoding.java  | 5 ++---
 test/org/apache/tomcat/websocket/server/TestClose.java           | 5 ++---
 webapps/docs/changelog.xml                                       | 4 ++++
 20 files changed, 40 insertions(+), 69 deletions(-)

diff --git a/java/org/apache/catalina/core/ApplicationContext.java b/java/org/apache/catalina/core/ApplicationContext.java
index 7dc4242..31419fe 100644
--- a/java/org/apache/catalina/core/ApplicationContext.java
+++ b/java/org/apache/catalina/core/ApplicationContext.java
@@ -1356,9 +1356,7 @@ public class ApplicationContext implements ServletContext {
 
         // Create list of attributes to be removed
         List<String> list = new ArrayList<>();
-        for (String s : attributes.keySet()) {
-            list.add(s);
-        }
+        list.addAll(attributes.keySet());
 
         // Remove application originated attributes
         // (read only attributes will be left in place)
diff --git a/java/org/apache/catalina/core/ApplicationFilterRegistration.java b/java/org/apache/catalina/core/ApplicationFilterRegistration.java
index 518f130..7c6059b 100644
--- a/java/org/apache/catalina/core/ApplicationFilterRegistration.java
+++ b/java/org/apache/catalina/core/ApplicationFilterRegistration.java
@@ -17,6 +17,7 @@
 
 package org.apache.catalina.core;
 
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.EnumSet;
 import java.util.HashSet;
@@ -119,9 +120,7 @@ public class ApplicationFilterRegistration
 
         for (FilterMap filterMap : filterMaps) {
             if (filterMap.getFilterName().equals(filterDef.getFilterName())) {
-                for (String servletName : filterMap.getServletNames()) {
-                    result.add(servletName);
-                }
+                result.addAll(Arrays.asList(filterMap.getServletNames()));
             }
         }
         return result;
@@ -135,9 +134,7 @@ public class ApplicationFilterRegistration
 
         for (FilterMap filterMap : filterMaps) {
             if (filterMap.getFilterName().equals(filterDef.getFilterName())) {
-                for (String urlPattern : filterMap.getURLPatterns()) {
-                    result.add(urlPattern);
-                }
+                result.addAll(Arrays.asList(filterMap.getURLPatterns()));
             }
         }
         return result;
diff --git a/java/org/apache/catalina/core/ApplicationHttpRequest.java b/java/org/apache/catalina/core/ApplicationHttpRequest.java
index bd27924..05b65c7 100644
--- a/java/org/apache/catalina/core/ApplicationHttpRequest.java
+++ b/java/org/apache/catalina/core/ApplicationHttpRequest.java
@@ -24,6 +24,7 @@ import java.io.UnsupportedEncodingException;
 import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.Map;
@@ -860,17 +861,13 @@ class ApplicationHttpRequest extends HttpServletRequestWrapper {
         if (values1 == null) {
             // Skip - nothing to merge
         } else {
-            for (String value : values1) {
-                results.add(value);
-            }
+            results.addAll(Arrays.asList(values1));
         }
 
         if (values2 == null) {
             // Skip - nothing to merge
         } else {
-            for (String value : values2) {
-                results.add(value);
-            }
+            results.addAll(Arrays.asList(values2));
         }
 
         String values[] = new String[results.size()];
diff --git a/java/org/apache/catalina/core/ApplicationPushBuilder.java b/java/org/apache/catalina/core/ApplicationPushBuilder.java
index 052bef0..6eae33f 100644
--- a/java/org/apache/catalina/core/ApplicationPushBuilder.java
+++ b/java/org/apache/catalina/core/ApplicationPushBuilder.java
@@ -18,6 +18,7 @@ package org.apache.catalina.core;
 
 import java.nio.charset.Charset;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.HashSet;
@@ -139,9 +140,7 @@ public class ApplicationPushBuilder {
 
         // Cookies
         if (request.getCookies() != null) {
-            for (Cookie requestCookie : request.getCookies()) {
-                cookies.add(requestCookie);
-            }
+            cookies.addAll(Arrays.asList(request.getCookies()));
         }
         for (Cookie responseCookie : catalinaRequest.getResponse().getCookies()) {
             if (responseCookie.getMaxAge() < 0) {
diff --git a/java/org/apache/catalina/core/StandardContext.java b/java/org/apache/catalina/core/StandardContext.java
index a024fb0..e8cbbe2 100644
--- a/java/org/apache/catalina/core/StandardContext.java
+++ b/java/org/apache/catalina/core/StandardContext.java
@@ -4656,9 +4656,7 @@ public class StandardContext extends ContainerBase
         // Put them these listeners after the ones defined in web.xml and/or
         // annotations then overwrite the list of instances with the new, full
         // list.
-        for (Object eventListener: getApplicationEventListeners()) {
-            eventListeners.add(eventListener);
-        }
+        eventListeners.addAll(Arrays.asList(getApplicationEventListeners()));
         setApplicationEventListeners(eventListeners.toArray());
         for (Object lifecycleListener: getApplicationLifecycleListeners()) {
             lifecycleListeners.add(lifecycleListener);
diff --git a/java/org/apache/catalina/ha/session/BackupManager.java b/java/org/apache/catalina/ha/session/BackupManager.java
index 1f4fa21..58e0903 100644
--- a/java/org/apache/catalina/ha/session/BackupManager.java
+++ b/java/org/apache/catalina/ha/session/BackupManager.java
@@ -256,9 +256,7 @@ public class BackupManager extends ClusterManagerBase
         Set<String> sessionIds = new HashSet<>();
         LazyReplicatedMap<String,Session> map =
                 (LazyReplicatedMap<String,Session>)sessions;
-        for (String id : map.keySetFull()) {
-            sessionIds.add(id);
-        }
+        sessionIds.addAll(map.keySetFull());
         return sessionIds;
     }
 
diff --git a/java/org/apache/catalina/session/PersistentManagerBase.java b/java/org/apache/catalina/session/PersistentManagerBase.java
index 7a91251..8213467 100644
--- a/java/org/apache/catalina/session/PersistentManagerBase.java
+++ b/java/org/apache/catalina/session/PersistentManagerBase.java
@@ -20,6 +20,7 @@ import java.io.IOException;
 import java.security.AccessController;
 import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -658,9 +659,7 @@ public abstract class PersistentManagerBase extends ManagerBase
         String[] storeKeys;
         try {
             storeKeys = getStore().keys();
-            for (String storeKey : storeKeys) {
-                sessionIds.add(storeKey);
-            }
+            sessionIds.addAll(Arrays.asList(storeKeys));
         } catch (IOException e) {
             log.warn(sm.getString("persistentManager.storeKeysException"));
         }
diff --git a/java/org/apache/catalina/startup/ContextConfig.java b/java/org/apache/catalina/startup/ContextConfig.java
index 25f2e1d..79df4ec 100644
--- a/java/org/apache/catalina/startup/ContextConfig.java
+++ b/java/org/apache/catalina/startup/ContextConfig.java
@@ -1178,9 +1178,7 @@ public class ContextConfig implements LifecycleListener {
             // Spec does not define an order.
             // Use ordered JARs followed by remaining JARs
             Set<WebXml> resourceJars = new LinkedHashSet<>();
-            for (WebXml fragment : orderedFragments) {
-                resourceJars.add(fragment);
-            }
+            resourceJars.addAll(orderedFragments);
             for (WebXml fragment : fragments.values()) {
                 if (!resourceJars.contains(fragment)) {
                     resourceJars.add(fragment);
diff --git a/java/org/apache/catalina/webresources/StandardRoot.java b/java/org/apache/catalina/webresources/StandardRoot.java
index c5592c9..65d1f11 100644
--- a/java/org/apache/catalina/webresources/StandardRoot.java
+++ b/java/org/apache/catalina/webresources/StandardRoot.java
@@ -23,6 +23,7 @@ import java.net.MalformedURLException;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.LinkedHashSet;
@@ -127,9 +128,7 @@ public class StandardRoot extends LifecycleMBeanBase implements WebResourceRoot
             for (WebResourceSet webResourceSet : list) {
                 if (!webResourceSet.getClassLoaderOnly()) {
                     String[] entries = webResourceSet.list(path);
-                    for (String entry : entries) {
-                        result.add(entry);
-                    }
+                    result.addAll(Arrays.asList(entries));
                 }
             }
         }
diff --git a/java/org/apache/coyote/http2/StreamStateMachine.java b/java/org/apache/coyote/http2/StreamStateMachine.java
index e076395..4e57797 100644
--- a/java/org/apache/coyote/http2/StreamStateMachine.java
+++ b/java/org/apache/coyote/http2/StreamStateMachine.java
@@ -16,6 +16,7 @@
  */
 package org.apache.coyote.http2;
 
+import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -229,9 +230,7 @@ public class StreamStateMachine {
             this.canReset = canReset;
             this.connectionErrorForInvalidFrame = connectionErrorForInvalidFrame;
             this.errorCodeForInvalidFrame = errorCode;
-            for (FrameType frameType : frameTypes) {
-                frameTypesPermitted.add(frameType);
-            }
+            frameTypesPermitted.addAll(Arrays.asList(frameTypes));
         }
 
         public boolean isActive() {
diff --git a/java/org/apache/jasper/servlet/JspCServletContext.java b/java/org/apache/jasper/servlet/JspCServletContext.java
index a55c804..620a5d1 100644
--- a/java/org/apache/jasper/servlet/JspCServletContext.java
+++ b/java/org/apache/jasper/servlet/JspCServletContext.java
@@ -192,9 +192,7 @@ public class JspCServletContext implements ServletContext {
         List<URL> resourceJars = new ArrayList<>();
         // Build list of potential resource JARs. Use same ordering as ContextConfig
         Set<WebXml> resourceFragments = new LinkedHashSet<>();
-        for (WebXml fragment : orderedFragments) {
-            resourceFragments.add(fragment);
-        }
+        resourceFragments.addAll(orderedFragments);
         for (WebXml fragment : fragments) {
             if (!resourceFragments.contains(fragment)) {
                 resourceFragments.add(fragment);
diff --git a/java/org/apache/tomcat/util/descriptor/web/SecurityConstraint.java b/java/org/apache/tomcat/util/descriptor/web/SecurityConstraint.java
index 439aea7..735b041 100644
--- a/java/org/apache/tomcat/util/descriptor/web/SecurityConstraint.java
+++ b/java/org/apache/tomcat/util/descriptor/web/SecurityConstraint.java
@@ -638,9 +638,7 @@ public class SecurityConstraint extends XmlEncodingBase implements Serializable
                 String[] omittedMethods = collection.findOmittedMethods();
                 // Simple case: no methods
                 if (methods.length == 0 && omittedMethods.length == 0) {
-                    for (String pattern : patterns) {
-                        coveredPatterns.add(pattern);
-                    }
+                    coveredPatterns.addAll(Arrays.asList(patterns));
                     continue;
                 }
 
@@ -672,9 +670,7 @@ public class SecurityConstraint extends XmlEncodingBase implements Serializable
                                 m = new HashSet<>();
                                 urlMethodMap.put(pattern, m);
                             }
-                            for (String method : methods) {
-                                m.add(method);
-                            }
+                            m.addAll(Arrays.asList(methods));
                         }
                     }
                 }
diff --git a/java/org/apache/tomcat/util/digester/Digester.java b/java/org/apache/tomcat/util/digester/Digester.java
index ec0e256..0a97002 100644
--- a/java/org/apache/tomcat/util/digester/Digester.java
+++ b/java/org/apache/tomcat/util/digester/Digester.java
@@ -26,6 +26,7 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.security.Permission;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.EmptyStackException;
 import java.util.HashMap;
 import java.util.List;
@@ -357,9 +358,7 @@ public class Digester extends DefaultHandler2 {
         propertySourcesSet = true;
         if (propertySources != null) {
             ArrayList<IntrospectionUtils.PropertySource> sourcesList = new ArrayList<>();
-            for (IntrospectionUtils.PropertySource cur : propertySources) {
-                sourcesList.add(cur);
-            }
+            sourcesList.addAll(Arrays.asList(propertySources));
             sourcesList.add(source[0]);
             source = sourcesList.toArray(new IntrospectionUtils.PropertySource[0]);
         }
diff --git a/java/org/apache/tomcat/util/net/SSLHostConfigCertificate.java b/java/org/apache/tomcat/util/net/SSLHostConfigCertificate.java
index 5f10707..ba0e238 100644
--- a/java/org/apache/tomcat/util/net/SSLHostConfigCertificate.java
+++ b/java/org/apache/tomcat/util/net/SSLHostConfigCertificate.java
@@ -19,6 +19,7 @@ package org.apache.tomcat.util.net;
 import java.io.IOException;
 import java.io.Serializable;
 import java.security.KeyStore;
+import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -280,9 +281,7 @@ public class SSLHostConfigCertificate implements Serializable {
         private Type(Authentication... authentications) {
             compatibleAuthentications = new HashSet<>();
             if (authentications != null) {
-                for (Authentication authentication : authentications) {
-                    compatibleAuthentications.add(authentication);
-                }
+                compatibleAuthentications.addAll(Arrays.asList(authentications));
             }
         }
 
diff --git a/java/org/apache/tomcat/util/net/jsse/JSSESSLContext.java b/java/org/apache/tomcat/util/net/jsse/JSSESSLContext.java
index 4e43379..dcf1fbe 100644
--- a/java/org/apache/tomcat/util/net/jsse/JSSESSLContext.java
+++ b/java/org/apache/tomcat/util/net/jsse/JSSESSLContext.java
@@ -21,6 +21,7 @@ import java.security.KeyManagementException;
 import java.security.NoSuchAlgorithmException;
 import java.security.SecureRandom;
 import java.security.cert.X509Certificate;
+import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -98,9 +99,7 @@ class JSSESSLContext implements SSLContext {
                 if (tm instanceof X509TrustManager) {
                     X509Certificate[] accepted = ((X509TrustManager) tm).getAcceptedIssuers();
                     if (accepted != null) {
-                        for (X509Certificate c : accepted) {
-                            certs.add(c);
-                        }
+                        certs.addAll(Arrays.asList(accepted));
                     }
                 }
             }
diff --git a/test/org/apache/tomcat/util/descriptor/web/TestSecurityConstraint.java b/test/org/apache/tomcat/util/descriptor/web/TestSecurityConstraint.java
index a7c6818..067838e 100644
--- a/test/org/apache/tomcat/util/descriptor/web/TestSecurityConstraint.java
+++ b/test/org/apache/tomcat/util/descriptor/web/TestSecurityConstraint.java
@@ -16,6 +16,7 @@
  */
 package org.apache.tomcat.util.descriptor.web;
 
+import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -396,9 +397,7 @@ public class TestSecurityConstraint {
         Assert.assertEquals(0, sc.findMethods().length);
         Assert.assertEquals(2, sc.findOmittedMethods().length);
         HashSet<String> omittedMethods = new HashSet<>();
-        for (String omittedMethod : sc.findOmittedMethods()) {
-            omittedMethods.add(omittedMethod);
-        }
+        omittedMethods.addAll(Arrays.asList(sc.findOmittedMethods()));
         Assert.assertTrue(omittedMethods.remove("GET"));
         Assert.assertTrue(omittedMethods.remove("POST"));
     }
diff --git a/test/org/apache/tomcat/util/net/openssl/ciphers/TesterOpenSSL.java b/test/org/apache/tomcat/util/net/openssl/ciphers/TesterOpenSSL.java
index b7a8632..5ff2a5c 100644
--- a/test/org/apache/tomcat/util/net/openssl/ciphers/TesterOpenSSL.java
+++ b/test/org/apache/tomcat/util/net/openssl/ciphers/TesterOpenSSL.java
@@ -20,6 +20,7 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -366,9 +367,7 @@ public class TesterOpenSSL {
     public static Set<String> getOpenSSLCiphersAsSet(String specification) throws Exception {
         String[] ciphers = getOpenSSLCiphersAsExpression(specification).trim().split(":");
         Set<String> result = new HashSet<>(ciphers.length);
-        for (String cipher : ciphers) {
-            result.add(cipher);
-        }
+        result.addAll(Arrays.asList(ciphers));
         return result;
     }
 
@@ -469,9 +468,7 @@ public class TesterOpenSSL {
         }
         List<String> cmd = new ArrayList<>();
         cmd.add(openSSLPath);
-        for (String arg : args) {
-            cmd.add(arg);
-        }
+        cmd.addAll(Arrays.asList(args));
 
         ProcessBuilder pb = new ProcessBuilder(cmd.toArray(new String[0]));
 
diff --git a/test/org/apache/tomcat/websocket/pojo/TestEncodingDecoding.java b/test/org/apache/tomcat/websocket/pojo/TestEncodingDecoding.java
index ac69fa7..bf2d36d 100644
--- a/test/org/apache/tomcat/websocket/pojo/TestEncodingDecoding.java
+++ b/test/org/apache/tomcat/websocket/pojo/TestEncodingDecoding.java
@@ -20,6 +20,7 @@ import java.io.IOException;
 import java.net.URI;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -685,9 +686,7 @@ public class TestEncodingDecoding extends TomcatBaseTest {
             List<String> lst = new ArrayList<>(1);
             str = str.substring(1,str.length()-1);
             String[] strings = str.split(",");
-            for (String t : strings){
-                lst.add(t);
-            }
+            lst.addAll(Arrays.asList(strings));
             return lst;
         }
 
diff --git a/test/org/apache/tomcat/websocket/server/TestClose.java b/test/org/apache/tomcat/websocket/server/TestClose.java
index 30c18bb..60e9aa5 100644
--- a/test/org/apache/tomcat/websocket/server/TestClose.java
+++ b/test/org/apache/tomcat/websocket/server/TestClose.java
@@ -17,6 +17,7 @@
 package org.apache.tomcat.websocket.server;
 
 import java.io.IOException;
+import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.concurrent.CountDownLatch;
@@ -86,9 +87,7 @@ public class TestClose extends WebSocketBaseTest {
 
     public static void awaitOnClose(CloseCode... codes) {
         Set<CloseCode> set = new HashSet<>();
-        for (CloseCode code : codes) {
-            set.add(code);
-        }
+        set.addAll(Arrays.asList(codes));
         awaitOnClose(set);
     }
 
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index c6c6744..e2e46f7 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -133,6 +133,10 @@
         Refactor loops with a condition to exit as soon as the condition is met.
         Pull request provided by Lars Grefer. (markt)
       </scode>
+      <scode>
+        Refactor bulk addition to collections to use <code>addAll()</code>
+        rather than a loop. Pull request provided by Lars Grefer. (markt)
+      </scode>
     </changelog>
   </subsection>
 </section>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org