You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2020/12/16 22:02:34 UTC

[commons-vfs] branch master updated: Reuse zero size arrays.

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

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git


The following commit(s) were added to refs/heads/master by this push:
     new 90ed1e9  Reuse zero size arrays.
90ed1e9 is described below

commit 90ed1e9b7f8cdf062e1dc8852834e81f336220c2
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Dec 16 17:02:28 2020 -0500

    Reuse zero size arrays.
---
 .../vfs2/provider/webdav/WebdavFileObject.java     |  7 +++-
 .../vfs2/provider/webdav4/Webdav4FileObject.java   |  7 +++-
 .../apache/commons/vfs2/FileSystemException.java   |  3 +-
 .../commons/vfs2/filter/WildcardFileFilter.java    |  3 +-
 .../vfs2/impl/StandardFileSystemManager.java       |  7 ++--
 .../apache/commons/vfs2/impl/VFSClassLoader.java   |  3 +-
 .../operations/AbstractFileOperationProvider.java  |  1 -
 .../commons/vfs2/provider/AbstractFileObject.java  |  6 ++--
 .../commons/vfs2/provider/AbstractFileSystem.java  |  4 ++-
 .../commons/vfs2/provider/DefaultFileContent.java  |  6 ++--
 .../commons/vfs2/provider/DelegateFileObject.java  |  3 +-
 .../commons/vfs2/provider/ftp/FtpFileObject.java   |  1 -
 .../commons/vfs2/provider/ram/RamFileSystem.java   |  1 -
 .../commons/vfs2/provider/sftp/SftpFileObject.java |  2 +-
 .../commons/vfs2/provider/tar/TarFileObject.java   |  3 +-
 .../commons/vfs2/provider/zip/ZipFileObject.java   |  3 +-
 .../vfs2/util/{OsFamily.java => ArrayUtils.java}   | 37 +++++-----------------
 .../util/DelegatingFileSystemOptionsBuilder.java   |  1 -
 .../apache/commons/vfs2/util/FileObjectUtils.java  |  7 ++++
 .../org/apache/commons/vfs2/util/Messages.java     |  3 +-
 .../main/java/org/apache/commons/vfs2/util/Os.java |  2 +-
 .../org/apache/commons/vfs2/util/OsFamily.java     |  3 +-
 src/changes/changes.xml                            |  3 ++
 23 files changed, 62 insertions(+), 54 deletions(-)

diff --git a/commons-vfs2-jackrabbit1/src/main/java/org/apache/commons/vfs2/provider/webdav/WebdavFileObject.java b/commons-vfs2-jackrabbit1/src/main/java/org/apache/commons/vfs2/provider/webdav/WebdavFileObject.java
index 21fd6da..ba2d005 100644
--- a/commons-vfs2-jackrabbit1/src/main/java/org/apache/commons/vfs2/provider/webdav/WebdavFileObject.java
+++ b/commons-vfs2-jackrabbit1/src/main/java/org/apache/commons/vfs2/provider/webdav/WebdavFileObject.java
@@ -78,6 +78,11 @@ import org.w3c.dom.Node;
  * @since 2.0
  */
 public class WebdavFileObject extends HttpFileObject<WebdavFileSystem> {
+    
+    /**
+     * An empty immutable {@code WebdavFileObject} array.
+     */
+    private static WebdavFileObject[] EMPTY_ARRAY = new WebdavFileObject[0];
 
     /**
      * An OutputStream that writes to a Webdav resource.
@@ -394,7 +399,7 @@ public class WebdavFileObject extends HttpFileObject<WebdavFileSystem> {
                         }
                     }
                 }
-                return vfs.toArray(new WebdavFileObject[0]);
+                return vfs.toArray(EMPTY_ARRAY);
             }
             throw new FileNotFolderException(getName());
         } catch (final FileNotFolderException fnfe) {
diff --git a/commons-vfs2-jackrabbit2/src/main/java/org/apache/commons/vfs2/provider/webdav4/Webdav4FileObject.java b/commons-vfs2-jackrabbit2/src/main/java/org/apache/commons/vfs2/provider/webdav4/Webdav4FileObject.java
index 85a7682..a4b5af8 100644
--- a/commons-vfs2-jackrabbit2/src/main/java/org/apache/commons/vfs2/provider/webdav4/Webdav4FileObject.java
+++ b/commons-vfs2-jackrabbit2/src/main/java/org/apache/commons/vfs2/provider/webdav4/Webdav4FileObject.java
@@ -80,6 +80,11 @@ import org.w3c.dom.Node;
 public class Webdav4FileObject extends Http4FileObject<Webdav4FileSystem> {
 
     /**
+     * An empty immutable {@code Webdav4FileObject} array.
+     */
+    private static Webdav4FileObject[] EMPTY_ARRAY = new Webdav4FileObject[0];
+
+    /**
      * An OutputStream that writes to a Webdav resource.
      * <p>
      * TODO - Use piped stream to avoid temporary file.
@@ -394,7 +399,7 @@ public class Webdav4FileObject extends Http4FileObject<Webdav4FileSystem> {
                         }
                     }
                 }
-                return vfs.toArray(new Webdav4FileObject[0]);
+                return vfs.toArray(EMPTY_ARRAY);
             }
             throw new FileNotFolderException(getName());
         } catch (final FileNotFolderException fnfe) {
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileSystemException.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileSystemException.java
index 5c90c53..b64cb5e 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileSystemException.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/FileSystemException.java
@@ -20,6 +20,7 @@ import java.io.IOException;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.apache.commons.vfs2.util.ArrayUtils;
 import org.apache.commons.vfs2.util.Messages;
 
 /**
@@ -163,7 +164,7 @@ public class FileSystemException extends IOException {
         super(code, throwable);
 
         if (info == null) {
-            this.info = new String[0];
+            this.info = ArrayUtils.EMPTY_STRING_ARRAY;
         } else {
             this.info = new String[info.length];
             for (int i = 0; i < info.length; i++) {
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/filter/WildcardFileFilter.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/filter/WildcardFileFilter.java
index e3ebe52..8c58c0d 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/filter/WildcardFileFilter.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/filter/WildcardFileFilter.java
@@ -24,6 +24,7 @@ import java.util.Stack;
 
 import org.apache.commons.vfs2.FileFilter;
 import org.apache.commons.vfs2.FileSelectInfo;
+import org.apache.commons.vfs2.util.ArrayUtils;
 
 /**
  * Filters files using the supplied wildcards.
@@ -196,7 +197,7 @@ public class WildcardFileFilter implements FileFilter, Serializable {
             list.add(buffer.toString());
         }
 
-        return list.toArray(new String[0]);
+        return list.toArray(ArrayUtils.EMPTY_STRING_ARRAY);
     }
 
     // CHECKSTYLE:ON
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/impl/StandardFileSystemManager.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/impl/StandardFileSystemManager.java
index ee21423..25a7c0e 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/impl/StandardFileSystemManager.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/impl/StandardFileSystemManager.java
@@ -32,6 +32,7 @@ import org.apache.commons.vfs2.FileSystemException;
 import org.apache.commons.vfs2.VfsLog;
 import org.apache.commons.vfs2.operations.FileOperationProvider;
 import org.apache.commons.vfs2.provider.FileProvider;
+import org.apache.commons.vfs2.util.ArrayUtils;
 import org.apache.commons.vfs2.util.Messages;
 import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;
@@ -369,7 +370,7 @@ public class StandardFileSystemManager extends DefaultFileSystemManager {
                 classes.add(className);
             }
         }
-        return classes.toArray(new String[0]);
+        return classes.toArray(ArrayUtils.EMPTY_STRING_ARRAY);
     }
 
     /**
@@ -386,7 +387,7 @@ public class StandardFileSystemManager extends DefaultFileSystemManager {
                 schemes.add(scheme);
             }
         }
-        return schemes.toArray(new String[0]);
+        return schemes.toArray(ArrayUtils.EMPTY_STRING_ARRAY);
     }
 
     /**
@@ -400,7 +401,7 @@ public class StandardFileSystemManager extends DefaultFileSystemManager {
             final Element scheme = (Element) schemaElements.item(i);
             schemas.add(scheme.getAttribute("name"));
         }
-        return schemas.toArray(new String[0]);
+        return schemas.toArray(ArrayUtils.EMPTY_STRING_ARRAY);
     }
 
     private ClassLoader getValidClassLoader(final Class<?> clazz) {
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/impl/VFSClassLoader.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/impl/VFSClassLoader.java
index 970d661..58a78ea 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/impl/VFSClassLoader.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/impl/VFSClassLoader.java
@@ -27,7 +27,6 @@ import java.security.cert.Certificate;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Enumeration;
-import java.util.Iterator;
 import java.util.List;
 import java.util.jar.Attributes;
 import java.util.jar.Attributes.Name;
@@ -110,7 +109,7 @@ public class VFSClassLoader extends SecureClassLoader {
      * @since 2.0
      */
     public FileObject[] getFileObjects() {
-        return resources.toArray(new FileObject[0]);
+        return resources.toArray(FileObjectUtils.EMPTY_ARRAY);
     }
 
     /**
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/operations/AbstractFileOperationProvider.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/operations/AbstractFileOperationProvider.java
index 624ebcc..53a142f 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/operations/AbstractFileOperationProvider.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/operations/AbstractFileOperationProvider.java
@@ -18,7 +18,6 @@ package org.apache.commons.vfs2.operations;
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Iterator;
 
 import org.apache.commons.vfs2.FileObject;
 import org.apache.commons.vfs2.FileSystemException;
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/AbstractFileObject.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/AbstractFileObject.java
index f252dc3..b47978a 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/AbstractFileObject.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/AbstractFileObject.java
@@ -66,6 +66,8 @@ import org.apache.commons.vfs2.util.RandomAccessMode;
  */
 public abstract class AbstractFileObject<AFS extends AbstractFileSystem> implements FileObject {
 
+    private static final FileName[] EMPTY_FILE_NAME_ARRAY = new FileName[0];
+
     private static final String DO_GET_INPUT_STREAM_INT = "doGetInputStream(int)";
 
     /**
@@ -205,7 +207,7 @@ public abstract class AbstractFileObject<AFS extends AbstractFileSystem> impleme
             } else {
                 list.add(childName);
             }
-            children = list.toArray(new FileName[0]);
+            children = list.toArray(EMPTY_FILE_NAME_ARRAY);
         }
 
         // removeChildrenCache();
@@ -990,7 +992,7 @@ public abstract class AbstractFileObject<AFS extends AbstractFileSystem> impleme
     @Override
     public FileObject[] findFiles(final FileSelector selector) throws FileSystemException {
         final List<FileObject> list = this.listFiles(selector);
-        return list == null ? null : list.toArray(new FileObject[0]);
+        return list == null ? null : list.toArray(FileObjectUtils.EMPTY_ARRAY);
     }
 
     /**
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/AbstractFileSystem.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/AbstractFileSystem.java
index dee6244..f3095bc 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/AbstractFileSystem.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/AbstractFileSystem.java
@@ -55,6 +55,8 @@ import org.apache.commons.vfs2.util.Messages;
  */
 public abstract class AbstractFileSystem extends AbstractVfsComponent implements FileSystem {
 
+    private static final FileListener[] EMPTY_FILE_LISTENER_ARRAY = new FileListener[0];
+
     private static final Log LOG = LogFactory.getLog(AbstractFileSystem.class);
 
     /**
@@ -539,7 +541,7 @@ public abstract class AbstractFileSystem extends AbstractVfsComponent implements
         synchronized (listenerMap) {
             final ArrayList<?> listeners = listenerMap.get(fileObject.getName());
             if (listeners != null) {
-                fileListeners = listeners.toArray(new FileListener[0]);
+                fileListeners = listeners.toArray(EMPTY_FILE_LISTENER_ARRAY);
             }
         }
 
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/DefaultFileContent.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/DefaultFileContent.java
index e659ed0..397bc55 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/DefaultFileContent.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/DefaultFileContent.java
@@ -31,6 +31,7 @@ import org.apache.commons.vfs2.FileContentInfoFactory;
 import org.apache.commons.vfs2.FileObject;
 import org.apache.commons.vfs2.FileSystemException;
 import org.apache.commons.vfs2.RandomAccessContent;
+import org.apache.commons.vfs2.util.ArrayUtils;
 import org.apache.commons.vfs2.util.MonitorInputStream;
 import org.apache.commons.vfs2.util.MonitorOutputStream;
 import org.apache.commons.vfs2.util.MonitorRandomAccessContent;
@@ -47,6 +48,7 @@ public final class DefaultFileContent implements FileContent {
      * final int STATE_RANDOM_ACCESS = 3;
      */
 
+    private static final Certificate[] EMPTY_CERTIFICATE_ARRAY = new Certificate[0];
     static final int STATE_CLOSED = 0;
     static final int STATE_OPENED = 1;
 
@@ -244,7 +246,7 @@ public final class DefaultFileContent implements FileContent {
     public String[] getAttributeNames() throws FileSystemException {
         getAttributes();
         final Set<String> names = attrs.keySet();
-        return names.toArray(new String[0]);
+        return names.toArray(ArrayUtils.EMPTY_STRING_ARRAY);
     }
 
     /**
@@ -328,7 +330,7 @@ public final class DefaultFileContent implements FileContent {
             if (certs != null) {
                 return certs;
             }
-            return new Certificate[0];
+            return EMPTY_CERTIFICATE_ARRAY;
         } catch (final Exception e) {
             throw new FileSystemException("vfs.provider/get-certificates.error", fileObject, e);
         }
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/DelegateFileObject.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/DelegateFileObject.java
index 3a5afd0..2275164 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/DelegateFileObject.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/DelegateFileObject.java
@@ -33,6 +33,7 @@ import org.apache.commons.vfs2.FileObject;
 import org.apache.commons.vfs2.FileSystemException;
 import org.apache.commons.vfs2.FileType;
 import org.apache.commons.vfs2.RandomAccessContent;
+import org.apache.commons.vfs2.util.ArrayUtils;
 import org.apache.commons.vfs2.util.RandomAccessMode;
 import org.apache.commons.vfs2.util.WeakRefFileListener;
 
@@ -191,7 +192,7 @@ public class DelegateFileObject<AFS extends AbstractFileSystem> extends Abstract
 
             return Arrays.stream(children).map(child -> child.getName().getBaseName()).toArray(String[]::new);
         }
-        return children.toArray(new String[0]);
+        return children.toArray(ArrayUtils.EMPTY_STRING_ARRAY);
     }
 
     /**
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/ftp/FtpFileObject.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/ftp/FtpFileObject.java
index 3b70d72..d159d63 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/ftp/FtpFileObject.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/ftp/FtpFileObject.java
@@ -22,7 +22,6 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.Calendar;
 import java.util.Collections;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileSystem.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileSystem.java
index fda182b..8011e33 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileSystem.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/ram/RamFileSystem.java
@@ -25,7 +25,6 @@ import java.io.Serializable;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.apache.commons.vfs2.Capability;
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/sftp/SftpFileObject.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/sftp/SftpFileObject.java
index 6032dc4..593cc82 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/sftp/SftpFileObject.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/sftp/SftpFileObject.java
@@ -378,7 +378,7 @@ public class SftpFileObject extends AbstractFileObject<SftpFileSystem> {
             children.add(fo);
         }
 
-        return children.toArray(new FileObject[0]);
+        return children.toArray(FileObjectUtils.EMPTY_ARRAY);
     }
 
     /**
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/tar/TarFileObject.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/tar/TarFileObject.java
index 56de37f..65ecb72 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/tar/TarFileObject.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/tar/TarFileObject.java
@@ -25,6 +25,7 @@ import org.apache.commons.vfs2.FileSystemException;
 import org.apache.commons.vfs2.FileType;
 import org.apache.commons.vfs2.provider.AbstractFileName;
 import org.apache.commons.vfs2.provider.AbstractFileObject;
+import org.apache.commons.vfs2.util.ArrayUtils;
 
 /**
  * A file in a Tar file system.
@@ -108,7 +109,7 @@ public class TarFileObject extends AbstractFileObject<TarFileSystem> {
             throw new RuntimeException(e);
         }
 
-        return children.toArray(new String[0]);
+        return children.toArray(ArrayUtils.EMPTY_STRING_ARRAY);
     }
 
     /**
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/zip/ZipFileObject.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/zip/ZipFileObject.java
index 1b90306..935faf3 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/zip/ZipFileObject.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/zip/ZipFileObject.java
@@ -25,6 +25,7 @@ import org.apache.commons.vfs2.FileSystemException;
 import org.apache.commons.vfs2.FileType;
 import org.apache.commons.vfs2.provider.AbstractFileName;
 import org.apache.commons.vfs2.provider.AbstractFileObject;
+import org.apache.commons.vfs2.util.ArrayUtils;
 
 /**
  * A file in a ZIP file system.
@@ -110,7 +111,7 @@ public class ZipFileObject extends AbstractFileObject<ZipFileSystem> {
             throw new RuntimeException(e);
         }
 
-        return children.toArray(new String[0]);
+        return children.toArray(ArrayUtils.EMPTY_STRING_ARRAY);
     }
 
     /**
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/OsFamily.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/ArrayUtils.java
similarity index 53%
copy from commons-vfs2/src/main/java/org/apache/commons/vfs2/util/OsFamily.java
copy to commons-vfs2/src/main/java/org/apache/commons/vfs2/util/ArrayUtils.java
index 553aef7..fc7faf2 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/OsFamily.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/ArrayUtils.java
@@ -14,41 +14,20 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package org.apache.commons.vfs2.util;
 
 /**
- * An enumerated type, which represents an OS family.
+ * Array utilities.
+ * 
+ * See Apache Commons Lang.
+ * @since 2.9.0
  */
-public final class OsFamily {
-
-    private final String name;
-    private final OsFamily[] families;
-
-    OsFamily(final String name) {
-        this.name = name;
-        families = new OsFamily[0];
-    }
-
-    OsFamily(final String name, final OsFamily[] families) {
-        this.name = name;
-        this.families = families;
-    }
+public class ArrayUtils {
 
     /**
-     * Returns the name of this family.
-     *
-     * @return The name of this family.
+     * An empty immutable {@code String} array.
      */
-    public String getName() {
-        return name;
-    }
+    public static final String[] EMPTY_STRING_ARRAY = new String[0];
 
-    /**
-     * Returns the OS families that this family belongs to.
-     *
-     * @return an array of OSFamily objects that this family belongs to.
-     */
-    public OsFamily[] getFamilies() {
-        return families;
-    }
 }
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/DelegatingFileSystemOptionsBuilder.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/DelegatingFileSystemOptionsBuilder.java
index ac7bb6f..c31adf0 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/DelegatingFileSystemOptionsBuilder.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/DelegatingFileSystemOptionsBuilder.java
@@ -22,7 +22,6 @@ import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/FileObjectUtils.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/FileObjectUtils.java
index 9ab8f28..38234f1 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/FileObjectUtils.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/FileObjectUtils.java
@@ -34,6 +34,13 @@ import org.apache.commons.vfs2.provider.AbstractFileObject;
 public final class FileObjectUtils {
 
     /**
+     * An empty immutable {@code FileObject} array.
+     * 
+     * @since 2.9.0
+     */
+    public static FileObject[] EMPTY_ARRAY = new FileObject[0];
+
+    /**
      * Null-safe call to {@link FileObject#exists()}.
      *
      * @param fileObject the file object to test, may be null.
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/Messages.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/Messages.java
index 1289cf5..f6c1a46 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/Messages.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/Messages.java
@@ -27,6 +27,7 @@ import java.util.concurrent.ConcurrentMap;
  */
 public final class Messages {
 
+    private static final Object[] EMPTY_OBJECT_ARRAY = new Object[0];
     /**
      * Map from message code to MessageFormat object for the message.
      */
@@ -43,7 +44,7 @@ public final class Messages {
      * @return The formatted message.
      */
     public static String getString(final String code) {
-        return getString(code, new Object[0]);
+        return getString(code, EMPTY_OBJECT_ARRAY);
     }
 
     /**
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/Os.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/Os.java
index be34ae9..fa4d749 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/Os.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/Os.java
@@ -246,7 +246,7 @@ public final class Os {
                 Collections.addAll(queue, families);
             }
         }
-        return allFamilies.toArray(new OsFamily[0]);
+        return allFamilies.toArray(OsFamily.EMPTY_OS_FAMILY_ARRAY);
     }
 
     private static OsFamily determineOsFamily() {
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/OsFamily.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/OsFamily.java
index 553aef7..00b78fd 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/OsFamily.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/util/OsFamily.java
@@ -23,10 +23,11 @@ public final class OsFamily {
 
     private final String name;
     private final OsFamily[] families;
+    static final OsFamily[] EMPTY_OS_FAMILY_ARRAY = new OsFamily[0];
 
     OsFamily(final String name) {
         this.name = name;
-        families = new OsFamily[0];
+        families = EMPTY_OS_FAMILY_ARRAY;
     }
 
     OsFamily(final String name, final OsFamily[] families) {
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 7435f1c..2ba8968 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -89,6 +89,9 @@ The <action> type attribute can be add,update,fix,remove.
       <action dev="ggregory" due-to="Gary Gregory" type="update">
         Update org.apache.httpcomponents:httpcore-nio 4.4.13 -> 4.4.14.
       </action>
+      <action dev="ggregory" due-to="PeterAlfredLee, Gary Gregory" type="update">
+        Modify some calls of method Collection.toArray #145.
+      </action>
     </release>
     <release version="2.7.0" date="2020-10-26" description="Maintenance release. Requires Java 8.">
       <action issue="VFS-753" dev="ggregory" due-to="John Webb, Gary Gregory" type="fix">