Author: ifedorenko
Date: Thu Nov 25 04:30:12 2010
New Revision: 1038917

URL: http://svn.apache.org/viewvc?rev=1038917&view=rev
Log:
MNG-4916 cache extension plugin resolution errors

Modified:
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginArtifactsCache.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginArtifactsCache.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginArtifactsCache.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginArtifactsCache.java?rev=1038917&r1=1038916&r2=1038917&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginArtifactsCache.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginArtifactsCache.java
 Thu Nov 25 04:30:12 2010
@@ -142,8 +142,16 @@ public class DefaultPluginArtifactsCache
     }
 
     public CacheRecord get( Key key )
+        throws PluginResolutionException
     {
-        return cache.get( key );
+        CacheRecord cacheRecord = cache.get( key );
+
+        if ( cacheRecord != null && cacheRecord.exception != null )
+        {
+            throw cacheRecord.exception;
+        }
+
+        return cacheRecord;
     }
 
     public CacheRecord put( Key key, List<Artifact> pluginArtifacts )
@@ -153,13 +161,34 @@ public class DefaultPluginArtifactsCache
             throw new NullPointerException();
         }
 
+        assertUniqueKey( key );
+
+        CacheRecord record =
+            new CacheRecord( Collections.unmodifiableList( new 
ArrayList<Artifact>( pluginArtifacts ) ) );
+
+        cache.put( key, record );
+
+        return record;
+    }
+
+    protected void assertUniqueKey( Key key )
+    {
         if ( cache.containsKey( key ) )
         {
             throw new IllegalStateException( "Duplicate artifact resolution 
result for plugin " + key );
         }
+    }
 
-        CacheRecord record =
-            new CacheRecord( Collections.unmodifiableList( new 
ArrayList<Artifact>( pluginArtifacts ) ) );
+    public CacheRecord put( Key key, PluginResolutionException exception )
+    {
+        if ( exception == null )
+        {
+            throw new NullPointerException();
+        }
+
+        assertUniqueKey( key );
+
+        CacheRecord record = new CacheRecord( exception );
 
         cache.put( key, record );
 

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginArtifactsCache.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginArtifactsCache.java?rev=1038917&r1=1038916&r2=1038917&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginArtifactsCache.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginArtifactsCache.java
 Thu Nov 25 04:30:12 2010
@@ -52,20 +52,30 @@ public interface PluginArtifactsCache
 
         public final List<Artifact> artifacts;
 
+        public final PluginResolutionException exception; 
+
         public CacheRecord( List<Artifact> artifacts )
         {
             this.artifacts = artifacts;
+            this.exception = null;
         }
 
+        public CacheRecord( PluginResolutionException exception )
+        {
+            this.artifacts = null;
+            this.exception = exception;
+        }
     }
 
     Key createKey( Plugin plugin, DependencyFilter extensionFilter, 
List<RemoteRepository> repositories,
                    RepositorySystemSession session );
 
-    CacheRecord get( Key key );
+    CacheRecord get( Key key ) throws PluginResolutionException;
 
     CacheRecord put( Key key, List<Artifact> pluginArtifacts );
 
+    CacheRecord put( Key key, PluginResolutionException e );
+
     void flush();
 
     /**

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java?rev=1038917&r1=1038916&r2=1038917&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java
 Thu Nov 25 04:30:12 2010
@@ -232,9 +232,20 @@ public class DefaultProjectBuildingHelpe
             }
             else
             {
-                artifacts = resolveExtensionArtifacts( plugin, 
project.getRemotePluginRepositories(), request );
+                try
+                {
+                    artifacts = resolveExtensionArtifacts( plugin, 
project.getRemotePluginRepositories(), request );
 
-                recordArtifacts = pluginArtifactsCache.put( cacheKey, 
artifacts );
+                    recordArtifacts = pluginArtifactsCache.put( cacheKey, 
artifacts );
+                }
+                catch ( PluginResolutionException e )
+                {
+                    pluginArtifactsCache.put( cacheKey, e );
+
+                    pluginArtifactsCache.register( project, recordArtifacts );
+
+                    throw e;
+                }
             }
 
             pluginArtifactsCache.register( project, recordArtifacts );


Reply via email to