Author: bentmann
Date: Wed Nov 18 14:53:55 2009
New Revision: 881793

URL: http://svn.apache.org/viewvc?rev=881793&view=rev
Log:
o Extended base plugin manager to allow for caller-supplied exclusions of 
certain plugin dependencies

Modified:
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginManager.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginRealmCache.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
    
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginManager.java

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java?rev=881793&r1=881792&r2=881793&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultBuildPluginManager.java
 Wed Nov 18 14:53:55 2009
@@ -182,7 +182,7 @@
         }
 
         mavenPluginManager.setupPluginRealm( pluginDescriptor, session, 
session.getCurrentProject().getClassRealm(),
-                                             null );
+                                             null, null );
 
         return pluginDescriptor.getClassRealm();
     }

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java?rev=881793&r1=881792&r2=881793&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginRealmCache.java
 Wed Nov 18 14:53:55 2009
@@ -28,6 +28,7 @@
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.model.Dependency;
 import org.apache.maven.model.Exclusion;
 import org.apache.maven.model.Plugin;
@@ -53,9 +54,12 @@
 
         private final List<String> parentImports;
 
+        private final ArtifactFilter filter;
+
         private final int hashCode;
 
-        public CacheKey( Plugin plugin, ClassLoader parentRealm, List<String> 
parentImports, ArtifactRepository localRepository,
+        public CacheKey( Plugin plugin, ClassLoader parentRealm, List<String> 
parentImports,
+                         ArtifactFilter dependencyFilter, ArtifactRepository 
localRepository,
                          List<ArtifactRepository> remoteRepositories )
         {
             this.plugin = plugin.clone();
@@ -63,12 +67,14 @@
             this.repositories.addAll( remoteRepositories );
             this.parentRealm = parentRealm;
             this.parentImports = ( parentImports != null ) ? parentImports : 
Collections.<String> emptyList();
+            this.filter = dependencyFilter;
 
             int hash = 17;
             hash = hash * 31 + pluginHashCode( plugin );
             hash = hash * 31 + repositories.hashCode();
             hash = hash * 31 + ( parentRealm != null ? parentRealm.hashCode() 
: 0 );
             hash = hash * 31 + this.parentImports.hashCode();
+            hash = hash * 31 + ( dependencyFilter != null ? 
dependencyFilter.hashCode() : 0 );
             this.hashCode = hash;
         }
 
@@ -94,19 +100,22 @@
             CacheKey other = (CacheKey) o;
 
             return parentRealm == other.parentRealm && pluginEquals( plugin, 
other.plugin )
-                && eq( repositories, other.repositories );
+                && eq( repositories, other.repositories ) && eq( filter, 
other.filter )
+                && eq( parentImports, other.parentImports );
         }
     }
 
     protected final Map<CacheKey, CacheRecord> cache = new HashMap<CacheKey, 
CacheRecord>();
 
     public CacheRecord get( Plugin plugin, ClassLoader parentRealm, 
List<String> parentImports,
-                            ArtifactRepository localRepository, 
List<ArtifactRepository> remoteRepositories )
+                            ArtifactFilter dependencyFilter, 
ArtifactRepository localRepository,
+                            List<ArtifactRepository> remoteRepositories )
     {
-        return cache.get( new CacheKey( plugin, parentRealm, parentImports, 
localRepository, remoteRepositories ) );
+        return cache.get( new CacheKey( plugin, parentRealm, parentImports, 
dependencyFilter, localRepository,
+                                        remoteRepositories ) );
     }
 
-    public CacheRecord put( Plugin plugin, ClassLoader parentRealm, 
List<String> parentImports,
+    public CacheRecord put( Plugin plugin, ClassLoader parentRealm, 
List<String> parentImports,ArtifactFilter dependencyFilter,
                             ArtifactRepository localRepository, 
List<ArtifactRepository> remoteRepositories,
                             ClassRealm pluginRealm, List<Artifact> 
pluginArtifacts )
     {
@@ -115,7 +124,8 @@
             throw new NullPointerException();
         }
 
-        CacheKey key = new CacheKey( plugin, parentRealm, parentImports, 
localRepository, remoteRepositories );
+        CacheKey key =
+            new CacheKey( plugin, parentRealm, parentImports, 
dependencyFilter, localRepository, remoteRepositories );
 
         if ( cache.containsKey( key ) )
         {

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginManager.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginManager.java?rev=881793&r1=881792&r2=881793&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginManager.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/MavenPluginManager.java
 Wed Nov 18 14:53:55 2009
@@ -22,6 +22,7 @@
 import java.util.List;
 
 import org.apache.maven.artifact.repository.RepositoryRequest;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.plugin.descriptor.MojoDescriptor;
@@ -71,9 +72,10 @@
      *            {...@code null}.
      * @param parent The parent class realm for the plugin, may be {...@code 
null} to use the Maven core realm.
      * @param imports The packages/types to import from the parent realm, may 
be {...@code null}.
+     * @param filter The filter used to exclude certain plugin dependencies, 
may be {...@code null}.
      */
     void setupPluginRealm( PluginDescriptor pluginDescriptor, MavenSession 
session, ClassLoader parent,
-                           List<String> imports )
+                           List<String> imports, ArtifactFilter filter )
         throws PluginResolutionException, PluginContainerException;
 
     /**

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginRealmCache.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginRealmCache.java?rev=881793&r1=881792&r2=881793&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginRealmCache.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginRealmCache.java
 Wed Nov 18 14:53:55 2009
@@ -23,6 +23,7 @@
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.classworlds.realm.ClassRealm;
@@ -51,11 +52,12 @@
     }
 
     CacheRecord get( Plugin plugin, ClassLoader parentRealm, List<String> 
parentImports,
-                     ArtifactRepository localRepository, 
List<ArtifactRepository> remoteRepositories );
+                     ArtifactFilter dependencyFilter, ArtifactRepository 
localRepository,
+                     List<ArtifactRepository> remoteRepositories );
 
     CacheRecord put( Plugin plugin, ClassLoader parentRealm, List<String> 
parentImports,
-                     ArtifactRepository localRepository, 
List<ArtifactRepository> remoteRepositories,
-                     ClassRealm pluginRealm, List<Artifact> pluginArtifacts );
+                     ArtifactFilter dependencyFilter, ArtifactRepository 
localRepository,
+                     List<ArtifactRepository> remoteRepositories, ClassRealm 
pluginRealm, List<Artifact> pluginArtifacts );
 
     void flush();
 

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java?rev=881793&r1=881792&r2=881793&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
 Wed Nov 18 14:53:55 2009
@@ -290,7 +290,7 @@
     }
 
     public synchronized void setupPluginRealm( PluginDescriptor 
pluginDescriptor, MavenSession session,
-                                               ClassLoader parent, 
List<String> imports )
+                                               ClassLoader parent, 
List<String> imports, ArtifactFilter filter )
         throws PluginResolutionException, PluginContainerException
     {
         Plugin plugin = pluginDescriptor.getPlugin();
@@ -298,7 +298,7 @@
         MavenProject project = session.getCurrentProject();
 
         PluginRealmCache.CacheRecord cacheRecord =
-            pluginRealmCache.get( plugin, parent, imports, 
session.getLocalRepository(),
+            pluginRealmCache.get( plugin, parent, imports, filter, 
session.getLocalRepository(),
                                   project.getPluginArtifactRepositories() );
 
         if ( cacheRecord != null )
@@ -308,10 +308,10 @@
         }
         else
         {
-            createPluginRealm( pluginDescriptor, session, parent, imports );
+            createPluginRealm( pluginDescriptor, session, parent, imports, 
filter );
 
             cacheRecord =
-                pluginRealmCache.put( plugin, parent, imports, 
session.getLocalRepository(),
+                pluginRealmCache.put( plugin, parent, imports, filter, 
session.getLocalRepository(),
                                       project.getPluginArtifactRepositories(), 
pluginDescriptor.getClassRealm(),
                                       pluginDescriptor.getArtifacts() );
         }
@@ -320,7 +320,7 @@
     }
 
     private void createPluginRealm( PluginDescriptor pluginDescriptor, 
MavenSession session, ClassLoader parent,
-                                    List<String> imports )
+                                    List<String> imports, ArtifactFilter 
filter )
         throws PluginResolutionException, PluginContainerException
     {
         Plugin plugin = pluginDescriptor.getPlugin();
@@ -346,8 +346,17 @@
         request.setOffline( session.isOffline() );
         request.setTransferListener( 
session.getRequest().getTransferListener() );
 
-        List<Artifact> pluginArtifacts =
-            resolvePluginArtifacts( plugin, pluginArtifact, request, 
project.getExtensionArtifactFilter() );
+        ArtifactFilter dependencyFilter = project.getExtensionArtifactFilter();
+        if ( dependencyFilter == null )
+        {
+            dependencyFilter = filter;
+        }
+        else if ( filter != null )
+        {
+            dependencyFilter = new AndArtifactFilter( Arrays.asList( 
dependencyFilter, filter ) );
+        }
+
+        List<Artifact> pluginArtifacts = resolvePluginArtifacts( plugin, 
pluginArtifact, request, dependencyFilter );
 
         ClassRealm pluginRealm = classRealmManager.createPluginRealm( plugin, 
parent, imports );
 
@@ -420,7 +429,7 @@
     // FIXME: only exposed to allow workaround for MNG-4194
     protected List<Artifact> resolvePluginArtifacts( Plugin plugin, Artifact 
pluginArtifact,
                                                      RepositoryRequest 
repositoryRequest,
-                                                     ArtifactFilter 
extensionArtifactFilter )
+                                                     ArtifactFilter 
dependencyFilter )
         throws PluginResolutionException
     {
         Set<Artifact> overrideArtifacts = new LinkedHashSet<Artifact>();
@@ -433,9 +442,9 @@
 
         ArtifactFilter resolutionFilter = 
artifactFilterManager.getCoreArtifactFilter();
 
-        if ( extensionArtifactFilter != null )
+        if ( dependencyFilter != null )
         {
-            resolutionFilter = new AndArtifactFilter( Arrays.asList( 
resolutionFilter, extensionArtifactFilter ) );
+            resolutionFilter = new AndArtifactFilter( Arrays.asList( 
resolutionFilter, dependencyFilter ) );
         }
 
         ArtifactResolutionRequest request = new ArtifactResolutionRequest( 
repositoryRequest );

Modified: 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginManager.java
URL: 
http://svn.apache.org/viewvc/maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginManager.java?rev=881793&r1=881792&r2=881793&view=diff
==============================================================================
--- 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginManager.java
 (original)
+++ 
maven/maven-3/trunk/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultPluginManager.java
 Wed Nov 18 14:53:55 2009
@@ -119,7 +119,7 @@
 
             pluginDescriptor = pluginManager.getPluginDescriptor( plugin, 
repositoryRequest );
 
-            pluginManager.setupPluginRealm( pluginDescriptor, session, null, 
null );
+            pluginManager.setupPluginRealm( pluginDescriptor, session, null, 
null, null );
         }
         catch ( Exception e )
         {
@@ -151,7 +151,7 @@
 
             pluginDescriptor = pluginManager.getPluginDescriptor( plugin, 
repositoryRequest );
 
-            pluginManager.setupPluginRealm( pluginDescriptor, session, null, 
null );
+            pluginManager.setupPluginRealm( pluginDescriptor, session, null, 
null, null );
         }
         catch ( Exception e )
         {
@@ -231,7 +231,7 @@
 
         try
         {
-            pluginManager.setupPluginRealm( pluginDescriptor, session, null, 
null );
+            pluginManager.setupPluginRealm( pluginDescriptor, session, null, 
null, null );
         }
         catch ( PluginResolutionException e )
         {


Reply via email to