You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2009/02/25 21:35:44 UTC

svn commit: r747911 - /maven/components/trunk/maven-repository/src/main/java/org/apache/maven/repository/LegacyMavenRepositorySystem.java

Author: jvanzyl
Date: Wed Feb 25 20:35:44 2009
New Revision: 747911

URL: http://svn.apache.org/viewvc?rev=747911&view=rev
Log:
o one more class to decouple which i'll leave to oleg

Modified:
    maven/components/trunk/maven-repository/src/main/java/org/apache/maven/repository/LegacyMavenRepositorySystem.java

Modified: maven/components/trunk/maven-repository/src/main/java/org/apache/maven/repository/LegacyMavenRepositorySystem.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-repository/src/main/java/org/apache/maven/repository/LegacyMavenRepositorySystem.java?rev=747911&r1=747910&r2=747911&view=diff
==============================================================================
--- maven/components/trunk/maven-repository/src/main/java/org/apache/maven/repository/LegacyMavenRepositorySystem.java (original)
+++ maven/components/trunk/maven-repository/src/main/java/org/apache/maven/repository/LegacyMavenRepositorySystem.java Wed Feb 25 20:35:44 2009
@@ -23,6 +23,7 @@
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -45,15 +46,17 @@
 import org.apache.maven.artifact.resolver.ArtifactResolutionRequest;
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
 import org.apache.maven.artifact.resolver.ArtifactResolver;
+import org.apache.maven.artifact.resolver.filter.AndArtifactFilter;
 import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
+import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
 import org.apache.maven.artifact.versioning.ArtifactVersion;
 import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.artifact.versioning.VersionRange;
 import org.apache.maven.model.Dependency;
+import org.apache.maven.model.Exclusion;
 import org.apache.maven.model.Repository;
 import org.apache.maven.model.RepositoryPolicy;
 import org.apache.maven.project.artifact.InvalidDependencyVersionException;
-import org.apache.maven.project.artifact.MavenMetadataSource;
 import org.apache.maven.wagon.authentication.AuthenticationInfo;
 import org.apache.maven.wagon.events.TransferListener;
 import org.apache.maven.wagon.proxy.ProxyInfo;
@@ -180,14 +183,88 @@
         return artifactFactory.createPluginArtifact( groupId, artifactId, versionRange );
     }
 
-    public Set<Artifact> createArtifacts( List<Dependency> dependencies, String inheritedScope, ArtifactFilter dependencyFilter, MavenRepositoryWrapper project )
+    /**
+     * @return {@link Set} &lt; {@link Artifact} >
+     * @todo desperately needs refactoring. It's just here because it's implementation is maven-project specific
+     */
+    public Set<Artifact> createArtifacts( List<Dependency> dependencies, String inheritedScope, ArtifactFilter dependencyFilter, MavenRepositoryWrapper reactor )
         throws InvalidDependencyVersionException
     {
-        return MavenMetadataSource.createArtifacts( artifactFactory, dependencies, inheritedScope, dependencyFilter, project );
-    }
+        Set<Artifact> projectArtifacts = new LinkedHashSet<Artifact>( dependencies.size() );
+
+        for ( Iterator<Dependency> i = dependencies.iterator(); i.hasNext(); )
+        {
+            Dependency d = i.next();
+
+            String scope = d.getScope();
+
+            if ( StringUtils.isEmpty( scope ) )
+            {
+                scope = Artifact.SCOPE_COMPILE;
+
+                d.setScope( scope );
+            }
+
+            VersionRange versionRange;
+            try
+            {
+                versionRange = VersionRange.createFromVersionSpec( d.getVersion() );
+            }
+            catch ( InvalidVersionSpecificationException e )
+            {
+                throw new InvalidDependencyVersionException( reactor.getId(), d, reactor.getFile(), e );
+            }
+            Artifact artifact = artifactFactory.createDependencyArtifact( d.getGroupId(), d.getArtifactId(),
+                                                                          versionRange, d.getType(), d.getClassifier(),
+                                                                          scope, inheritedScope, d.isOptional() );
+
+            if ( Artifact.SCOPE_SYSTEM.equals( scope ) )
+            {
+                artifact.setFile( new File( d.getSystemPath() ) );
+            }
+
+            ArtifactFilter artifactFilter = dependencyFilter;
 
-    //
+            if ( ( artifact != null ) && ( ( artifactFilter == null ) || artifactFilter.include( artifact ) ) )
+            {
+                if ( ( d.getExclusions() != null ) && !d.getExclusions().isEmpty() )
+                {
+                    List<String> exclusions = new ArrayList<String>();
+                    for ( Iterator<Exclusion> j = d.getExclusions().iterator(); j.hasNext(); )
+                    {
+                        Exclusion e = j.next();
+                        exclusions.add( e.getGroupId() + ":" + e.getArtifactId() );
+                    }
+
+                    ArtifactFilter newFilter = new ExcludesArtifactFilter( exclusions );
 
+                    if ( artifactFilter != null )
+                    {
+                        AndArtifactFilter filter = new AndArtifactFilter();
+                        filter.add( artifactFilter );
+                        filter.add( newFilter );
+                        artifactFilter = filter;
+                    }
+                    else
+                    {
+                        artifactFilter = newFilter;
+                    }
+                }
+
+                artifact.setDependencyFilter( artifactFilter );
+
+                if ( reactor != null )
+                {
+                    artifact = reactor.find( artifact );
+                }
+
+                projectArtifacts.add( artifact );
+            }
+        }
+
+        return projectArtifacts;
+    }    
+    
     public List<ArtifactVersion> retrieveAvailableVersions( Artifact artifact, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
         throws ArtifactMetadataRetrievalException
     {