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 9c4302e  FileContentThreadData: lazy ArrayList initialization to save 
memory (#155)
9c4302e is described below

commit 9c4302e4559acb1e2a627f57f49105c54fe09895
Author: Max Kellermann <max.kellerm...@gmail.com>
AuthorDate: Mon Jan 18 16:48:29 2021 +0100

    FileContentThreadData: lazy ArrayList initialization to save memory (#155)
    
    * FileContentThreadData: refactor get{Instr,Rastrs}Size() to boolean methods
    
    The only caller is only interested in checking whether there is at
    least one; he's not interested in the actual number.
    
    * FileContentThreadData: use the new has...() methods in hasStreams()
    
    Reduce code duplication.
    
    * FileContentThreadData: lazy ArrayList initialization to save memory
    
    Don't create ArrayList instances that are never used.
---
 .../commons/vfs2/provider/DefaultFileContent.java      |  4 ++--
 .../commons/vfs2/provider/FileContentThreadData.java   | 18 +++++++++++-------
 2 files changed, 13 insertions(+), 9 deletions(-)

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 786386a..f58abf7 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
@@ -442,7 +442,7 @@ public final class DefaultFileContent implements 
FileContent {
             final FileContentThreadData threadData = 
getFileContentThreadData();
 
             // Close the input stream
-            while (threadData.getInstrsSize() > 0) {
+            while (threadData.hasInputStream()) {
                 final InputStream inputStream = 
threadData.removeInputStream(0);
                 try {
                     if (inputStream instanceof FileContentInputStream) {
@@ -459,7 +459,7 @@ public final class DefaultFileContent implements 
FileContent {
             }
 
             // Close the randomAccess stream
-            while (threadData.getRastrsSize() > 0) {
+            while (threadData.hasRandomAccessContent()) {
                 final FileRandomAccessContent randomAccessContent = 
(FileRandomAccessContent) threadData
                         .removeRastr(0);
                 try {
diff --git 
a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/FileContentThreadData.java
 
b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/FileContentThreadData.java
index d2a6646..14704a6 100644
--- 
a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/FileContentThreadData.java
+++ 
b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/FileContentThreadData.java
@@ -29,8 +29,8 @@ class FileContentThreadData {
 
     // private int state = DefaultFileContent.STATE_CLOSED;
 
-    private final ArrayList<InputStream> inputStreamList = new ArrayList<>();
-    private final ArrayList<RandomAccessContent> randomAccessContentList = new 
ArrayList<>();
+    private ArrayList<InputStream> inputStreamList;
+    private ArrayList<RandomAccessContent> randomAccessContentList;
     private DefaultFileContent.FileContentOutputStream outputStream;
 
     FileContentThreadData() {
@@ -43,6 +43,8 @@ class FileContentThreadData {
      */
 
     void addInstr(final InputStream inputStream) {
+        if (this.inputStreamList == null)
+            this.inputStreamList = new ArrayList<>();
         this.inputStreamList.add(inputStream);
     }
 
@@ -55,11 +57,13 @@ class FileContentThreadData {
     }
 
     void addRastr(final RandomAccessContent randomAccessContent) {
+        if (this.randomAccessContentList == null)
+            this.randomAccessContentList = new ArrayList<>();
         this.randomAccessContentList.add(randomAccessContent);
     }
 
-    int getInstrsSize() {
-        return this.inputStreamList.size();
+    boolean hasInputStream() {
+        return this.inputStreamList != null && !this.inputStreamList.isEmpty();
     }
 
     public Object removeInstr(final int pos) {
@@ -83,7 +87,7 @@ class FileContentThreadData {
     }
 
     public boolean hasStreams() {
-        return !inputStreamList.isEmpty() || outputStream != null || 
!randomAccessContentList.isEmpty();
+        return hasInputStream() || outputStream != null || 
hasRandomAccessContent();
     }
 
     public void closeOutstr() throws FileSystemException {
@@ -91,7 +95,7 @@ class FileContentThreadData {
         outputStream = null;
     }
 
-    int getRastrsSize() {
-        return randomAccessContentList.size();
+    boolean hasRandomAccessContent() {
+        return randomAccessContentList != null && 
!randomAccessContentList.isEmpty();
     }
 }

Reply via email to