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