You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2012/03/14 18:15:35 UTC

svn commit: r1300649 - in /maven/wagon/trunk/wagon-providers: wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http4/AbstractHttpClientWagon.java

Author: olamy
Date: Wed Mar 14 17:15:35 2012
New Revision: 1300649

URL: http://svn.apache.org/viewvc?rev=1300649&view=rev
Log:
[WAGON-367] Very large number of temporary files "http-wagon.*.tmp" if wagon is used in a long time running JVM (like a CI server).

Modified:
    maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java
    maven/wagon/trunk/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http4/AbstractHttpClientWagon.java

Modified: maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java?rev=1300649&r1=1300648&r2=1300649&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http-shared/src/main/java/org/apache/maven/wagon/shared/http/AbstractHttpClientWagon.java Wed Mar 14 17:15:35 2012
@@ -54,9 +54,9 @@ import org.apache.maven.wagon.resource.R
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
 
+import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -83,7 +83,9 @@ public abstract class AbstractHttpClient
 
         private final Wagon wagon;
 
-        private final File source;
+        private File source;
+
+        private byte[] bytes;
 
         private RequestEntityImplementation( final InputStream stream, final Resource resource, final Wagon wagon,
                                              final File source )
@@ -95,23 +97,13 @@ public abstract class AbstractHttpClient
             }
             else
             {
-                FileOutputStream fos = null;
                 try
                 {
-                    this.source = File.createTempFile( "http-wagon.", ".tmp" );
-                    this.source.deleteOnExit();
-
-                    fos = new FileOutputStream( this.source );
-                    IOUtil.copy( stream, fos );
+                    this.bytes = IOUtil.toByteArray( stream );
                 }
                 catch ( IOException e )
                 {
-                    fireTransferError( resource, e, TransferEvent.REQUEST_PUT );
-                    throw new TransferFailedException( "Failed to buffer stream contents to temp file for upload.", e );
-                }
-                finally
-                {
-                    IOUtil.close( fos );
+                    throw new TransferFailedException( e.getMessage(), e );
                 }
             }
 
@@ -143,10 +135,10 @@ public abstract class AbstractHttpClient
                 new TransferEvent( wagon, resource, TransferEvent.TRANSFER_PROGRESS, TransferEvent.REQUEST_PUT );
             transferEvent.setTimestamp( System.currentTimeMillis() );
 
-            FileInputStream fin = null;
+            InputStream fin = null;
             try
             {
-                fin = new FileInputStream( source );
+                fin = this.source != null ? new FileInputStream( source ) : new ByteArrayInputStream( this.bytes );
                 int remaining = Integer.MAX_VALUE;
                 while ( remaining > 0 )
                 {

Modified: maven/wagon/trunk/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http4/AbstractHttpClientWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http4/AbstractHttpClientWagon.java?rev=1300649&r1=1300648&r2=1300649&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http4/AbstractHttpClientWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-http-shared4/src/main/java/org/apache/maven/wagon/shared/http4/AbstractHttpClientWagon.java Wed Mar 14 17:15:35 2012
@@ -19,7 +19,6 @@ package org.apache.maven.wagon.shared.ht
  * under the License.
  */
 
-import org.apache.commons.io.IOUtils;
 import org.apache.http.Header;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpException;
@@ -69,6 +68,7 @@ import org.apache.maven.wagon.events.Tra
 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.SSLException;
@@ -110,8 +110,6 @@ public abstract class AbstractHttpClient
 
         private final Wagon wagon;
 
-        //private InputStream stream;
-
         private byte[] bytes;
 
         private File source;
@@ -130,7 +128,7 @@ public abstract class AbstractHttpClient
             {
                 try
                 {
-                    this.bytes = IOUtils.toByteArray( stream );
+                    this.bytes = IOUtil.toByteArray( stream );
                 }
                 catch ( IOException e )
                 {
@@ -156,7 +154,7 @@ public abstract class AbstractHttpClient
             {
                 return new FileInputStream( this.source );
             }
-            return new ByteArrayInputStream( this.bytes );// this.stream;
+            return new ByteArrayInputStream( this.bytes );
         }
 
         public boolean isRepeatable()