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