You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by jd...@apache.org on 2008/07/03 16:16:57 UTC

svn commit: r673685 - in /archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src: main/java/org/apache/maven/archiva/proxy/ test/java/org/apache/maven/archiva/proxy/

Author: jdumay
Date: Thu Jul  3 07:16:56 2008
New Revision: 673685

URL: http://svn.apache.org/viewvc?rev=673685&view=rev
Log:
MRM-859 - Use File.createTempFile() when downloading files from a remote repository

Modified:
    archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java
    archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AbstractProxyTestCase.java
    archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/CacheFailuresTransferTest.java
    archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ChecksumTransferTest.java
    archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ErrorHandlingTest.java
    archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ManagedDefaultTransferTest.java
    archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/MetadataTransferTest.java

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java?rev=673685&r1=673684&r2=673685&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java Thu Jul  3 07:16:56 2008
@@ -691,8 +691,9 @@
 
         try
         {
-            temp = new File( localFile.getAbsolutePath() + ".tmp" );
-
+            localFile.getParentFile().mkdirs();
+            temp = File.createTempFile(localFile.getName() + ".", null, localFile.getParentFile());
+            
             boolean success = false;
 
             if ( !localFile.exists() )
@@ -729,6 +730,10 @@
 
             return localFile;
         }
+        catch (IOException e)
+        {
+            throw new ProxyException("Could not create temporary file at " + localFile.getAbsolutePath(), e);
+        }
         catch ( ResourceDoesNotExistException e )
         {
             throw new NotFoundException(
@@ -743,10 +748,7 @@
         }
         finally
         {
-            if ( temp != null )
-            {
-                temp.delete();
-            }
+            FileUtils.deleteQuietly(temp);
         }
     }
 
@@ -857,11 +859,18 @@
             }
             catch ( IOException e )
             {
-                throw new ProxyException( "Cannot copy tmp file to its final location", e );
+                if (target.exists())
+                {
+                    log.debug("Tried to copy file " + temp.getName() + " to " + target.getAbsolutePath() + " but file with this name already exists.");
+                }
+                else
+                {
+                    throw new ProxyException( "Cannot copy tmp file " + temp.getAbsolutePath() + " to its final location", e );
+                }
             }
             finally
             {
-                temp.delete();
+                FileUtils.deleteQuietly(temp);
             }
         }
     }

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AbstractProxyTestCase.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AbstractProxyTestCase.java?rev=673685&r1=673684&r2=673685&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AbstractProxyTestCase.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AbstractProxyTestCase.java Thu Jul  3 07:16:56 2008
@@ -31,6 +31,7 @@
 import java.util.Locale;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang.ArrayUtils;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
 import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
@@ -43,10 +44,9 @@
 import org.apache.maven.archiva.policies.SnapshotsPolicy;
 import org.apache.maven.archiva.repository.ManagedRepositoryContent;
 import org.apache.maven.wagon.Wagon;
-import org.codehaus.plexus.spring.PlexusClassPathXmlApplicationContext;
 import org.codehaus.plexus.spring.PlexusInSpringTestCase;
+import org.easymock.ArgumentsMatcher;
 import org.easymock.MockControl;
-import org.springframework.beans.factory.BeanFactory;
 
 /**
  * AbstractProxyTestCase
@@ -88,6 +88,53 @@
     protected static final String REPOPATH_LEGACY_MANAGED = "src/test/repositories/legacy-managed";
 
     protected static final String REPOPATH_LEGACY_MANAGED_TARGET = "target/test-repository/legacy-managed";
+    
+    protected static final ArgumentsMatcher customWagonGetIfNewerMatcher = new ArgumentsMatcher() {
+
+        public boolean matches(Object[] expected, Object[] actual) {
+            if (expected.length < 1 || actual.length < 1)
+            {
+                return false;
+            }
+            return MockControl.ARRAY_MATCHER.matches(ArrayUtils.remove(expected, 1), ArrayUtils.remove(actual, 1));
+        }
+
+        public String toString(Object[] arguments) {
+            return ArrayUtils.toString(arguments);
+        }
+    };
+    
+    protected static final ArgumentsMatcher customWagonGetMatcher = new ArgumentsMatcher() {
+
+            public boolean matches(Object[] expected, Object[] actual) 
+            {
+                if (expected.length == 2 && actual.length == 2)
+                {
+                    if (expected[0] == null && actual[0] == null)
+                    {
+                        return true;
+                    }
+                    
+                    if (expected[0] == null)
+                    {
+                        return actual[0] == null;
+                    }
+                    
+                    if (actual[0] == null)
+                    {
+                        return expected[0] == null;
+                    }
+                    
+                    return expected[0].equals(actual[0]);
+                }
+                return false;
+            }
+
+            public String toString(Object[] arguments) 
+            {
+                return ArrayUtils.toString(arguments);
+            }
+        };
 
     protected MockControl wagonMockControl;
 

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/CacheFailuresTransferTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/CacheFailuresTransferTest.java?rev=673685&r1=673684&r2=673685&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/CacheFailuresTransferTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/CacheFailuresTransferTest.java Thu Jul  3 07:16:56 2008
@@ -63,8 +63,11 @@
                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.YES );
         saveConnector( ID_DEFAULT_MANAGED, "badproxied2", ChecksumPolicy.FIX, ReleasesPolicy.ALWAYS,
                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.YES );
-
+        
         wagonMock.get( path, new File( expectedFile.getParentFile(), expectedFile.getName() + ".tmp" ) );
+        
+        wagonMockControl.setMatcher(customWagonGetMatcher);
+        
         wagonMockControl.setThrowable( new ResourceDoesNotExistException( "resource does not exist." ), 2 );
 
         wagonMockControl.replay();
@@ -72,7 +75,7 @@
         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
 
         wagonMockControl.verify();
-
+        
 		// Second attempt to download same artifact use cache
         wagonMockControl.reset();
         wagonMockControl.replay();
@@ -105,6 +108,8 @@
                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO );
 
         wagonMock.get( path, new File( expectedFile.getParentFile(), expectedFile.getName() + ".tmp" ) );
+        
+        wagonMockControl.setMatcher(customWagonGetMatcher);
         wagonMockControl.setThrowable( new ResourceDoesNotExistException( "resource does not exist." ), 2 );
 
         wagonMockControl.replay();
@@ -116,10 +121,12 @@
 		// Second attempt to download same artifact DOES NOT use cache
         wagonMockControl.reset();
         wagonMock.get( path, new File( expectedFile.getParentFile(), expectedFile.getName() + ".tmp" ) );
+        
+        wagonMockControl.setMatcher(customWagonGetMatcher);
         wagonMockControl.setThrowable( new ResourceDoesNotExistException( "resource does not exist." ), 2 );
         wagonMockControl.replay();
 
-		downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
+	downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
 
         wagonMockControl.verify();
 

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ChecksumTransferTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ChecksumTransferTest.java?rev=673685&r1=673684&r2=673685&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ChecksumTransferTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ChecksumTransferTest.java Thu Jul  3 07:16:56 2008
@@ -397,10 +397,13 @@
                        SnapshotsPolicy.ALWAYS, CachedFailuresPolicy.NO );
 
         wagonMock.get( path, new File( expectedFile.getAbsolutePath() + ".tmp" ) );
+        wagonMockControl.setMatcher(customWagonGetMatcher);
         wagonMockControl.setVoidCallable();
         wagonMock.get( path + ".sha1", new File( expectedFile.getAbsolutePath() + ".sha1.tmp" ) );
+        wagonMockControl.setMatcher(customWagonGetMatcher);
         wagonMockControl.setVoidCallable();
         wagonMock.get( path + ".md5", new File( expectedFile.getAbsolutePath() + ".md5.tmp" ) );
+        wagonMockControl.setMatcher(customWagonGetMatcher);
         wagonMockControl.setThrowable( new ResourceDoesNotExistException( "Resource does not exist." ) );
         wagonMockControl.replay();
 

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ErrorHandlingTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ErrorHandlingTest.java?rev=673685&r1=673684&r2=673685&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ErrorHandlingTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ErrorHandlingTest.java Thu Jul  3 07:16:56 2008
@@ -537,6 +537,7 @@
         throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
     {
         wagonMock.get( path, createExpectedTempFile( expectedFile ) );
+        wagonMockControl.setMatcher(customWagonGetMatcher);
         wagonMockControl.setThrowable( throwable, 1 );
     }
 
@@ -544,6 +545,7 @@
         throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
     {
         wagonMock.getIfNewer( path, createExpectedTempFile( expectedFile ), expectedFile.lastModified() );
+        wagonMockControl.setMatcher(customWagonGetIfNewerMatcher);
         wagonMockControl.setThrowable( exception, 1 );
     }
 

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ManagedDefaultTransferTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ManagedDefaultTransferTest.java?rev=673685&r1=673684&r2=673685&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ManagedDefaultTransferTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ManagedDefaultTransferTest.java Thu Jul  3 07:16:56 2008
@@ -306,6 +306,7 @@
         saveRemoteRepositoryConfig( "badproxied", "Bad Proxied", "test://bad.machine.com/repo/", "default" );
 
         wagonMock.get( path, new File( expectedFile.getAbsolutePath() + ".tmp" ) );
+        wagonMockControl.setMatcher(customWagonGetMatcher);
         wagonMockControl.setThrowable( new ResourceDoesNotExistException( "transfer failed" ) );
         wagonMockControl.replay();
 
@@ -344,9 +345,13 @@
 
         File tmpFile = new File( expectedFile.getParentFile(), expectedFile.getName() + ".tmp" );
         wagonMock.get( path, tmpFile );
+        
+        wagonMockControl.setMatcher(customWagonGetMatcher);
         wagonMockControl.setThrowable( new ResourceDoesNotExistException( "Can't find resource." ) );
 
         wagonMock.get( path, tmpFile );
+        
+        wagonMockControl.setMatcher(customWagonGetMatcher);
         wagonMockControl.setThrowable( new ResourceDoesNotExistException( "Can't find resource." ) );
 
         wagonMockControl.replay();

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/MetadataTransferTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/MetadataTransferTest.java?rev=673685&r1=673684&r2=673685&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/MetadataTransferTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/MetadataTransferTest.java Thu Jul  3 07:16:56 2008
@@ -120,6 +120,9 @@
         File expectedFile = new File( managedDefaultDir.getAbsoluteFile(),
                                       metadataTools.getRepositorySpecificName( "badproxied1", requestedResource ) );
         wagonMock.get( requestedResource, new File( expectedFile.getParentFile(), expectedFile.getName() + ".tmp" ) );
+        
+        wagonMockControl.setMatcher(customWagonGetMatcher);
+        
         wagonMockControl.setThrowable( new TransferFailedException( "can't connect" ) );
 
         wagonMockControl.replay();