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>


Reply via email to