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,