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 );