Author: jdcasey Date: Tue Aug 22 15:46:39 2006 New Revision: 433788 URL: http://svn.apache.org/viewvc?rev=433788&view=rev Log: Fixing extension resolution for cases where the project being built is in the Maven core artifact filter.
Modified: maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java Modified: maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java URL: http://svn.apache.org/viewvc/maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java?rev=433788&r1=433787&r2=433788&view=diff ============================================================================== --- maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java (original) +++ maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java Tue Aug 22 15:46:39 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 ); + } } }