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

svn commit: r633749 - in /maven/artifact/trunk/src: main/java/org/apache/maven/artifact/manager/ main/java/org/apache/maven/artifact/resolver/ test/java/org/apache/maven/artifact/resolver/

Author: jdcasey
Date: Tue Mar  4 18:16:20 2008
New Revision: 633749

URL: http://svn.apache.org/viewvc?rev=633749&view=rev
Log:
[MNG-3436] Disable updateInterval calculations for refreshing released artifacts; these artifacts are considered immutable, and shouldn't be updated by Maven.

Modified:
    maven/artifact/trunk/src/main/java/org/apache/maven/artifact/manager/DefaultUpdateCheckManager.java
    maven/artifact/trunk/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
    maven/artifact/trunk/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
    maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java
    maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/ArtifactUpdatePolicyTest.java

Modified: maven/artifact/trunk/src/main/java/org/apache/maven/artifact/manager/DefaultUpdateCheckManager.java
URL: http://svn.apache.org/viewvc/maven/artifact/trunk/src/main/java/org/apache/maven/artifact/manager/DefaultUpdateCheckManager.java?rev=633749&r1=633748&r2=633749&view=diff
==============================================================================
--- maven/artifact/trunk/src/main/java/org/apache/maven/artifact/manager/DefaultUpdateCheckManager.java (original)
+++ maven/artifact/trunk/src/main/java/org/apache/maven/artifact/manager/DefaultUpdateCheckManager.java Tue Mar  4 18:16:20 2008
@@ -15,6 +15,7 @@
 import java.io.RandomAccessFile;
 import java.nio.ByteBuffer;
 import java.nio.channels.FileChannel;
+import java.nio.channels.FileLock;
 import java.util.Date;
 import java.util.Properties;
 
@@ -40,6 +41,13 @@
 
     public boolean isUpdateRequired( Artifact artifact, ArtifactRepository repository )
     {
+        // TODO: Is there ever a reason why a release wouldn't be considered immutable?
+        // We probably don't need an updateInterval on the release policy in the POM.
+        if ( !artifact.isSnapshot() )
+        {
+            return false;
+        }
+
         ArtifactRepositoryPolicy policy = artifact.isSnapshot() ? repository.getSnapshots() : repository.getReleases();
 
         File file = artifact.getFile();
@@ -142,13 +150,13 @@
             }
 
             FileChannel channel = null;
-//            FileLock lock = null;
+            FileLock lock = null;
             try
             {
                 Properties props = new Properties();
 
                 channel = new RandomAccessFile( touchfile, "rw" ).getChannel();
-//                lock = channel.lock( 0, channel.size(), false );
+                lock = channel.lock( 0, channel.size(), false );
 
                 if ( touchfile.canRead() )
                 {
@@ -184,18 +192,18 @@
             }
             finally
             {
-//                if ( lock != null )
-//                {
-//                    try
-//                    {
-//                        lock.release();
-//                    }
-//                    catch ( IOException e )
-//                    {
-//                        getLogger().debug( "Error releasing exclusive lock for resolution tracking file: " +
-//                                               touchfile, e );
-//                    }
-//                }
+                if ( lock != null )
+                {
+                    try
+                    {
+                        lock.release();
+                    }
+                    catch ( IOException e )
+                    {
+                        getLogger().debug( "Error releasing exclusive lock for resolution tracking file: " +
+                                               touchfile, e );
+                    }
+                }
 
                 if ( channel != null )
                 {
@@ -226,7 +234,7 @@
 
             Date result = null;
             FileInputStream stream = null;
-//            FileLock lock = null;
+            FileLock lock = null;
             FileChannel channel = null;
             try
             {
@@ -234,7 +242,7 @@
 
                 stream = new FileInputStream( touchfile );
                 channel = stream.getChannel();
-//                lock = channel.lock( 0, channel.size(), true );
+                lock = channel.lock( 0, channel.size(), true );
 
                 getLogger().debug( "Reading resolution-state from: " + touchfile );
                 props.load( stream );
@@ -260,18 +268,18 @@
             }
             finally
             {
-//                if ( lock != null )
-//                {
-//                    try
-//                    {
-//                        lock.release();
-//                    }
-//                    catch ( IOException e )
-//                    {
-//                        getLogger().debug( "Error releasing shared lock for resolution tracking file: " +
-//                                               touchfile, e );
-//                    }
-//                }
+                if ( lock != null )
+                {
+                    try
+                    {
+                        lock.release();
+                    }
+                    catch ( IOException e )
+                    {
+                        getLogger().debug( "Error releasing shared lock for resolution tracking file: " +
+                                               touchfile, e );
+                    }
+                }
 
                 if ( channel != null )
                 {

Modified: maven/artifact/trunk/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
URL: http://svn.apache.org/viewvc/maven/artifact/trunk/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java?rev=633749&r1=633748&r2=633749&view=diff
==============================================================================
--- maven/artifact/trunk/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java (original)
+++ maven/artifact/trunk/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java Tue Mar  4 18:16:20 2008
@@ -19,15 +19,6 @@
  * under the License.
  */
 
-import java.io.File;
-import java.io.IOException;
-import java.security.NoSuchAlgorithmException;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.metadata.ArtifactMetadata;
 import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -67,12 +58,12 @@
 import java.io.File;
 import java.io.IOException;
 import java.security.NoSuchAlgorithmException;
+import java.text.MessageFormat;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.text.MessageFormat;
 
 /** @plexus.component */
 public class DefaultWagonManager
@@ -375,9 +366,9 @@
         }
     }
 
-    public void getArtifact( Artifact artifact, 
+    public void getArtifact( Artifact artifact,
                              ArtifactRepository repository )
-        throws TransferFailedException, 
+        throws TransferFailedException,
                ResourceDoesNotExistException
     {
         getArtifact( artifact, repository, true );
@@ -400,7 +391,7 @@
         {
             getLogger().debug( "Skipping blacklisted repository " + repository.getId() );
         }
-        else if ( force || updateCheckManager.isUpdateRequired( artifact, repository ) )
+        else if ( artifact.isSnapshot() && ( force || updateCheckManager.isUpdateRequired( artifact, repository ) ) )
         {
             getLogger().debug( "Trying repository " + repository.getId() );
 
@@ -417,6 +408,17 @@
 
             artifact.setResolved( true );
         }
+        // don't write touch-file for release artifacts.
+        else if ( !artifact.isSnapshot() )
+        {
+            getLogger().debug( "Trying repository " + repository.getId() );
+
+            getRemoteFile( repository, artifact.getFile(), remotePath, downloadMonitor, policy.getChecksumPolicy(), false );
+
+            getLogger().debug( "  Artifact resolved" );
+
+            artifact.setResolved( true );
+        }
     }
 
     public void getArtifactMetadata( ArtifactMetadata metadata,
@@ -802,7 +804,7 @@
 				    repository = new DefaultArtifactRepository( mirrorOf, url, null );
 					mirrors.put( mirrorOf, repository );
 				}
-			}			
+			}
         }
 
         return repository;

Modified: maven/artifact/trunk/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
URL: http://svn.apache.org/viewvc/maven/artifact/trunk/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java?rev=633749&r1=633748&r2=633749&view=diff
==============================================================================
--- maven/artifact/trunk/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java (original)
+++ maven/artifact/trunk/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java Tue Mar  4 18:16:20 2008
@@ -19,15 +19,6 @@
  * under the License.
  */
 
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.manager.WagonManager;
@@ -45,6 +36,15 @@
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.FileUtils;
 
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
 /**
  * @author Jason van Zyl
  * @plexus.component
@@ -167,7 +167,8 @@
                         artifact );
                 }
             }
-            else if ( !artifact.isSnapshot() || !localCopy || force )
+            else if ( force || !destination.exists()
+                      || ( artifact.isSnapshot() && !localCopy ) )
             {
                 try
                 {
@@ -186,7 +187,7 @@
                             remoteRepositories,
                             force );
                     }
-    
+
                     if ( !artifact.isResolved() && !destination.exists() )
                     {
                         throw new ArtifactResolutionException(
@@ -211,7 +212,7 @@
                         remoteRepositories,
                         e );
                 }
-    
+
                 resolved = true;
             }
 
@@ -257,7 +258,7 @@
         }
     }
 
-	private boolean isLocalCopy( Artifact artifact ) 
+	private boolean isLocalCopy( Artifact artifact )
 	{
 
 		boolean localCopy = false;

Modified: maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java
URL: http://svn.apache.org/viewvc/maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java?rev=633749&r1=633748&r2=633749&view=diff
==============================================================================
--- maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java (original)
+++ maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java Tue Mar  4 18:16:20 2008
@@ -81,7 +81,7 @@
     public void testResolutionOfASingleArtifactWhereTheArtifactIsNotPresentLocallyAndMustBeRetrievedFromTheRemoteRepository()
         throws Exception
     {
-        Artifact b = createRemoteArtifact( "b", "1.0" );
+        Artifact b = createRemoteArtifact( "b", "1.0-SNAPSHOT" );
         deleteLocalArtifact( b );
 
         artifactResolver.resolve( b, remoteRepositories(), localRepository() );
@@ -154,10 +154,10 @@
     public void testTransitiveResolutionWhereAllArtifactsAreNotPresentInTheLocalRepositoryAndMustBeRetrievedFromTheRemoteRepository()
         throws Exception
     {
-        Artifact i = createRemoteArtifact( "i", "1.0" );
+        Artifact i = createRemoteArtifact( "i", "1.0-SNAPSHOT" );
         deleteLocalArtifact( i );
 
-        Artifact j = createRemoteArtifact( "j", "1.0" );
+        Artifact j = createRemoteArtifact( "j", "1.0-SNAPSHOT" );
         deleteLocalArtifact( j );
 
         ArtifactMetadataSource mds = new ArtifactMetadataSource()
@@ -173,7 +173,7 @@
                     Artifact a = null;
                     try
                     {
-                        a = createArtifact( "org.apache.maven", "j", "1.0", "jar" );
+                        a = createArtifact( "org.apache.maven", "j", "1.0-SNAPSHOT", "jar" );
                         dependencies.add( a );
                     }
                     catch ( Exception e )
@@ -226,7 +226,7 @@
     public void testResolutionOfAnArtifactWhereOneRemoteRepositoryIsBadButOneIsGood()
         throws Exception
     {
-        Artifact l = createRemoteArtifact( "l", "1.0" );
+        Artifact l = createRemoteArtifact( "l", "1.0-SNAPSHOT" );
         deleteLocalArtifact( l );
 
         List repositories = new ArrayList();

Modified: maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/ArtifactUpdatePolicyTest.java
URL: http://svn.apache.org/viewvc/maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/ArtifactUpdatePolicyTest.java?rev=633749&r1=633748&r2=633749&view=diff
==============================================================================
--- maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/ArtifactUpdatePolicyTest.java (original)
+++ maven/artifact/trunk/src/test/java/org/apache/maven/artifact/resolver/ArtifactUpdatePolicyTest.java Tue Mar  4 18:16:20 2008
@@ -19,10 +19,6 @@
  * under the License.
  */
 
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
 import org.apache.maven.artifact.AbstractArtifactComponentTestCase;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.manager.WagonManager;
@@ -36,12 +32,16 @@
 import org.apache.maven.artifact.repository.metadata.Versioning;
 import org.codehaus.plexus.util.FileUtils;
 
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
 public class ArtifactUpdatePolicyTest
     extends AbstractArtifactComponentTestCase
 {
 
     private static final long TWO_SECONDS = 2 * 1000L;
-    
+
     private static final long TWO_DAYS = 2 * 86400L * 1000L;
 
     private ArtifactResolver artifactResolver;
@@ -56,11 +56,13 @@
 
     private DefaultArtifactRepository remoteRepository;
 
+    @Override
     protected String component()
     {
         return "artifact-update-policy";
     }
 
+    @Override
     protected void setUp()
         throws Exception
     {
@@ -83,6 +85,7 @@
         FileUtils.deleteDirectory( new File( localRepository.getBasedir() ) );
     }
 
+    @Override
     protected void tearDown()
         throws Exception
     {
@@ -132,7 +135,7 @@
         metadata.setVersioning( versioning );
         snapshotMetadata.setMetadata( metadata );
         a.addMetadata( snapshotMetadata );
-        
+
         return a;
     }
 
@@ -143,10 +146,10 @@
 
         artifactResolver.resolveAlways( a, remoteRepositories, localRepository );
 
-        assertTransfers( new String[] { 
+        assertTransfers( new String[] {
             "get org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar",
             "getTransfer org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar",
-            "get org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar.sha1", 
+            "get org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar.sha1",
             "get org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar.md5" } );
     }
 
@@ -157,7 +160,7 @@
 
         artifactResolver.resolveAlways( a, remoteRepositories, localRepository );
 
-        assertTransfers( new String[] { 
+        assertTransfers( new String[] {
             "getIfNewer org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar" } );
     }
 
@@ -169,10 +172,10 @@
 
         artifactResolver.resolveAlways( a, remoteRepositories, localRepository );
 
-        assertTransfers( new String[] { 
+        assertTransfers( new String[] {
             "getIfNewer org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar",
             "getTransfer org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar",
-            "get org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar.sha1", 
+            "get org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar.sha1",
             "get org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar.md5" } );
     }
 
@@ -200,10 +203,10 @@
             // expected
         }
 
-        assertTransfers( new String[] { 
+        assertTransfers( new String[] {
             "get org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar",
             "get org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar" } );
-        
+
     }
 
     public void testSnapshotUpdate() throws Exception
@@ -214,10 +217,10 @@
 
         artifactResolver.resolve( a, remoteRepositories, localRepository );
 
-        assertTransfers( new String[] { 
+        assertTransfers( new String[] {
             "getIfNewer org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar",
             "getTransfer org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar",
-            "get org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar.sha1", 
+            "get org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar.sha1",
             "get org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar.md5" } );
     }
 
@@ -231,7 +234,7 @@
 
         artifactResolver.resolve( a, remoteRepositories, localRepository );
 
-        assertTransfers( new String[] { 
+        assertTransfers( new String[] {
             "getIfNewer org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar" } );
     }
 
@@ -269,10 +272,10 @@
 
         artifactResolver.resolveAlways( a, remoteRepositories, localRepository );
 
-        assertTransfers( new String[] { 
+        assertTransfers( new String[] {
             "getIfNewer org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar",
             "getTransfer org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar",
-            "get org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar.sha1", 
+            "get org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar.sha1",
             "get org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar.md5" } );
     }
 
@@ -308,7 +311,7 @@
             // expected
         }
 
-        assertTransfers( new String[] { 
+        assertTransfers( new String[] {
             "get org.apache.maven/jars/o-0.0.1-SNAPSHOT.jar" } );
     }
 
@@ -332,22 +335,6 @@
         assertTrue( j.getFile().canRead() );
     }
 
-    public void testReleaseUpdate()
-        throws Exception
-    {
-        Artifact a = createRemoteArtifact( "o", "1.0.1" );
-        createArtifact( a, localRepository );
-        setLastModified( a, System.currentTimeMillis() - TWO_DAYS, localRepository );
-
-        artifactResolver.resolve( a, remoteRepositories, localRepository );
-
-        assertTransfers( new String[] { 
-            "getIfNewer org.apache.maven/jars/o-1.0.1.jar",
-            "getTransfer org.apache.maven/jars/o-1.0.1.jar",
-            "get org.apache.maven/jars/o-1.0.1.jar.sha1", 
-            "get org.apache.maven/jars/o-1.0.1.jar.md5" } );
-    }
-
     public void testResolveExistingLocalArtifactInOfflineMode()
         throws Exception
     {
@@ -382,7 +369,7 @@
         String path = "target/test-classes/repositories/" + component() + "/" + name;
 
         File f = new File( getBasedir(), path );
-        
+
         FileUtils.deleteDirectory( f );
 
         ArtifactRepositoryLayout repoLayout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE,