Hello

Why didn't you use jira issue number in commit message and didn't close jira
issue
(I don't remember its number)? I'm talking about exclusions bug.

Grzegorz Slowikowski


2006/8/29, [EMAIL PROTECTED] <[EMAIL PROTECTED]>:

Author: jdcasey
Date: Tue Aug 29 13:17:14 2006
New Revision: 438189

URL: http://svn.apache.org/viewvc?rev=438189&view=rev
Log:
Fixing exclusions that bleed over into other dependencies, and modifying
DefaultProfileManager to (a) deprecate constructor that takes Settings but
no properties, and (b) add a constructor that takes Settings and properties.

Modified:

    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java

    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java

    
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/artifact/MavenMetadataSourceTest.java

Modified:
maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java?rev=438189&r1=438188&r2=438189&view=diff

==============================================================================
---
maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java
(original)
+++
maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java
Tue Aug 29 13:17:14 2006
@@ -66,18 +66,36 @@
      */
     public DefaultProfileManager( PlexusContainer container, Properties
props )
     {
-        this( container, (Settings)null );
-        if (props != null) {
-            systemProperties = props;
-        }
+        this( container, (Settings)null, props );

     }

+    /**
+     * @deprecated without passing in the system properties, the
SystemPropertiesProfileActivator will not work correctly
+     * in embedded envirnments.
+     */
     public DefaultProfileManager( PlexusContainer container, Settings
settings )
     {
         this.container = container;

         loadSettingsProfiles( settings );
+    }
+
+    /**
+     * the properties passed to the profile manager are the props that
+     * are passed to maven, possibly containing profile activator
properties
+     *
+     */
+    public DefaultProfileManager( PlexusContainer container, Settings
settings, Properties props )
+    {
+        this.container = container;
+
+        loadSettingsProfiles( settings );
+
+        if ( props != null )
+        {
+            systemProperties = props;
+        }
     }

     public Properties getSystemProperties() {

Modified:
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=438189&r1=438188&r2=438189&view=diff

==============================================================================
---
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
(original)
+++
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
Tue Aug 29 13:17:14 2006
@@ -48,7 +48,6 @@
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
@@ -337,7 +336,9 @@
                 artifact.setFile( new File( d.getSystemPath() ) );
             }

-            if ( artifact != null && ( dependencyFilter == null ||
dependencyFilter.include( artifact ) ) )
+            ArtifactFilter artifactFilter = dependencyFilter;
+
+            if ( artifact != null && ( artifactFilter == null ||
artifactFilter.include( artifact ) ) )
             {
                 if ( d.getExclusions() != null &&
!d.getExclusions().isEmpty() )
                 {
@@ -350,20 +351,20 @@

                     ArtifactFilter newFilter = new
ExcludesArtifactFilter( exclusions );

-                    if ( dependencyFilter != null )
+                    if ( artifactFilter != null )
                     {
                         AndArtifactFilter filter = new
AndArtifactFilter();
-                        filter.add( dependencyFilter );
+                        filter.add( artifactFilter );
                         filter.add( newFilter );
-                        dependencyFilter = filter;
+                        artifactFilter = filter;
                     }
                     else
                     {
-                        dependencyFilter = newFilter;
+                        artifactFilter = newFilter;
                     }
                 }

-                artifact.setDependencyFilter( dependencyFilter );
+                artifact.setDependencyFilter( artifactFilter );

                 if ( project != null )
                 {

Modified:
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/artifact/MavenMetadataSourceTest.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/artifact/MavenMetadataSourceTest.java?rev=438189&r1=438188&r2=438189&view=diff

==============================================================================
---
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/artifact/MavenMetadataSourceTest.java
(original)
+++
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/artifact/MavenMetadataSourceTest.java
Tue Aug 29 13:17:14 2006
@@ -3,18 +3,71 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.ArtifactUtils;
import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
import org.apache.maven.model.Dependency;
import org.apache.maven.model.DependencyManagement;
+import org.apache.maven.model.Exclusion;
import org.apache.maven.model.Model;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.injection.ModelDefaultsInjector;
import org.codehaus.plexus.PlexusTestCase;

+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
import java.util.Map;
+import java.util.Set;

public class MavenMetadataSourceTest
     extends PlexusTestCase
{
+
+    public void
testShouldNotCarryExclusionsOverFromDependencyToDependency()
+        throws Exception
+    {
+        Dependency dep1 = new Dependency();
+        dep1.setGroupId( "test" );
+        dep1.setArtifactId( "test-artifact" );
+        dep1.setVersion( "1" );
+        dep1.setType( "jar" );
+
+        Exclusion exc = new Exclusion();
+        exc.setGroupId( "test" );
+        exc.setArtifactId( "test-artifact3" );
+
+        dep1.addExclusion( exc );
+
+        Dependency dep2 = new Dependency();
+        dep2.setGroupId( "test" );
+        dep2.setArtifactId( "test-artifact2" );
+        dep2.setVersion( "1" );
+        dep2.setType( "jar" );
+
+        List deps = new ArrayList();
+        deps.add( dep1 );
+        deps.add( dep2 );
+
+        ArtifactFactory factory = ( ArtifactFactory ) lookup(
ArtifactFactory.ROLE );
+
+        ArtifactFilter dependencyFilter = new ScopeArtifactFilter(
Artifact.SCOPE_COMPILE );
+
+        MavenProject project = new MavenProject( new Model() );
+
+        Set result = MavenMetadataSource.createArtifacts( factory, deps,
null, dependencyFilter, project );
+
+        for ( Iterator it = result.iterator(); it.hasNext(); )
+        {
+            Artifact artifact = ( Artifact ) it.next();
+
+            if ( "test-artifact2".equals( artifact.getArtifactId() ) )
+            {
+                ArtifactFilter filter = artifact.getDependencyFilter();
+
+                assertSame( dependencyFilter, filter );
+            }
+        }
+    }

     public void testShouldUseCompileScopeIfDependencyScopeEmpty()
         throws Exception



Reply via email to