You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by jd...@apache.org on 2005/09/21 22:01:43 UTC
svn commit: r290815 - in
/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact:
repository/metadata/DefaultRepositoryMetadataManager.java
transform/AbstractVersionTransformation.java
Author: jdcasey
Date: Wed Sep 21 13:01:41 2005
New Revision: 290815
URL: http://svn.apache.org/viewcvs?rev=290815&view=rev
Log:
Resolving: MNG-900
Applied Hiram's patch, with small formatting changes, and a relocation of the logic setting the artifact repository to null (it was being done on the condition that getLogger().isDebugEnabled() == true, just a minor oversight).
There may be a deeper issue here with missing metadata on all repositories...I've annotated what I believe is the root causebut I'm not sure how to fix it, or that it should be fixed.
Modified:
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java?rev=290815&r1=290814&r2=290815&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/repository/metadata/DefaultRepositoryMetadataManager.java Wed Sep 21 13:01:41 2005
@@ -89,6 +89,12 @@
}
else
{
+ // NOTE: [jc; 21-sept-2005] won't this cause inconsistencies if the metadata wasn't found?
+ // this will write out an essentially empty metadata file, which will result
+ // in the loop below NOT merging anything (each successive pass is still empty),
+ // which means that the last repository will be set as the artifact repo, rather
+ // than leaving it null. This is the root cause of MNG-900, but I'm not sure how
+ // to fix it.
metadata.storeInLocalRepository( localRepository, repository );
}
}
Modified: maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java?rev=290815&r1=290814&r2=290815&view=diff
==============================================================================
--- maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java (original)
+++ maven/components/trunk/maven-artifact-manager/src/main/java/org/apache/maven/artifact/transform/AbstractVersionTransformation.java Wed Sep 21 13:01:41 2005
@@ -109,9 +109,17 @@
else
{
// Locally installed file is newer, don't use the resolved version
- getLogger().debug( artifact.getArtifactId() + ": using locally installed snapshot" );
+ getLogger().debug( artifact.getArtifactId() + ": using locally installed snapshot");
}
}
+
+ if ( version.equals( artifact.getBaseVersion() ) )
+ {
+ // odd: we hit here when: using legecy repo, not local, and no snapshot version meta data was availble
+ // but the repository was set to one of the remote repos (and it was the wrong one).
+ artifact.setRepository( null );
+ }
+
return version;
}
@@ -138,6 +146,10 @@
throw new ArtifactMetadataRetrievalException( "Error reading local metadata", e );
}
}
+ else
+ {
+ localMetadata = null;
+ }
boolean alreadyResolved = alreadyResolved( artifact );
if ( !alreadyResolved )
@@ -157,7 +169,8 @@
}
else
{
- boolean checkForUpdates = policy.checkOutOfDate( localMetadata.getLastModified() );
+ boolean checkForUpdates = localMetadata == null
+ || policy.checkOutOfDate( localMetadata.getLastModified() );
if ( checkForUpdates )
{
@@ -174,13 +187,12 @@
getLogger().warn( "Using old-style versioning metadata from remote repo for " + artifact );
- int difference = remoteMetadata.compareTo( localMetadata );
- if ( difference > 0 )
+ if ( localMetadata == null || remoteMetadata.compareTo( localMetadata ) > 0 )
{
// remote is newer
artifact.setRepository( repository );
-
localMetadata = remoteMetadata;
+ getLogger().debug( "Found repository for the artifact." );
}
}
catch ( ResourceDoesNotExistException e )
@@ -204,7 +216,7 @@
// touch the file if it was checked for updates, but don't create it if it did't exist to avoid
// storing SNAPSHOT as the actual version which doesn't exist remotely.
- if ( checkedUpdates && localMetadata.getLastModified().getTime() > 0 )
+ if ( checkedUpdates && localMetadata != null && localMetadata.getLastModified().getTime() > 0 )
{
localMetadata.storeInLocalRepository( localRepository );
}
@@ -212,7 +224,7 @@
resolvedArtifactCache.add( getCacheKey( artifact ) );
}
- if ( artifact.getFile().exists() && !localMetadata.newerThanFile( artifact.getFile() ) )
+ if ( localMetadata != null && artifact.getFile().exists() && !localMetadata.newerThanFile( artifact.getFile() ) )
{
if ( getLogger().isDebugEnabled() && !alreadyResolved )
{
@@ -221,6 +233,7 @@
}
localMetadata = null;
}
+
return localMetadata != null ? localMetadata.constructVersion() : null;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org