You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2010/08/30 13:14:59 UTC

svn commit: r990769 - in /maven/maven-3/trunk: maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java maven-compat/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java

Author: bentmann
Date: Mon Aug 30 11:14:59 2010
New Revision: 990769

URL: http://svn.apache.org/viewvc?rev=990769&view=rev
Log:
o Fixed duplicate processig of g:a-level metadata

Modified:
    maven/maven-3/trunk/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java
    maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java

Modified: maven/maven-3/trunk/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java?rev=990769&r1=990768&r2=990769&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java (original)
+++ maven/maven-3/trunk/maven-aether-provider/src/main/java/org/apache/maven/repository/internal/VersionsMetadataGenerator.java Mon Aug 30 11:14:59 2010
@@ -21,6 +21,7 @@ package org.apache.maven.repository.inte
 
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
@@ -40,6 +41,8 @@ class VersionsMetadataGenerator
 
     private Map<Object, VersionsMetadata> versions;
 
+    private Map<Object, VersionsMetadata> processedVersions;
+
     public VersionsMetadataGenerator( RepositorySystemSession session, InstallRequest request )
     {
         this( session, request.getMetadata() );
@@ -53,19 +56,22 @@ class VersionsMetadataGenerator
     private VersionsMetadataGenerator( RepositorySystemSession session, Collection<? extends Metadata> metadatas )
     {
         versions = new LinkedHashMap<Object, VersionsMetadata>();
+        processedVersions = new LinkedHashMap<Object, VersionsMetadata>();
 
         /*
          * NOTE: This should be considered a quirk to support interop with Maven's legacy ArtifactDeployer which
          * processes one artifact at a time and hence cannot associate the artifacts from the same project to use the
-         * same timestamp+buildno for the snapshot versions. Allowing the caller to pass in metadata from a previous
-         * deployment allows to re-establish the association between the artifacts of the same project.
+         * same version index. Allowing the caller to pass in metadata from a previous deployment allows to re-establish
+         * the association between the artifacts of the same project.
          */
-        for ( Metadata metadata : metadatas )
+        for ( Iterator<? extends Metadata> it = metadatas.iterator(); it.hasNext(); )
         {
+            Metadata metadata = it.next();
             if ( metadata instanceof VersionsMetadata )
             {
+                it.remove();
                 VersionsMetadata versionsMetadata = (VersionsMetadata) metadata;
-                versions.put( versionsMetadata.getKey(), versionsMetadata );
+                processedVersions.put( versionsMetadata.getKey(), versionsMetadata );
             }
         }
     }
@@ -85,11 +91,14 @@ class VersionsMetadataGenerator
         for ( Artifact artifact : artifacts )
         {
             Object key = VersionsMetadata.getKey( artifact );
-            VersionsMetadata versionsMetadata = versions.get( key );
-            if ( versionsMetadata == null )
+            if ( processedVersions.get( key ) == null )
             {
-                versionsMetadata = new VersionsMetadata( artifact );
-                versions.put( key, versionsMetadata );
+                VersionsMetadata versionsMetadata = versions.get( key );
+                if ( versionsMetadata == null )
+                {
+                    versionsMetadata = new VersionsMetadata( artifact );
+                    versions.put( key, versionsMetadata );
+                }
             }
         }
 

Modified: maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java
URL: http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java?rev=990769&r1=990768&r2=990769&view=diff
==============================================================================
--- maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java (original)
+++ maven/maven-3/trunk/maven-compat/src/main/java/org/apache/maven/artifact/deployer/DefaultArtifactDeployer.java Mon Aug 30 11:14:59 2010
@@ -58,7 +58,7 @@ public class DefaultArtifactDeployer
     @Requirement
     private LegacySupport legacySupport;
 
-    private Map<Object, MergeableMetadata> snapshots = new ConcurrentHashMap<Object, MergeableMetadata>();
+    private Map<Object, MergeableMetadata> relatedMetadata = new ConcurrentHashMap<Object, MergeableMetadata>();
 
     /**
      * @deprecated we want to use the artifact method only, and ensure artifact.file is set
@@ -89,12 +89,14 @@ public class DefaultArtifactDeployer
         mainArtifact = mainArtifact.setFile( source );
         request.addArtifact( mainArtifact );
 
+        String versionKey = artifact.getGroupId() + ':' + artifact.getArtifactId();
         String snapshotKey = null;
         if ( artifact.isSnapshot() )
         {
-            snapshotKey = artifact.getGroupId() + ':' + artifact.getArtifactId() + ':' + artifact.getBaseVersion();
-            request.addMetadata( snapshots.get( snapshotKey ) );
+            snapshotKey = versionKey + ':' + artifact.getBaseVersion();
+            request.addMetadata( relatedMetadata.get( snapshotKey ) );
         }
+        request.addMetadata( relatedMetadata.get( versionKey ) );
 
         for ( ArtifactMetadata metadata : artifact.getMetadataList() )
         {
@@ -138,14 +140,15 @@ public class DefaultArtifactDeployer
             throw new ArtifactDeploymentException( e.getMessage(), e );
         }
 
-        if ( snapshotKey != null )
+        for ( Object metadata : result.getMetadata() )
         {
-            for ( Object metadata : result.getMetadata() )
+            if ( metadata.getClass().getName().endsWith( ".internal.VersionsMetadata" ) )
             {
-                if ( metadata.getClass().getName().endsWith( ".internal.RemoteSnapshotMetadata" ) )
-                {
-                    snapshots.put( snapshotKey, (MergeableMetadata) metadata );
-                }
+                relatedMetadata.put( versionKey, (MergeableMetadata) metadata );
+            }
+            if ( snapshotKey != null && metadata.getClass().getName().endsWith( ".internal.RemoteSnapshotMetadata" ) )
+            {
+                relatedMetadata.put( snapshotKey, (MergeableMetadata) metadata );
             }
         }