This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 7.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/7.0.x by this push:
     new 1c2e529  Use empty arrays for Collections.toArray()
1c2e529 is described below

commit 1c2e529a5e6aa835f29c0da83543dc8d7a496058
Author: Lars Grefer <lars.gre...@materna.de>
AuthorDate: Tue Apr 7 18:09:26 2020 +0200

    Use empty arrays for Collections.toArray()
    
    There are two styles to convert a collection to an array:
    either using a pre-sized array (like c.toArray(new String[c.size()]))
    or using an empty array (like c.toArray(new String[0]).
    
    In older Java versions using pre-sized array was recommended,
    as the reflection call which is necessary to create an array of proper
    size was quite slow.
    However since late updates of OpenJDK 6 this call was intrinsified,
    making the performance of the empty array version the same and sometimes
    even better,
    compared to the pre-sized version.
    
    See also: https://shipilev.net/blog/2016/arrays-wisdom-ancients/
---
 java/javax/servlet/jsp/el/ImplicitObjectELResolver.java       |  2 +-
 java/org/apache/catalina/core/ContainerBase.java              |  2 +-
 java/org/apache/catalina/core/DefaultInstanceManager.java     |  3 +--
 java/org/apache/catalina/core/StandardContext.java            |  2 +-
 java/org/apache/catalina/core/StandardHost.java               |  2 +-
 java/org/apache/catalina/core/StandardWrapper.java            |  2 +-
 java/org/apache/catalina/deploy/FilterMap.java                |  2 +-
 java/org/apache/catalina/deploy/SecurityConstraint.java       |  2 +-
 java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java         |  2 +-
 java/org/apache/catalina/mbeans/ContainerMBean.java           |  4 ++--
 java/org/apache/catalina/mbeans/GroupMBean.java               |  6 ++----
 java/org/apache/catalina/mbeans/MemoryUserDatabaseMBean.java  |  9 +++------
 java/org/apache/catalina/mbeans/NamingResourcesMBean.java     | 11 ++++-------
 java/org/apache/catalina/mbeans/UserMBean.java                |  6 ++----
 java/org/apache/catalina/realm/GenericPrincipal.java          |  6 +++---
 java/org/apache/catalina/servlets/CGIServlet.java             |  2 +-
 java/org/apache/catalina/session/FileStore.java               |  2 +-
 java/org/apache/catalina/session/JDBCStore.java               |  2 +-
 java/org/apache/catalina/startup/ClassLoaderFactory.java      |  4 ++--
 java/org/apache/catalina/startup/HostConfig.java              |  2 +-
 java/org/apache/catalina/tribes/ChannelException.java         |  2 +-
 java/org/apache/catalina/tribes/group/RpcChannel.java         |  2 +-
 .../tribes/group/interceptors/TcpFailureDetector.java         |  4 ++--
 .../tribes/group/interceptors/TwoPhaseCommitInterceptor.java  |  2 +-
 .../apache/catalina/tribes/tipis/AbstractReplicatedMap.java   |  4 ++--
 java/org/apache/catalina/tribes/tipis/ReplicatedMap.java      |  2 +-
 .../catalina/tribes/transport/bio/MultipointBioSender.java    |  2 +-
 java/org/apache/catalina/tribes/util/Arrays.java              |  4 ++--
 .../org/apache/catalina/valves/StuckThreadDetectionValve.java |  2 +-
 java/org/apache/el/parser/AstMethodParameters.java            |  2 +-
 java/org/apache/jasper/compiler/JavacErrorDetail.java         |  2 +-
 java/org/apache/jasper/compiler/Validator.java                |  2 +-
 .../apache/naming/factory/webservices/ServiceRefFactory.java  |  2 +-
 .../apache/tomcat/dbcp/dbcp/PoolablePreparedStatement.java    |  2 +-
 java/org/apache/tomcat/util/http/Parameters.java              |  2 +-
 java/org/apache/tomcat/util/modeler/BaseAttributeFilter.java  |  2 +-
 test/org/apache/tomcat/unittest/TesterContext.java            |  5 ++---
 webapps/docs/changelog.xml                                    |  4 ++++
 .../WEB-INF/classes/compressionFilters/CompressionFilter.java |  3 +--
 39 files changed, 57 insertions(+), 66 deletions(-)

diff --git a/java/javax/servlet/jsp/el/ImplicitObjectELResolver.java 
b/java/javax/servlet/jsp/el/ImplicitObjectELResolver.java
index 588039d..82f9c09 100644
--- a/java/javax/servlet/jsp/el/ImplicitObjectELResolver.java
+++ b/java/javax/servlet/jsp/el/ImplicitObjectELResolver.java
@@ -338,7 +338,7 @@ public class ImplicitObjectELResolver extends ELResolver {
                             while (e.hasMoreElements()) {
                                 list.add(e.nextElement());
                             }
-                            return list.toArray(new String[list.size()]);
+                            return list.toArray(new String[0]);
                         }
                         return null;
                     }
diff --git a/java/org/apache/catalina/core/ContainerBase.java 
b/java/org/apache/catalina/core/ContainerBase.java
index 9a48670..3b5252f 100644
--- a/java/org/apache/catalina/core/ContainerBase.java
+++ b/java/org/apache/catalina/core/ContainerBase.java
@@ -1559,7 +1559,7 @@ public abstract class ContainerBase extends 
LifecycleMBeanBase
                 names.add(((ContainerBase)next).getObjectName());
             }
         }
-        return names.toArray(new ObjectName[names.size()]);
+        return names.toArray(new ObjectName[0]);
     }
 
 
diff --git a/java/org/apache/catalina/core/DefaultInstanceManager.java 
b/java/org/apache/catalina/core/DefaultInstanceManager.java
index ea2ded0..457ea89 100644
--- a/java/org/apache/catalina/core/DefaultInstanceManager.java
+++ b/java/org/apache/catalina/core/DefaultInstanceManager.java
@@ -438,8 +438,7 @@ public class DefaultInstanceManager implements 
InstanceManager {
                     // Use common object to save memory
                     annotationsArray = ANNOTATIONS_EMPTY;
                 } else {
-                    annotationsArray = annotations.toArray(
-                            new AnnotationCacheEntry[annotations.size()]);
+                    annotationsArray = annotations.toArray(new 
AnnotationCacheEntry[0]);
                 }
                 synchronized (annotationCache) {
                     annotationCache.put(clazz, annotationsArray);
diff --git a/java/org/apache/catalina/core/StandardContext.java 
b/java/org/apache/catalina/core/StandardContext.java
index af356b2..949adcb 100644
--- a/java/org/apache/catalina/core/StandardContext.java
+++ b/java/org/apache/catalina/core/StandardContext.java
@@ -3922,7 +3922,7 @@ public class StandardContext extends ContainerBase
     public String[] findParameters() {
         List<String> parameterNames = new ArrayList<String>(parameters.size());
         parameterNames.addAll(parameters.keySet());
-        return parameterNames.toArray(new String[parameterNames.size()]);
+        return parameterNames.toArray(new String[0]);
     }
 
 
diff --git a/java/org/apache/catalina/core/StandardHost.java 
b/java/org/apache/catalina/core/StandardHost.java
index 99df7ad..93cab31 100644
--- a/java/org/apache/catalina/core/StandardHost.java
+++ b/java/org/apache/catalina/core/StandardHost.java
@@ -683,7 +683,7 @@ public class StandardHost extends ContainerBase implements 
Host {
             }
         }
 
-        return result.toArray(new String[result.size()]);
+        return result.toArray(new String[0]);
     }
 
     /**
diff --git a/java/org/apache/catalina/core/StandardWrapper.java 
b/java/org/apache/catalina/core/StandardWrapper.java
index ff83ead..aa73b95 100644
--- a/java/org/apache/catalina/core/StandardWrapper.java
+++ b/java/org/apache/catalina/core/StandardWrapper.java
@@ -990,7 +990,7 @@ public class StandardWrapper extends ContainerBase
 
         try {
             mappingsLock.readLock().lock();
-            return mappings.toArray(new String[mappings.size()]);
+            return mappings.toArray(new String[0]);
         } finally {
             mappingsLock.readLock().unlock();
         }
diff --git a/java/org/apache/catalina/deploy/FilterMap.java 
b/java/org/apache/catalina/deploy/FilterMap.java
index 8c910fb..eefc369 100644
--- a/java/org/apache/catalina/deploy/FilterMap.java
+++ b/java/org/apache/catalina/deploy/FilterMap.java
@@ -192,7 +192,7 @@ public class FilterMap implements Serializable {
         if ((dispatcherMapping & ASYNC) > 0) {
             result.add(DispatcherType.ASYNC.name());
         }
-        return result.toArray(new String[result.size()]);
+        return result.toArray(new String[0]);
     }
 
     // --------------------------------------------------------- Public Methods
diff --git a/java/org/apache/catalina/deploy/SecurityConstraint.java 
b/java/org/apache/catalina/deploy/SecurityConstraint.java
index c423fb0..7f7e579 100644
--- a/java/org/apache/catalina/deploy/SecurityConstraint.java
+++ b/java/org/apache/catalina/deploy/SecurityConstraint.java
@@ -509,7 +509,7 @@ public class SecurityConstraint implements Serializable {
 
         }
 
-        return result.toArray(new SecurityConstraint[result.size()]);
+        return result.toArray(new SecurityConstraint[0]);
     }
 
     private static SecurityConstraint createConstraint(
diff --git a/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java 
b/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java
index c527df8..c9470bb 100644
--- a/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java
+++ b/java/org/apache/catalina/ha/tcp/SimpleTcpCluster.java
@@ -301,7 +301,7 @@ public class SimpleTcpCluster extends LifecycleMBeanBase
      */
     @Override
     public Valve[] getValves() {
-        return valves.toArray(new Valve[valves.size()]);
+        return valves.toArray(new Valve[0]);
     }
 
     /**
diff --git a/java/org/apache/catalina/mbeans/ContainerMBean.java 
b/java/org/apache/catalina/mbeans/ContainerMBean.java
index aa5adf3..a700293 100644
--- a/java/org/apache/catalina/mbeans/ContainerMBean.java
+++ b/java/org/apache/catalina/mbeans/ContainerMBean.java
@@ -304,7 +304,7 @@ public class ContainerMBean extends BaseModelMBean {
             result.add(listener.getClass().getName());
         }
 
-        return result.toArray(new String[result.size()]);
+        return result.toArray(new String[0]);
     }
 
 
@@ -333,6 +333,6 @@ public class ContainerMBean extends BaseModelMBean {
             result.add(listener.getClass().getName());
         }
 
-        return result.toArray(new String[result.size()]);
+        return result.toArray(new String[0]);
     }
 }
diff --git a/java/org/apache/catalina/mbeans/GroupMBean.java 
b/java/org/apache/catalina/mbeans/GroupMBean.java
index 120349c..9cb0be0 100644
--- a/java/org/apache/catalina/mbeans/GroupMBean.java
+++ b/java/org/apache/catalina/mbeans/GroupMBean.java
@@ -103,8 +103,7 @@ public class GroupMBean extends BaseModelMBean {
                 throw iae;
             }
         }
-        return results.toArray(new String[results.size()]);
-
+        return results.toArray(new String[0]);
     }
 
 
@@ -130,8 +129,7 @@ public class GroupMBean extends BaseModelMBean {
                 throw iae;
             }
         }
-        return results.toArray(new String[results.size()]);
-
+        return results.toArray(new String[0]);
     }
 
 
diff --git a/java/org/apache/catalina/mbeans/MemoryUserDatabaseMBean.java 
b/java/org/apache/catalina/mbeans/MemoryUserDatabaseMBean.java
index 2107ed0..e5621f2 100644
--- a/java/org/apache/catalina/mbeans/MemoryUserDatabaseMBean.java
+++ b/java/org/apache/catalina/mbeans/MemoryUserDatabaseMBean.java
@@ -115,8 +115,7 @@ public class MemoryUserDatabaseMBean extends BaseModelMBean 
{
             Group group = groups.next();
             results.add(findGroup(group.getGroupname()));
         }
-        return results.toArray(new String[results.size()]);
-
+        return results.toArray(new String[0]);
     }
 
 
@@ -132,8 +131,7 @@ public class MemoryUserDatabaseMBean extends BaseModelMBean 
{
             Role role = roles.next();
             results.add(findRole(role.getRolename()));
         }
-        return results.toArray(new String[results.size()]);
-
+        return results.toArray(new String[0]);
     }
 
 
@@ -149,8 +147,7 @@ public class MemoryUserDatabaseMBean extends BaseModelMBean 
{
             User user = users.next();
             results.add(findUser(user.getUsername()));
         }
-        return results.toArray(new String[results.size()]);
-
+        return results.toArray(new String[0]);
     }
 
 
diff --git a/java/org/apache/catalina/mbeans/NamingResourcesMBean.java 
b/java/org/apache/catalina/mbeans/NamingResourcesMBean.java
index 715e144..4727bb5 100644
--- a/java/org/apache/catalina/mbeans/NamingResourcesMBean.java
+++ b/java/org/apache/catalina/mbeans/NamingResourcesMBean.java
@@ -98,8 +98,7 @@ public class NamingResourcesMBean extends BaseModelMBean {
                 throw iae;
             }
         }
-        return results.toArray(new String[results.size()]);
-
+        return results.toArray(new String[0]);
     }
 
 
@@ -124,8 +123,7 @@ public class NamingResourcesMBean extends BaseModelMBean {
                 throw iae;
             }
         }
-        return results.toArray(new String[results.size()]);
-
+        return results.toArray(new String[0]);
     }
 
 
@@ -150,12 +148,11 @@ public class NamingResourcesMBean extends BaseModelMBean {
                 throw iae;
             }
         }
-        return results.toArray(new String[results.size()]);
-
+        return results.toArray(new String[0]);
     }
 
-    // ------------------------------------------------------------- Operations
 
+    // ------------------------------------------------------------- Operations
 
     /**
      * Add an environment entry for this web application.
diff --git a/java/org/apache/catalina/mbeans/UserMBean.java 
b/java/org/apache/catalina/mbeans/UserMBean.java
index 20d1e85..b4c4fdf 100644
--- a/java/org/apache/catalina/mbeans/UserMBean.java
+++ b/java/org/apache/catalina/mbeans/UserMBean.java
@@ -103,8 +103,7 @@ public class UserMBean extends BaseModelMBean {
                 throw iae;
             }
         }
-        return results.toArray(new String[results.size()]);
-
+        return results.toArray(new String[0]);
     }
 
 
@@ -130,8 +129,7 @@ public class UserMBean extends BaseModelMBean {
                 throw iae;
             }
         }
-        return results.toArray(new String[results.size()]);
-
+        return results.toArray(new String[0]);
     }
 
 
diff --git a/java/org/apache/catalina/realm/GenericPrincipal.java 
b/java/org/apache/catalina/realm/GenericPrincipal.java
index 706daeb..7c3d651 100644
--- a/java/org/apache/catalina/realm/GenericPrincipal.java
+++ b/java/org/apache/catalina/realm/GenericPrincipal.java
@@ -123,10 +123,10 @@ public class GenericPrincipal implements Principal {
         this.password = password;
         this.userPrincipal = userPrincipal;
         if (roles != null) {
-            this.roles = new String[roles.size()];
-            this.roles = roles.toArray(this.roles);
-            if (this.roles.length > 1)
+            this.roles = roles.toArray(new String[0]);
+            if (this.roles.length > 1) {
                 Arrays.sort(this.roles);
+            }
         }
         this.loginContext = loginContext;
         this.gssCredential = gssCredential;
diff --git a/java/org/apache/catalina/servlets/CGIServlet.java 
b/java/org/apache/catalina/servlets/CGIServlet.java
index 2bbc6ea..4d811ea 100644
--- a/java/org/apache/catalina/servlets/CGIServlet.java
+++ b/java/org/apache/catalina/servlets/CGIServlet.java
@@ -1674,7 +1674,7 @@ public final class CGIServlet extends HttpServlet {
             try {
                 rt = Runtime.getRuntime();
                 proc = rt.exec(
-                        cmdAndArgs.toArray(new String[cmdAndArgs.size()]),
+                        cmdAndArgs.toArray(new String[0]),
                         hashToStringArray(env), wd);
 
                 String sContentLength = env.get("CONTENT_LENGTH");
diff --git a/java/org/apache/catalina/session/FileStore.java 
b/java/org/apache/catalina/session/FileStore.java
index 5dde3fd..c0c401a 100644
--- a/java/org/apache/catalina/session/FileStore.java
+++ b/java/org/apache/catalina/session/FileStore.java
@@ -202,7 +202,7 @@ public final class FileStore extends StoreBase {
                 list.add (file.substring(0, file.length() - n));
             }
         }
-        return list.toArray(new String[list.size()]);
+        return list.toArray(new String[0]);
     }
 
 
diff --git a/java/org/apache/catalina/session/JDBCStore.java 
b/java/org/apache/catalina/session/JDBCStore.java
index 00ce277..b0ea43a 100644
--- a/java/org/apache/catalina/session/JDBCStore.java
+++ b/java/org/apache/catalina/session/JDBCStore.java
@@ -523,7 +523,7 @@ public class JDBCStore extends StoreBase {
                                     tmpkeys.add(rst.getString(1));
                                 }
                             }
-                            keys = tmpkeys.toArray(new String[tmpkeys.size()]);
+                            keys = tmpkeys.toArray(new String[0]);
                             // Break out after the finally block
                             numberOfTries = 0;
                         } finally {
diff --git a/java/org/apache/catalina/startup/ClassLoaderFactory.java 
b/java/org/apache/catalina/startup/ClassLoaderFactory.java
index 7f8ac58..ceeb0ac 100644
--- a/java/org/apache/catalina/startup/ClassLoaderFactory.java
+++ b/java/org/apache/catalina/startup/ClassLoaderFactory.java
@@ -126,7 +126,7 @@ public final class ClassLoaderFactory {
         }
 
         // Construct the class loader itself
-        final URL[] array = set.toArray(new URL[set.size()]);
+        final URL[] array = set.toArray(new URL[0]);
         return AccessController.doPrivileged(
                 new PrivilegedAction<URLClassLoader>() {
                     @Override
@@ -222,7 +222,7 @@ public final class ClassLoaderFactory {
         }
 
         // Construct the class loader itself
-        final URL[] array = set.toArray(new URL[set.size()]);
+        final URL[] array = set.toArray(new URL[0]);
         if (log.isDebugEnabled())
             for (int i = 0; i < array.length; i++) {
                 log.debug("  location " + i + " is " + array[i]);
diff --git a/java/org/apache/catalina/startup/HostConfig.java 
b/java/org/apache/catalina/startup/HostConfig.java
index c63eaec..542ed55 100644
--- a/java/org/apache/catalina/startup/HostConfig.java
+++ b/java/org/apache/catalina/startup/HostConfig.java
@@ -562,7 +562,7 @@ public class HostConfig
                 filteredList.add(appPath);
             }
         }
-        return filteredList.toArray(new String[filteredList.size()]);
+        return filteredList.toArray(new String[0]);
     }
 
 
diff --git a/java/org/apache/catalina/tribes/ChannelException.java 
b/java/org/apache/catalina/tribes/ChannelException.java
index 8ecfe75..aeb3383 100644
--- a/java/org/apache/catalina/tribes/ChannelException.java
+++ b/java/org/apache/catalina/tribes/ChannelException.java
@@ -132,7 +132,7 @@ public class ChannelException extends Exception {
      */
     public FaultyMember[] getFaultyMembers() {
         if ( this.faultyMembers==null ) return EMPTY_LIST;
-        return faultyMembers.toArray(new FaultyMember[faultyMembers.size()]);
+        return faultyMembers.toArray(new FaultyMember[0]);
     }
 
     /**
diff --git a/java/org/apache/catalina/tribes/group/RpcChannel.java 
b/java/org/apache/catalina/tribes/group/RpcChannel.java
index 049f5e2..3618738 100644
--- a/java/org/apache/catalina/tribes/group/RpcChannel.java
+++ b/java/org/apache/catalina/tribes/group/RpcChannel.java
@@ -287,7 +287,7 @@ public class RpcChannel implements ChannelListener {
         }
 
         public Response[] getResponses() {
-            return responses.toArray(new Response[responses.size()]);
+            return responses.toArray(new Response[0]);
         }
     }
 
diff --git 
a/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java 
b/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java
index 0d458cc..176375a 100644
--- a/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java
+++ b/java/org/apache/catalina/tribes/group/interceptors/TcpFailureDetector.java
@@ -276,7 +276,7 @@ public class TcpFailureDetector extends 
ChannelInterceptorBase {
 
         //check suspect members if they are still alive,
         //if not, simply issue the memberDisappeared message
-        MemberImpl[] keys = removeSuspects.keySet().toArray(new 
MemberImpl[removeSuspects.size()]);
+        MemberImpl[] keys = removeSuspects.keySet().toArray(new MemberImpl[0]);
         for (int i = 0; i < keys.length; i++) {
             MemberImpl m = keys[i];
             if (membership.getMember(m) != null && (!memberAlive(m))) {
@@ -301,7 +301,7 @@ public class TcpFailureDetector extends 
ChannelInterceptorBase {
 
         //check add suspects members if they are alive now,
         //if they are, simply issue the memberAdded message
-        keys = addSuspects.keySet().toArray(new 
MemberImpl[addSuspects.size()]);
+        keys = addSuspects.keySet().toArray(new MemberImpl[0]);
         for (int i = 0; i < keys.length; i++) {
             MemberImpl m = keys[i];
             if ( membership.getMember(m) == null && (memberAlive(m))) {
diff --git 
a/java/org/apache/catalina/tribes/group/interceptors/TwoPhaseCommitInterceptor.java
 
b/java/org/apache/catalina/tribes/group/interceptors/TwoPhaseCommitInterceptor.java
index e1bb848..fd54677 100644
--- 
a/java/org/apache/catalina/tribes/group/interceptors/TwoPhaseCommitInterceptor.java
+++ 
b/java/org/apache/catalina/tribes/group/interceptors/TwoPhaseCommitInterceptor.java
@@ -117,7 +117,7 @@ public class TwoPhaseCommitInterceptor extends 
ChannelInterceptorBase {
         try {
             long now = System.currentTimeMillis();
             @SuppressWarnings("unchecked")
-            Map.Entry<UniqueId,MapEntry>[] entries = 
messages.entrySet().toArray(new Map.Entry[messages.size()]);
+            Map.Entry<UniqueId,MapEntry>[] entries = 
messages.entrySet().toArray(new Map.Entry[0]);
             for (int i=0; i<entries.length; i++ ) {
                 MapEntry entry = entries[i].getValue();
                 if ( entry.expired(now,expire) ) {
diff --git a/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java 
b/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java
index 83e8b9d..c005319 100644
--- a/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java
+++ b/java/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java
@@ -319,7 +319,7 @@ public abstract class AbstractReplicatedMap<K,V>
         }
         //update our map of members, expire some if we didn't receive a ping 
back
         synchronized (mapMembers) {
-            Member[] members = mapMembers.keySet().toArray(new 
Member[mapMembers.size()]);
+            Member[] members = mapMembers.keySet().toArray(new Member[0]);
             long now = System.currentTimeMillis();
             for (Member member : members) {
                 long access = mapMembers.get(member).longValue();
@@ -850,7 +850,7 @@ public abstract class AbstractReplicatedMap<K,V>
                 if ( mbrs[j].equals(set[i]) ) include = false;
             if ( include ) result.add(set[i]);
         }
-        return result.toArray(new Member[result.size()]);
+        return result.toArray(new Member[0]);
     }
 
     @Override
diff --git a/java/org/apache/catalina/tribes/tipis/ReplicatedMap.java 
b/java/org/apache/catalina/tribes/tipis/ReplicatedMap.java
index ed7f5ad..90f7ea7 100644
--- a/java/org/apache/catalina/tribes/tipis/ReplicatedMap.java
+++ b/java/org/apache/catalina/tribes/tipis/ReplicatedMap.java
@@ -159,7 +159,7 @@ public class ReplicatedMap<K,V> extends 
AbstractReplicatedMap<K,V> {
                     faulty.add(faultyMember.getMember());
                 }
             }
-            Member[] realFaultyMembers = faulty.toArray(new 
Member[faulty.size()]);
+            Member[] realFaultyMembers = faulty.toArray(new Member[0]);
             if (realFaultyMembers.length != 0) {
                 backup = excludeFromSet(realFaultyMembers, backup);
                 if (backup.length == 0) {
diff --git 
a/java/org/apache/catalina/tribes/transport/bio/MultipointBioSender.java 
b/java/org/apache/catalina/tribes/transport/bio/MultipointBioSender.java
index d6a106b..677eb62 100644
--- a/java/org/apache/catalina/tribes/transport/bio/MultipointBioSender.java
+++ b/java/org/apache/catalina/tribes/transport/bio/MultipointBioSender.java
@@ -148,7 +148,7 @@ public class MultipointBioSender extends AbstractSender 
implements MultiPointSen
     public boolean keepalive() {
         boolean result = false;
         @SuppressWarnings("unchecked")
-        Map.Entry<Member,BioSender>[] entries = 
bioSenders.entrySet().toArray(new Map.Entry[bioSenders.size()]);
+        Map.Entry<Member,BioSender>[] entries = 
bioSenders.entrySet().toArray(new Map.Entry[0]);
         for ( int i=0; i<entries.length; i++ ) {
             BioSender sender = entries[i].getValue();
             if ( sender.keepalive() ) {
diff --git a/java/org/apache/catalina/tribes/util/Arrays.java 
b/java/org/apache/catalina/tribes/util/Arrays.java
index e3fc149..ffbf84b 100644
--- a/java/org/apache/catalina/tribes/util/Arrays.java
+++ b/java/org/apache/catalina/tribes/util/Arrays.java
@@ -163,7 +163,7 @@ public class Arrays {
             if ( ignore!=null && ignore.equals(comp[i]) ) continue;
             if ( local.getMember(comp[i]) == null ) result.add(comp[i]);
         }
-        return result.toArray(new MemberImpl[result.size()]);
+        return result.toArray(new MemberImpl[0]);
     }
 
     public static Member[] remove(Member[] all, Member remove) {
@@ -174,7 +174,7 @@ public class Arrays {
         List<Member> alist = java.util.Arrays.asList(all);
         ArrayList<Member> list = new ArrayList<Member>(alist);
         for (int i=0; i<remove.length; i++ ) list.remove(remove[i]);
-        return list.toArray(new Member[list.size()]);
+        return list.toArray(new Member[0]);
     }
 
     public static int indexOf(Member member, Member[] members) {
diff --git a/java/org/apache/catalina/valves/StuckThreadDetectionValve.java 
b/java/org/apache/catalina/valves/StuckThreadDetectionValve.java
index 6acaaca..a0ad2f4 100644
--- a/java/org/apache/catalina/valves/StuckThreadDetectionValve.java
+++ b/java/org/apache/catalina/valves/StuckThreadDetectionValve.java
@@ -285,7 +285,7 @@ public class StuckThreadDetectionValve extends ValveBase {
                 nameList.add(monitoredThread.getThread().getName());
             }
         }
-        return nameList.toArray(new String[nameList.size()]);
+        return nameList.toArray(new String[0]);
     }
 
     public long getInterruptedThreadsCount() {
diff --git a/java/org/apache/el/parser/AstMethodParameters.java 
b/java/org/apache/el/parser/AstMethodParameters.java
index 2c0583d..223531c 100644
--- a/java/org/apache/el/parser/AstMethodParameters.java
+++ b/java/org/apache/el/parser/AstMethodParameters.java
@@ -32,7 +32,7 @@ public final class AstMethodParameters extends SimpleNode {
         for (int i = 0; i < this.jjtGetNumChildren(); i++) {
             params.add(this.jjtGetChild(i).getValue(ctx));
         }
-        return params.toArray(new Object[params.size()]);
+        return params.toArray(new Object[0]);
     }
 
     public Class<?>[] getParameterTypes(EvaluationContext ctx) {
diff --git a/java/org/apache/jasper/compiler/JavacErrorDetail.java 
b/java/org/apache/jasper/compiler/JavacErrorDetail.java
index 3c01777..89debc7 100644
--- a/java/org/apache/jasper/compiler/JavacErrorDetail.java
+++ b/java/org/apache/jasper/compiler/JavacErrorDetail.java
@@ -237,6 +237,6 @@ public class JavacErrorDetail {
             lines.add(line);
         }
 
-        return lines.toArray( new String[lines.size()] );
+        return lines.toArray(new String[0]);
     }
 }
diff --git a/java/org/apache/jasper/compiler/Validator.java 
b/java/org/apache/jasper/compiler/Validator.java
index d62d46a..b02c558 100644
--- a/java/org/apache/jasper/compiler/Validator.java
+++ b/java/org/apache/jasper/compiler/Validator.java
@@ -1687,7 +1687,7 @@ class Validator {
                 }
                 start = p + 1;
             }
-            return params.toArray(new String[params.size()]);
+            return params.toArray(new String[0]);
         }
 
         private FunctionMapper getFunctionMapper(ELNode.Nodes el)
diff --git a/java/org/apache/naming/factory/webservices/ServiceRefFactory.java 
b/java/org/apache/naming/factory/webservices/ServiceRefFactory.java
index 299ae4a..58dc40f 100644
--- a/java/org/apache/naming/factory/webservices/ServiceRefFactory.java
+++ b/java/org/apache/naming/factory/webservices/ServiceRefFactory.java
@@ -290,7 +290,7 @@ public class ServiceRefFactory implements ObjectFactory {
 
                     // Set the handlers informations
                     handlerInfo.setHandlerClass(handlerClass);
-                    handlerInfo.setHeaders(headers.toArray(new 
QName[headers.size()]));
+                    handlerInfo.setHeaders(headers.toArray(new QName[0]));
                     handlerInfo.setHandlerConfig(config);
 
                     if (!portNames.isEmpty()) {
diff --git a/java/org/apache/tomcat/dbcp/dbcp/PoolablePreparedStatement.java 
b/java/org/apache/tomcat/dbcp/dbcp/PoolablePreparedStatement.java
index bb6ebf4..46fca9a 100644
--- a/java/org/apache/tomcat/dbcp/dbcp/PoolablePreparedStatement.java
+++ b/java/org/apache/tomcat/dbcp/dbcp/PoolablePreparedStatement.java
@@ -129,7 +129,7 @@ public class PoolablePreparedStatement<K> extends 
DelegatingPreparedStatement {
         // See bug 17301 for what could happen when ResultSets are closed 
twice.
         List<AbandonedTrace> resultSets = getTrace();
         if( resultSets != null) {
-            ResultSet[] set = resultSets.toArray(new 
ResultSet[resultSets.size()]);
+            ResultSet[] set = resultSets.toArray(new ResultSet[0]);
             for (int i = 0; i < set.length; i++) {
                 set[i].close();
             }
diff --git a/java/org/apache/tomcat/util/http/Parameters.java 
b/java/org/apache/tomcat/util/http/Parameters.java
index c7cd7b4..4886478 100644
--- a/java/org/apache/tomcat/util/http/Parameters.java
+++ b/java/org/apache/tomcat/util/http/Parameters.java
@@ -157,7 +157,7 @@ public final class Parameters {
         if (values == null) {
             return null;
         }
-        return values.toArray(new String[values.size()]);
+        return values.toArray(new String[0]);
     }
 
     public Enumeration<String> getParameterNames() {
diff --git a/java/org/apache/tomcat/util/modeler/BaseAttributeFilter.java 
b/java/org/apache/tomcat/util/modeler/BaseAttributeFilter.java
index 8f8b25d..9bf6241 100644
--- a/java/org/apache/tomcat/util/modeler/BaseAttributeFilter.java
+++ b/java/org/apache/tomcat/util/modeler/BaseAttributeFilter.java
@@ -104,7 +104,7 @@ public class BaseAttributeFilter implements 
NotificationFilter {
     public String[] getNames() {
 
         synchronized (names) {
-            return names.toArray(new String[names.size()]);
+            return names.toArray(new String[0]);
         }
 
     }
diff --git a/test/org/apache/tomcat/unittest/TesterContext.java 
b/test/org/apache/tomcat/unittest/TesterContext.java
index 781f25e..3d307aa 100644
--- a/test/org/apache/tomcat/unittest/TesterContext.java
+++ b/test/org/apache/tomcat/unittest/TesterContext.java
@@ -86,7 +86,7 @@ public class TesterContext implements Context {
 
     @Override
     public String[] findSecurityRoles() {
-        return securityRoles.toArray(new String[securityRoles.size()]);
+        return securityRoles.toArray(new String[0]);
     }
 
     @Override
@@ -103,8 +103,7 @@ public class TesterContext implements Context {
 
     @Override
     public SecurityConstraint[] findConstraints() {
-        return securityConstraints.toArray(
-                new SecurityConstraint[securityConstraints.size()]);
+        return securityConstraints.toArray(new SecurityConstraint[0]);
     }
 
     @Override
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 93f1283..187dab2 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -188,6 +188,10 @@
         Refactor to use parameterized <code>Collection</code> constructors 
where
         possible. Pull request provided by Lars Grefer. (markt)
       </scode>
+      <scode>
+        Refactor to use empty arrays with <code>Collections.toArray()</code>.
+        Pull request provided by Lars Grefer. (markt)
+      </scode>
     </changelog>
   </subsection>
 </section>
diff --git 
a/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.java 
b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.java
index c529295..1dc0559 100644
--- a/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.java
+++ b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.java
@@ -130,8 +130,7 @@ public class CompressionFilter implements Filter {
                 }
 
                 if (values.size() > 0) {
-                    compressionMimeTypes = values.toArray(
-                            new String[values.size()]);
+                    compressionMimeTypes = values.toArray(new String[0]);
                 } else {
                     compressionMimeTypes = null;
                 }


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

Reply via email to