Author: jdcasey Date: Thu Jan 18 17:09:28 2007 New Revision: 497671 URL: http://svn.apache.org/viewvc?view=rev&rev=497671 Log: Moving extensions back to the core classrealm, and adding a dynamic artifact filter to keep MNG-2228 from reappearing.
Added: maven/components/trunk/maven-core/src/main/java/org/apache/maven/ArtifactFilterManager.java (with props) maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultArtifactFilterManager.java - copied, changed from r497536, maven/components/trunk/maven-core/src/main/java/org/apache/maven/MavenArtifactFilterManager.java Removed: maven/components/trunk/maven-core/src/main/java/org/apache/maven/MavenArtifactFilterManager.java Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml Added: maven/components/trunk/maven-core/src/main/java/org/apache/maven/ArtifactFilterManager.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/ArtifactFilterManager.java?view=auto&rev=497671 ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/ArtifactFilterManager.java (added) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/ArtifactFilterManager.java Thu Jan 18 17:09:28 2007 @@ -0,0 +1,12 @@ +package org.apache.maven; + +import org.apache.maven.artifact.resolver.filter.ArtifactFilter; + +public interface ArtifactFilterManager +{ + + ArtifactFilter getArtifactFilter(); + + void excludeArtifact( String artifactId ); + +} \ No newline at end of file Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/ArtifactFilterManager.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/ArtifactFilterManager.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Copied: maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultArtifactFilterManager.java (from r497536, maven/components/trunk/maven-core/src/main/java/org/apache/maven/MavenArtifactFilterManager.java) URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultArtifactFilterManager.java?view=diff&rev=497671&p1=maven/components/trunk/maven-core/src/main/java/org/apache/maven/MavenArtifactFilterManager.java&r1=497536&p2=maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultArtifactFilterManager.java&r2=497671 ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/MavenArtifactFilterManager.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultArtifactFilterManager.java Thu Jan 18 17:09:28 2007 @@ -19,6 +19,7 @@ import org.apache.maven.artifact.resolver.filter.ArtifactFilter; import org.apache.maven.artifact.resolver.filter.ExclusionSetFilter; +import java.util.List; import java.util.Set; import java.util.HashSet; @@ -27,11 +28,13 @@ * @version $Id$ * @todo this should probably be a component with some dynamic control of filtering */ -public class MavenArtifactFilterManager +public class DefaultArtifactFilterManager implements ArtifactFilterManager { - public static ArtifactFilter createStandardFilter() + + private static final Set DEFAULT_EXCLUSIONS; + + static { - // TODO: configure this from bootstrap or scan lib Set artifacts = new HashSet(); artifacts.add( "classworlds" ); @@ -62,7 +65,35 @@ artifacts.add( "wagon-http-lightweight" ); artifacts.add( "wagon-ssh" ); artifacts.add( "wagon-ssh-external" ); - - return new ExclusionSetFilter( artifacts ); + + DEFAULT_EXCLUSIONS = artifacts; + } + + private Set excludedArtifacts = new HashSet( DEFAULT_EXCLUSIONS ); + + /** + * @deprecated Use this class as a component instead, and then use getArtifactFilter(). + */ + public static ArtifactFilter createStandardFilter() + { + // TODO: configure this from bootstrap or scan lib + return new ExclusionSetFilter( DEFAULT_EXCLUSIONS ); + } + + /* (non-Javadoc) + * @see org.apache.maven.ArtifactFilterManager#getArtifactFilter() + */ + public ArtifactFilter getArtifactFilter() + { + return new ExclusionSetFilter( excludedArtifacts ); + } + + /* (non-Javadoc) + * @see org.apache.maven.ArtifactFilterManager#excludeArtifact(java.lang.String) + */ + public void excludeArtifact( String artifactId ) + { + excludedArtifacts.add( artifactId ); } + } 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?view=diff&rev=497671&r1=497670&r2=497671 ============================================================================== --- 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 Thu Jan 18 17:09:28 2007 @@ -16,7 +16,7 @@ * limitations under the License. */ -import org.apache.maven.MavenArtifactFilterManager; +import org.apache.maven.ArtifactFilterManager; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.ArtifactUtils; import org.apache.maven.artifact.manager.WagonManager; @@ -54,18 +54,17 @@ extends AbstractLogEnabled implements ExtensionManager, Contextualizable { + private ArtifactResolver artifactResolver; private ArtifactMetadataSource artifactMetadataSource; private PlexusContainer container; - private ArtifactFilter artifactFilter = MavenArtifactFilterManager.createStandardFilter(); + private ArtifactFilterManager artifactFilterManager; private WagonManager wagonManager; - private static final String CONTAINER_NAME = "extensions"; - public void addExtension( Extension extension, MavenProject project, ArtifactRepository localRepository ) throws ArtifactResolutionException, PlexusContainerException, ArtifactNotFoundException { @@ -77,7 +76,7 @@ if ( artifact != null ) { - ArtifactFilter filter = new ProjectArtifactExceptionFilter( artifactFilter, project.getArtifact() ); + ArtifactFilter filter = new ProjectArtifactExceptionFilter( artifactFilterManager.getArtifactFilter(), project.getArtifact() ); ArtifactResolutionResult result = artifactResolver.resolveTransitively( Collections.singleton( artifact ), project.getArtifact(), @@ -85,15 +84,6 @@ project.getRemoteArtifactRepositories(), artifactMetadataSource, filter ); - // create a child container for the extension - // TODO: this could surely be simpler/different on trunk with the new classworlds - PlexusContainer extensionContainer = getExtensionContainer(); - if ( extensionContainer == null ) - { - extensionContainer = - container.createChildContainer( CONTAINER_NAME, Collections.EMPTY_LIST, Collections.EMPTY_MAP ); - } - for ( Iterator i = result.getArtifacts().iterator(); i.hasNext(); ) { Artifact a = (Artifact) i.next(); @@ -102,33 +92,23 @@ getLogger().debug( "Adding to extension classpath: " + a.getFile() ); - extensionContainer.addJarResource( a.getFile() ); + container.addJarResource( a.getFile() ); + artifactFilterManager.excludeArtifact( a.getArtifactId() ); } } } public void registerWagons() { - PlexusContainer extensionContainer = getExtensionContainer(); - if ( extensionContainer != null ) + try { - try - { - Map wagons = extensionContainer.lookupMap( Wagon.ROLE ); - wagonManager.registerWagons( wagons.keySet(), extensionContainer ); - } - catch ( ComponentLookupException e ) - { - // now wagons found in the extension - } + Map wagons = container.lookupMap( Wagon.ROLE ); + wagonManager.registerWagons( wagons.keySet(), container ); + } + catch ( ComponentLookupException e ) + { + // now wagons found in the extension } - } - - private PlexusContainer getExtensionContainer() - { - // note: ideally extensions would live in their own realm, but this would mean that things like wagon-scm would - // have no way to obtain SCM extensions - return container.getChildContainer( CONTAINER_NAME ); } public void contextualize( Context context ) Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?view=diff&rev=497671&r1=497670&r2=497671 ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Thu Jan 18 17:09:28 2007 @@ -16,7 +16,7 @@ * limitations under the License. */ -import org.apache.maven.MavenArtifactFilterManager; +import org.apache.maven.ArtifactFilterManager; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.factory.ArtifactFactory; import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException; @@ -54,10 +54,10 @@ import org.apache.maven.project.artifact.MavenMetadataSource; import org.apache.maven.project.path.PathTranslator; import org.apache.maven.reporting.MavenReport; +import org.codehaus.plexus.DefaultPlexusContainer; import org.codehaus.plexus.PlexusConstants; import org.codehaus.plexus.PlexusContainer; import org.codehaus.plexus.PlexusContainerException; -import org.codehaus.plexus.DefaultPlexusContainer; import org.codehaus.plexus.classworlds.realm.ClassRealm; import org.codehaus.plexus.component.configurator.ComponentConfigurationException; import org.codehaus.plexus.component.configurator.ComponentConfigurator; @@ -72,7 +72,6 @@ import org.codehaus.plexus.context.ContextException; import org.codehaus.plexus.logging.AbstractLogEnabled; import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable; -import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; import org.codehaus.plexus.util.StringUtils; import org.codehaus.plexus.util.xml.Xpp3Dom; @@ -90,13 +89,13 @@ public class DefaultPluginManager extends AbstractLogEnabled - implements PluginManager, Initializable, Contextualizable + implements PluginManager, Contextualizable { protected PlexusContainer container; protected PluginDescriptorBuilder pluginDescriptorBuilder; - protected ArtifactFilter artifactFilter; + protected ArtifactFilterManager coreArtifactFilterManager; private Log mojoLogger; @@ -265,8 +264,6 @@ } } - ArtifactFilter coreArtifactFilter = MavenArtifactFilterManager.createStandardFilter(); - protected void addPlugin( Plugin plugin, Artifact pluginArtifact, MavenProject project, @@ -355,7 +352,7 @@ { projectPluginDependencies = MavenMetadataSource.createArtifacts( artifactFactory, plugin.getDependencies(), null, - coreArtifactFilter, project ); + coreArtifactFilterManager.getArtifactFilter(), project ); } catch ( InvalidDependencyVersionException e ) { @@ -388,7 +385,7 @@ ArtifactResolutionResult result = artifactResolver.resolveTransitively( dependencies, pluginArtifact, localRepository, repositories, artifactMetadataSource, - artifactFilter ); + coreArtifactFilterManager.getArtifactFilter() ); Set resolved = result.getArtifacts(); @@ -398,7 +395,7 @@ localRepository, repositories, artifactMetadataSource, - artifactFilter ).getArtifacts() ); + coreArtifactFilterManager.getArtifactFilter() ).getArtifacts() ); for ( Iterator it = resolved.iterator(); it.hasNext(); ) { @@ -1155,11 +1152,6 @@ container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY ); mojoLogger = new DefaultLog( container.getLoggerManager().getLoggerForComponent( Mojo.ROLE ) ); - } - - public void initialize() - { - artifactFilter = MavenArtifactFilterManager.createStandardFilter(); } // ---------------------------------------------------------------------- Modified: maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml?view=diff&rev=497671&r1=497670&r2=497671 ============================================================================== --- maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml (original) +++ maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml Thu Jan 18 17:09:28 2007 @@ -1,10 +1,17 @@ <component-set> <components> <component> + <role>org.apache.maven.ArtifactFilterManager</role> + <implementation>org.apache.maven.DefaultArtifactFilterManager</implementation> + </component> + <component> <role>org.apache.maven.plugin.PluginManager</role> <implementation>org.apache.maven.plugin.DefaultPluginManager</implementation> <requirements> <requirement> + <role>org.apache.maven.ArtifactFilterManager</role> + </requirement> + <requirement> <role>org.apache.maven.project.path.PathTranslator</role> </requirement> <requirement> @@ -38,6 +45,9 @@ <role>org.apache.maven.extension.ExtensionManager</role> <implementation>org.apache.maven.extension.DefaultExtensionManager</implementation> <requirements> + <requirement> + <role>org.apache.maven.ArtifactFilterManager</role> + </requirement> <requirement> <role>org.apache.maven.artifact.resolver.ArtifactResolver</role> </requirement>