Author: jdcasey
Date: Tue Aug 22 15:54:13 2006
New Revision: 433789

URL: http://svn.apache.org/viewvc?rev=433789&view=rev
Log:
Merged from 433788 on the branch, to fix the case where build extensions don't 
get resolved when building projects that would be filtered by Maven's core 
artifact filter...as in the case of some plexus projects, and of maven projects 
themselves.

Modified:
    
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java

Modified: 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java?rev=433789&r1=433788&r2=433789&view=diff
==============================================================================
--- 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
 (original)
+++ 
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
 Tue Aug 22 15:54:13 2006
@@ -65,12 +65,14 @@
 
         if ( artifact != null )
         {
+                       ArtifactFilter filter = new 
ProjectArtifactExceptionFilter( artifactFilter, project.getArtifact() );
+                       
             ArtifactResolutionResult result = 
artifactResolver.resolveTransitively( Collections.singleton( artifact ),
                                                                                
     project.getArtifact(),
                                                                                
     localRepository,
                                                                                
     project.getRemoteArtifactRepositories(),
                                                                                
     artifactMetadataSource,
-                                                                               
     artifactFilter );
+                                                                               
     filter );
             for ( Iterator i = result.getArtifacts().iterator(); i.hasNext(); )
             {
                 Artifact a = (Artifact) i.next();
@@ -86,5 +88,24 @@
         throws ContextException
     {
         this.container = (PlexusContainer) context.get( 
PlexusConstants.PLEXUS_KEY );
+    }
+    
+    private static final class ProjectArtifactExceptionFilter implements 
ArtifactFilter
+    {
+               private ArtifactFilter passThroughFilter;
+               private String projectDependencyConflictId;
+               
+               ProjectArtifactExceptionFilter( ArtifactFilter 
passThroughFilter, Artifact projectArtifact )
+               {
+                               this.passThroughFilter = passThroughFilter;
+                               this.projectDependencyConflictId = 
projectArtifact.getDependencyConflictId();
+               }
+
+               public boolean include(Artifact artifact) {
+                       String depConflictId = 
artifact.getDependencyConflictId();
+                       
+                       return projectDependencyConflictId.equals( 
depConflictId )
+                                       || passThroughFilter.include( artifact 
);
+               }
     }
 }


Reply via email to