]> source.dussan.org Git - archiva.git/commitdiff
MRM-869
authorNicolas De Loof <nicolas@apache.org>
Wed, 9 Jul 2008 14:00:22 +0000 (14:00 +0000)
committerNicolas De Loof <nicolas@apache.org>
Wed, 9 Jul 2008 14:00:22 +0000 (14:00 +0000)
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@675174 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java
archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AbstractProxyTestCase.java
archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/CacheFailuresTransferTest.java
archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ErrorHandlingTest.java

index 398734973a0407fc029428f810d5eef46cf71fc2..c2937fe3eeb1a8c79507942d346b111fe3e91f6c 100644 (file)
@@ -88,7 +88,7 @@ public class DefaultRepositoryProxyConnectors
     implements RepositoryProxyConnectors, RegistryListener, Initializable
 {
     private Logger log = LoggerFactory.getLogger( DefaultRepositoryProxyConnectors.class );
-    
+
     /**
      * @plexus.requirement
      */
@@ -169,7 +169,7 @@ public class DefaultRepositoryProxyConnectors
             try
             {
                 File downloadedFile =
-                    transferFile( connector, targetRepository, targetPath, localFile, requestProperties );
+                    transferFile( connector, targetRepository, targetPath, repository, localFile, requestProperties );
 
                 if ( fileExists( downloadedFile ) )
                 {
@@ -230,7 +230,7 @@ public class DefaultRepositoryProxyConnectors
 
             try
             {
-                transferFile( connector, targetRepository, targetPath, localRepoFile, requestProperties );
+                transferFile( connector, targetRepository, targetPath, repository, localRepoFile, requestProperties );
 
                 if ( hasBeenUpdated( localRepoFile, originalMetadataTimestamp ) )
                 {
@@ -348,7 +348,7 @@ public class DefaultRepositoryProxyConnectors
             long originalMetadataTimestamp = getLastModified( localRepoFile );
             try
             {
-                transferFile( connector, targetRepository, targetPath, localRepoFile, requestProperties );
+                transferFile( connector, targetRepository, targetPath, repository, localRepoFile, requestProperties );
 
                 if ( hasBeenUpdated( localRepoFile, originalMetadataTimestamp ) )
                 {
@@ -487,6 +487,7 @@ public class DefaultRepositoryProxyConnectors
      * @param connector         the connector configuration to use.
      * @param remoteRepository  the remote repository get the resource from.
      * @param remotePath        the path in the remote repository to the resource to get.
+     * @param repository        the managed repository that will hold the file
      * @param localFile         the local file to place the downloaded resource into
      * @param requestProperties the request properties to utilize for policy handling.
      * @return the local file that was downloaded, or null if not downloaded.
@@ -496,7 +497,7 @@ public class DefaultRepositoryProxyConnectors
      * @throws ProxyException       if transfer was unsuccessful.
      */
     private File transferFile( ProxyConnector connector, RemoteRepositoryContent remoteRepository, String remotePath,
-                               File localFile, Properties requestProperties )
+                               ManagedRepositoryContent repository, File localFile, Properties requestProperties )
         throws ProxyException, NotModifiedException
     {
         String url = remoteRepository.getURL().getUrl();
@@ -560,10 +561,10 @@ public class DefaultRepositoryProxyConnectors
             boolean connected = connectToRepository( connector, wagon, remoteRepository );
             if ( connected )
             {
-                localFile = transferSimpleFile( wagon, remoteRepository, remotePath, localFile );
+                localFile = transferSimpleFile( wagon, remoteRepository, remotePath, repository, localFile );
 
-                transferChecksum( wagon, remoteRepository, remotePath, localFile, ".sha1" );
-                transferChecksum( wagon, remoteRepository, remotePath, localFile, ".md5" );
+                transferChecksum( wagon, remoteRepository, remotePath, repository, localFile, ".sha1" );
+                transferChecksum( wagon, remoteRepository, remotePath, repository, localFile, ".md5" );
             }
         }
         catch ( NotFoundException e )
@@ -627,12 +628,13 @@ public class DefaultRepositoryProxyConnectors
      * @param wagon            the wagon instance (should already be connected) to use.
      * @param remoteRepository the remote repository to transfer from.
      * @param remotePath       the remote path to the resource to get.
+     * @param repository       the managed repository that will hold the file
      * @param localFile        the local file that should contain the downloaded contents
      * @param type             the type of checksum to transfer (example: ".md5" or ".sha1")
      * @throws ProxyException if copying the downloaded file into place did not succeed.
      */
     private void transferChecksum( Wagon wagon, RemoteRepositoryContent remoteRepository, String remotePath,
-                                   File localFile, String type )
+                                   ManagedRepositoryContent repository, File localFile, String type )
         throws ProxyException
     {
         String url = remoteRepository.getURL().getUrl() + remotePath;
@@ -646,7 +648,7 @@ public class DefaultRepositoryProxyConnectors
         try
         {
             File hashFile = new File( localFile.getAbsolutePath() + type );
-            transferSimpleFile( wagon, remoteRepository, remotePath + type, hashFile );
+            transferSimpleFile( wagon, remoteRepository, remotePath + type, repository, hashFile );
             log.debug( "Checksum" + type + " Downloaded: " + hashFile );
         }
         catch ( NotFoundException e )
@@ -675,13 +677,14 @@ public class DefaultRepositoryProxyConnectors
      * @param wagon            the wagon instance to use.
      * @param remoteRepository the remote repository to use
      * @param remotePath       the remote path to attempt to get
+     * @param repository       the managed repository that will hold the file
      * @param localFile        the local file to save to
      * @return The local file that was transfered.
      * @throws ProxyException if there was a problem moving the downloaded file into place.
      * @throws WagonException if there was a problem tranfering the file.
      */
     private File transferSimpleFile( Wagon wagon, RemoteRepositoryContent remoteRepository, String remotePath,
-                                     File localFile )
+                                     ManagedRepositoryContent repository, File localFile )
         throws ProxyException
     {
         assert ( remotePath != null );
@@ -691,9 +694,8 @@ public class DefaultRepositoryProxyConnectors
 
         try
         {
-            localFile.getParentFile().mkdirs();
-            temp = File.createTempFile(localFile.getName() + ".", null, localFile.getParentFile());
-            
+            temp = File.createTempFile(localFile.getName() + ".", null, new File( repository.getRepoRoot() ));
+
             boolean success = false;
 
             if ( !localFile.exists() )
@@ -849,6 +851,7 @@ public class DefaultRepositoryProxyConnectors
             throw new ProxyException( "Unable to overwrite existing target file: " + target.getAbsolutePath() );
         }
 
+        target.getParentFile().mkdirs();
         if ( !temp.renameTo( target ) )
         {
             log.warn( "Unable to rename tmp file to its final name... resorting to copy command." );
@@ -1004,15 +1007,15 @@ public class DefaultRepositoryProxyConnectors
     {
         /* do nothing */
     }
-    
+
     private void logProcess( String managedRepoId, String resource, String event )
     {
-        
+
     }
-    
+
     private void logRejection( String managedRepoId, String remoteRepoId, String resource, String reason )
     {
-        
+
     }
 
     private void initConnectorsAndNetworkProxies()
index db4a91dc27450860e5102befd4298711ba8ed77f..e71ea65b011b2ca94cf7bd02f6430e5c35592606 100644 (file)
@@ -88,7 +88,7 @@ public abstract class AbstractProxyTestCase
     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) {
@@ -103,10 +103,10 @@ public abstract class AbstractProxyTestCase
             return ArrayUtils.toString(arguments);
         }
     };
-    
+
     protected static final ArgumentsMatcher customWagonGetMatcher = new ArgumentsMatcher() {
 
-            public boolean matches(Object[] expected, Object[] actual) 
+            public boolean matches(Object[] expected, Object[] actual)
             {
                 if (expected.length == 2 && actual.length == 2)
                 {
@@ -114,23 +114,23 @@ public abstract class AbstractProxyTestCase
                     {
                         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) 
+            public String toString(Object[] arguments)
             {
                 return ArrayUtils.toString(arguments);
             }
@@ -540,6 +540,9 @@ public abstract class AbstractProxyTestCase
             FileUtils.deleteDirectory( destDir );
         }
 
+        // Make the destination dir.
+        destDir.mkdirs();
+
         // Test the source dir.
         if ( !sourceDir.exists() )
         {
@@ -555,9 +558,6 @@ public abstract class AbstractProxyTestCase
             fail( "Unable to setup testable managed repository, source is not a directory: " + sourceDir );
         }
 
-        // Make the destination dir.
-        destDir.mkdirs();
-
         // Copy directory structure.
         copyDirectoryStructure( sourceDir, destDir );
     }
index 70aec32fc0766ed88182319e74b93b6d5545b1b8..119211d6c675ec8795ffd3d98d668c8e2677122c 100644 (file)
@@ -63,11 +63,11 @@ public class CacheFailuresTransferTest
                        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();
@@ -75,11 +75,11 @@ public class CacheFailuresTransferTest
         File downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
 
         wagonMockControl.verify();
-        
-               // Second attempt to download same artifact use cache
+
+        // Second attempt to download same artifact use cache
         wagonMockControl.reset();
         wagonMockControl.replay();
-               downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
+        downloadedFile = proxyHandler.fetchFromProxies( managedDefaultRepository, artifact );
         wagonMockControl.verify();
 
         assertNotDownloaded( downloadedFile );
@@ -108,7 +108,7 @@ public class CacheFailuresTransferTest
                        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 );
 
@@ -118,15 +118,15 @@ public class CacheFailuresTransferTest
 
         wagonMockControl.verify();
 
-               // Second attempt to download same artifact DOES NOT use cache
+        // 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();
 
@@ -138,6 +138,7 @@ public class CacheFailuresTransferTest
         throws Exception
     {
         String path = "org/apache/maven/test/get-in-second-proxy/1.0/get-in-second-proxy-1.0.jar";
+        setupTestableManagedRepository( path );
         File expectedFile = new File( managedDefaultDir, path );
         ArtifactReference artifact = managedDefaultRepository.toArtifactReference( path );
 
index c0c60a720b1d00fcf8cb06dc1ab9052ef330e66a..4b96766c7f05e5934af057c0805b19ce17c0e056 100644 (file)
@@ -551,7 +551,7 @@ public class ErrorHandlingTest
 
     private File createExpectedTempFile( File expectedFile )
     {
-        return new File( expectedFile.getParentFile(), expectedFile.getName() + ".tmp" ).getAbsoluteFile();
+        return new File( managedDefaultDir, expectedFile.getName() + ".tmp" ).getAbsoluteFile();
     }
 
     private void confirmSingleFailure( String path, String id )