You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2018/04/22 10:41:08 UTC

[maven-wagon] 01/01: [WAGON-518] AbstractHttpClientWagon#putFromStream() reads entire content to memory

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

michaelo pushed a commit to branch WAGON-518
in repository https://gitbox.apache.org/repos/asf/maven-wagon.git

commit 9590d0a1a19aec217d7f1e2e56429893868209bc
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Sun Apr 22 12:40:20 2018 +0200

    [WAGON-518] AbstractHttpClientWagon#putFromStream() reads entire content to memory
---
 .../wagon/shared/http/AbstractHttpClientWagon.java | 31 +++++++---------------
 1 file changed, 9 insertions(+), 22 deletions(-)

diff --git a/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java b/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java
index db34732..6c47557 100755
--- a/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java
+++ b/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java
@@ -71,19 +71,16 @@ import org.apache.maven.wagon.events.TransferEvent;
 import org.apache.maven.wagon.proxy.ProxyInfo;
 import org.apache.maven.wagon.repository.Repository;
 import org.apache.maven.wagon.resource.Resource;
-import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
 
 import javax.net.ssl.HttpsURLConnection;
 import javax.net.ssl.SSLContext;
-import java.io.ByteArrayInputStream;
 import java.io.Closeable;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.nio.ByteBuffer;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Locale;
@@ -109,12 +106,14 @@ public abstract class AbstractHttpClientWagon
 
         private final Wagon wagon;
 
-        private ByteBuffer byteBuffer;
+        private InputStream stream;
 
         private File source;
 
         private long length = -1;
 
+        private boolean repeatable;
+
         private RequestEntityImplementation( final InputStream stream, final Resource resource, final Wagon wagon,
                                              final File source )
             throws TransferFailedException
@@ -122,24 +121,12 @@ public abstract class AbstractHttpClientWagon
             if ( source != null )
             {
                 this.source = source;
+                this.repeatable = true;
             }
             else
             {
-                try
-                {
-                    byte[] bytes = IOUtil.toByteArray( stream );
-                    byteBuffer = ByteBuffer.allocate( bytes.length );
-                    byteBuffer.put( bytes );
-                    stream.close();
-                }
-                catch ( IOException e )
-                {
-                    throw new TransferFailedException( e.getMessage(), e );
-                }
-                finally
-                {
-                    IOUtil.close( stream );
-                }
+                this.stream = stream;
+                this.repeatable = false;
             }
             this.resource = resource;
             this.length = resource == null ? -1 : resource.getContentLength();
@@ -159,12 +146,12 @@ public abstract class AbstractHttpClientWagon
             {
                 return new FileInputStream( this.source );
             }
-            return new ByteArrayInputStream( this.byteBuffer.array() );
+            return stream;
         }
 
         public boolean isRepeatable()
         {
-            return true;
+            return repeatable;
         }
 
         public void writeTo( final OutputStream outputStream )
@@ -179,7 +166,7 @@ public abstract class AbstractHttpClientWagon
             transferEvent.setTimestamp( System.currentTimeMillis() );
             InputStream instream = ( this.source != null )
                 ? new FileInputStream( this.source )
-                : new ByteArrayInputStream( this.byteBuffer.array() );
+                : stream;
             try
             {
                 byte[] buffer = new byte[BUFFER_SIZE];

-- 
To stop receiving notification emails like this one, please contact
michaelo@apache.org.