Author: brett
Date: Fri Jul 18 01:16:24 2008
New Revision: 677852
URL: http://svn.apache.org/viewvc?rev=677852&view=rev
Log:
[MRM-876] don't grab the remote file if it exists in the managed repository
Added:
archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.asc
archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.asc
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/maven/archiva/policies/ChecksumPolicy.java
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/ManagedDefaultTransferTest.java
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/maven/archiva/policies/ChecksumPolicy.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/maven/archiva/policies/ChecksumPolicy.java?rev=677852&r1=677851&r2=677852&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/maven/archiva/policies/ChecksumPolicy.java
(original)
+++
archiva/trunk/archiva-modules/archiva-base/archiva-policies/src/main/java/org/apache/maven/archiva/policies/ChecksumPolicy.java
Fri Jul 18 01:16:24 2008
@@ -80,6 +80,11 @@
public void applyPolicy( String policySetting, Properties request, File
localFile )
throws PolicyViolationException, PolicyConfigurationException
{
+ if ( "resource".equals( request.getProperty( "filetype" ) ) )
+ {
+ return;
+ }
+
if ( !options.contains( policySetting ) )
{
// Not a valid code.
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=677852&r1=677851&r2=677852&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
Fri Jul 18 01:16:24 2008
@@ -160,7 +160,8 @@
try
{
File downloadedFile =
- transferFile( connector, targetRepository, targetPath,
repository, localFile, requestProperties );
+ transferFile( connector, targetRepository, targetPath,
repository, localFile, requestProperties,
+ true );
if ( fileExists( downloadedFile ) )
{
@@ -199,6 +200,12 @@
public File fetchFromProxies( ManagedRepositoryContent repository, String
path )
{
File localFile = new File( repository.getRepoRoot(), path );
+
+ // no update policies for these paths
+ if ( localFile.exists() )
+ {
+ return null;
+ }
Properties requestProperties = new Properties();
requestProperties.setProperty( "filetype", "resource" );
@@ -215,7 +222,8 @@
try
{
File downloadedFile =
- transferFile( connector, targetRepository, targetPath,
repository, localFile, requestProperties );
+ transferFile( connector, targetRepository, targetPath,
repository, localFile, requestProperties,
+ false );
if ( fileExists( downloadedFile ) )
{
@@ -266,7 +274,8 @@
try
{
- transferFile( connector, targetRepository, targetPath,
repository, localRepoFile, requestProperties );
+ transferFile( connector, targetRepository, targetPath,
repository, localRepoFile, requestProperties,
+ true );
if ( hasBeenUpdated( localRepoFile, originalMetadataTimestamp
) )
{
@@ -378,7 +387,8 @@
long originalMetadataTimestamp = getLastModified( localRepoFile );
try
{
- transferFile( connector, targetRepository, targetPath,
repository, localRepoFile, requestProperties );
+ transferFile( connector, targetRepository, targetPath,
repository, localRepoFile, requestProperties,
+ true );
if ( hasBeenUpdated( localRepoFile, originalMetadataTimestamp
) )
{
@@ -520,6 +530,7 @@
* @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.
+ * @param executeConsumers whether to execute the consumers after proxying
* @return the local file that was downloaded, or null if not downloaded.
* @throws NotFoundException if the file was not found on the remote
repository.
* @throws NotModifiedException if the localFile was present, and the
resource was present on remote repository,
@@ -527,7 +538,8 @@
* @throws ProxyException if transfer was unsuccessful.
*/
private File transferFile( ProxyConnector connector,
RemoteRepositoryContent remoteRepository, String remotePath,
- ManagedRepositoryContent repository, File
localFile, Properties requestProperties )
+ ManagedRepositoryContent repository, File
localFile, Properties requestProperties,
+ boolean executeConsumers )
throws ProxyException, NotModifiedException
{
String url = remoteRepository.getURL().getUrl();
@@ -593,6 +605,8 @@
{
localFile = transferSimpleFile( wagon, remoteRepository,
remotePath, repository, localFile );
+ // TODO: these should be used to validate the download based
on the policies, not always downloaded to
+ // save on connections since md5 is rarely used
transferChecksum( wagon, remoteRepository, remotePath,
repository, localFile, ".sha1" );
transferChecksum( wagon, remoteRepository, remotePath,
repository, localFile, ".md5" );
}
@@ -643,8 +657,11 @@
return null;
}
- // Just-in-time update of the index and database by executing the
consumers for this artifact
- consumers.executeConsumers(
connector.getSourceRepository().getRepository(), localFile );
+ if ( executeConsumers )
+ {
+ // Just-in-time update of the index and database by executing the
consumers for this artifact
+ consumers.executeConsumers(
connector.getSourceRepository().getRepository(), localFile );
+ }
// Everything passes.
return localFile;
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=677852&r1=677851&r2=677852&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
Fri Jul 18 01:16:24 2008
@@ -84,6 +84,9 @@
File sourceFile = new File( REPOPATH_PROXIED1, path );
assertFileEquals( expectedFile, downloadedFile, sourceFile );
+ assertFalse( new File( downloadedFile.getParentFile(),
downloadedFile.getName() + ".sha1" ).exists() );
+ assertFalse( new File( downloadedFile.getParentFile(),
downloadedFile.getName() + ".md5" ).exists() );
+ assertFalse( new File( downloadedFile.getParentFile(),
downloadedFile.getName() + ".asc" ).exists() );
assertNoTempFiles( expectedFile );
}
@@ -118,6 +121,40 @@
}
/**
+ * The attempt here should result in no file being transferred.
+ * <p/>
+ * The file exists locally, and the policy is ONCE.
+ *
+ * @throws Exception
+ */
+ public void testGetDefaultLayoutAlreadyPresentPassthrough()
+ throws Exception
+ {
+ String path =
"org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.asc";
+ setupTestableManagedRepository( path );
+
+ File expectedFile = new File( managedDefaultDir, path );
+ File remoteFile = new File( REPOPATH_PROXIED1, path );
+
+ assertTrue( expectedFile.exists() );
+
+ // Set the managed File to be newer than local.
+ setManagedOlderThanRemote( expectedFile, remoteFile );
+ long originalModificationTime = expectedFile.lastModified();
+
+ // Configure Connector (usually done within archiva.xml configuration)
+ saveConnector( ID_DEFAULT_MANAGED, ID_PROXIED1, ChecksumPolicy.FIX,
ReleasesPolicy.ONCE, SnapshotsPolicy.ONCE,
+ CachedFailuresPolicy.NO );
+
+ // Attempt the proxy fetch.
+ File downloadedFile = proxyHandler.fetchFromProxies(
managedDefaultRepository, path );
+
+ assertNotDownloaded( downloadedFile );
+ assertNotModified( expectedFile, originalModificationTime );
+ assertNoTempFiles( expectedFile );
+ }
+
+ /**
* <p>
* Request a file, that exists locally, and remotely.
* </p>
Added:
archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.asc
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.asc?rev=677852&view=auto
==============================================================================
---
archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.asc
(added)
+++
archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/repositories/managed/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.asc
Fri Jul 18 01:16:24 2008
@@ -0,0 +1,7 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.8 (Darwin)
+
+iEYEABECAAYFAkiAQxIACgkQTusOMqfRa9T2xACfcvI2fjAXoAHGwJm0zXPJ2rWW
+OPoAn23dSOEJhyNUY2hgUlH2wSQiADeP
+=ZOwh
+-----END PGP SIGNATURE-----
Added:
archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.asc
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.asc?rev=677852&view=auto
==============================================================================
---
archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.asc
(added)
+++
archiva/trunk/archiva-modules/archiva-base/archiva-proxy/src/test/repositories/proxied1/org/apache/maven/test/get-default-layout-present/1.0/get-default-layout-present-1.0.jar.asc
Fri Jul 18 01:16:24 2008
@@ -0,0 +1 @@
+THIS IS THE WRONG CONTENT!