You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by oc...@apache.org on 2009/06/26 07:40:24 UTC
svn commit: r788583 - in
/maven/components/branches/maven-2.1.x/maven-artifact-manager/src:
main/java/org/apache/maven/artifact/resolver/
test/java/org/apache/maven/artifact/
test/java/org/apache/maven/artifact/resolver/
Author: oching
Date: Fri Jun 26 05:40:24 2009
New Revision: 788583
URL: http://svn.apache.org/viewvc?rev=788583&view=rev
Log:
[MNG-4189]
o compare the file's timestamp and size instead of using the resolved flag when resolving snapshots (fix by Benjamin Bentmann)
o added unit test
Modified:
maven/components/branches/maven-2.1.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
maven/components/branches/maven-2.1.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java
maven/components/branches/maven-2.1.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java
Modified: maven/components/branches/maven-2.1.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java?rev=788583&r1=788582&r2=788583&view=diff
==============================================================================
--- maven/components/branches/maven-2.1.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java (original)
+++ maven/components/branches/maven-2.1.x/maven-artifact-manager/src/main/java/org/apache/maven/artifact/resolver/DefaultArtifactResolver.java Fri Jun 26 05:40:24 2009
@@ -195,7 +195,7 @@
force = true;
}
}
- boolean resolved = false;
+
if ( !destination.exists() || force )
{
if ( !wagonManager.isOnline() )
@@ -233,8 +233,6 @@
throw new ArtifactResolutionException( e.getMessage(), artifact,
getMirroredRepositories( remoteRepositories ), e );
}
-
- resolved = true;
}
else if ( destination.exists() )
{
@@ -247,12 +245,14 @@
String version = artifact.getVersion();
artifact.selectVersion( artifact.getBaseVersion() );
File copy = new File( localRepository.getBasedir(), localRepository.pathOf( artifact ) );
- if ( resolved || !copy.exists() )
+ if ( !copy.exists() || copy.lastModified() != destination.lastModified()
+ || copy.length() != destination.length() )
{
// recopy file if it was reresolved, or doesn't exist.
try
{
FileUtils.copyFile( destination, copy );
+ copy.setLastModified( destination.lastModified() );
}
catch ( IOException e )
{
Modified: maven/components/branches/maven-2.1.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java?rev=788583&r1=788582&r2=788583&view=diff
==============================================================================
--- maven/components/branches/maven-2.1.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java (original)
+++ maven/components/branches/maven-2.1.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/AbstractArtifactComponentTestCase.java Fri Jun 26 05:40:24 2009
@@ -182,12 +182,12 @@
// Test artifact generation for unit tests
// ----------------------------------------------------------------------
- protected Artifact createLocalArtifact( String artifactId, String version )
+ protected Artifact createLocalArtifact( String artifactId, String version, String content )
throws Exception
{
Artifact artifact = createArtifact( artifactId, version );
- createArtifact( artifact, localRepository() );
+ createArtifact( artifact, localRepository(), content );
return artifact;
}
@@ -197,7 +197,7 @@
{
Artifact artifact = createArtifact( artifactId, version );
- createArtifact( artifact, remoteRepository() );
+ createArtifact( artifact, remoteRepository(), null );
return artifact;
}
@@ -205,16 +205,16 @@
protected void createLocalArtifact( Artifact artifact )
throws Exception
{
- createArtifact( artifact, localRepository() );
+ createArtifact( artifact, localRepository(), null );
}
protected void createRemoteArtifact( Artifact artifact )
throws Exception
{
- createArtifact( artifact, remoteRepository() );
+ createArtifact( artifact, remoteRepository(), null );
}
- protected void createArtifact( Artifact artifact, ArtifactRepository repository )
+ protected void createArtifact( Artifact artifact, ArtifactRepository repository, String content )
throws Exception
{
String path = repository.pathOf( artifact );
@@ -228,9 +228,20 @@
Writer writer = new FileWriter( artifactFile );
- writer.write( artifact.getId() );
+ if( content == null )
+ {
+ writer.write( artifact.getId() );
+ }
+ else
+ {
+ writer.write( content );
+ }
writer.close();
+
+ artifactFile = new File( repository.getBasedir(), path );
+
+ artifact.setFile( artifactFile );
}
protected Artifact createArtifact( String artifactId, String version )
Modified: maven/components/branches/maven-2.1.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.1.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java?rev=788583&r1=788582&r2=788583&view=diff
==============================================================================
--- maven/components/branches/maven-2.1.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java (original)
+++ maven/components/branches/maven-2.1.x/maven-artifact-manager/src/test/java/org/apache/maven/artifact/resolver/ArtifactResolverTest.java Fri Jun 26 05:40:24 2009
@@ -86,7 +86,7 @@
artifactResolver = (ArtifactResolver) lookup( ArtifactResolver.ROLE );
- projectArtifact = createLocalArtifact( "project", "3.0" );
+ projectArtifact = createLocalArtifact( "project", "3.0", null );
}
protected String component()
@@ -97,7 +97,7 @@
public void testResolutionOfASingleArtifactWhereTheArtifactIsPresentInTheLocalRepository()
throws Exception
{
- Artifact a = createLocalArtifact( "a", "1.0" );
+ Artifact a = createLocalArtifact( "a", "1.0", null );
artifactResolver.resolve( a, remoteRepositories(), localRepository() );
@@ -125,9 +125,9 @@
public void testTransitiveResolutionWhereAllArtifactsArePresentInTheLocalRepository()
throws Exception
{
- Artifact g = createLocalArtifact( "g", "1.0" );
+ Artifact g = createLocalArtifact( "g", "1.0", null );
- Artifact h = createLocalArtifact( "h", "1.0" );
+ Artifact h = createLocalArtifact( "h", "1.0", null );
ArtifactMetadataSource mds = new ArtifactMetadataSourceImplementation()
{
@@ -416,5 +416,49 @@
control.verify();
}
+
+ public void testResolveOlderSpecificSnapshotVersionWhenNewerVersionAlreadyExistsAndBothAreInLocalRepository()
+ throws Exception
+ {
+ Artifact g1 = createLocalArtifact( "g", "1.0-20090608.090416-1", "Write something to make file length longer" );
+
+ long expectedFileLength = g1.getFile().length();
+
+ Artifact g3 = createLocalArtifact( "g", "1.0-SNAPSHOT", null );
+
+ long incorrectFileLength = g3.getFile().length();
+
+ ArtifactMetadataSource mds = new ArtifactMetadataSourceImplementation()
+ {
+ public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository localRepository,
+ List remoteRepositories )
+ throws ArtifactMetadataRetrievalException
+ {
+ Set dependencies = new LinkedHashSet();
+
+ return new ResolutionGroup( artifact, dependencies, remoteRepositories );
+ }
+ };
+
+ ArtifactResolutionResult result = artifactResolver.resolveTransitively( Collections.singleton( g1 ),
+ projectArtifact, remoteRepositories(),
+ localRepository(), mds );
+
+ assertEquals( 1, result.getArtifacts().size() );
+
+ assertTrue( result.getArtifacts().contains( g1 ) );
+
+ assertFalse( result.getArtifacts().contains( g3 ) );
+
+ Artifact artifact = ( (Artifact) result.getArtifacts().iterator().next() );
+
+ assertEquals( expectedFileLength, artifact.getFile().length() );
+
+ assertFalse( "Incorrect artifact file resolved", incorrectFileLength == artifact.getFile().length() );
+
+ assertLocalArtifactPresent( g1 );
+
+ assertLocalArtifactPresent( g3 );
+ }
}