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!


Reply via email to