From: Nicolas De Loof Date: Wed, 9 Jul 2008 14:00:22 +0000 (+0000) Subject: MRM-869 X-Git-Tag: archiva-1.1^2~14 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=15b6ddae0ba7e3feb160982a264fdad985648147;p=archiva.git MRM-869 git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@675174 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java b/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java index 398734973..c2937fe3e 100644 --- a/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java +++ b/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java @@ -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() diff --git a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AbstractProxyTestCase.java b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AbstractProxyTestCase.java index db4a91dc2..e71ea65b0 100644 --- a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AbstractProxyTestCase.java +++ b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/AbstractProxyTestCase.java @@ -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 ); } diff --git a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/CacheFailuresTransferTest.java b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/CacheFailuresTransferTest.java index 70aec32fc..119211d6c 100644 --- a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/CacheFailuresTransferTest.java +++ b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/CacheFailuresTransferTest.java @@ -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 ); diff --git a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ErrorHandlingTest.java b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ErrorHandlingTest.java index c0c60a720..4b96766c7 100644 --- a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ErrorHandlingTest.java +++ b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/maven/archiva/proxy/ErrorHandlingTest.java @@ -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 )